Tour booking webhooks
Beta
Create or cancel tour requests via the org automation webhook.
POST tour events to your automation webhook URL. When the invitee email matches an EchoPM user, bookings can create CONFIRMED TourRequest rows.
Echo JSON format (recommended)#
Create a tour:
{
"event": "calendly.invitee.created",
"propertyId": "PROPERTY_CUID",
"email": "prospect@example.com",
"scheduledAt": "2026-06-01T15:00:00.000Z",
"name": "Alex Prospect"
}
Cancel:
{
"event": "calendly.invitee.canceled",
"propertyId": "PROPERTY_CUID",
"email": "prospect@example.com"
}
| Field | Required | Notes |
|---|---|---|
event | yes | calendly.invitee.created or calendly.invitee.canceled |
propertyId | yes | EchoPM property ID |
email | yes | Invitee email (must match an EchoPM account for auto-create) |
scheduledAt | create only | ISO 8601 datetime |
name | no | Display name for the prospect |
Event names use a calendly.* prefix for backward compatibility; any HTTP client can send this shape.
Native scheduling payloads#
The handler also accepts common third-party scheduling webhook bodies (e.g. invitee.created / invitee.canceled) when forwarded unchanged to your automation URL. Property resolution uses tracking.utm_content as the EchoPM property ID when present.
Prerequisites#
- Automation webhook URL configured with your org token
- Property ID available in the payload (directly or via UTM tracking on embed links)
- Org showing settings configured in manager Settings → leasing
Important constraints#
- Invitee must have an EchoPM account (email match) for webhook-created tours; others should use in-app Request a time
- Webhook auth uses org
organizationId+tokenquery params — keep the token secret - All requests are logged to
IntegrationLogfor debugging
Related#
- Automation URL — base URL and auth
- Manager Schedule — tour inbox and status actions
