Skip to content
Try Free →

The cart_recovery skill

Last updated: · 4 min read

What the skill does

E-commerce cart abandonment is typically 60 to 80% of carts created. The vast majority abandon for reasons the visitor can't or won't articulate: shipping costs, sizing uncertainty, payment friction, second-guessing.

cart_recovery catches them mid-hesitation. The skill watches for behavioral signals from the widget and triggers a proactive bot message:

Looks like you're checking out a denim jacket. Anything I can help with? Sizing, shipping, or discount questions?

The visitor either responds (and the bot resolves whatever was blocking them) or dismisses the message. Either way, the friction is acknowledged. Real e-commerce deployments see 15 to 30% reduction in cart abandonment on the audience this skill triggers against.

The skill is on Growth and above. Growth+

Trigger conditions

Three signals fire the skill:

  1. Idle on cart page. Visitor lands on the cart URL and stays there for 30+ seconds without action.
  2. Stalled checkout. Visitor starts the checkout flow but doesn't complete within 2 minutes.
  3. Exit intent. Visitor moves cursor toward the browser's close button or tab area (desktop only).

Tune the thresholds under AI Agents > Skills > cart_recovery > Triggers. The defaults work for most stores; tighter thresholds catch more abandoners but produce more annoyance.

What the bot says

Default trigger message:

Looks like you're checking out. Anything I can help with? Sizing, shipping, or returns questions?

The bot reads the cart contents (via the page's data layer if exposed, or via the e-commerce integration) and personalizes:

Looks like you're checking out a denim jacket size M. Want me to confirm sizing or shipping options?

Configure the personalization tier under Skills > cart_recovery > Personalization:

  • Generic. Same message regardless of cart contents.
  • Cart-aware. References the items in the cart (default).
  • Product-page-aware. Goes deeper, referencing specific product attributes.

Channel support

The skill works in the website widget channel. Other channels don't have cart-visibility signals:

  • WhatsApp, Telegram, Slack. No cart context. Skill is disabled.
  • Hosted page. No cart context. Skill is disabled.

For non-widget channels, use the content_recommender skill for pre-purchase nudging instead.

Combining with Shopify or WooCommerce

The skill works best with an e-commerce integration enabled. Without one:

  • The bot can detect hesitation but only sees URL paths, not cart contents.
  • The trigger message is generic ("checking out something?").

With Shopify or WooCommerce connected:

  • The bot reads live cart contents.
  • Trigger message references specific items.
  • Bot can offer discount codes (via discount_negotiator) or look up inventory live.

Privacy considerations

Three things to know:

  • No PII collected by the skill itself. The skill watches behavior; doesn't request contact info. If the conversation turns into a real interaction, collect_lead may capture email at that point.
  • Tracking cookies. The widget uses localStorage for conversation continuity, not for ad tracking. cart_recovery doesn't add new tracking surface.
  • Opt-out. Visitors who've dismissed the trigger message twice in one session don't see it again for that session.

Limits

  • Plan availability. Growth and above.
  • Per-visitor frequency. Maximum 1 trigger per cart-session, configurable up to 3.
  • Channel availability. Web widget only.

Common pitfalls

Bot never fires. Cart URL pattern doesn't match. Configure Skills > cart_recovery > Cart URL Pattern to match your store's checkout flow.

Bot fires too often. Threshold too tight. Loosen the idle threshold to 60+ seconds.

Trigger message feels generic. E-commerce integration isn't connected. Connect Shopify or WooCommerce.

Visitor responds but bot doesn't have context. Cart contents weren't passed in the conversation. Verify the e-commerce integration is live under Channel Health.

FAQ

Does this work on mobile?

Yes, but exit intent doesn't fire on mobile (no cursor). Idle and stalled-checkout triggers work normally.

Can I customize the trigger message per product category?

Yes. Configure category-specific messages under Skills > cart_recovery > Messages by Category. Useful when sizing matters for apparel but doesn't for electronics.

Does this work with one-page checkouts?

Yes. The stalled-checkout trigger fires regardless of how many pages the checkout flow has. Idle is based on time-on-page, not page transitions.

Will this annoy customers?

A small fraction find it annoying. AskVault's data shows 88% of triggered visitors either respond (engage) or dismiss without complaint. The dismiss-rate UI is non-intrusive (small toast, not a modal).

Does the bot reduce cart abandonment measurably?

Most teams see 15 to 30% reduction in abandonment on the audience that triggers. Effect varies by product category, average order value, and the quality of the bot's responses to typical hesitation reasons.

Was this page helpful?