Claude Skill

cart-recovery

Generate a multi-channel abandoned cart recovery sequence — SMS at 15 min (98% open rate, 25-40% conversion) followed by email cadence at 1hr / 24hr / 72hr, plus optional push and retargeting touchpoints..

LLM Mart · 0 points · 0 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download tinh2-skills-hub-registry-analysis_cart-recovery-d38affb.zip · 3 KB
Part of tinh2/skills-hub-registry — 176 skills

Install

skills CLI npx skills add https://github.com/tinh2/skills-hub-registry/tree/main/analysis/cart-recovery
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install tinh2-skills-hub-registry@llmmart
Git git clone https://github.com/tinh2/skills-hub-registry.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole tinh2/skills-hub-registry collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

Abandoned Cart Recovery Sequence Generator

You generate a complete multi-channel cart abandonment recovery flow. Industry benchmark: 20-35% of abandoned carts recoverable with a disciplined multi-channel sequence. SMS-led sequences convert 25-40% (98% open rate); email-only converts 5-15%.

============================================================ === PRE-FLIGHT ===

Verify:

  • Commerce platform: Shopify, WooCommerce, BigCommerce, Stripe Checkout, custom.
  • ESP / SMS provider: Klaviyo (most common DTC), Postscript, Attentive, Sendlane, Omnisend, Drip, Mailchimp.
  • Consent compliance: confirm SMS opt-in language matches TCPA + state laws (FL, NY especially strict in 2026). Email needs CAN-SPAM unsubscribe + physical address.
  • Discount strategy decided: when can you give a discount, and how much? (Brand-protection caps matter.)
  • Average order value (AOV) known: drives the segmentation tiers and incentive thresholds.

Recovery:

  • If SMS provider absent, generate email-only sequence and note the 2-3× recovery gap explicitly.
  • If no opt-in compliance language present in current site, output the required snippet — refusing to publish without it.

============================================================ === PHASE 2: SEQUENCE TIMING ===

Default sequence (mid-tier $50-$150 cart):

Step Channel Delay from abandon Purpose
1 SMS 15 min Reminder, no incentive — intent still hot
2 Email 1 1 hour Reminder + cart preview + reviews
3 Email 2 24 hours Free shipping (if not already free) + urgency
4 Email 3 72 hours Final touch, time-bound discount
(5) Retargeting hours 1-72 Meta + Google dynamic product ads

For low-value carts (< $50): drop SMS (cost > expected return), use Email 1 + Email 3 only, no discount.

For high-value carts (> $150): add Email 4 at 5 days, SMS 2 at 48 hr, free shipping in Email 1, full discount Email 4.

VALIDATION: Sequence config matches the user's AOV tier. Frequency cap honored (no double-send on same day).

============================================================ === PHASE 3: TEMPLATE COPY ===

Generate each touchpoint with platform-native dynamic tags.

SMS @ 15min (≤ 160 chars, single segment to control cost):

Hey {first_name}, your {top_item_name} is waiting. Grab it before it sells out: {short_url}
Reply STOP to opt out.

Email 1 @ 1hr — subject: "You left something behind 👀"

  • Hook line, cart preview (image + name + price), reviews snippet under each item, primary CTA "Complete checkout", secondary "Save for later", footer with reply-to + physical address + unsubscribe.

Email 2 @ 24hr — subject: "Still thinking? Free shipping is on us"

  • Different hero (lifestyle, not product), free shipping callout, customer photo from reviews, inventory urgency line only if stock < 10.

Email 3 @ 72hr — subject: "Last chance: 10% off your cart"

  • Time-bound code (expires in 24 hr, single-use, tied to email), large CTA, cross-sell to similar items as fallback.

VALIDATION: Every template uses dynamic tags compatible with the chosen ESP. No hardcoded product names. Unsubscribe + opt-out present.

============================================================ === PHASE 4: WEBHOOK HANDLERS ===

Generate checkout/abandoned.handler.{ts|py} that fires on:

  • Shopify: checkouts/create + checkouts/update + orders/create (to suppress sequence on purchase).
  • WooCommerce: woocommerce_cart_updated action + woocommerce_thankyou.
  • Stripe Checkout: webhook checkout.session.async_payment_succeeded, expired, completed.

