WooCommerce order updates to customers via WhatsApp with Rapiwa API
$20/month : Unlimited workflows
2500 executions/month
THE #1 IN WEB SCRAPING
Scrape any website without limits
HOSTINGER 🎉 Early Black Friday Deal
DISCOUNT 20% Try free
DISCOUNT 20%
Self-hosted n8n
Unlimited workflows - from $4.99/mo
#1 hub for scraping, AI & automation
6000+ actors - $5 credits/mo
Who is this for?
This workflow is for online store owners, support teams, and marketing staff who want to automatically verify WhatsApp numbers and send order invoice links or personalized order updates to customers. It’s built against WooCommerce order webhooks but can be adapted to Shopify or other e-commerce platforms that provide billing and line_items.
What this Workflow Does
- Receives order events (Webhook / WooCommerce
order.updated). - Normalizes the payload into a compact object:
{ data: { customer, products, invoice_link } }via a Code node. - Iterates items in batches (
SplitInBatches) to control throughput. - Cleans phone numbers (removes non-digits) and verifies WhatsApp registration using Rapiwa (
/api/verify-whatsapp). - Sends templated WhatsApp messages through Rapiwa (
/api/send-message) for verified numbers. - Logs every attempt into Google Sheets: one sheet for verified & sent rows, another for unverified & not sent rows.
- Uses a
Waitnode to throttle and loop back into the batch processor.
Key Features
- Trigger-based automation (Webhook or WooCommerce trigger).
- Payload normalization and mapping via JavaScript Code nodes.
- Controlled batching (SplitInBatches) to avoid rate limits.
- Pre-send verification of WhatsApp numbers using Rapiwa.
- Conditional branching with the IF node to separate verified vs unverified flows.
- Personalized message templates that pull customer and product fields from the mapped data.
- Logging and audit trail stored in Google Sheets (two separate append flows).
How to Use — Step-by-step Setup
Add credentials in n8n
- Rapiwa: Create an HTTP Bearer credential and paste your Bearer token (example name used in the flow:
Rapiwa Bearer Auth). - Google Sheets: Create an OAuth2 credential (example:
Google Sheets). - WooCommerce: Add WooCommerce API credentials for the trigger (or configure Shopify credentials if adapting).
- Rapiwa: Create an HTTP Bearer credential and paste your Bearer token (example name used in the flow:
Import / configure nodes in n8n
- Webhook (or WooCommerce Trigger): receive order payloads. Example Webhook path is present in the exported flow.
- Code node
Format Webhook Response Data: mapbody.billing,body.line_items,body.payment_urlinto{ data: { customer, products, invoice_link } }. - Code node
Clean WhatsApp Number: ensure the phone number is a string and strip non-digits:String(rawNumber).replace(/\D/g, ""). - HTTP Request
Check valid whatsapp number Using Rapiwa: POST tohttps://app.rapiwa.com/api/verify-whatsappwith{ number }. Use the Rapiwa Bearer credential. - IF
If: check verification result. The flow compares{{$json.data.exists}}to"true"in the exported flow; normalize types if your API returns booleans. - HTTP Request
Rapiwa Sender: POST tohttps://app.rapiwa.com/api/send-messagewithnumber,message_type: 'text', and a templatedmessage(see message template in the flow). - Google Sheets
Store State of Rows in Verified & SentandStore State of Rows in Unverified & Not Sent
Google Sheet Column Structure
Create these columns exactly (the Google Sheets nodes in the flow expect these names): A Google Sheet formatted like this ➤ sample
| Name | Number | Address | Product Title | Product ID | Size | Quantity | Total Price | Product Image | Invoice Link | Product Status | Validity | Status | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Abdul Mannan | 8801322827799 | [email protected] | mirpur dohs | Air Force 1 Reigning Champ Dark Grey 1:1 - 40 | 251 | 40 | 1 | BDT 5800.00 | ![]() |
Invoice | on-hold | verified | sent |
| Abdul Mannan | 8801322827799 | [email protected] | mirpur dohs | Air Force 1 Reigning Champ Dark Grey 1:1 - 40 | 251 | 40 | 1 | BDT 5800.00 | ![]() |
Invoice | on-hold | unverified | not sent |
Customization Ideas
- Adapt the Code mapping node for Shopify payloads or other marketplaces.
- Iterate and include multiple products in the message instead of using
products[0]. - Add filters in the Code node (e.g., only process orders with
total > 5000). - Add fallback channels (SMS or email) for unverified numbers.
- Persist logs into a database for analytics and retention beyond Google Sheets.
- Add admin notifications (Slack, email) at the end of each run.
Useful Links
- Dashboard: https://app.rapiwa.com
- Official Website: https://rapiwa.com
- Documentation: https://docs.rapiwa.com
Support & Help
- WhatsApp: Chat on WhatsApp
- Discord: SpaGreen Community
- Facebook Group: SpaGreen Support
- Website: https://spagreen.net
- Developer Portfolio: Codecanyon SpaGreen

