Automatically Log Every Client Call to Your CRM with Zapier

If you're a consultant, freelancer, or in sales, you've probably built (or wanted to build) a Zap that logs client calls to your CRM automatically. The obvious way to do it — trigger off the calendar event — has a quiet flaw: it logs every scheduled call, including the ones that got cancelled, rescheduled, or where the other person never showed up. Your CRM ends up with entries for calls that never happened, and you're back to manually cleaning it up.

Why the calendar-trigger version doesn't work

A Google Calendar or Outlook trigger in Zapier fires when an event exists — not when a call takes place. It can't see whether you actually joined, whether anyone else did, or whether the meeting even ran. For internal reminders that's a minor annoyance. For CRM records that inform your pipeline reporting or billing, it's a real accuracy problem.

A more accurate trigger: the meeting actually ending

Auto Join Meetings can tell the difference, because it's the thing actually joining the call in your browser. It has a meeting.completed webhook event that fires when the meeting tab closes after a confirmed join — meaning you were verifiably in the call, not just scheduled to be. That's a fundamentally more reliable signal to log from than a calendar entry.

Setting it up with Zapier

  1. In Zapier, create a new Zap and choose Webhooks by Zapier → Catch Hook as the trigger. Copy the custom webhook URL Zapier gives you.
  2. In the Auto Join Meetings extension, open the Dashboard and click "Manage Webhooks." Paste that URL in, subscribe to meeting.completed (and meeting.join_confirmed if you want a separate signal for when a call starts), then click "Send test event" to confirm Zapier receives it.
  3. Add a Zapier action step for your CRM — HubSpot, Salesforce, Pipedrive, or whatever you use — to create a log entry, task, or note. Since the webhook payload only carries event_type, timestamp, provider, and meeting_id (never a title or attendee list), you'll typically use the timestamp and provider to build the log entry text, and look up the related contact/deal separately if your CRM needs that link.

If you want to verify the request really came from Auto Join Meetings before your Zap acts on it, add a Code by Zapier step that recomputes the HMAC-SHA256 signature from the X-AutoJoin-Signature header and your endpoint's secret, and stops the Zap if it doesn't match. This is optional — most people treat the uniqueness of the webhook URL itself as the safeguard — but it's there if your CRM data is sensitive enough to warrant it.

If you'd rather skip building a Zap

HubSpot and Salesforce are already two of the six native integrations in Auto Join Meetings' Complete plan ($12/month) — a Task gets created directly, with no Zapier account or Zap to maintain. The webhook approach above is for people who want the logic themselves (a different CRM, a custom log format, or a multi-step Zap), or who want to stay on a lower-cost plan. Neither one requires the other — pick whichever matches how hands-on you want to be.

What this doesn't do

It won't tell you what was discussed — no meeting title, no transcript, no participant names ever leave your browser through this path, by design. It's a reliable "this call actually happened, here's when" signal, not a note-taker. If you need call notes, that's a separate tool layered on top, not something this webhook is meant to replace.

Stop logging calls that never happened.

Install Auto Join Meetings — Free

Related: Why calendar automation misses reality · n8n webhook automation, step by step · Freelancers and consultants: managing client calendars