WhatsApp calls now show up as real CRM objects in Pipedrive and HubSpot, scheduled WhatsApp calls land as upcoming items on the HubSpot timeline, and our webhook catalogue gains the four events many of you have been asking for. Here's everything that changed.
Pipedrive — dedicated Call Log activity
Every WhatsApp voice / video call on a connected number now creates a Pipedrive Call Log activity, in addition to the existing daily chat-stream entry. That means calls now:
Appear in the Pipedrive Calls report.
Count in Pipedrive analytics (call volume, outcome breakdowns).
Carry direction (
Incoming/Outgoing), outcome (Connected/No answer), duration (when WhatsApp reports it), and thefrom/tophone numbers.
Scheduled WhatsApp calls remain as standalone undone "call" activities (the existing flow). When the actual call later happens, we create a separate Call Log on the same contact / deal — the scheduled activity is not auto-closed. Close it manually once the call is done, or let Pipedrive show it as overdue as a reminder.
Group-chat calls are skipped — only 1:1 direct calls sync. Calls in chats without a phone number (LID-only) are also skipped, with a clear entry in the sync log.
Want the details? Read the full Pipedrive Integration with Timelines guide.
HubSpot — Call engagements + scheduled-call meetings
WhatsApp calls on connected numbers now create native HubSpot Call engagements, with direction, disposition (Connected / No answer), duration in milliseconds, and proper contact + deal associations. They appear on the contact and deal timelines and are picked up by HubSpot's built-in calling reports.
Scheduled WhatsApp calls land as Meeting engagements with SCHEDULED outcome, the WhatsApp Join call link as the hs_meeting_external_url, and the full participant info in the meeting body. When the actual call later happens, we create a separate Call engagement on the same contact / deal — the scheduled meeting is not auto-completed. Close it manually in HubSpot once the call is done.
We use only HubSpot's default Connected and No answer outcomes — never custom outcomes — so your existing call disposition setup is not touched.
Want the details? Read the full WhatsApp and HubSpot Integration with TimelinesAI.
Webhooks — 4 new events
Four new event types are available in your webhook settings:
call:incoming:missed— incoming call ended without being answered.call:incoming:ended— incoming call ended after being answered or declined.call:outgoing:ended— outgoing call ended (answered, no-answer, or rejected by recipient).message:reaction— emoji reaction was set or cleared on any synced message, in direct or group chats.
Call webhooks fire only after a call ends (never on call start, never for "Ringing"). The message:reaction event covers reactions added or cleared in WhatsApp itself and in TimelinesAI's Shared Inbox, for text, file, voice, and call messages.
We've also added three small shape changes that you'll see on every new event going forward:
chat.chat_type(direct/group) — replaces the oldis_groupboolean, which is gone from these payloads.chat.platform— currentlywhatsapp; future-proofs for WABA support.whatsapp_account.whatsapp_account_wid— the WhatsApp WID.
message:reaction fires individually per reaction — a 10-person group chat reacting to the same message produces 10 events. If high-volume group reactions become an issue for your consumer, tell us; we may add optional batching later.
Want the full payload schema? Read the Webhooks for WhatsApp Calls and Message Reactions guide.
Or jump straight to the API reference: timelinesai/docs/webhook-reference
A note on status wording
If you compare a webhook payload to the text on a Pipedrive or HubSpot activity stream, you may notice the webhook says Rejected while the CRM activity-stream text says Declined for the same call. That's intentional — the webhook enum was harmonised to Rejected for both call directions, while the CRM-side wording stays Declined for continuity. They refer to the same event.
