— Case study
A WhatsApp bot that talks to Airtable
A real Upwork engagement — a Laravel backend wired to WhatsApp for intake, syncing every conversation straight into Airtable in real time.
- Client
- Upwork client (private)
- Role
- Full-stack, solo
- Stack
- Laravel · WhatsApp API · Airtable
- Timeline
- Jan – Feb 2025
How a message becomes a row
- WhatsApp messageCustomer texts in
- Laravel webhookParses & validates
- Airtable syncRow created instantly
- Marked syncedConversation logged
The webhook, roughly
- WhatsApp webhook handled by a Laravel backend
- Every message synced to Airtable in real time
- Shipped and closed inside 6 weeks
Route::post('webhooks/whatsapp', [WhatsAppController::class, 'handle']);
$message = WhatsAppMessage::fromPayload($request->all());
Airtable::table('Conversations')->create([
'phone' => $message->from,
]);
// every inbound message lands in Airtable within seconds
Conversation::find($message->id)->markSynced();