Docs

Integration setup

Step-by-step for the three integrations that ship on feature/gmail-cal-integration. What to do in the third-party console, what to paste where.

Gmail

Sends 1:1 email from a connected Google account via the gmail.send scope. Lands in your account's Gmail Sent folder. Best for personal-style follow-ups and replies. For bulk transactional, keep using the platform SES default or a per-workspace SMTP/SendGrid/SES_CUSTOM provider (Settings → Custom email provider).

Operator prerequisites

  • Platform admin has set GOOGLE_OAUTH_CLIENT_ID + GOOGLE_OAUTH_CLIENT_SECRET in the API env.
  • Google Cloud project has the Gmail API enabled (Console → APIs & Services → Library → Gmail API).
  • OAuth consent screen lists the redirect URI <API_BASE>/integrations/google/oauth/callback and either is in Testing mode (limited to your test users) or has been verified by Google.
  • Scope https://www.googleapis.com/auth/gmail.send added to the OAuth consent screen scope list.

Connect the account

  • Settings → Integrations → Connect Gmail.
  • Sign in to the Google account whose mailbox should send.
  • Approve the gmail.send scope.
  • You'll land back on the integrations page; the account shows up in the Connected list.

Use in a workflow

  • Studio → palette → Actions → Gmail send.
  • Inspector → pick the connected account, type To / Subject / Body. Toggle Text + HTML for the rich path.
  • Activate. On run, the message is sent from the connected account.

Google Calendar

Two modes: CREATE_EVENT (book a slot, optionally invite attendees) and LIST_EVENTS (read upcoming events for downstream branching). Uses the calendar.events scope — read + write on calendars the user owns or has access to.

Connect the account

  • Same Google OAuth flow as Gmail. Enable the Calendar API in Google Cloud first.
  • Settings → Integrations → Connect Calendar.

Use in a workflow

  • Palette → Actions → Google Calendar.
  • Pick the account + Mode. For CREATE_EVENT type the title + start/end (ISO or template) + optional tz + attendees.
  • sendUpdates defaults to none so the workflow doesn't fan out invitation emails on every run. Switch to All attendees when you do want Google to email the invite.

Cal.com

Different auth shape: an API key you generate inside Cal.com (not OAuth). Works on both Cal.com Cloud and self-hosted installs — the latter just needs the custom API base URL.

Generate the API key

  • In Cal.com → Settings → Developer → API Keys.
  • Click Add. Give it a name like “1nCall workflows”. Pick a generous TTL.
  • Copy the key once — Cal.com only shows it at creation.

Connect the workspace

  • Settings → Integrations → Cal.com panel.
  • Paste the key.
  • Self-hosted only: paste the API base URL (e.g. https://cal.your-domain.com/api). Leave blank for Cal.com Cloud.
  • Click Connect Cal.com. The route hits /v1/me with your key first — a typo or wrong host fails here instead of at first send.

Use in a workflow

  • Palette → Actions → Cal.com booking.
  • Pick the workspace + Mode (CREATE_BOOKING / LIST_BOOKINGS / CANCEL_BOOKING).
  • For CREATE_BOOKING: paste the numeric event-type id from Cal.com, template the attendee name/email + startsAt against trigger or contact data.

Cal.com inbound webhooks

Cal.com pushes booking-created, cancelled, and rescheduled events out of the box. The G4 generic webhook trigger handles these — no Cal.com-specific code path needed.

  • Create a workflow in 1nCall with trigger source = Inbound webhook.
  • Copy the minted URL from the inspector.
  • Cal.com → Settings → Developer → Webhooks → Add. Paste the URL.
  • Subscribe to the events you care about (BOOKING_CREATED, BOOKING_CANCELLED, etc).
  • In the 1nCall inspector, set JSON path on payload to payload.attendees.0.email for the contact lookup — Cal.com puts the booker email there.
  • To defer the workflow run until the booking actually starts, also enable Defer the run to a date in the payload (H1) with path payload.startTime.
Cal.com BOOKING_CREATED payload (abridged)
{
  "triggerEvent": "BOOKING_CREATED",
  "payload": {
    "type": "30 Min Meeting",
    "title": "30 Min Meeting between Cal Team and Ayu",
    "startTime": "2026-06-01T09:00:00Z",
    "endTime":   "2026-06-01T09:30:00Z",
    "attendees": [
      { "email": "[email protected]", "name": "Ayu" }
    ],
    "uid": "abc123",
    "bookingId": 42
  }
}

OAuth scopes & limits

  • Gmail send is a Google “restricted” scope. Beyond ~100 verified test users in production, Google requires CASA Tier 2 audit ($15-25k, 4-12 weeks). Fine for individual workspaces and small teams in the testing-app mode.
  • Calendar events is a “sensitive” scope — no CASA, but still subject to the standard OAuth verification process past ~100 users.
  • Gmail per-account send quota: ~250 messages/day on a free Gmail account, ~2,000/day on a Google Workspace account. Bulk transactional/marketing should stay on SES / SMTP / SendGrid via the per-workspace provider.
  • Calendar & Sheets quotas: 1M queries/day per Google Cloud project. Plenty for normal use; high-volume installs can request increases.