WhatsApp API with Airtable: Automate Notifications from Your Database
Connect Airtable with WhatsApp using Rapiwa API and n8n. Send WhatsApp notifications when Airtable records change, are created, or reach specific conditions. No-code and code examples.
You can connect Airtable to WhatsApp using Rapiwa API and n8n. When an Airtable record is created, updated, or reaches a condition (like a status change to "Approved"), n8n fires a Rapiwa API call to send a WhatsApp notification. This works for any Airtable base — project management, CRM, HR, inventory, or event management. Rapiwa costs $5/month flat with no per-message fees.
What You Can Build
- Project management: Notify team members when a task is assigned to them
- CRM follow-ups: Message leads when their status changes to "Qualified"
- HR onboarding: WhatsApp welcome message when a new employee record is created
- Inventory alerts: WhatsApp alert when a product stock level drops below threshold
- Event management: WhatsApp confirmation when an event registration is approved
- Client approvals: Message clients when a deliverable is ready for review
Prerequisites
- Rapiwa account (free 3-day trial at rapiwa.com)
- Airtable account with a base containing phone numbers
- n8n (Cloud free tier or self-hosted) — recommended
- Or: Zapier / Make.com for no-code alternative
Step 1: Prepare Your Airtable Base
Ensure your Airtable table has a Phone field in international format:
| Name | Phone | Status | |
|---|---|---|---|
| Sarah Johnson | 8801234567890 | New Lead | sarah@example.com |
| James Smith | 447700900123 | Qualified | james@example.com |
Important: Store phone numbers in international format without + (e.g., 8801234567890, not +880 1234 567890). Add an Airtable formula to clean the format:
SUBSTITUTE(SUBSTITUTE(SUBSTITUTE({Phone Raw}, "+", ""), " ", ""), "-", "")
Step 2: Set Up n8n with Airtable Trigger
In n8n:
- Create a new workflow
- Add Airtable Trigger node:
- Credentials: Create new → enter Airtable API key (from airtable.com/account)
- Base: select your base
- Table: select your table
- Trigger field: choose Modified Time (to detect any record change)
- Or trigger on record creation only
Alternative triggers available:
- Polling every X minutes for changed records
- Webhook-based (requires Airtable Enterprise or Airtable Automations)
Step 3: Add Condition Filtering
Don't send WhatsApp for every Airtable change — add an IF node to filter:
// Filter: only send when Status changed to "Qualified"
{{ $json.Status === 'Qualified' }}
Or use n8n's Filter node with condition:
- Field:
Status - Operator:
equals - Value:
Qualified
Step 4: Configure the Rapiwa HTTP Request Node
Add an HTTP Request node after the filter:
- Method: POST
- URL:
https://app.rapiwa.com/send-message - Authorization:
Bearer YOUR_API_KEY - Body:
{
"number": "={{ $json.Phone }}",
"message": "Hi {{ $json.Name }}! 🎉 Great news — you have been approved as a qualified lead. Our team will reach out within 24 hours. In the meantime, explore what we offer at rapiwa.com"
}
Test with cURL:
curl -X POST https://app.rapiwa.com/send-message \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"number": "8801234567890",
"message": "Hi Sarah! 🎉 Your application has been approved. Welcome aboard! Our team will contact you within 24 hours with next steps."
}'
Expected response:
{
"status": "success",
"messageId": "msg_airtable_abc123",
"timestamp": "2026-07-03T10:30:00Z"
}
Step 5: Update Airtable After Sending
After the Rapiwa send, update the Airtable record to log the notification:
Add an Airtable node:
- Operation: Update Record
- Record ID:
{{ $('Airtable Trigger').item.json.id }} - Fields to update:
WhatsApp Sent:true(checkbox field)Last Notified:{{ $now.toISO() }}
This prevents sending duplicate notifications on subsequent runs.
Common Airtable + WhatsApp Use Cases
Use Case 1: CRM Lead Status Change
Airtable Trigger: Status field changes
IF: new Status = "Qualified"
Set message: "Hi {Name}! You've been added to our priority list..."
HTTP Request (Rapiwa): send message
Airtable: update "WhatsApp Sent" = true
Use Case 2: Project Task Assignment
Airtable Trigger: Assignee field changes
IF: Assignee is not empty AND WhatsApp Sent = false
Set message: "Hi {Assignee Name}! You have been assigned a new task: {Task Name}. Due: {Due Date}"
HTTP Request (Rapiwa): send to Assignee's phone
Use Case 3: Inventory Low Stock Alert
Airtable Trigger: every 30 minutes (schedule-based poll)
Filter: Stock Level < Reorder Point
Set message: "⚠️ Low stock alert: {Product Name} — {Stock} units remaining. Reorder link: {Reorder URL}"
HTTP Request (Rapiwa): send to purchasing team phone
Use Case 4: Event Registration Approved
Airtable Trigger: Status field changes to "Approved"
Set message: "Hi {Name}! Your registration for {Event Name} on {Event Date} is confirmed. See you there! 🎫"
HTTP Request (Rapiwa): send to registrant's phone
Airtable: update "Confirmation Sent" = true
Using Airtable Automations (No n8n)
Airtable's built-in Automations can trigger webhooks directly to Rapiwa:
- In your Airtable base → Automations → + New automation
- Trigger: When a record is created (or status changes)
- Action: Run a script (Airtable Scripting)
Airtable script to call Rapiwa:
// Airtable automation script
const inputConfig = input.config();
const phone = inputConfig.phone;
const name = inputConfig.name;
const apiKey = 'YOUR_RAPIWA_API_KEY';
const message = `Hi ${name}! Your record has been updated. Check the details in our system.`;
const response = await fetch('https://app.rapiwa.com/send-message', {
method: 'POST',
headers: {
'Authorization': `Bearer ${apiKey}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({ number: phone, message })
});
const result = await response.json();
output.set('messageId', result.messageId || 'failed');
output.set('status', result.status);
Configure the script to receive phone and name as input variables from the trigger record.
Common Errors and Fixes
- Phone number format issues: Airtable stores numbers exactly as entered. Add a formula field to clean the format:
SUBSTITUTE(SUBSTITUTE({Phone}, "+", ""), " ", "") - Trigger firing for every field change: Use an IF node in n8n to check only the specific field you care about (e.g.,
Statuschanged to specific value) - Duplicate notifications: Add a
WhatsApp Sentcheckbox field in Airtable and check it in your IF node before sending - 401 from Rapiwa: API key expired — regenerate in Dashboard → API Keys
FAQ
Does Airtable have a native WhatsApp integration? No. Airtable connects to WhatsApp through third-party tools like n8n, Zapier, or Make.com using Rapiwa API as the WhatsApp delivery layer.
Can I use Airtable as a WhatsApp contact list? Yes. Build an Airtable base with columns for name, phone, message, and send status. Use n8n to query the base and send WhatsApp messages to each contact.
Does Rapiwa charge per Airtable-triggered message? No. Rapiwa charges $5/month flat with no per-message fees — send unlimited notifications from Airtable.
What is the best way to handle phone number formatting from Airtable?
Create a formula field in Airtable: REGEXREPLACE({Phone Raw}, "[^0-9]", ""). This strips all non-digits and gives you a clean international number for Rapiwa.
Can I receive WhatsApp replies and update Airtable records? Yes. Set up a Rapiwa webhook → n8n → Airtable update workflow. When a customer replies to your WhatsApp message, the incoming text updates a field in the corresponding Airtable record.