The handler MUST:

  1. Capture: cart items[], cart total, customer email/phone (if available), AOV tier, abandon time.
  2. Suppress if order placed (look up Customer + Order tables for matching email/phone within 7 days).
  3. Honor unsubscribe / STOP lists.
  4. Push event to ESP/SMS provider via API (Klaviyo Track, Postscript Subscriber, etc.).

VALIDATION: Suppression test — if order placed during sequence, remaining steps don't fire. Test fixture covers this.

============================================================ === PHASE 5: DYNAMIC PRODUCT BLOCKS ===

Don't send "you left stuff behind" — show the actual items.

Generate a server-rendered (or ESP-templated) block per template that pulls:

  • Item image (CDN-optimized, fixed aspect ratio so email renders cleanly).
  • Item name + variant + price.
  • Cart line subtotal.
  • One-click "Restore cart" link with hashed token (HMAC-signed URL that re-hydrates the cart on landing — no login required).

VALIDATION: Email renders correctly in Litmus/Email-on-Acid for Gmail/Apple Mail/Outlook (desktop + mobile). Restore link tested.

============================================================ === PHASE 6: REVENUE ATTRIBUTION ===

Tag every recovery touchpoint with UTM + custom click ID so revenue attribution can roll up to the sequence step.

  • ?utm_source=cart_recovery&utm_medium={sms|email}&utm_campaign=abandoned_v1&utm_content=step_{1|2|3}&cid={hashed_user_id}

Output an attribution reporting view that joins:

  • Sends per step
  • CTR per step
  • Cart restores per step
  • Orders per step (within 7-day attribution window)
  • Revenue per step
  • Recovery rate (orders / abandons)

VALIDATION: Reporting query runs against the platform's analytics DB or built-in ESP reports.

============================================================ === PHASE 7: COMPLIANCE & ANTI-DARK-PATTERNS ===

Generate compliance_checklist.md:

  • SMS opt-in language explicit ("Reply YES to receive cart reminders. Msg/data rates apply. Reply STOP to opt out.")
  • STOP keyword auto-suppression wired
  • Email unsubscribe one-click (RFC 8058)
  • Physical mailing address in every email footer (CAN-SPAM)
  • No fake countdown timers
  • No fake inventory urgency
  • Discount code expirations are real (not extended silently)
  • State-specific: CA SB 657 (subscription disclosures), FL TCPA strict liability awareness

VALIDATION: Compliance checklist is checked off per generated sequence before publishing.

============================================================ === SELF-REVIEW ===

Score 1–5:

  • Complete: SMS + email sequence + webhook + attribution + compliance all delivered?
  • Robust: Suppression on purchase works? Cart restore URL re-hydrates? Frequency cap honored?
  • Clean: Templates render across major clients? Subject lines under spam-trigger limits?
  • Lifecycle-credible: Would a Klaviyo / Postscript power-user accept this as production-ready?

Most common gap: forgetting purchase suppression → sending step 3 to someone who completed at step 2. Verify the suppression test passes.

============================================================ === LEARNINGS CAPTURE ===

Append to ~/.claude/skills/cart-recovery/LEARNINGS.md:

  • What worked:
  • What was awkward: <retry/manual fix needed>
  • Suggested patch:
  • Verdict: [Smooth / Minor friction / Major friction]

============================================================ === STRICT RULES ===

  • Never send SMS without explicit opt-in. TCPA penalties are $500-$1,500 per text in the US.
  • Never use fake urgency or fake inventory counts. FTC enforces.
  • Never skip the purchase suppression. Sending "complete checkout" to a customer who paid 30 minutes ago is the fastest way to spike complaints.
  • Never discount in Step 1. You'll train customers to abandon for the coupon.
  • Always include unsubscribe / STOP. Compliance is non-negotiable.
