Concierge runs as a single Cloudflare Worker that handles three messaging channels:
WhatsApp Auto-Reply
A customer sends a WhatsApp message to your business number
Meta delivers the message to Concierge via webhook
Concierge looks up the number, checks if auto-reply is enabled
Sends a reply — either a static message or an AI-generated response
Both messages are logged to the database
Instagram DM Auto-Reply
Someone sends a DM to your Instagram business account
Meta delivers the message via webhook
Concierge looks up the account by page ID, checks auto-reply config
Sends a reply via the Instagram Pages API
Both messages are logged
Lead Capture Forms
You create a lead form in the admin and embed it on your website
A visitor enters their phone number and submits
Concierge generates a message (static or AI) and sends it via WhatsApp
The submission is logged to the database
Platform Model
Concierge uses a shared WhatsApp Business Account (WABA). You own one WABA, and customers add their phone numbers to it via Meta's Embedded Signup flow. A single platform token (WHATSAPP_ACCESS_TOKEN) is used to send messages from any number on the WABA.
Instagram uses per-account OAuth tokens via Facebook Login. Each customer connects their Instagram business account through a standard OAuth flow. Page tokens are encrypted and stored in KV.
Architecture
Cloudflare Worker — Rust compiled to WebAssembly, handles all HTTP routes
Cloudflare KV — Stores account configs, tokens, and session data
Cloudflare D1 — SQLite database for message logs and form submissions
Cloudflare Workers AI — Powers AI-mode auto-replies