Skip to main content

WhatsApp number verify & confirmation system with Rapiwa API and Google Sheets

Workflow preview

Workflow preview
100%
WhatsApp number verify & confirmation system with Rapiwa API and Google Sheets preview
Open on n8n.io

Important notice

This workflow is provided as-is. Please review and test before using in production.

1. Workflow Overview

WhatsApp Number Verify & Confirmation System with Rapiwa API and Google Sheets Who is this for? This n8n workflow makes it easy to verify WhatsApp numbers submitted through a form. When someone fil...

Best for

  • Lead Generation automation workflows
  • advanced n8n builders looking for reusable templates

Tools used

n8n-nodes-base.code, n8n-nodes-base.splitinbatches, n8n-nodes-base.webhook, n8n-nodes-base.if, n8n-nodes-base.googlesheets, n8n-nodes-base.wait, n8n-nodes-base.httprequest, n8n-nodes-base.stickynote

Source and attribution

This workflow is cataloged by N8N Workflows and links back to its original n8n.io source page by SpaGreen Creative.

Original n8n.io source

1.1 Workflow description

Title
WhatsApp number verify & confirmation system with Rapiwa API and Google Sheets
Workflow name
WhatsApp number verify & confirmation system with Rapiwa API and Google Sheets

WhatsApp Number Verify & Confirmation System with Rapiwa API and Google Sheets


Who is this for?

This n8n workflow makes it easy to verify WhatsApp numbers submitted through a form. When someone fills out the form, the automation kicks in—capturing the data via a webhook, checking the WhatsApp number using the Rapiwa API, and sending a confirmation message if the number is valid. All submissions, whether verified or not, are logged into a Google Sheet with a clear status.

It’s a great solution for businesses, marketers, or developers who need a reliable way to verify leads, manage event signups, or onboard customers using WhatsApp.


How it works?

This n8n automation listens for form submissions via a webhook, validates the provided WhatsApp number using the Rapiwa API, sends a confirmation message if the number is verified, and then appends the submission data to a Google Sheet, marking each entry as verified or unverified.


Features

  • Webhook Trigger: Captures form submissions via HTTP POST
  • Data Cleaning: Formats and sanitizes the WhatsApp number
  • Rapiwa API Integration: Checks if the number is registered on WhatsApp
  • Conditional Messaging: Sends confirmation messages only to verified WhatsApp users
  • Google Sheets Integration: Appends all submissions with a validity status
  • Auto Timestamping: Adds the submission date in YYYY-MM-DD format
  • Throttling Support: Built-in delay to avoid hitting API or sheet rate limits
  • Separation of Verified/Unverified: Distinct handling for both types of entries

Nodes Used in the Workflow

  • Webhook
  • Format Webhook Response Data (Code)
  • Loop Over Items (Split In Batches)
  • Cleane Number (Code)
  • check valid whatsapp number (HTTP Request)
  • If (Conditional)
  • Send Message Using Rapiwa
  • verified append row in sheet (Google Sheets)
  • unverified append row in sheet (Google Sheets)
  • Wait1

How to set up?

Webhook

  1. Add a Webhook node to the canvas.
  2. Set HTTP Method to POST.
  3. Copy the Webhook URL path (/a9b6a936-e5f2-4xxxxxxxxxe0a970d5).
  4. In your frontend form or app, make a POST request to:
  5. The request body should include:
{
  "business_name": "ABC Corp",
  "location": "New York",
  "whatsapp": "+1 234-567-8901",
  "email": "[email protected]",
  "name": "John Doe"
}

Format Webhook Response Data

  1. Add a Code node after the Webhook node.
  2. Use this JavaScript code:
const result = $input.all().map(item => {
  const body = item.json.body || {};
  const submitted_date = new Date().toISOString().split('T')[0];

  return {
    business_name: body.business_name,
    location: body.location,
    whatsapp: body.whatsapp,
    email: body.email,
    name: body.name,
    submitted_date: submitted_date
  };
});
return result;

