<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Md Najmul Huda</title>
    <description>The latest articles on DEV Community by Md Najmul Huda (@najmulmyself).</description>
    <link>https://dev.to/najmulmyself</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F500093%2Fea887bf5-86b7-427e-b5ac-0e7cce744ab2.png</url>
      <title>DEV Community: Md Najmul Huda</title>
      <link>https://dev.to/najmulmyself</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/najmulmyself"/>
    <language>en</language>
    <item>
      <title>How I built a 3-channel cart recovery system with n8n, Shopify, and WhatsApp (23% recovery rate)</title>
      <dc:creator>Md Najmul Huda</dc:creator>
      <pubDate>Tue, 02 Jun 2026 11:25:28 +0000</pubDate>
      <link>https://dev.to/najmulmyself/how-i-built-a-3-channel-cart-recovery-system-with-n8n-shopify-and-whatsapp-23-recovery-rate-31c7</link>
      <guid>https://dev.to/najmulmyself/how-i-built-a-3-channel-cart-recovery-system-with-n8n-shopify-and-whatsapp-23-recovery-rate-31c7</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3yl6djivl37inpub4s30.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3yl6djivl37inpub4s30.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;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.&lt;br&gt;
The problem wasn't the copy. It was the channel.&lt;br&gt;
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.&lt;br&gt;
The workflow&lt;br&gt;
Trigger: Shopify checkouts/create webhook fires on abandonment (I set a 5-minute delay in n8n before acting, to filter out fast completions).&lt;br&gt;
Step 1 — WhatsApp (T+5 min)&lt;br&gt;
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:&lt;/p&gt;

&lt;p&gt;"Hey! That navy medium jogger you saved is running low — 3 left. Held your checkout for 24 hours if you want it."&lt;/p&gt;

&lt;p&gt;This beats a template because it uses actual cart data and doesn't read like automation.&lt;br&gt;
Step 2 — SMS (T+2 hrs)&lt;br&gt;
If no click/reply on the WhatsApp message, an n8n wait node triggers a Twilio SMS. Shorter message, same personalization pattern.&lt;br&gt;
Step 3 — Email (T+24 hrs / Day 2)&lt;br&gt;
The Klaviyo sequence starts here. By this point they've already seen the brand twice, so the email isn't cold.&lt;br&gt;
Stack&lt;/p&gt;

&lt;p&gt;n8n — workflow orchestration, all the logic lives here&lt;br&gt;
Shopify webhooks — checkout abandonment trigger + inventory lookups&lt;br&gt;
WhatsApp Business API — via a BSP (I used 360dialog, others work too)&lt;br&gt;
OpenAI — message personalization&lt;br&gt;
Twilio — SMS fallback&lt;br&gt;
Klaviyo — email (unchanged from what she already had)&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjxo6emp9frauypz5y139.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjxo6emp9frauypz5y139.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>automation</category>
      <category>shopify</category>
      <category>n8n</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
