booked_call
An appointment was booked through a connected calendar.
Fires when a visitor books an appointment through a Calendly or GoHighLevel calendar connected to the form.
data
appointmentobjectThe booked appointment.
+Show child attributes
iduuidstatusstringBooking state, read fresh when the delivery is sent. Almost always new,
meaning the appointment was confirmed with the calendar provider.
pending means we recorded it but the provider never confirmed it —
typically a dropped calendar connection. cancelled only shows up on a
retry: a failed delivery is rebuilt with current data, so if the invitee
cancels in the meantime, the retry carries the newer state.
newpendingcancelledscheduledAtUtctimestampendAtUtctimestampMeeting end. Derived from the start plus the provider's confirmed
duration, so it always agrees with durationMinutes.
durationMinutesnumbertimezonenullable stringThe IANA timezone the invitee booked in, e.g. America/Chicago — taken
from their browser when they picked the slot, not from the calendar
provider. Useful for showing the meeting time the way they saw it.
Falls back to UTC when the browser reported nothing, so treat a plain
UTC as "unknown" rather than a confirmed location.
locationnullable stringWhere the meeting happens: a video link, a phone number, or a physical
address. Calendly returns its join URL for conferencing event types
(Google Meet links are generated asynchronously, so this can be null
right after booking), otherwise the location text. GoHighLevel
returns the calendar's configured address or meeting link. null when
the provider gave none.
providerCalendarIdstringWhich calendar the booking landed on, in the provider's system: the GoHighLevel calendar id, or the Calendly event type id. Configured on the form, so it's the same for every booking on that calendar. Matches what you see in your own GoHighLevel/Calendly account.
providerBookingIdnullable stringThe provider's id for this one appointment, returned when the booking was
created. Use it with the Calendly/GoHighLevel API to fetch, reschedule, or
cancel the booking. null when the provider did not return a booking id.
cancelUrlnullable stringInvitee-facing link to cancel the booking, safe to put in your own emails. Points at the ROASForm appointment page for both providers.
rescheduleUrlnullable stringInvitee-facing link to reschedule, same as above.
bookingTagsstring[]createdAtUtctimestampcalendarProviderstringcalendlygohighlevelassignedUsernullable stringThe host's name. Calendly fills it; GoHighLevel usually returns none, so expect null there.
eventNamenullable stringThe booked event type's name, e.g. Intro Call - 30 min.
leadobjectThe lead who booked. See shared objects.
submissionobjectThe submission that led to the booking. Carries its own ending, answers, lastSeenElement, utmData, ipAddress, userAgent, and appliedTags. See the submission object.
splitTestVariantnullable object{ id, name } of the variant served, or null when the form has no running split test.
{
"id": "1f6a9d34-7c2e-4b8f-a5d1-9e3b7c0f4a68",
"event": "booked_call",
"webhookVersion": "2026-07-01",
"createdAtUtc": "2026-07-28T14:35:02.771Z",
"agency": {
"id": "c1a2b3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
"name": "Acme Marketing"
},
"subaccount": {
"id": "7f3e9d21-4b8a-4c5e-9f60-2d8b1a7c3e54",
"name": "Acme Fitness Client"
},
"form": {
"id": "e8b4c672-9a1d-4f3b-b7c8-5d2e9f0a1b3c",
"name": "Fitness Coaching Application",
"url": "https://forms.roasform.com/fitness-coaching"
},
"data": {
"appointment": {
"id": "f2a6d9c4-7b1e-4d8a-9c3f-0e5b8d2a6f49",
"status": "new",
"scheduledAtUtc": "2026-07-30T16:00:00.000Z",
"endAtUtc": "2026-07-30T16:30:00.000Z",
"durationMinutes": 30,
"timezone": "America/Chicago",
"location": "https://meet.google.com/abc-defg-hij",
"providerCalendarId": "CVokAlI8fgw4WYWoCtQz",
"providerBookingId": "sV3xPqT9uHkLmA2cRfGe",
"cancelUrl": "https://my.roasform.com/appt/f2a6d9c4-7b1e-4d8a-9c3f-0e5b8d2a6f49/cancel",
"rescheduleUrl": "https://my.roasform.com/appt/f2a6d9c4-7b1e-4d8a-9c3f-0e5b8d2a6f49/reschedule",
"bookingTags": [
"booked"
],
"createdAtUtc": "2026-07-28T14:35:02.771Z"
},
"calendarProvider": "calendly",
"assignedUser": "Sam Closer",
"eventName": "Intro Call - 30 min",
"lead": {
"id": "3d9f7a25-6c1b-4e8d-a2f4-8b0c5d7e9f13",
"name": "Jane Doe",
"email": "jane@example.com",
"phone": "+15555550100",
"company": "Doe Fitness LLC",
"location": "Austin, TX",
"tags": [
"hot-lead"
],
"timezone": "America/Chicago",
"country": "US",
"createdAtUtc": "2026-07-28T14:29:03.114Z"
},
"submission": {
"id": "5a2c8e94-1f7d-4b3a-9e6c-4d8f0b2a6c71",
"status": "complete",
"qualification": "qualified",
"score": 40,
"startedAtUtc": "2026-07-28T14:26:40.207Z",
"completedAtUtc": "2026-07-28T14:32:11.482Z",
"ending": {
"id": "9c4b7d13-8e2a-4f6c-b1d9-7a3e5c8f2d46",
"name": "Qualified - Book a call",
"type": "calendar"
},
"lastSeenElement": {
"elementId": "a1d4c7f2-9b3e-4c6a-8d2f-5e9b1c4a7d30",
"label": "What is your email?",
"type": "email",
"value": "jane@example.com",
"values": null,
"score": null
},
"answers": [
{
"elementId": "b7e2f9a4-3c8d-4a1e-9f5b-6d0c2e8a4f17",
"label": "What is your monthly budget?",
"type": "single_choice",
"value": "$2,000 - $5,000",
"values": null,
"score": 30
},
{
"elementId": "d2c8f5b1-7e4a-4d9c-a6f3-9b0e5d8c2a64",
"label": "What are your goals?",
"type": "multiple_choice",
"value": null,
"values": [
"Lose weight",
"Build muscle"
],
"score": 10
},
{
"elementId": "a1d4c7f2-9b3e-4c6a-8d2f-5e9b1c4a7d30",
"label": "What is your email?",
"type": "email",
"value": "jane@example.com",
"values": null,
"score": null
}
],
"appliedTags": [
"hot-lead"
],
"utmData": {
"utm_source": "facebook",
"utm_medium": "cpc",
"utm_campaign": "summer-2026"
},
"ipAddress": "203.0.113.42",
"userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5 like Mac OS X) AppleWebKit/605.1.15"
},
"splitTestVariant": {
"id": "d6f1a8c3-2e9b-4a5d-8f7c-1b4e6a9d3c82",
"name": "Variant B"
}
}
}