Loop Over Items

  1. Insert a SplitInBatches node after the data formatting.
  2. Set the Batch Size to a reasonable number (e.g. 1 or 10).
  3. This is useful for processing multiple submissions at once, especially if your webhook receives arrays of entries.

Note: If you expect only one submission at a time, it still helps future-proof your workflow.

Cleane Number

  1. Add a Code node named Cleane Number.
  2. Paste the following JavaScript:
const items = $input.all();
const updatedItems = items.map((item) => {
  const waNo = item?.json["whatsapp"];
  const waNoStr = typeof waNo === 'string' ? waNo : (waNo !== undefined && waNo !== null ? String(waNo) : "");
  const cleanedNumber = waNoStr.replace(/\D/g, "");
  item.json["whatsapp"] = cleanedNumber;
  return item;
});
return updatedItems;

Check WhatsApp Number using Rapiwa

  1. Add an HTTP Request node.
  2. Set:
    • Method: POST
    • URL: https://app.rapiwa.com/api/verify-whatsapp
  3. Add authentication:
    • Type: HTTP Bearer
    • Credentials: Select or create Rapiwa token
  4. In Body Parameters, add:
    • number: ={{ $json.whatsapp }}
  5. This API call checks if the WhatsApp number exists and is valid.

Expected Output:

