Skip to content

POST /v1/webhooks/calendly/{receiver_token}

Call POST /v1/webhooks/calendly/{receiver_token}
Price free
Scope none (public endpoint)
Operation id receiveCalendlyWebhook

Point Calendly’s webhook at this URL (copy it from the console) and Verdict turns its events into outcomes on the decision you tagged when sending. Not called by agents. The body is Calendly’s own payload, passed through unchanged. Verification: Calendly-Webhook-Signature (t=...,v1=... with the subscription’s signing key) is verified before parsing. Mapping: invitee.created to meeting_booked; invitee.canceled is recorded but creates no outcome. Idempotent on the vendor’s event id. Free. Verdict never holds your Calendly credentials.

Copy it as curl. Set VERDICT_API_KEY first; uuidgen makes a fresh Idempotency-Key.

Request
curl -X POST 'https://api.askverdict.io/v1/webhooks/calendly/%3Creceiver_token%3E' \
-H 'Content-Type: application/json' \
-d '{
"event": "invitee.created",
"created_at": "2026-11-07T10:00:00Z",
"payload": {
"tracking": {
"utm_content": "dec_01JC3Z4Y8R9K2M5N7P1Q3S5T7V"
}
}
}'

200: The payload was verified and processed.

200 response
{
"received": true,
"duplicate": false,
"outcome_ids": [
"out_01JC3Z4Y8R9K2M5N7P1Q3S5T7V"
]
}
Name In Type Required Description
receiver_token path string yes Per-org receiver token issued in the console; identifies your organization. Treat the full URL as a secret.

Schema VendorWebhookBody. Calendly’s webhook payload.

Type: object.

Schema WebhookReceipt.

Field Type Required Description
received enum: true yes The payload was verified and accepted.
duplicate boolean yes True when this vendor event id was already processed.
outcome_ids array of string yes Outcomes created from the payload; empty when it maps to none.

Errors are RFC 9457 problem details and are never billed. Branch on type. See Errors.

Status Meaning
400 Invalid request: malformed JSON, an unknown field, a failed constraint or a size limit (invalid_request).
401 Missing, malformed, revoked or expired API key, or a bad webhook signature (unauthorized).
404 The resource does not exist in this organization (not_found).
429 Rate limited (rate_limited). Wait Retry-After seconds.
500 Unexpected server error (internal). Not billed; retry with the same Idempotency-Key.

Open the interactive reference to send this request from the browser. The full document is at /openapi.json.