A client running a Shopify store for sustainable activewear came to me frustrated. Her Klaviyo flows were recovering around 8% of abandoned carts. Analytics showed 70% cart abandonment, mostly mobile — people who opened her email once and never came back.
The problem wasn't the copy. It was the channel.
WhatsApp has ~95% open rates and a ~3 minute average read time. Email on mobile is a swipe-to-dismiss. So I rebuilt the recovery flow around WhatsApp as the primary channel, with SMS and email as fallbacks.
The workflow
Trigger: Shopify checkouts/create webhook fires on abandonment (I set a 5-minute delay in n8n before acting, to filter out fast completions).
Step 1 — WhatsApp (T+5 min)
n8n calls the WhatsApp Business API through a BSP. Before sending, it hits OpenAI with the cart payload — product name, variant (size/color), quantity, current inventory from a Shopify API call — and generates a short, natural-sounding message:
"Hey! That navy medium jogger you saved is running low — 3 left. Held your checkout for 24 hours if you want it."
This beats a template because it uses actual cart data and doesn't read like automation.
Step 2 — SMS (T+2 hrs)
If no click/reply on the WhatsApp message, an n8n wait node triggers a Twilio SMS. Shorter message, same personalization pattern.
Step 3 — Email (T+24 hrs / Day 2)
The Klaviyo sequence starts here. By this point they've already seen the brand twice, so the email isn't cold.
Stack
n8n — workflow orchestration, all the logic lives here
Shopify webhooks — checkout abandonment trigger + inventory lookups
WhatsApp Business API — via a BSP (I used 360dialog, others work too)
OpenAI — message personalization
Twilio — SMS fallback
Klaviyo — email (unchanged from what she already had)

Top comments (0)