---
title: "Zapier Integration"
description: "Send SalesCal lead and meeting events to 6,000+ apps with no-code Zapier automations."
url: https://help.salescal.ai/en/articles/28-zapier-integration
collection: "Integrations"
updated: 2026-10-19
language: en
---

# Zapier Integration

Send SalesCal lead and meeting events to 6,000+ apps with no-code Zapier automations.

## Benefits

-   **7 triggers** covering the full lead → meeting → outcome lifecycle
    
-   **6,000+ downstream apps** — connect SalesCal to anything Zapier supports
    
-   **No code** — build automations in Zapier's visual editor, not in SalesCal
    
-   **OAuth 2.0** — secure, revocable access from inside Zapier or SalesCal
    

## What's Supported

The SalesCal Zapier app currently provides **triggers only** (v1). You can send SalesCal events out to other apps, but you can't yet trigger SalesCal actions from Zapier. Incoming actions (e.g. "Create a lead in SalesCal") are planned for v2.

## Available Triggers

<table data-id="e215753f-462a-417b-a337-3f3d45d9e332" style="min-width: 75px;"><colgroup><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"></colgroup><tbody><tr><td colspan="1" rowspan="1"><p data-id="683e42ae-5123-48ef-99f5-f640ba8fc945">Trigger</p></td><td colspan="1" rowspan="1"><p data-id="35c06bbf-8ba5-49d8-9b65-35666190d2ea">When it fires</p></td><td colspan="1" rowspan="1"><p data-id="c31cc950-9a66-472c-989e-17d7d837b338">Key fields passed</p></td></tr><tr><td colspan="1" rowspan="1"><p data-id="2dbcb5ae-cac4-46b0-8f66-232efc735da1"><strong>New Lead</strong></p></td><td colspan="1" rowspan="1"><p data-id="b79867c6-0d8c-4f84-8d31-648be07ed756">Prospect enters name + contact info on the booking form</p></td><td colspan="1" rowspan="1"><p data-id="fb3db32a-5a49-4fce-8b98-2151c7965e3c">lead ID, email, name, phone, country, event name</p></td></tr><tr><td colspan="1" rowspan="1"><p data-id="e5d393f8-b6e1-4561-912e-6393b9f070d0"><strong>Lead Qualified</strong></p></td><td colspan="1" rowspan="1"><p data-id="f101af8a-3844-4b07-9525-0fe76f4d0df1">Form submitted and passes qualification rules</p></td><td colspan="1" rowspan="1"><p data-id="f79804b1-7445-4244-9b46-57db0ed2ac78">lead ID, email, name, phone, custom fields</p></td></tr><tr><td colspan="1" rowspan="1"><p data-id="4cb5bb72-da1c-44e4-afc6-1beb989e0a8b"><strong>Lead Disqualified</strong></p></td><td colspan="1" rowspan="1"><p data-id="0ac9953b-8f5d-4220-a0a9-85f7a09ea204">Form submitted but fails qualification rules</p></td><td colspan="1" rowspan="1"><p data-id="a2024f01-588d-47a3-96ae-aa1cb21f4bdd">lead ID, email, name, <code>disqualification_reason</code></p></td></tr><tr><td colspan="1" rowspan="1"><p data-id="b558d5f9-f2a3-4da9-91e9-fabe400e9d44"><strong>Meeting Booked</strong></p></td><td colspan="1" rowspan="1"><p data-id="34d7d06d-1762-481d-8c92-b0c23599165e">Prospect picks a time and confirms</p></td><td colspan="1" rowspan="1"><p data-id="51302b78-9568-441c-a5dd-b4e1e229430c">meeting ID, scheduled time, duration, host info, meeting link</p></td></tr><tr><td colspan="1" rowspan="1"><p data-id="06c5cf9c-a569-405a-8104-cda680ba1226"><strong>Meeting Rescheduled</strong></p></td><td colspan="1" rowspan="1"><p data-id="2109e8f5-1ae7-4966-94ae-955779fa0be4">An existing booking moves to a new time</p></td><td colspan="1" rowspan="1"><p data-id="527daa99-3aa7-4bd6-83db-e69ddd6b24f9">meeting ID, new scheduled time, previous time</p></td></tr><tr><td colspan="1" rowspan="1"><p data-id="4db291f9-0884-4d00-961d-0bc3e0740679"><strong>Meeting Cancelled</strong></p></td><td colspan="1" rowspan="1"><p data-id="310ea940-3ef6-4652-876c-ed9c3e35ea8d">A booking is cancelled</p></td><td colspan="1" rowspan="1"><p data-id="748e67b7-22f8-48e1-8f64-aae665ca4f68">meeting ID, <code>cancelled_at</code>, <code>cancellation_reason</code></p></td></tr><tr><td colspan="1" rowspan="1"><p data-id="bc8af835-b0d9-4ff5-a8ee-463d44cc1e53"><strong>Meeting Outcome Recorded</strong></p></td><td colspan="1" rowspan="1"><p data-id="a339f32a-72f4-4df8-8b45-f1ac3324acf2">You mark the meeting completed, no-show, won, or lost</p></td><td colspan="1" rowspan="1"><p data-id="492f69de-2d48-479e-a869-a0cede9352de">meeting ID, <code>outcome</code></p></td></tr></tbody></table>