Files (skills-hub-registry)
  • SKILL.md 8.7 KB
    ---
    name: cart-recovery
    description: "Generate a multi-channel abandoned cart recovery sequence — SMS at 15 min (98% open rate, 25-40% conversion) followed by email cadence at 1hr / 24hr / 72hr, plus optional push and retargeting touchpoints.."
    version: "1.0.1"
    category: analysis
    platforms:
      - CLAUDE_CODE
    ---
    
    # Abandoned Cart Recovery Sequence Generator
    
    You generate a complete multi-channel cart abandonment recovery flow. Industry benchmark: 20-35% of abandoned carts recoverable with a disciplined multi-channel sequence. SMS-led sequences convert 25-40% (98% open rate); email-only converts 5-15%.
    
    ============================================================
    === PRE-FLIGHT ===
    ============================================================
    
    Verify:
    
    - [ ] **Commerce platform**: Shopify, WooCommerce, BigCommerce, Stripe Checkout, custom.
    - [ ] **ESP / SMS provider**: Klaviyo (most common DTC), Postscript, Attentive, Sendlane, Omnisend, Drip, Mailchimp.
    - [ ] **Consent compliance**: confirm SMS opt-in language matches TCPA + state laws (FL, NY especially strict in 2026). Email needs CAN-SPAM unsubscribe + physical address.
    - [ ] **Discount strategy decided**: when can you give a discount, and how much? (Brand-protection caps matter.)
    - [ ] **Average order value (AOV) known**: drives the segmentation tiers and incentive thresholds.
    
    Recovery:
    
    - If SMS provider absent, generate email-only sequence and note the 2-3× recovery gap explicitly.
    - If no opt-in compliance language present in current site, output the required snippet — refusing to publish without it.
    
    ============================================================
    === PHASE 2: SEQUENCE TIMING ===
    ============================================================
    
    Default sequence (mid-tier $50-$150 cart):
    
    | Step | Channel     | Delay from abandon | Purpose                                       |
    | ---- | ----------- | ------------------ | --------------------------------------------- |
    | 1    | SMS         | 15 min             | Reminder, no incentive — intent still hot     |
    | 2    | Email 1     | 1 hour             | Reminder + cart preview + reviews             |
    | 3    | Email 2     | 24 hours           | Free shipping (if not already free) + urgency |
    | 4    | Email 3     | 72 hours           | Final touch, time-bound discount              |
    | (5)  | Retargeting | hours 1-72         | Meta + Google dynamic product ads             |
    
    For low-value carts (< $50): drop SMS (cost > expected return), use Email 1 + Email 3 only, no discount.
    
    For high-value carts (> $150): add Email 4 at 5 days, SMS 2 at 48 hr, free shipping in Email 1, full discount Email 4.
    
    VALIDATION: Sequence config matches the user's AOV tier. Frequency cap honored (no double-send on same day).
    
    ============================================================
    === PHASE 3: TEMPLATE COPY ===
    ============================================================
    
    Generate each touchpoint with platform-native dynamic tags.
    
    **SMS @ 15min** (≤ 160 chars, single segment to control cost):
    
    ```
    Hey {first_name}, your {top_item_name} is waiting. Grab it before it sells out: {short_url}
    Reply STOP to opt out.
    ```
    
    **Email 1 @ 1hr** — subject: "You left something behind 👀"
    
    - Hook line, cart preview (image + name + price), reviews snippet under each item, primary CTA "Complete checkout", secondary "Save for later", footer with reply-to + physical address + unsubscribe.
    
    **Email 2 @ 24hr** — subject: "Still thinking? Free shipping is on us"
    
    - Different hero (lifestyle, not product), free shipping callout, customer photo from reviews, inventory urgency line only if stock < 10.
    
    **Email 3 @ 72hr** — subject: "Last chance: 10% off your cart"
    
    - Time-bound code (expires in 24 hr, single-use, tied to email), large CTA, cross-sell to similar items as fallback.
    
    VALIDATION: Every template uses dynamic tags compatible with the chosen ESP. No hardcoded product names. Unsubscribe + opt-out present.
    
    ============================================================
    === PHASE 4: WEBHOOK HANDLERS ===
    ============================================================
    
    Generate `checkout/abandoned.handler.{ts|py}` that fires on:
    
    - Shopify: `checkouts/create` + `checkouts/update` + `orders/create` (to suppress sequence on purchase).
    - WooCommerce: `woocommerce_cart_updated` action + `woocommerce_thankyou`.
    - Stripe Checkout: webhook `checkout.session.async_payment_succeeded`, `expired`, `completed`.
    
    The handler MUST:
    
    1. Capture: cart items[], cart total, customer email/phone (if available), AOV tier, abandon time.
    2. Suppress if order placed (look up Customer + Order tables for matching email/phone within 7 days).
    3. Honor unsubscribe / STOP lists.
    4. Push event to ESP/SMS provider via API (Klaviyo Track, Postscript Subscriber, etc.).
    
    VALIDATION: Suppression test — if order placed during sequence, remaining steps don't fire. Test fixture covers this.
    
    ============================================================
    === PHASE 5: DYNAMIC PRODUCT BLOCKS ===
    ============================================================
    
    Don't send "you left stuff behind" — show the actual items.
    
    Generate a server-rendered (or ESP-templated) block per template that pulls:
    
    - Item image (CDN-optimized, fixed aspect ratio so email renders cleanly).
    - Item name + variant + price.
    - Cart line subtotal.
    - One-click "Restore cart" link with hashed token (HMAC-signed URL that re-hydrates the cart on landing — no login required).
    
    VALIDATION: Email renders correctly in Litmus/Email-on-Acid for Gmail/Apple Mail/Outlook (desktop + mobile). Restore link tested.
    
    ============================================================
    === PHASE 6: REVENUE ATTRIBUTION ===
    ============================================================
    
    Tag every recovery touchpoint with UTM + custom click ID so revenue attribution can roll up to the sequence step.
    
    - `?utm_source=cart_recovery&utm_medium={sms|email}&utm_campaign=abandoned_v1&utm_content=step_{1|2|3}&cid={hashed_user_id}`
    
    Output an attribution reporting view that joins:
    
    - Sends per step
    - CTR per step
    - Cart restores per step
    - Orders per step (within 7-day attribution window)
    - Revenue per step
    - Recovery rate (orders / abandons)
    
    VALIDATION: Reporting query runs against the platform's analytics DB or built-in ESP reports.
    
    ============================================================
    === PHASE 7: COMPLIANCE & ANTI-DARK-PATTERNS ===
    ============================================================
    
    Generate `compliance_checklist.md`:
    
    - [ ] SMS opt-in language explicit ("Reply YES to receive cart reminders. Msg/data rates apply. Reply STOP to opt out.")
    - [ ] STOP keyword auto-suppression wired
    - [ ] Email unsubscribe one-click (RFC 8058)
    - [ ] Physical mailing address in every email footer (CAN-SPAM)
    - [ ] No fake countdown timers
    - [ ] No fake inventory urgency
    - [ ] Discount code expirations are real (not extended silently)
    - [ ] State-specific: CA SB 657 (subscription disclosures), FL TCPA strict liability awareness
    
    VALIDATION: Compliance checklist is checked off per generated sequence before publishing.
    
    ============================================================
    === SELF-REVIEW ===
    ============================================================
    
    Score 1–5:
    
    - **Complete**: SMS + email sequence + webhook + attribution + compliance all delivered?
    - **Robust**: Suppression on purchase works? Cart restore URL re-hydrates? Frequency cap honored?
    - **Clean**: Templates render across major clients? Subject lines under spam-trigger limits?
    - **Lifecycle-credible**: Would a Klaviyo / Postscript power-user accept this as production-ready?
    
    Most common gap: forgetting purchase suppression → sending step 3 to someone who completed at step 2. Verify the suppression test passes.
    
    ============================================================
    === LEARNINGS CAPTURE ===
    ============================================================
    
    Append to `~/.claude/skills/cart-recovery/LEARNINGS.md`:
    
    ## <YYYY-MM-DD> — <platform, ESP, AOV tier>
    
    - **What worked:** <approach that produced clean output>
    - **What was awkward:** <retry/manual fix needed>
    - **Suggested patch:** <concrete improvement>
    - **Verdict:** [Smooth / Minor friction / Major friction]
    
    ============================================================
    === STRICT RULES ===
    ============================================================
    
    - Never send SMS without explicit opt-in. TCPA penalties are $500-$1,500 per text in the US.
    - Never use fake urgency or fake inventory counts. FTC enforces.
    - Never skip the purchase suppression. Sending "complete checkout" to a customer who paid 30 minutes ago is the fastest way to spike complaints.
    - Never discount in Step 1. You'll train customers to abandon for the coupon.
    - Always include unsubscribe / STOP. Compliance is non-negotiable.
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related