Event SpecsAutomotive

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).

PropertyTypeRequiredDescription
querystringNoFree-text query if submitted
makestringNoFilter on manufacturer (e.g. 'BMW')
modelstringNoFilter on model (e.g. '3 Series')
body_typestringNo'saloon', 'suv', 'hatchback', 'estate', 'coupe', etc.
conditionstringNo'new', 'used', 'certified_pre_owned'
fuel_typestringNo'petrol', 'diesel', 'hybrid', 'phev', 'bev'
transmissionstringNo'manual', 'automatic'
min_price / max_pricenumberNoPrice range filters
min_year / max_yearnumberNoYear range filters
max_mileagenumberNoMileage cap (used vehicles)
postcodestringNoBuyer’s postcode for proximity search
radius_milesnumberNoSearch radius from postcode
results_countnumberNoNumber 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).

PropertyTypeRequiredDescription
vehicle_idstringYesInternal ID for this listing (usually stock ID or VIN)
makestringNoManufacturer
modelstringNoModel name
variantstringNoTrim/variant
yearnumberNoModel year
conditionstringNo'new', 'used', 'certified_pre_owned'
fuel_typestringNo'petrol', 'diesel', 'hybrid', 'phev', 'bev'
mileagenumberNoOdometer reading (used)
pricenumberNoList or sticker price
currencystringNoISO 4217 (e.g. 'GBP')
dealer_idstringNoID of the dealership listing this vehicle
dealer_namestringNoDisplay 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.

PropertyTypeRequiredDescription
vehicle_idsstring[]YesAll vehicle IDs currently in the comparison
compared_countnumberNoLength of vehicle_ids

vehicle_saved

User favourites a vehicle to come back to later.

PropertyTypeRequiredDescription
vehicle_idstringYesListing ID
makestringNoManufacturer
modelstringNoModel

brochure_downloaded

User downloads a spec sheet or brochure (PDF).

PropertyTypeRequiredDescription
brochure_idstringNoInternal ID for the asset
vehicle_idstringNoVehicle the brochure is for, if scoped
makestringNoManufacturer
modelstringNoModel
languagestringNoBrochure language (ISO 639-1)

Qualify

finance_quote_requested

User submits a finance or lease quote request.

PropertyTypeRequiredDescription
vehicle_idstringYesVehicle the quote is for
finance_typestringNo'pcp', 'hp', 'lease', 'cash'
term_monthsnumberNoTerm length in months
depositnumberNoInitial deposit amount
annual_mileagenumberNoAgreed annual mileage
monthly_paymentnumberNoCalculated monthly payment shown
currencystringNoISO 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.

PropertyTypeRequiredDescription
current_vehicle_makestringNoMake of the trade-in
current_vehicle_modelstringNoModel
current_vehicle_yearnumberNoYear
current_vehicle_mileagenumberNoOdometer reading
valuation_amountnumberNoCalculated trade-in value
currencystringNoISO 4217

Convert

test_drive_booked

User books a test drive — high-value lead event.

PropertyTypeRequiredDescription
vehicle_idstringYesVehicle being test-driven
dealer_idstringNoDealer hosting the test drive
appointment_atstringNoISO 8601 timestamp of the booked slot
makestringNoManufacturer
modelstringNoModel
_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.

PropertyTypeRequiredDescription
dealer_idstringYesThe dealer being contacted
vehicle_idstringNoSpecific vehicle, if the enquiry is scoped
enquiry_typestringNo'price', 'availability', 'finance', 'general'
channelstringNo'form', 'whatsapp', 'live_chat', 'callback'

Aftersales

service_appointment_booked

Existing customer books a service appointment.

PropertyTypeRequiredDescription
dealer_idstringNoDealer where the service is booked
vehicle_idstringNoThe customer’s own vehicle (VIN or internal ID)
service_typestringNo'routine', 'mot', 'recall', 'repair'
appointment_atstringNoISO 8601 timestamp of the booked slot
estimated_costnumberNoQuoted cost
currencystringNoISO 4217

Common context

All automotive events benefit from these properties on every event (set via _df.identify() or page-level config):

PropertyTypeDescription
customer_idstringStable internal customer ID once identified
dealer_group_idstringThe franchise/group running the site
regionstringSales region or country
currencystringDefault 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.