Shopify + Google Sheets: smarter WhatsApp cart nudges
Abandoned carts hurt, but the real frustration is the follow-up. You know there’s money sitting there, and it still turns into a messy spreadsheet, missed reminders, and “I’ll message them later” that never happens.
WhatsApp cart recovery hits store owners first, honestly. But marketing managers running promos and customer support leads trying to save sales feel the same chaos. This automation gives you a clean, repeatable way to nudge shoppers without babysitting every message.
You’ll set up an n8n workflow that pulls abandoned checkouts from Shopify, verifies WhatsApp numbers via Rapiwa, sends a personalized reminder, and logs every attempt in Google Sheets so you can track what’s actually happening.
How This Automation Works
Here’s the complete workflow you’ll be setting up:
n8n Workflow Template: Shopify + Google Sheets: smarter WhatsApp cart nudges
flowchart LR
subgraph sg0["Scheduled Automation Start Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Scheduled Automation Start", pos: "b", h: 48 }
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Retrieve Shopify Checkouts"]
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Shape Checkout Payload"]
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Iterate Checkout Records", pos: "b", h: 48 }
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Sanitize WhatsApp Digits"]
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Validate WhatsApp via Rapiwa"]
n6@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Branch by Validity", pos: "b", h: 48 }
n7["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Dispatch WhatsApp Notice"]
n8@{ icon: "mdi:database", form: "rounded", label: "Log Verified Send", pos: "b", h: 48 }
n9@{ icon: "mdi:cog", form: "rounded", label: "Pause Before Next", pos: "b", h: 48 }
n10@{ icon: "mdi:database", form: "rounded", label: "Log Unverified Entry", pos: "b", h: 48 }
n6 --> n7
n6 --> n10
n9 --> n3
n1 --> n2
n7 --> n8
n3 --> n4
n0 --> n1
n4 --> n5
n2 --> n3
n8 --> n9
n5 --> n6
n10 --> n9
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n6 decision
class n8,n10 database
class n1,n5,n7 api
class n2,n4 code
classDef customIcon fill:none,stroke:none
class n1,n2,n4,n5,n7 customIcon
Why This Matters: Abandoned cart follow-ups fall through
If you’re relying on manual cart recovery, the “system” usually looks like this: someone checks Shopify, copies a phone number, formats it, writes a message, sends it, then tries to remember to record what happened. It works for five carts. It breaks at fifty. And it breaks quietly, because you don’t always notice the missed follow-ups until your revenue report looks a little too calm. The mental load is the worst part. You’re constantly wondering what got sent, what failed, and what you simply forgot.
It adds up fast. Here’s where it tends to crack.
- You waste about 10 minutes per cart just cleaning numbers, writing messages, and copying product links.
- Some numbers aren’t even on WhatsApp, so you burn time (and credibility) sending messages that never land.
- Your tracking becomes unreliable because “sent” lives in someone’s head, not in a shared sheet.
- When volume spikes during a sale, follow-ups slip, which means your best recovery window passes.
What You’ll Build: Shopify-to-WhatsApp reminders with clean logging
This workflow runs on a schedule (every few minutes by default) and checks Shopify for abandoned checkouts. It shapes that checkout data into a simple structure that’s easy to personalize, then loops through each record in small batches so you’re not blasting messages all at once. Before sending anything, it sanitizes the phone number (so spaces, plus signs, and odd characters don’t wreck delivery) and asks Rapiwa if the number is actually a WhatsApp user. If it’s valid, the workflow sends your reminder via the Rapiwa API and records the attempt as “sent/verified” in Google Sheets. If it’s not valid, it skips the send and logs “not sent/unverified,” so you still have a truthful audit trail.
The flow starts with Shopify checkout retrieval, moves into cleanup and verification, then finishes with sending plus a Google Sheets update. A short wait is added between messages to reduce rate-limit issues and keep your WhatsApp number safer during bulk sends.
What You’re Building
| What Gets Automated | What You’ll Achieve |
|---|---|
|
|
Expected Results
Say you get about 20 abandoned carts a day. Manually, if each follow-up takes roughly 10 minutes between finding the checkout, fixing the number, sending a WhatsApp message, and updating a sheet, that’s around 3 hours daily. With this workflow, the “work” becomes checking your sheet and tweaking copy, maybe 10 minutes total, while n8n processes the batch in the background with a short wait between sends. That’s about 2 to 3 hours back most days, plus far fewer “did we message them?” moments.
Before You Start
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Shopify for abandoned checkout data access
- Google Sheets to log sends and statuses
- Rapiwa API key (get it from your Rapiwa dashboard)
Skill level: Intermediate. You’ll connect accounts, add credentials, and adjust a message template, but you won’t be writing an app.
Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).
Step by Step
A scheduled check looks for abandoned carts. Every 5 minutes by default, n8n runs and pulls abandoned checkout records from Shopify using an HTTP request. If you prefer fewer runs, you can change the schedule to every 15 minutes or hourly.
The checkout data gets shaped into message-ready fields. A small processing step turns the raw payload into the pieces you actually need, like customer name, item name, item link, order or checkout reference, and the WhatsApp number.
Numbers are cleaned, verified, and then sent (or skipped). The workflow loops through carts in small batches, strips phone numbers down to digits, then checks each number with Rapiwa to confirm it’s on WhatsApp. If it passes, the message goes out through another HTTP request. If it fails, it doesn’t send anything.
Everything is written to Google Sheets so you can trust your reporting. Verified sends are logged as sent/verified, and invalid numbers get a not sent/unverified entry. A short wait between records reduces rate-limit issues and keeps the sending behavior more natural.
You can easily modify the message content to include product links, coupons, or a different tone based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Schedule Trigger
Set the workflow to run on a schedule and start the Shopify checkout retrieval.
- Add the Scheduled Automation Start node and open its settings.
- In Rule, define your desired interval (the default schedule structure is already present).
- Connect Scheduled Automation Start to Retrieve Shopify Checkouts.
Step 2: Connect Shopify Checkout Retrieval
Pull abandoned checkouts from Shopify using the HTTP request node with header authentication.
- Open Retrieve Shopify Checkouts and set URL to
https://salebotsg.myshopify.com/admin/api/2025-07/checkouts.json. - Set Authentication to
genericCredentialTypeand Generic Auth Type tohttpHeaderAuth. - Credential Required: Connect your
httpHeaderAuthcredentials. - Connect Retrieve Shopify Checkouts to Shape Checkout Payload.
Step 3: Set Up Checkout Processing and Validation
Format checkout data, batch records, sanitize phone numbers, and validate WhatsApp availability before sending messages.
- In Shape Checkout Payload, keep the JavaScript that maps Shopify checkouts into structured fields (checkoutId, customerName, number, productTitle, quantity, totalPrice, presentment_currency, abandonedCheckoutURL).
- Connect Shape Checkout Payload to Iterate Checkout Records and use it to iterate items in batches.
- Connect Iterate Checkout Records to Sanitize WhatsApp Digits (second output) to clean non-digit characters from the phone number.
- Open Validate WhatsApp via Rapiwa and set URL to
=https://app.rapiwa.com/api/verify-whatsappwith Method set toPOSTand Send Body enabled. - Set the body parameter number to
{{ $json.number }}. - Credential Required: Connect your
httpBearerAuthcredentials to Validate WhatsApp via Rapiwa. - In Branch by Validity, set the condition to check
{{ $json.data.exists }}with booleantrue.
Step 4: Configure WhatsApp Messaging and Logging
Send messages to verified numbers and log both verified and unverified results to Google Sheets, then pause before processing the next record.
- Connect Branch by Validity to Dispatch WhatsApp Notice for the true branch and to Log Unverified Entry for the false branch.
- In Dispatch WhatsApp Notice, set URL to
=https://app.rapiwa.com/api/send-message, Method toPOST, and enable Send Body. - Set body parameters in Dispatch WhatsApp Notice: number to
{{ $json.data.number }}, message_type totext, and message to the provided template that references{{ $('Sanitize WhatsApp Digits').item.json.customerName }}and related fields. - Credential Required: Connect your
httpBearerAuthcredentials to Dispatch WhatsApp Notice. - Configure Log Verified Send with Operation set to
append, Document set to[YOUR_ID], and Sheet toSheet1(gid=0). Map columns using expressions like{{ $('Sanitize WhatsApp Digits').item.json.customerName }}and{{ $('Branch by Validity').item.json.data.number }}. - Credential Required: Connect your
googleSheetsOAuth2Apicredentials to Log Verified Send. - Configure Log Unverified Entry with Operation set to
append, Document set to[YOUR_ID], and Sheet toSheet1(gid=0). Use expressions such as{{ $json.data.number }}and{{ $('Iterate Checkout Records').item.json.totalPrice }}. - Credential Required: Connect your
googleSheetsOAuth2Apicredentials to Log Unverified Entry. - Connect Log Verified Send and Log Unverified Entry to Pause Before Next, then connect Pause Before Next back to Iterate Checkout Records to continue processing.
Step 5: Test and Activate Your Workflow
Verify the full flow from retrieval to WhatsApp delivery and logging, then enable it for production use.
- Click Execute Workflow to run a manual test from Scheduled Automation Start.
- Confirm Retrieve Shopify Checkouts returns data and Shape Checkout Payload outputs items with fields like
customerName,number, andabandonedCheckoutURL. - Verify Validate WhatsApp via Rapiwa returns
data.existsand that Branch by Validity routes items accordingly. - Check that verified numbers receive messages from Dispatch WhatsApp Notice and that both Log Verified Send and Log Unverified Entry append rows in Google Sheets.
- Set the workflow to Active to begin scheduled runs.
Troubleshooting Tips
- Google Sheets credentials can expire or need specific permissions. If things break, check the Google connection in n8n Credentials and re-auth if needed.
- If you’re using Wait nodes or external sending, processing times vary. Bump up the wait duration if downstream HTTP nodes fail or you start seeing rate-limit style responses.
- Rapiwa requests depend on a valid Bearer token. If your WhatsApp verification or send calls fail, regenerate your API key in the Rapiwa dashboard and update the HTTP Bearer credential in n8n.
Quick Answers
About 30 minutes if your accounts and sheet are ready.
No. You’ll mostly connect accounts and paste in an API key. The included workflow already handles the cleanup and branching logic.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Rapiwa costs depending on your sending volume.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, and you should. Most people start by editing the “Dispatch WhatsApp Notice” HTTP Request body to change the message, then adjust the schedule and batch size in “Iterate Checkout Records.” Common tweaks include adding a coupon field from your sheet, inserting a product link pulled from the checkout payload, or changing the status labels your team uses in Google Sheets.
Usually it’s an invalid or expired Bearer token. Regenerate your Rapiwa API key and update the HTTP Bearer credential in n8n, then re-run a single test item. If verification works but sending fails, double-check the endpoint and payload fields (especially the number format). Rate limiting can also show up as intermittent failures if your wait time is too short or batches are too big.
If you self-host n8n, there’s no execution cap (it mostly depends on your server and how aggressively you send). The workflow is already designed for volume because it uses batching plus a Wait node, so processing a few hundred carts a day is realistic as long as you keep sensible delays and monitor deliverability.
Often, yes, but it depends on what “better” means for you. Zapier and Make are great for quick, lightweight automations, but this flow benefits from n8n’s control over batching, waiting between sends, and branching based on the WhatsApp verification response. You also get the option to self-host, which matters when you’re running frequent scheduled checks and don’t want per-task pricing surprises. The tradeoff is setup: you’ll spend a little more time up front connecting credentials and testing. If you’re unsure, Talk to an automation expert and we’ll point you to the simplest path.
This is the kind of workflow you set up once and then rely on every day. The repetitive follow-up happens automatically, and you get your time (and your numbers) back.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.