AgentStack
SKILL verified MIT Self-run

Woo Abandoned Cart Recovery

skill-navarroido-woocommerce-skill-woo-abandoned-cart-recovery · by navarroido

Read-only: Query WooCommerce pending orders older than a configurable threshold and export a re-engagement list for abandoned cart recovery campaigns.

No reviews yet
0 installs
8 views
0.0% view→install

Install

$ agentstack add skill-navarroido-woocommerce-skill-woo-abandoned-cart-recovery

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Woo Abandoned Cart Recovery? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

woo-abandoned-cart-recovery

Purpose

Identify WooCommerce orders in pending status that are older than a configurable age threshold — these represent potential abandoned checkouts where payment was not completed. Export a list with customer email, cart value, and items for use in re-engagement email campaigns. Read-only — no orders are modified.

Note: Native WooCommerce does not expose shopping cart sessions via REST API. This skill uses pending orders as a proxy for abandoned checkouts, which is accurate for stores where WooCommerce creates the order before payment (the default checkout behavior).

Prerequisites

  • WooCommerce store with REST API enabled (WooCommerce → Settings → Advanced → REST API)
  • Consumer Key and Consumer Secret with Read scope
  • Store accessible over HTTPS
  • Minimum WooCommerce version: 3.5.0

Parameters

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | store_url | string | yes | — | Base URL of the WooCommerce store (e.g., https://mystore.com) | | consumer_key | string | yes | — | WooCommerce REST API consumer key (ck_...) | | consumer_secret | string | yes | — | WooCommerce REST API consumer secret (cs_...) | | dry_run | bool | no | false | No effect — this is a read-only skill | | format | string | no | human | Output format: human or json | | min_age_hours | int | no | 1 | Minimum hours old for an order to be included | | max_age_hours | int | no | 72 | Maximum hours old — exclude very stale orders | | min_cart_value | number | no | 0 | Minimum order total to include | | exclude_guest | bool | no | false | Exclude guest (non-registered) checkouts | | max_results | int | no | 500 | Maximum orders to include in export |

Authentication

WooCommerce uses OAuth 1.0a for HTTP and Basic Auth over HTTPS.

For HTTPS stores (recommended):

Authorization: Basic base64(consumer_key:consumer_secret)

For HTTP stores (development only): Use OAuth 1.0a — include oauthconsumerkey, oauthnonce, oauthsignature, oauthsignaturemethod=HMAC-SHA1, oauthtimestamp, oauthversion=1.0

Never log or output consumerkey or consumersecret values.

See docs/AUTHENTICATION.md for full setup instructions.

Safety

Read-only skill — no mutations are executed. Safe to run at any time.

Workflow Steps

Step 1 — Fetch pending orders within the age window

GET /wp-json/wc/v3/orders
  ?status=pending
  &after=
  &before=
  &per_page=100
  &page=1
  &orderby=date
  &order=desc

Extract per order: id, number, date_created, total, total_tax, customer_id, billing.first_name, billing.last_name, billing.email, billing.phone, line_items[].name, line_items[].quantity, line_items[].total

Paginate until response length ║ ║ TIME: ║ ║ MODE: READ-ONLY ║ ╚══════════════════════════════════════════╝


PER-OPERATION (emit after each API call batch):

[N/TOTAL] → records | params: =


COMPLETION (human format):

╔══════════════════════════════════════════╗ ║ COMPLETE: woo-abandoned-cart-recovery ║ ║ RECORDS PROCESSED: ║ ║ OUTPUT: ║ ╚══════════════════════════════════════════╝


COMPLETION (json format):

```json
{
  "skill": "woo-abandoned-cart-recovery",
  "store": "",
  "completed_at": "",
  "records_processed": ,
  "output_file": "",
  "dry_run": false
}

Output Format

Summary (human format):

ABANDONED CART RECOVERY — mystore.com
Window: 1h – 72h ago | Min value: $0 | 2025-04-14

  Total pending orders found:   83
  After filters (value/guest):  71
  Total potential recovery:     $8,421.50
  Average cart value:           $118.61

  Age Distribution:
    1–12h:   42 orders   $4,810
    12–24h:  19 orders   $2,200
    24–72h:  10 orders   $1,411

  Top 5 by cart value:
    #5901  $542.00  jane@example.com   2h 14m ago
    #5888  $398.50  bob@example.com    5h 02m ago
    ...

  Exported: woo-abandoned-cart-recovery_2025-04-14.csv (71 rows)

CSV filename: woo-abandoned-cart-recovery_.csv Columns: order_id, order_number, date_created, age_hours, customer_id, first_name, last_name, email, phone, total, items_summary, is_guest

Error Handling

| Error | Cause | Resolution | |-------|-------|------------| | 401 Unauthorized | Invalid or missing credentials | Verify consumerkey and consumersecret | | 403 Forbidden | Consumer Key lacks Read scope | Regenerate key with Read scope | | 429 Too Many Requests | Rate limit hit during pagination | Wait 2 seconds and retry; reduce per_page to 50 | | Empty result | No pending orders in window | Adjust min_age_hours / max_age_hours |

Best Practices

  • Start with min_age_hours: 1 and max_age_hours: 24 to focus on the highest-intent window.
  • Import the CSV into your email platform (Klaviyo, Mailchimp, etc.) for automated cart recovery flows.
  • Run daily and deduplicate against already-contacted emails in your CRM.
  • For stores using WooCommerce Cart Abandonment Recovery plugin: that plugin has its own cart session data — this skill complements it with order-level data.
  • Segment by is_guest and total to prioritize high-value registered customers first.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.