Skip to content

Lead Webhook Export

In Dealer Studio, we can setup lead exports to third party endpoints using the schema defined below. Webhook exports are defined under dealership notifications.

To receive webhooks, a third party must provide an endpoint for third parties to be sent to. We also support the ability to send webhooks with API bearer token authentication.

Schema version v3 adds an appointments field and a boolean has_test_drives to the JSON body.

  • appointments: always present as an array—either empty, or one object per appointment on the lead cluster with purpose Test Drive, ordered by start time (earliest first).
  • has_test_drives: true if the lead cluster has at least one TestDrive record (lead_cluster.test_drives), otherwise false (including when the lead has no cluster). This is independent of appointments: you can have test-drive appointments without a linked TestDrive, or test drives on the cluster with no matching appointment rows in the payload.

Each appointments element includes:

FieldDescription
idAppointment id.
ai_generatedWhether the booking was created by AI.
user_idAssigned dealership user id.
starts_atStart time as a string in the dealership’s configured timezone (or Australia/Brisbane if the dealership has no timezone), formatted as YYYY-MM-DD HH:MM:SS. null if starts_at is not set.
statusAppointment status (for example pending, completed, cancelled, no-show, interest_registered).
length_in_minutesScheduled duration.
noteOptional note; may be null.
location_idOptional location id; may be null.
car_for_test_driveWhen the appointment’s schedulable is a TestDrive with a stock car, the car’s display name (same as in the dashboard). When the test drive uses a generic car (car lead cluster only), "<car lead cluster name> (generic car)". When the appointment is not linked to a test drive record, or the schedulable is not a TestDrive, null.

v1 and v2 webhooks do not include appointments or has_test_drives.

{
"id": 138559,
"item": {
"id": null,
"km": null,
"url": "https://www.orangesubaru.com.au/trade-in",
"vin": null,
"make": "subaru",
"rego": "151vev",
"type": "Car",
"year": 2018,
"badge": null,
"model": "Forester",
"price": null,
"colour": null,
"series": null,
"status": null,
"deposit": null,
"car_type": null,
"comments": null,
"body_type": null,
"spin_code": null,
"build_date": null,
"engine_size": null,
"stock_number": null,
"transmission": null,
"interior_color": null,
"third_party_integrations": [
{
"service": "Loopit",
"external_id": "12312"
}
]
},
"source": "Website",
"created": "2025-09-16T00:30:52.297Z",
"website": {
"id": 794,
"url": "https://www.orangemotorgroup.com.au",
"name": "Orange Motor Group",
"slug": "orange-motor-group"
},
"category": "Sell My Car Enquiry",
"comments": "comments here",
"location": {
"city": "Fake city",
"state": "QLD",
"street": "123 fake street",
"postcode": 1234,
"location_name": "Orange Motor Group"
},
"prospect": {
"dob": null,
"email": "email@example.com",
"title": null,
"address": {
"city": "Browns Plains",
"state": "Queensland",
"street": "4 Myola Street",
"country": "Australia",
"postcode": 4118,
"state_long": "Queensland"
},
"postcode": 1234,
"last_name": "don",
"first_name": "xcvxcvdcz",
"middle_name": null,
"mobile_phone": "041000000",
"opt_in_to_marketing": true
},
"provider": "Dealer Studio",
"dealership": {
"id": 3,
"name": "Orange Motor Group",
"slug": "orange-motor-group"
},
"updated_at": "2025-09-16T00:30:52.297Z",
"lead_events": [],
"utm_campaign": null,
"trade_in_data": {
"kms": 210000,
"make": "subaru",
"rego": "151vev",
"year": 2018,
"badge": null,
"model": "Forester",
"state": null,
"title": null,
"series": null,
"offer_price": null,
"trade_price": 60900,
"retail_price": null,
"offer_accepted": false,
"price_adjustment": null
},
"subscription_plan": {
"name": "Premium",
"subscription_id": 4,
"daily_price_for_car": 46.9,
"weekly_price_for_car": 329,
"monthly_price_for_car": 1425.7,
"fortnightly_price_for_car": 658
},
"lead_cluster_id": 289,
"marketing_source": "Unknown",
"additional_details": {
"range": 10405608,
"additional_data": "test data"
},
"lead_status_option": {
"id": 138,
"name": "new",
"status_type": "new"
},
"assigned_salesperson": {
"id": null,
"name": null,
"email": null
},
"subcategory": null,
"booking_date": null,
"booking_time": null,
"offer_data": {
"manufacturer": null,
"offer_name": null
},
"pipeline": {
"id": 496,
"name": "Sales"
},
"has_test_drives": true,
"appointments": [
{
"id": 9041,
"ai_generated": false,
"user_id": 88,
"starts_at": "2025-09-18 12:00:00",
"status": "pending",
"length_in_minutes": 30,
"note": "Customer requested SUV demo",
"location_id": 12,
"car_for_test_drive": "2018 Subaru Forester Sport"
},
{
"id": 9042,
"ai_generated": true,
"user_id": 88,
"starts_at": "2025-09-20 13:30:00",
"status": "completed",
"length_in_minutes": 45,
"note": null,
"location_id": null,
"car_for_test_drive": "Toyota Corolla Ascent 2022 (generic car)"
}
],
"lost_reason_comment": null,
"lost_reason": null
}