Auto send thank-you messages & loyalty coupons via WhatsApp from Shopify using Rapiwa
$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
Shopify Auto Send WhatsApp Thank-You Messages & Loyalty Coupon Using Rapiwa API
Who is this for?
This workflow is for Shopify store owners, marketers, and support teams who want to automatically message their high-value customers on WhatsApp when new discount codes are created.
What this workflow does
- Fetches customer data from Shopify
- Filters customers where
total_spent > 5000 - Cleans phone numbers (removes non-digit characters) and normalizes them to an international format
- Verifies numbers via the Rapiwa API (
verify-whatsappendpoint) - Sends coupon or thank-you messages to verified numbers via the Rapiwa
send-messageendpoint - Logs each send attempt to Google Sheets with
statusandvalidity - Uses batching (SplitInBatches) and Wait nodes to avoid rate limits
Key features
- Automated trigger: Shopify webhook (
discounts/create) or manual trigger - Targeted sending to high-value customers
- Pre-send verification to reduce failed sends
- Google Sheets logging and status updates
- Rate-limit protection using Wait node
#How to use?
Step-by-step setup
Prepare a Google Sheet
- Columns:
name,number,status,validity,check(optional) - Example row:
Abdul Mannan | 8801322827799 | not sent | unverified | check
- Columns:
Configure n8n credentials
- Shopify: store access token (X-Shopify-Access-Token)
- Rapiwa: Bearer token (HTTP Bearer credential)
- Google Sheets: OAuth2 credentials and sheet access
Configure the nodes
- Webhook/Trigger: Shopify
discounts/createor Manual Trigger - HTTP Request (Shopify):
/admin/api/<version>/customers.json - Code node: filter customers
total_spent > 5000and map fields - SplitInBatches: batching/looping
- Code (clean number):
waNoStr.replace(/\D/g, "") - HTTP Request (Rapiwa verify): POST
https://app.rapiwa.com/api/verify-whatsappbody{ number } - IF node: check
data.existsto decide branch - HTTP Request (Rapiwa send-message): POST
https://app.rapiwa.com/api/send-messagebody{ number, message_type, message } - Google Sheets Append/Update: write
statusandvalidity - Wait: add 2–5 seconds delay between sends
- Webhook/Trigger: Shopify
Test with a small batch
- Run manually with 2–5 records first and verify results
Google Sheet column structure
A Google Sheet formatted like this ➤ Sample
| Name | Number | Status | Validity |
|---|---|---|---|
| Abdul Mannan | 8801322827798 | not sent | unverified |
| Abdul Mannan | 8801322827799 | sent | verified |
Requirements
- Shopify Admin API access (store access token)
- Rapiwa account and Bearer token
- Google account and Google Sheet (OAuth2 setup)
- n8n instance (nodes used: HTTP Request, Code, SplitInBatches, IF, Google Sheets, Wait)
Customization ideas
- Adjust the filter (e.g., order count, customer tags)
- Use message templates to insert name and coupon code per customer
- Add an SMS or email fallback for unverified numbers
- Send a run summary to admin (Slack / email)
- Store logs in a database for deeper analysis
Important notes
data.existsmay be a boolean or a string — normalize it in a Code node before using in an IF node- Ensure Google Sheets column names match exactly
- Store Rapiwa and Shopify tokens securely in n8n credentials
- Start with small batches for testing and scale gradually
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