Automotive Event Spec
This page defines the recommended event taxonomy for automotive — covering OEM marketing sites, dealer groups, online vehicle marketplaces, and aftersales/service portals. The taxonomy follows the dealer marketing funnel: browse, compare, configure, qualify, book.
All event names use snake_case. Vehicles are identified by vehicle_id (your internal stock or VIN-derived ID). Where relevant, monetary amounts are numbers with a separate currency property using ISO 4217 codes.
Browse & discover
vehicle_searched
User submits a search against the inventory (e.g. on a dealer or OEM site).
| Property | Type | Required | Description |
|---|---|---|---|
query | string | No | Free-text query if submitted |
make | string | No | Filter on manufacturer (e.g. 'BMW') |
model | string | No | Filter on model (e.g. '3 Series') |
body_type | string | No | 'saloon', 'suv', 'hatchback', 'estate', 'coupe', etc. |
condition | string | No | 'new', 'used', 'certified_pre_owned' |
fuel_type | string | No | 'petrol', 'diesel', 'hybrid', 'phev', 'bev' |
transmission | string | No | 'manual', 'automatic' |
min_price / max_price | number | No | Price range filters |
min_year / max_year | number | No | Year range filters |
max_mileage | number | No | Mileage cap (used vehicles) |
postcode | string | No | Buyer’s postcode for proximity search |
radius_miles | number | No | Search radius from postcode |
results_count | number | No | Number of results returned |
_df.track('vehicle_searched', {
make: 'BMW',
body_type: 'suv',
fuel_type: 'phev',
max_price: 60000,
results_count: 42,
});vehicle_viewed
User opens a vehicle detail page (VDP).
| Property | Type | Required | Description |
|---|---|---|---|
vehicle_id | string | Yes | Internal ID for this listing (usually stock ID or VIN) |
make | string | No | Manufacturer |
model | string | No | Model name |
variant | string | No | Trim/variant |
year | number | No | Model year |
condition | string | No | 'new', 'used', 'certified_pre_owned' |
fuel_type | string | No | 'petrol', 'diesel', 'hybrid', 'phev', 'bev' |
mileage | number | No | Odometer reading (used) |
price | number | No | List or sticker price |
currency | string | No | ISO 4217 (e.g. 'GBP') |
dealer_id | string | No | ID of the dealership listing this vehicle |
dealer_name | string | No | Display name of the dealership |
_df.track('vehicle_viewed', {
vehicle_id: 'STK-7421',
make: 'BMW',
model: '330e',
year: 2024,
condition: 'new',
fuel_type: 'phev',
price: 49995,
currency: 'GBP',
dealer_id: 'D-1138',
});vehicle_compared
User adds a vehicle to a side-by-side comparison.
| Property | Type | Required | Description |
|---|---|---|---|
vehicle_ids | string[] | Yes | All vehicle IDs currently in the comparison |
compared_count | number | No | Length of vehicle_ids |
vehicle_saved
User favourites a vehicle to come back to later.
| Property | Type | Required | Description |
|---|---|---|---|
vehicle_id | string | Yes | Listing ID |
make | string | No | Manufacturer |
model | string | No | Model |
brochure_downloaded
User downloads a spec sheet or brochure (PDF).
| Property | Type | Required | Description |
|---|---|---|---|
brochure_id | string | No | Internal ID for the asset |
vehicle_id | string | No | Vehicle the brochure is for, if scoped |
make | string | No | Manufacturer |
model | string | No | Model |
language | string | No | Brochure language (ISO 639-1) |
Qualify
finance_quote_requested
User submits a finance or lease quote request.
| Property | Type | Required | Description |
|---|---|---|---|
vehicle_id | string | Yes | Vehicle the quote is for |
finance_type | string | No | 'pcp', 'hp', 'lease', 'cash' |
term_months | number | No | Term length in months |
deposit | number | No | Initial deposit amount |
annual_mileage | number | No | Agreed annual mileage |
monthly_payment | number | No | Calculated monthly payment shown |
currency | string | No | ISO 4217 |
_df.track('finance_quote_requested', {
vehicle_id: 'STK-7421',
finance_type: 'pcp',
term_months: 36,
deposit: 5000,
annual_mileage: 10000,
monthly_payment: 489,
currency: 'GBP',
});trade_in_valued
User completes a trade-in valuation.
| Property | Type | Required | Description |
|---|---|---|---|
current_vehicle_make | string | No | Make of the trade-in |
current_vehicle_model | string | No | Model |
current_vehicle_year | number | No | Year |
current_vehicle_mileage | number | No | Odometer reading |
valuation_amount | number | No | Calculated trade-in value |
currency | string | No | ISO 4217 |
Convert
test_drive_booked
User books a test drive — high-value lead event.
| Property | Type | Required | Description |
|---|---|---|---|
vehicle_id | string | Yes | Vehicle being test-driven |
dealer_id | string | No | Dealer hosting the test drive |
appointment_at | string | No | ISO 8601 timestamp of the booked slot |
make | string | No | Manufacturer |
model | string | No | Model |
_df.track('test_drive_booked', {
vehicle_id: 'STK-7421',
dealer_id: 'D-1138',
appointment_at: '2026-05-12T10:30:00Z',
make: 'BMW',
model: '330e',
});dealer_contacted
User submits an enquiry / contact form to a dealer.
| Property | Type | Required | Description |
|---|---|---|---|
dealer_id | string | Yes | The dealer being contacted |
vehicle_id | string | No | Specific vehicle, if the enquiry is scoped |
enquiry_type | string | No | 'price', 'availability', 'finance', 'general' |
channel | string | No | 'form', 'whatsapp', 'live_chat', 'callback' |
Aftersales
service_appointment_booked
Existing customer books a service appointment.
| Property | Type | Required | Description |
|---|---|---|---|
dealer_id | string | No | Dealer where the service is booked |
vehicle_id | string | No | The customer’s own vehicle (VIN or internal ID) |
service_type | string | No | 'routine', 'mot', 'recall', 'repair' |
appointment_at | string | No | ISO 8601 timestamp of the booked slot |
estimated_cost | number | No | Quoted cost |
currency | string | No | ISO 4217 |
Common context
All automotive events benefit from these properties on every event (set via _df.identify() or page-level config):
| Property | Type | Description |
|---|---|---|
customer_id | string | Stable internal customer ID once identified |
dealer_group_id | string | The franchise/group running the site |
region | string | Sales region or country |
currency | string | Default currency for the site |
For platform identifiers (Meta, Google Ads, etc.), Signal handles those automatically via collected vendor_ids — you don’t need to send them on every event.