Back to Templates

Auto Send Thank-You Messages & Loyalty Coupons via WhatsApp from Shopify using Rapiwa

Last update

Last update 19 hours ago

Share


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-whatsapp endpoint)
  • Sends coupon or thank-you messages to verified numbers via the Rapiwa send-message endpoint
  • Logs each send attempt to Google Sheets with status and validity
  • 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

  1. Prepare a Google Sheet

    • Columns: name, number, status, validity, check (optional)
    • Example row: Abdul Mannan | 8801322827799 | not sent | unverified | check
  2. Configure n8n credentials

    • Shopify: store access token (X-Shopify-Access-Token)
    • Rapiwa: Bearer token (HTTP Bearer credential)
    • Google Sheets: OAuth2 credentials and sheet access
  3. Configure the nodes

    • Webhook/Trigger: Shopify discounts/create or Manual Trigger
    • HTTP Request (Shopify): /admin/api/<version>/customers.json
    • Code node: filter customers total_spent > 5000 and map fields
    • SplitInBatches: batching/looping
    • Code (clean number): waNoStr.replace(/\D/g, "")
    • HTTP Request (Rapiwa verify): POST https://app.rapiwa.com/api/verify-whatsapp body { number }
    • IF node: check data.exists to decide branch
    • HTTP Request (Rapiwa send-message): POST https://app.rapiwa.com/api/send-message body { number, message_type, message }
    • Google Sheets Append/Update: write status and validity
    • Wait: add 2–5 seconds delay between sends
  4. 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.exists may 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

Support & Help