Shopify to WhatsApp, instant order confirmations
Order confirmations look simple until they aren’t. One missed message, one mistyped number, and suddenly you’re digging through Shopify orders while a customer asks, “Did it go through?”
This Shopify WhatsApp confirmations automation hits store owners first, honestly. But ops managers and support teams feel it too, because they’re the ones cleaning up the mess when confirmations don’t get out on time.
You’ll set up an n8n workflow that validates WhatsApp numbers with Rapiwa, sends a personalized order confirmation, and logs every attempt in Google Sheets so you can prove what happened later.
How This Automation Works
Here’s the complete workflow you’ll be setting up:
n8n Workflow Template: Shopify to WhatsApp, instant order confirmations
flowchart LR
subgraph sg0["Flow 1"]
direction LR
n0@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", 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/webhook.dark.svg' width='40' height='40' /></div><br/>Webhook"]
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/>Clean WhatsApp Number"]
n3["<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/>Check valid whatsapp number .."]
n4@{ icon: "mdi:cog", form: "rounded", label: "Wait", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n6@{ icon: "mdi:database", form: "rounded", label: "Change State of Rows in Unve..", 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/>Send Message Using Rapiwa"]
n8@{ icon: "mdi:database", form: "rounded", label: "Change State of Rows in Veri..", pos: "b", h: 48 }
n9["<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/>Clean Webhooks Response Data"]
n5 --> n7
n5 --> n6
n4 --> n0
n1 --> n0
n0 --> n9
n2 --> n3
n7 --> n8
n9 --> n2
n8 --> n4
n3 --> n5
n6 --> n4
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 n5 decision
class n6,n8 database
class n1,n3,n7 api
class n2,n9 code
classDef customIcon fill:none,stroke:none
class n1,n2,n3,n7,n9 customIcon
Why This Matters: Order confirmations that don’t slip
When order confirmations are manual, they tend to happen “in between” everything else. You ship a few orders, answer a few tickets, then remember you still need to message today’s customers. That’s where delays creep in. And when a message fails, you usually don’t find out until a customer follows up, which means your support inbox becomes the monitoring system. It’s also easy to lose context. You might know an order exists in Shopify, but you can’t quickly prove if a WhatsApp message was actually sent, skipped, or failed.
It adds up fast. Here’s where it breaks down in real stores.
- Copying names, order IDs, and totals into a WhatsApp message invites small mistakes that look big to customers.
- Phone numbers arrive messy (spaces, plus signs, brackets), so you waste time fixing them or you send to the wrong format.
- If the number isn’t registered on WhatsApp, you only learn after you’ve already tried to send and nothing happens.
- Without a log in Google Sheets, support can’t quickly answer “Did we send it?” and you end up re-checking everything manually.
What You’ll Build: Verified WhatsApp confirmations with a Sheets audit trail
This workflow starts the moment Shopify fires an order webhook into n8n (for a new order or an update). n8n then processes the incoming order payload in batches so the automation stays stable even when a sales spike hits. It normalizes the order data, pulls out the customer’s name, phone number, line items, totals, and shipping details, then cleans the phone number into a consistent numeric format. Next, it calls the Rapiwa API to verify the customer’s number is actually registered on WhatsApp. If it’s verified, the workflow sends a templated order confirmation message via Rapiwa. Either way, every attempt is written to Google Sheets so you have a clean history of “verified/unverified” and “sent/not sent.”
The flow is straightforward: Shopify triggers the webhook, n8n cleans and checks the number, then Rapiwa sends (or skips) the WhatsApp message based on verification. Finally, Google Sheets becomes your audit log, and a short delay helps avoid rate limits when multiple orders arrive close together.
What You’re Building
| What Gets Automated | What You’ll Achieve |
|---|---|
|
|
Expected Results
Say you process about 30 orders a day and you normally spend maybe 2 minutes per order copying details into WhatsApp and double-checking the number. That’s roughly 1 hour of repetitive work daily, plus the extra time when a number bounces. With this workflow, you spend about 15 minutes once to set up the message template and sheet columns, then each order is handled automatically. The “work” becomes checking the Google Sheet when you want proof, not doing the sending.
Before You Start
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Shopify to fire order webhooks into n8n.
- Rapiwa API to verify numbers and send WhatsApp messages.
- Google Sheets to store your send log and statuses.
- Rapiwa Bearer token (get it from your Rapiwa dashboard/account settings).
Skill level: Intermediate. You’ll paste API credentials, set up a Shopify webhook, and match a few Google Sheet columns.
Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).
Step by Step
A Shopify order event triggers the workflow. Shopify sends a webhook to n8n when an order is created or updated, so you’re not polling or exporting anything manually.
The order details get cleaned and shaped. n8n normalizes the payload, pulls out the fields you actually need for messaging (name, items, totals, shipping), and strips non-numeric characters from the phone number so it’s consistent.
Rapiwa checks the number, then sends or skips. The workflow calls Rapiwa’s verify endpoint to see if the number exists on WhatsApp. If it’s verified, a confirmation message is sent via Rapiwa’s send-message endpoint; if not, it records that it wasn’t sent so your team doesn’t wonder later.
Google Sheets becomes the audit trail. Each order gets a row update that includes validity (verified/unverified) and status (sent/not sent), and a short wait helps avoid rate limiting when multiple orders arrive close together.
You can easily modify the message template to match your brand tone, or adjust the delay to fit your order volume. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Webhook Trigger
Set up the inbound webhook that starts the workflow when a new order payload arrives.
- Add the Incoming Webhook Trigger node and set HTTP Method to
POST. - Set the Path to
a9b6a936-e5f2-4d4c-9cf9-182de0a970d5so your external system can post orders to the correct endpoint. - Connect Incoming Webhook Trigger to Iterate Order Batches to begin batch processing.
Step 2: Configure Batch Processing and Payload Normalization
Split incoming data into batches, then normalize fields into a consistent structure for WhatsApp validation and messaging.
- Add Iterate Order Batches and keep default settings to process incoming items in batches.
- Add Normalize Order Payload and paste the provided JavaScript into JS Code to map order fields (e.g., customer name, shipping address, line items).
- Connect Normalize Order Payload to Sanitize WhatsApp Number so phone numbers are cleaned before verification.
- In Sanitize WhatsApp Number, ensure the JS Code cleans non-digits from
WhatsApp No.
WhatsApp No field in each item. Ensure your incoming payload or normalization step sets this value.Step 3: Verify WhatsApp Registration
Check whether the cleaned WhatsApp number is registered before sending a confirmation message.
- Add Verify WhatsApp Registration and set URL to
=https://app.rapiwa.com/api/verify-whatsapp. - Set Method to
POSTand enable Send Body. - Add a body parameter named
numberwith value{{ $json["WhatsApp No"] }}. - Credential Required: Connect your
httpBearerAuthcredentials. - Connect Sanitize WhatsApp Number to Verify WhatsApp Registration, then to Branch on Verification.
Step 4: Route by Verification Status and Send WhatsApp Message
Use conditional logic to send a WhatsApp confirmation only when the number is verified.
- In Branch on Verification, set the condition to evaluate
{{ $json.data.exists }}as true. - Connect the true branch from Branch on Verification to Dispatch WhatsApp Notice.
- In Dispatch WhatsApp Notice, set URL to
https://app.rapiwa.com/api/send-messageand Method toPOST. - Set body parameters for the message, including
{{ $json.customer_phone }},{{ $json.customer_full_name }}, and the full order summary as shown in the node configuration. - Credential Required: Connect your
httpHeaderAuthcredentials (the node is configured for header auth).
The false branch from Branch on Verification should go directly to Update Unverified Sheet Rows to log unverified numbers.
Step 5: Update Google Sheets and Loop for Next Batch
Write verification results to Google Sheets and use a wait node to continue batch processing.
- In Update Verified Sheet Rows, set Operation to
update, select Document[YOUR_ID], and SheetSheet1(gid0). - Map columns using expressions like
{{ $json.name }},{{ $json.email }},{{ $json.phone }}, and set validity toverified. - Credential Required: Connect your
googleSheetsOAuth2Apicredentials. - In Update Unverified Sheet Rows, set Operation to
update, and map row_number to{{ $('Limit').item.json.row_number }}. - Credential Required: Connect your
googleSheetsOAuth2Apicredentials. - Connect both sheet update nodes to Delay Next Cycle, then route Delay Next Cycle back to Iterate Order Batches to continue processing.
row_number.Step 6: Test & Activate Your Workflow
Validate the workflow end-to-end, then activate it for production traffic.
- Click Execute Workflow and send a sample payload to the Incoming Webhook Trigger test URL.
- Confirm that Normalize Order Payload outputs the expected fields and Sanitize WhatsApp Number produces digits-only numbers.
- Verify that Verify WhatsApp Registration returns a
data.existsvalue and that Branch on Verification routes correctly. - Check Google Sheets updates in both verified and unverified paths, and confirm Dispatch WhatsApp Notice sends the message to your test number.
- When tests pass, toggle the workflow to Active to enable production processing.
Troubleshooting Tips
- Rapiwa credentials can expire or need specific permissions. If things break, check your Bearer token in the Rapiwa dashboard and update the HTTP Request auth in n8n first.
- If you’re using Wait nodes or external processing, timing varies. If the Google Sheets update runs before the prior request returns, bump the wait duration so downstream nodes don’t run on empty data.
- Default message templates get generic fast. Add your brand voice, shipping expectations, and support contact details early, or you’ll be editing WhatsApp messages after the fact.
Quick Answers
About 30 minutes if your Shopify webhook, Rapiwa token, and Google Sheet are ready.
No. You’ll import the workflow, connect credentials, and tweak a message template. The existing Code nodes are already set up for cleaning and mapping fields.
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 API usage based on how many checks and messages you send.
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, easily. You can change the message content inside the “Dispatch WhatsApp Notice” HTTP Request node, and you can swap the trigger from the Shopify webhook to a Google Sheets-based trigger if you want to backfill older orders. Common tweaks include adding country-code rules in “Sanitize WhatsApp Number,” writing extra columns (like fulfillment status) in the Google Sheets update nodes, and adjusting the Wait node delay to match your volume.
Usually it’s an invalid or expired Bearer token in the HTTP Request nodes. Regenerate the token in Rapiwa, then update the credential used by “Verify WhatsApp Registration” and “Dispatch WhatsApp Notice.” Also check the exact response field your If node is reading (some APIs return true vs “true”), because one small mismatch will route every order down the wrong branch.
Plenty for most small stores. The workflow processes orders in batches and adds a short delay between sends, so a few hundred orders a day is realistic as long as your Rapiwa limits and n8n resources can handle it.
Often, yes, because this setup needs conditional logic (verify, branch, then send) plus reliable logging to Google Sheets. n8n also makes it easier to keep the workflow readable when you add extras like delays, retries, or separate handling for unverified numbers. Zapier or Make can still work if you’re doing a simple “new order → send message” flow, but you’ll usually end up adding steps and paying more as it grows. If you want help choosing based on your store volume and support load, Talk to an automation expert.
You set it up once, and every order gets the same fast confirmation and the same clean paper trail in Sheets. Support gets proof, ops gets consistency, and you get time 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.