Every trigger also passes: `event`, `event_id`, `occurred_at`, `team__id`, `team__name`, plus all custom form fields and tracking parameters on the lead.

## Connecting Zapier

Right now the SalesCal Zapier app is **invite-only** while we wait for public Zapier directory approval. To connect:

1.  In SalesCal, go to **Integrations** > **Zapier**
    
2.  Click **Get your SalesCal Invite in Zapier**
    
3.  Zapier opens with the SalesCal app pre-loaded — sign in to your Zapier account if prompted
    
4.  Zapier walks you through authorizing SalesCal (the SalesCal authorize page asks you to confirm)
    
5.  Once authorized, your SalesCal team appears as a connected account in Zapier
    
6.  Build your first Zap by choosing **SalesCal** as the trigger app and picking one of the 7 events
    

Back in the SalesCal dashboard, the integration card shows **Connected to Zapier** with your active connection count.

## Building a Zap

In Zapier:

1.  **Choose a trigger app**: SalesCal
    
2.  **Choose a trigger event**: one of the 7 listed above
    
3.  **Choose your account**: pick the SalesCal account you connected
    
4.  **Test the trigger**: Zapier pulls recent matching events from SalesCal so you can preview the field data
    
5.  **Add an action**: Slack, Gmail, Notion, Airtable, your CRM — whatever you want to do with the lead/meeting data
    
6.  **Turn the Zap on**
    

Common Zaps people build:

-   **New Lead → Slack DM**: get pinged the second a high-intent lead enters the form
    
-   **Meeting Booked → Notion DB row**: log every booking to your team's CRM-like Notion board
    
-   **Meeting Outcome (no-show) → email follow-up sequence**: automate reschedule prompts
    
-   **Lead Qualified → Gmail draft**: pre-draft a welcome email for personal review before sending
    

## Authentication

The integration uses **OAuth 2.0**:

-   **Access tokens** expire after 1 hour
    
-   **Refresh tokens** expire after 30 days; Zapier auto-refreshes on its own
    
-   Tokens are scoped to the SalesCal team you authorized
    

If your team's owner removes Zapier access in SalesCal, all Zaps using that connection stop firing — Zapier will mark them as failing and email the Zap owner.

## Workspace-Wide Connection

The Zapier connection is **per team**. All of your SalesCal events fire all the triggers — you can't disable individual events from inside SalesCal. Filtering happens in Zapier: use Zapier's built-in filters or paths to act only on the leads/meetings you care about (e.g. by event name, lead score, or custom field value).

## Troubleshooting

### "Can't find SalesCal in Zapier's app directory"

The app is currently invite-only. Use the **Get your SalesCal Invite in Zapier** button in your SalesCal dashboard — that's the only way to install it until the app is publicly listed.

### "Trigger isn't firing"

-   Confirm the Zap is turned **on** in Zapier
    
-   Test the trigger in Zapier with **Test trigger** — this pulls the most recent matching events directly from SalesCal
    
-   Check the connection status in **Integrations** > **Zapier** in SalesCal — re-authorize if it shows disconnected
    

### "Got triggered twice for the same event"

SalesCal includes an `event_id` on every payload — set Zapier's deduplication to use that field. By default Zapier dedupes by the trigger's primary record ID, which is usually correct.

### "Missing field in the payload"

The trigger pulls a snapshot of the lead/meeting at the moment the event fired. Fields populated later (e.g. outcome, host assignment for round-robin) won't be in earlier triggers — chain multiple triggers if you need the full lifecycle.

## Disconnecting Zapier

**From SalesCal:**

1.  Go to **Integrations** > **Zapier**
    
2.  Click **Disconnect**
    

**From Zapier:**

1.  In Zapier, open **My Apps**
    
2.  Find SalesCal and click **Disconnect**
    

Disconnecting from either side invalidates the OAuth token. Any Zaps using that connection will stop firing and show errors in Zapier.

## Privacy & Security

-   Access and refresh tokens are stored as SHA-256 hashes (we can't read the raw tokens back)
    
-   Each Zapier action call from your account is logged in SalesCal's audit log
    
-   Token scopes are limited to the SalesCal team you authorized — Zapier can't read data from other teams
    

## Roadmap

-   **Public Zapier listing** (waiting for Zapier review; typically 1–2 weeks)
    
-   **Inbound actions** (v2) — create leads, send notifications, mark outcomes from Zapier into SalesCal
    
-   **Per-event toggles** — control which SalesCal events fire which triggers without using Zapier filters
    

## Related Guides

-   [Slack Integration](https://help.salescal.ai/en/articles/6a0ca86038cc07dc33443f9f.md) — direct Slack alerts without going through Zapier
    
-   [HubSpot CRM Integration](https://help.salescal.ai/en/articles/6a0ca85fa6bf4846489b8fe7.md) — direct HubSpot sync without going through Zapier
    
-   [Custom Form Fields](https://help.salescal.ai/en/articles/6971f0f407a55ac789b74556.md) — form fields appear in the Zapier trigger payload
