OTOMY
AUTOMATIONJune 3, 20266 min

How to Automate Client Follow-Ups via WhatsApp in 2025

Your client follow-ups get buried in email? Learn how to build a complete WhatsApp automation system using n8n, Supabase, and the Meta API — step by step.

M

By

Melissa.S

How to Automate Client Follow-Ups via WhatsApp in 2025

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:

  1. Create a Meta Business Suite account at business.facebook.com
  2. Navigate to the WhatsApp section in Meta for Developers
  3. Create a Business type application
  4. Obtain your Phone Number ID and permanent Access Token
  5. 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:

  1. Client replies "Yes" → Change status to interested, notify the sales rep
  2. Client replies "No" → Change status to declined, stop follow-ups
  3. 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

  1. Sending more than 3 follow-ups: beyond that, you destroy the relationship
  2. Ignoring timezones: a message at 11 PM = a lost client
  3. Not using approved templates: Meta will block your number
  4. Forgetting opt-out: always include "Reply STOP to unsubscribe"
  5. 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.

OTOMY

Ready to automate your business?

Book a free call — 30 minutes to identify what we can automate for you.