Why Zapier, Make, and n8n Can't Tell When a Meeting Actually Happened
If you've ever built a Zap, Make scenario, or n8n workflow around your calendar, you've probably run into the same quiet problem: it fires on schedule, not on reality. A meeting gets cancelled ten minutes before it starts, and your automation runs anyway. A call runs twenty minutes long, and whatever was supposed to happen "after the meeting" already fired at the scheduled end time. The calendar event was never a reliable stand-in for what actually happened on the call — but it's the only signal most automations have.
The gap: calendar triggers know your schedule, not your reality
Zapier's Google Calendar and Outlook Calendar triggers, Make's calendar modules, and n8n's calendar nodes all watch the same thing: the event object. They fire when an event is created, updated, or about to start. None of them can tell you whether anyone actually joined, whether the other side no-showed, or when the call genuinely ended — because the calendar simply doesn't know any of that. It only knows what was scheduled.
What this breaks in practice
- CRM logging that logs the wrong thing. A "log this call to the CRM" Zap built on a calendar trigger logs every scheduled call — including the ones that got cancelled, rescheduled, or never happened.
- Follow-up tasks that fire at the wrong time. A task created "30 minutes after the meeting starts" fires whether or not the meeting ran long, ended early, or happened at all.
- No distinction between "on the calendar" and "actually happened." For anything client-facing — billing, reporting, CRM hygiene — that difference matters, and calendar-only automation can't see it.
The fix: a webhook that fires on real events, not scheduled ones
Auto Join Meetings already detects, in the browser, when you're actually in a Google Meet or Zoom call — that's the same detection it uses to confirm auto-join worked. Its generic outbound webhooks expose that same real signal to Zapier, Make, n8n, or anything else that can catch an HTTP POST:
meeting.join_confirmed— fires when you're actually detected in the call, not when the calendar says it should have started.meeting.completed— fires when the meeting tab closes after a confirmed join. A real end-of-call signal, not a scheduled-duration guess.meeting.join_failed— fires when an auto-join attempt didn't work, with a reason.
Every delivery is a standard signed HTTP POST — no proprietary format, no SDK required. It carries an X-AutoJoin-Signature header (HMAC-SHA256 of the body, using a secret shown once when you create the endpoint) so you can verify it really came from us before acting on it. A failed delivery is retried up to 3 times with backoff, then marked failed — never retried forever. The payload itself is deliberately minimal: event type, timestamp, provider, and meeting ID. Never a meeting title, participant list, or anything from inside the call.
What you can build with it
Because it's a plain webhook, it drops into whichever tool you already use the same way: Webhooks by Zapier's catch hook trigger, Make's Custom webhook module, or n8n's Webhook trigger node — same JSON, same headers, no adapter needed. From there you can log completed calls to your CRM, create a follow-up task only for meetings that actually happened, post a Slack message the moment a call wraps up, or chain several of those off one event.
If you'd rather not build the automation yourself, that's also an option: the Complete plan ($12/month) adds a built-in Workflow Engine with one-click integrations for Slack, HubSpot, Salesforce, Microsoft To Do, Asana, and ClickUp, plus multi-step workflows — no Zap or scenario required. The webhook path above is for everything that isn't already on that list, or for anyone who prefers to own the automation directly.
Getting started
Generic webhooks are available on every plan, including Free — you don't need to upgrade to try this. Open the extension's Dashboard, click "Manage Webhooks," paste your Zapier/Make/n8n catch-hook URL, and pick which events to send. "Send test event" delivers a real signed payload immediately, so you can confirm your Zap/scenario/workflow parses it correctly before relying on it. Full payload and header details are in the Integrations help article.
Give your automation a real signal to work with.
Install Auto Join Meetings — FreeRelated: Log client calls to your CRM with Zapier · n8n webhook automation, step by step · Free vs. Basic vs. Complete