Zapier Integration

Connect LinkTime to 7,000+ apps using native Zapier triggers. No code required.

What You Can Do

LinkTime's native Zapier app gives you instant (real-time) triggers for all booking events. Unlike generic webhook integrations, you get a first-class experience with:

  • Instant triggers — no polling delays, events fire in real-time
  • Event-type filtering — only trigger for specific event types
  • Dedicated rescheduled event — no workaround needed (cancel + create)
  • Payment and contact triggers — beyond just bookings
  • Available on all plans — including Free

Architecture Overview

LinkTime uses Zapier's REST Hook model — the fastest and most reliable trigger type Zapier offers. Here's how it works:

1. You create a Zap with a LinkTime trigger
2. Zapier sends a subscribe request to LinkTime's API
3. LinkTime creates a webhook pointing to Zapier's hook URL
4. When an event happens (e.g., booking created):
   a. LinkTime fires the webhook to Zapier's URL
   b. Zapier receives the payload instantly
   c. Your Zap actions run (Slack message, CRM update, etc.)
5. If you turn off the Zap, Zapier sends an unsubscribe request
6. LinkTime deletes the webhook automatically

This is the same model used by Stripe, GitHub, and other top Zapier integrations. There's no polling — events arrive in real-time, typically within 1-2 seconds.

Setup Guide

Step 1: Generate an API Key

  1. 1

    Go to API Keys Settings

    Navigate to Settings → API Keys in your LinkTime dashboard.

  2. 2

    Create a new API key

    Click "Create API Key", give it a name like "Zapier Integration", and copy the key immediately. You won't be able to see it again.

Step 2: Connect in Zapier

  1. 1

    Find LinkTime in Zapier

    Go to zapier.com and create a new Zap. Search for "LinkTime" as your trigger app, or use the invite link shared by our team (the app is currently private/invite-only).

  2. 2

    Enter your API key

    Paste the API key you generated in Step 1. Zapier will verify it works and show "Connected as [your name]".

  3. 3

    Choose a trigger

    Select one of the 5 available triggers (see reference below). Optionally filter by event type for booking triggers.

API Key Management

API keys authenticate your Zapier connection to LinkTime. Each key starts with lt_live_ and is 72 characters long.

Plan Limits

PlanAPI Keys
Free2 keys
ProUnlimited
OrganizationUnlimited

Key Rotation (Zero Downtime)

All plans allow at least 2 simultaneous keys, so you can rotate without disrupting your Zaps:

  1. Create a new API key
  2. Update the key in Zapier's connection settings
  3. Verify your Zaps still work
  4. Delete the old key

Security Best Practices

  • • Never share API keys in public repositories or chat messages
  • • Rotate keys every 90 days (recommended) or immediately if compromised
  • • Use a descriptive name for each key (e.g., "Zapier - Sales Automation")
  • • Keys are hashed with SHA-256 before storage — we never store the raw key

Trigger Reference

TriggerEvent KeyDescriptionEvent Filter
Booking Createdbooking.createdFires instantly when a new booking is confirmed.Yes
Booking Cancelledbooking.cancelledFires instantly when a booking is cancelled.Yes
Booking Rescheduledbooking.rescheduledFires instantly when a booking is moved to a new time. Includes both old and new times.Yes
Payment Receivedpayment.receivedFires when a payment is completed for a paid booking.-
New Contactcontact.createdFires when a new contact is added (from a booking, payment, or manually).-

Payload Examples

All payloads share an envelope with apiVersion, event, timestamp, and data. The data field varies by event type.

booking.created

{
  "apiVersion": "2025-02-09",
  "event": "booking.created",
  "timestamp": "2026-02-09T10:00:00.000Z",
  "data": {
    "id": "cm6abc123def456",
    "eventType": {
      "id": "cm6evt789ghi012",
      "name": "30-Minute Consultation",
      "slug": "30-min-consultation",
      "duration": 30
    },
    "startTime": "2026-02-10T14:00:00.000Z",
    "endTime": "2026-02-10T14:30:00.000Z",
    "status": "confirmed",
    "invitee": {
      "name": "John Smith",
      "email": "[email protected]",
      "timezone": "America/New_York"
    },
    "host": {
      "id": "user_abc123",
      "name": "Sarah Johnson",
      "email": "[email protected]"
    },
    "meetingLink": "https://meet.google.com/abc-defg-hij",
    "location": "Google Meet",
    "notes": "Looking forward to discussing the project.",
    "isRecurring": false,
    "recurringGroupId": null
  }
}

booking.cancelled

Same structure as booking.created, plus an optional cancelReason field:

{
  "apiVersion": "2025-02-09",
  "event": "booking.cancelled",
  "timestamp": "2026-02-09T15:30:00.000Z",
  "data": {
    "id": "cm6abc123def456",
    "eventType": { "id": "...", "name": "...", "slug": "...", "duration": 30 },
    "startTime": "2026-02-10T14:00:00.000Z",
    "endTime": "2026-02-10T14:30:00.000Z",
    "status": "cancelled",
    "invitee": { "name": "John Smith", "email": "[email protected]", "timezone": "America/New_York" },
    "host": { "id": "user_abc123", "name": "Sarah Johnson", "email": "[email protected]" },
    "cancelReason": "Schedule conflict — need to reschedule next week.",
    ...
  }
}

booking.rescheduled

Includes the new time in startTime/endTime and the old time in previousStartTime/previousEndTime:

