Attach UTM attribution to a self-scheduling attempt (a separate action from creating the attempt). Provide the attempt id plus at least one UTM value; values are normalized and auto-created as account-scoped options. An attempt's UTM is captured once.
Security
PartnerApiKey and PartnerOAuth
- Mock serverhttps://api-docs.lobbie.com/_mock/openapi/partner/v2/account/{accountId}/utm
- Productionhttps://api-prod.lobbie.com/lobbie/api/partner/v2/account/{accountId}/utm
curl -i -X POST \
'https://api-docs.lobbie.com/_mock/openapi/partner/v2/account/{accountId}/utm' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json' \
-H 'x-api-key: YOUR_API_KEY_HERE' \
-d '{
"adGroup": "ad_group_1",
"campaign": "spring_promo",
"content": "banner_v2",
"medium": "cpc",
"selfSchedulingAttemptId": 678,
"source": "google",
"term": "dental implants"
}'UTM attached to the attempt
Appointment this UTM is attributed to; null if the attempt has not converted
Example:12345
UTM capture timestamp (UTC) — the value the startDate/endDate filters range over
Example:"2025-01-15T14:00:00Z"
Self-scheduling attempt this UTM was captured on; null if not captured via self-scheduling (e.g. GoHighLevel/staff)
Example:678
Funnel stage: CONVERTED once attributed to an appointment, otherwise LANDED
Enum:"CONVERTED""LANDED"
Example:"CONVERTED"
Response
{ "adGroup": "ad_group_1", "appointmentId": 12345, "campaign": "spring_promo", "capturedAt": "2025-01-15T14:00:00Z", "content": "banner_v2", "medium": "cpc", "selfSchedulingAttemptId": 678, "source": "google", "stage": "CONVERTED", "term": "dental implants" }