```json
{
    "success": true,
    "data": {
        "number": "+88017XXXXXXXX",
        "exists": true,
        "jid": "88017XXXXXXXXXXXXX",
        "message": "✅ Number is on WhatsApp"
    }
}

Conditional If Check

  1. Add an If node after the Rapiwa validation.
  2. Configure the condition:
    • Left Value: ={{ $json.data.exists }}
    • Operation: true
  3. If true → valid number → go to messaging and append as "verified".
  4. If false → go to unverified sheet directly.

Note: This step branches the flow based on the WhatsApp verification result.

Send WhatsApp Message (Rapiwa)

  1. Add an HTTP Request node under the TRUE branch of the If node.
  2. Set:
    • Method: POST
    • URL: https://app.rapiwa.com/api/send-message
  3. Authentication:
    • Type: HTTP Bearer
    • Use same Rapiwa token
  4. Body Parameters:
    • number: ={{ $json.data.phone }}
    • message_type: text
    • message:
      Hi {{ $('Cleane Number').item.json.name }},
      Thanks! Your form has been submitted successfully.
      

This sends a confirmation message via WhatsApp to the verified number.

Google Sheets – Verified Data

  1. Add a Google Sheets node under the TRUE branch (after the message is sent).

  2. Set:

    • Operation: Append
    • Document ID: Choose your connected Google Sheet
    • Sheet Name: Set to your active sheet (e.g., Sheet1)
  3. Column Mapping:

    • Business Name: ={{ $('Cleane Number').item.json.business_name }}
    • Location: ={{ $('Cleane Number').item.json.location }}
    • WhatsApp Number: ={{ $('Cleane Number').item.json.whatsapp }}
    • Email : ={{ $('Cleane Number').item.json.email }}
    • Name: ={{ $('Cleane Number').item.json.name }}
    • Date: ={{ $('Cleane Number').item.json.submitted_date }}
    • validity: verified
  4. Use OAuth2 Google Sheets credentials for access.

Note: Make sure the sheet has matching column headers.

Google Sheets – Unverified Data

  1. Add a Google Sheets node under the FALSE branch of the If node.
  2. Use the same settings as the verified node, but set:
    • validity: unverified

This stores entries with unverified WhatsApp numbers in the same Google Sheet.

Wait Node

  1. Add a Wait node after both Google Sheets nodes.
  2. Set Wait Time:
    • Value: 2 seconds

This delay prevents API throttling and adds buffer time before processing the next item in the batch.


Google Sheet Column Reference

A Google Sheet formatted like this ➤ Sample Sheet

Business Name Location WhatsApp Number Email Name validity Date
SpaGreen Creative Dhaka, Bangladesh 8801322827799 [email protected] Abdul Mannan unverified 2025-09-14
SpaGreen Creative Bagladesh 8801322827799 [email protected] Abdul Mannan verified 2025-09-14

> Note: The Email column includes a trailing space. Ensure your column headers match exactly to prevent data misalignment.


How to customize the workflow

  • Modify confirmation message with your brand tone
  • Add input validation for missing or malformed fields
  • Route unverified submissions to a separate spreadsheet or alert channel
  • Add Slack or email notifications on new verified entries

Notes & Warnings

  • Ensure your Google Sheets credential has access to the target sheet
  • Rapiwa requires an active subscription for API access
  • Monitor Rapiwa API limits and adjust wait time as needed
  • Keep your webhook URL protected to avoid misuse

Support & Community

1.2 Logical Blocks

This catalog entry is organized from the workflow JSON. The node-level section below shows the executable blocks available for review before importing the template.

2. Block-by-Block Analysis

Block 1 - Cleane Number

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 2 - Loop Over Items

Type / Role
n8n-nodes-base.splitInBatches - splitInBatches
Config choices
Version 3

Block 3 - Webhook

Type / Role
n8n-nodes-base.webhook - webhook
Config choices
Version 2

Block 4 - If

Type / Role
n8n-nodes-base.if - if
Config choices
Version 2.2

Block 5 - unverified append row in sheet

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.6

Block 6 - verified append row in sheet

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.6

Block 7 - Wait1

Type / Role
n8n-nodes-base.wait - wait
Config choices
Version 1.1

Block 8 - Format Webhook Response Data

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 9 - Send Message Using Rapiwa

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.2

Block 10 - Sticky Note

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 11 - Check valid whatsapp number Using Rapiwa

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.2

Block 12 - Sticky Note1

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 13 - Sticky Note2

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 14 - Sticky Note3

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 15 - Sticky Note4

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 16 - Sticky Note5

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 17 - Sticky Note6

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

3. Summary Table

Workflow WhatsApp number verify & confirmation system with Rapiwa API and Google Sheets
Complexity advanced
Nodes 17
Categories Lead Generation
Author SpaGreen Creative
Published 14 Sept 2025

4. Reproducing the Workflow from Scratch

  1. 1. Download the workflow JSON

    Use the JSON export at /data/workflows/8576/8576.json as the source template for this automation.

  2. 2. Import the template into n8n

    Open n8n, import the downloaded JSON, and review each node before activating the workflow.

  3. 3. Configure credentials and variables

    Replace placeholder credentials, API keys, webhook URLs, account IDs, and environment-specific values with your own settings.

  4. 4. Test with sample data

    Run the workflow manually or in a staging workspace, inspect node output, and confirm downstream systems receive the expected data.

  5. 5. Activate and monitor

    Enable the workflow only after testing, then monitor executions, errors, and rate limits during the first production runs.

5. General Notes & Resources

Review imported nodes carefully before activation. This catalog entry is intended to help you inspect the workflow structure, understand required services, and find related templates faster.

Node names, credentials, schedules, webhook paths, and external service limits may need adjustment for your workspace.

Frequently asked questions

What does WhatsApp number verify & confirmation system with Rapiwa API and Google Sheets do?

WhatsApp Number Verify & Confirmation System with Rapiwa API and Google Sheets Who is this for? This n8n workflow makes it easy to verify WhatsApp numbers submitted through a form. When someone fil...

What do I need before importing this workflow?

Review the workflow JSON, configure any required credentials in n8n, and test the automation in a safe workspace before using it in production.

Can I customize this workflow?

Yes. Use the block-by-block analysis and the downloadable JSON to inspect each node, then adjust credentials, prompts, schedules, filters, or destinations for your Lead Generation use case.