{
  "apiVersion": "2025-02-09",
  "event": "booking.rescheduled",
  "timestamp": "2026-02-09T16:00:00.000Z",
  "data": {
    "id": "cm6abc123def456",
    "eventType": { "id": "...", "name": "...", "slug": "...", "duration": 30 },
    "startTime": "2026-02-12T10:00:00.000Z",
    "endTime": "2026-02-12T10:30:00.000Z",
    "previousStartTime": "2026-02-10T14:00:00.000Z",
    "previousEndTime": "2026-02-10T14:30:00.000Z",
    "status": "confirmed",
    "invitee": { "name": "John Smith", "email": "[email protected]", "timezone": "America/New_York" },
    "host": { "id": "user_abc123", "name": "Sarah Johnson", "email": "[email protected]" },
    ...
  }
}

payment.received

{
  "apiVersion": "2025-02-09",
  "event": "payment.received",
  "timestamp": "2026-02-09T10:05:00.000Z",
  "data": {
    "bookingId": "cm6abc123def456",
    "amount": 5000,
    "currency": "usd",
    "paymentMethod": "card",
    "transactionId": "pi_3abc123def456"
  }
}

Note: Amount is in cents (5000 = $50.00).

contact.created

{
  "apiVersion": "2025-02-09",
  "event": "contact.created",
  "timestamp": "2026-02-09T10:00:00.000Z",
  "data": {
    "id": "cm6contact789",
    "name": "John Smith",
    "email": "[email protected]",
    "phone": "+1-555-0123",
    "company": "Acme Corp",
    "notes": null,
    "createdAt": "2026-02-09T10:00:00.000Z",
    "source": "booking"
  }
}

The source field can be "booking", "manual", or "payment".

Output Field Types

FieldTypeNotes
idstringCUID format
startTime / endTimestring (ISO 8601)Always UTC
durationnumberMinutes
amountnumberCents (5000 = $50.00)
isRecurringbooleantrue/false
cancelReason, notes, etc.string | nullOptional fields

Event-Type Filtering

When setting up a booking trigger (created, cancelled, or rescheduled), you can optionally select a specific event type from a dropdown. This means the Zap will only fire for bookings of that type — perfect if you want different workflows for different meeting types.

Example

You have "Sales Demo" and "Support Call" event types. You want new sales demos to go to Salesforce, but support calls to go to Zendesk. Create two Zaps with different event-type filters — each fires only for the right type.

Tip: Leave the event-type filter empty to trigger for all event types — useful for general notifications like "post every new booking to Slack."

Security & Rate Limits

API Key Security

  • • Keys are hashed with SHA-256 before database storage — raw keys are never persisted
  • • Authentication via X-API-Key header
  • • Each key is scoped to a single user account

Webhook Payload Signing

All webhook payloads (including those sent to Zapier) include an X-LinkTime-Signature header with an HMAC-SHA256 signature. This allows you to verify that payloads genuinely came from LinkTime.

Rate Limits

TierLimitScope
Pre-auth (invalid key)5 requests/minPer IP address
Post-auth (valid key)60 requests/minPer user

Zapier's subscribe/unsubscribe and performList calls count against the post-auth limit. Under normal usage, you won't hit these limits.

Error Reference

StatusMeaningAction
401Invalid or missing API keyCheck key is correct and active
403Plan limit reached (e.g., max API keys or webhooks)Upgrade plan or delete unused keys/webhooks
429Rate limit exceededWait and retry (Zapier handles this automatically)
500Server errorRetry after a moment; contact support if persistent

Payload Versioning

Every payload includes an apiVersion field (currently "2025-02-09").

Compatibility Promise

  • Adding new fields — always safe, never requires a version bump
  • Renaming or removing fields — requires a new apiVersion
  • Changing field types — requires a new apiVersion

Your Zaps should be resilient to new fields being added at any time. Zapier's platform handles this gracefully — new fields simply appear as available mapping options.

Popular Workflows

CRM

New Booking to HubSpot Contact

HubSpot

CRM

New Booking to Salesforce Lead

Salesforce

Notifications

New Booking to Slack Channel

Slack

Notifications

Booking Cancelled to Slack Alert

Slack

Data

New Booking to Google Sheets Row

Google Sheets

Marketing

New Contact to Mailchimp List

Mailchimp

Notifications

Payment Received to Slack Notification

Slack

Data

New Booking to Notion Database

Notion

LinkTime vs. Competitors on Zapier

FeatureCalendlyCal.comLinkTime
Event-type filterNoNoYes
Rescheduled triggerNoYesYes
Payment triggerNoYesYes
Contact triggerNoNoYes
Free plan accessNoYesYes

Troubleshooting

Connection test fails

Make sure you copied the full API key (starts with lt_live_, 72 characters total). Check that the key is active in Settings → API Keys.

Zap doesn't fire

Check if you have an event-type filter set — the trigger will only fire for that specific event type. Also verify the Zap is turned on (not paused) in Zapier.

Webhook limit reached

Each Zap creates a webhook. Free plans allow 2 total webhooks (manual + Zapier combined). Upgrade to Pro for unlimited.

I see a "Zapier" webhook in my settings

That's expected! When you create a Zap, LinkTime creates a webhook behind the scenes. These are labeled "Zapier" in your webhook list and are managed automatically — they'll be removed when you turn off the Zap.

How do I rotate my API key?

See the API Key Management section above for the zero-downtime rotation process.

"LinkTime" doesn't appear in Zapier search

The LinkTime Zapier app is currently invite-only (not yet published to the public marketplace). Ask our team for the invite link, or check your email for an invitation.

Ready to get started?

Generate an API key and build your first Zap in under 2 minutes.