Why WhatsApp Is the #1 Channel for Client Follow-Ups
The numbers don't lie: WhatsApp messages have a 98% open rate compared to 20% for email. For SMBs in France and Algeria, this is a massive conversion lever — if you automate it properly.
Automating WhatsApp follow-ups isn't about spamming clients. It's about triggering the right message, at the right time, with the right context. Here's how to build this system from scratch.
Technical Architecture
Before diving into configuration, here's the architecture we deploy at Otomy for our clients:
[CRM / Supabase] → [n8n Workflow Engine] → [Meta WhatsApp Business API] → Client
↑ ↓
[Webhook return] ← ← ← ← ← ← ← ← [Client reply]
Tech stack:
- Supabase: client database + follow-up status tracking
- n8n (self-hosted on VPS or n8n Cloud): workflow orchestration
- Meta WhatsApp Business API: message delivery via approved templates
- Claude AI (via Anthropic API): intelligent message personalization
- Vercel: monitoring dashboard hosting (optional)
Step 1: Set Up the WhatsApp Business API
Forget grey-market solutions. Use Meta's official API:
- Create a Meta Business Suite account at business.facebook.com
- Navigate to the WhatsApp section in Meta for Developers
- Create a Business type application
- Obtain your Phone Number ID and permanent Access Token
- Submit your Message Templates for approval
Critical point: Meta requires pre-approved templates to initiate conversations. Prepare templates for each scenario:
quote_followup: "Hi {{1}}, your quote for {{2}}€ expires in {{3}} days. Want to discuss?"invoice_reminder: "Hi {{1}}, a reminder about invoice #{{2}} for {{3}}€."cart_recovery: "Hi {{1}}, you left {{2}} in your cart. Your offer is still valid!"
Step 2: Structure Your Database in Supabase
Create a followups table in Supabase:
CREATE TABLE followups (
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
client_name TEXT NOT NULL,
phone TEXT NOT NULL,
type TEXT CHECK (type IN ('quote', 'invoice', 'cart')),
amount DECIMAL,
reference TEXT,
status TEXT DEFAULT 'pending',
attempts INT DEFAULT 0,
last_followup TIMESTAMPTZ,
next_followup TIMESTAMPTZ,
created_at TIMESTAMPTZ DEFAULT NOW()
);
Enable Row Level Security (RLS) and create a policy so only your n8n service (via service_role key) can read and write.
Step 3: Build the n8n Workflow
Here's the complete workflow in 6 nodes:
Node 1 — Cron Trigger
Daily trigger at 9:00 AM (Paris/Algiers timezone):
{"rule": {"cronExpression": "0 9 * * *"}}
Node 2 — Supabase Query
Fetch all follow-ups where next_followup <= NOW() and status = 'pending' and attempts < 3.
Node 3 — Claude AI (Optional but Powerful)
Send client context to Claude AI via the Anthropic API for message personalization:
{
"model": "claude-sonnet-4-20250514",
"messages": [{"role": "user", "content": "Generate a personalized hook to follow up with {{client_name}} about a quote for {{amount}}€ regarding {{reference}}. Professional but warm tone. Maximum 50 words."}]
}
Node 4 — HTTP Request (Meta API)
Send the WhatsApp message via the approved template:
{
"messaging_product": "whatsapp",
"to": "{{phone}}",
"type": "template",
"template": {
"name": "quote_followup",
"language": {"code": "en"},
"components": [{
"type": "body",
"parameters": [
{"type": "text", "text": "{{client_name}}"},
{"type": "text", "text": "{{amount}}"},
{"type": "text", "text": "{{days_remaining}}"}
]
}]
}
}
Node 5 — Supabase Update
Update attempts + 1, last_followup = NOW(), and calculate next_followup using progressive logic: D+2, D+5, then D+10.
Node 6 — Slack/Email Notification
Send a daily summary to the sales team: follow-ups sent, failures, replies received.
Step 4: Handle Client Replies
Configure an n8n Webhook as the callback URL in Meta:
- Client replies "Yes" → Change status to
interested, notify the sales rep - Client replies "No" → Change status to
declined, stop follow-ups - Client doesn't reply → The cron continues on the progressive schedule
Use Claude AI to analyze the sentiment of free-text replies and categorize them automatically.
Step 5: The Monitoring Dashboard
Deploy a mini-dashboard on Vercel with Next.js connected to Supabase:
- Response rate by follow-up type
- Conversion rate (follow-up → sale)
- Heatmap of best sending times
- Cost per conversion (Meta API charges ~€0.05/message in France)
5 Fatal Mistakes to Avoid
- Sending more than 3 follow-ups: beyond that, you destroy the relationship
- Ignoring timezones: a message at 11 PM = a lost client
- Not using approved templates: Meta will block your number
- Forgetting opt-out: always include "Reply STOP to unsubscribe"
- Neglecting GDPR compliance: store consent proof in Supabase
Real ROI: Otomy Client Numbers
From a deployment for an Algerian e-commerce business:
- +34% quote conversion thanks to automated follow-ups
- 2 hours/day saved per sales rep (no more copy-pasting)
- Total cost: ~€15/month (n8n VPS) + ~€8/month (Meta messages)
- Return on investment: achieved by the 3rd converted quote
Ready to Automate Your Follow-Ups?
At Otomy, we deploy this type of system in under 5 days for SMBs in France and Algeria. From Meta API configuration to n8n workflow production deployment, we handle the entire process.
Automating WhatsApp follow-ups isn't a luxury — it's a measurable competitive advantage.