For the complete documentation index, see llms.txt. This page is also available as Markdown.

Vehicle Search

This page documents every carpose-vehicle-* event dispatched by the Carposé application. This is the largest event group because vehicle is an entity, not a UI surface: the vehicle card grid, the vehicle detail page, the wishlist, the comparison tray, the AI search assistant, the budget calculator, the test-drive booking wizard and the purchase request form all act on vehicle data, so all of their events live here, distinguished by detail.component (see Introduction). Carposé itself does not track user behavior; manual implementation is required.

All events below are dispatched in the v2 envelope on document.body.

Select

Vehicle Select Event

Dispatched when a user clicks on a vehicle card to view its details.

Event Name: carpose-vehicle-select

Event Data:

{
  message: "Vehicle select",
  type: "vehicle",
  action: "select",
  component: "vehicle-search-form",
  version: 2,
  data: {
    id: "car-456",
    name: "Renault 4 E-Tech elektrisch Evolution 120 Urban Range",
    offerNumber: "OF123456",
    manufacturer: "Renault",
    model: "4 E-Tech"
  }
}

How to Listen:

Contact

The channel field distinguishes how the user is contacting about the vehicle: phone, mail, whatsapp, or form (the multi-step contact form flow).

The three form events below — submit, success and error — are shared across every contact form that posts to a vehicle's /vehicles/{id}/contact endpoint. That currently means the vehicle card's contact modal (component reflects wherever that card is mounted, e.g. vehicle-search-form or vehicle-detail) and the wishlist drawer's "Anfrage senden" contact form (component: "floating-buttons", the standard mount for the wishlist floating button), which submits for the first vehicle selected in the drawer. Both mirror the same shape: submit is dispatched after client-side validation passes and before the API call, success after it resolves, error in the catch.

Vehicle Contact Phone Event

Dispatched when a user clicks a tel: contact link for a vehicle.

Event Name: carpose-vehicle-contact-phone

Event Data:

How to Listen:

Vehicle Contact Mail Event

Dispatched when a user clicks a mailto: contact link for a vehicle.

Event Name: carpose-vehicle-contact-mail

Event Data:

How to Listen:

Vehicle Contact WhatsApp Event

Dispatched when a user clicks a WhatsApp contact link for a vehicle.

Event Name: carpose-vehicle-contact-whatsapp

Event Data:

How to Listen:

Vehicle Contact Form Open Event

Dispatched when a user opens the vehicle contact form modal.

Event Name: carpose-vehicle-contact-form-open

Event Data:

How to Listen:

Vehicle Contact Form Submit Event

Dispatched when a user submits the vehicle contact form, before the API call resolves.

Event Name: carpose-vehicle-contact-form-submit

Event Data:

How to Listen:

Vehicle Contact Form Success Event

Dispatched when the vehicle contact form submission succeeds. This is the vehicle equivalent of the old carpose-car-contact event and the one to use for lead-generation conversions.

Event Name: carpose-vehicle-contact-form-success

Event Data:

How to Listen:

Vehicle Contact Form Error Event

Dispatched when the vehicle contact form submission fails.

Event Name: carpose-vehicle-contact-form-error

Event Data:

How to Listen:

Test Drive

These events cover two different entry points, told apart by detail.component:

  • the standalone booking wizard (Test Drive Booking), where the visitor picks a car from your test-drive fleet before choosing a slot — component: "test-drive-form", or "floating-buttons" when it is opened from the overlay;

  • a vendor integration on a vehicle detail page (e.g. AutoUncle), which only opens an external flow — component: "vehicle-detail".

Only the wizard dispatches the step, submit, success and error events; the vendor integration dispatches nothing beyond open. None of these events carry a vehicle payload — the wizard's fleet is a separate list from your vehicle inventory, so data describes the booking, not a vehicle.

Booking a test drive for one specific vehicle from an offer page is a different flow with its own events — see Offer.

Vehicle Test Drive Open Event

Dispatched when a user opens a test drive booking flow — either the standalone wizard (via its modal trigger or the floating button) or a vendor integration such as AutoUncle.

Event Name: carpose-vehicle-test-drive-open

Event Data:

How to Listen:

Vehicle Test Drive Step Event

Dispatched each time the visitor completes a step of the booking wizard and moves on. data.step is the number of the step just completed, counting from 1, so a full booking produces 1 (vehicle chosen) and 2 (date and time chosen). Step 3 has no step event — its completion is the submit.

Because the event only fires once a step's required fields validate, the last step you receive tells you where a visitor dropped out.

Event Name: carpose-vehicle-test-drive-step

Event Data:

How to Listen:

Vehicle Test Drive Submit Event

Dispatched after the contact step validates and before the booking request is sent. Pair it with success and error to measure how often submissions fail.

Event Name: carpose-vehicle-test-drive-submit

Event Data:

How to Listen:

Vehicle Test Drive Success Event

Dispatched when the booking has been created. status is the booking's state, which is pending for a new request — you still confirm the appointment.

This is the event to use as a conversion.

Event Name: carpose-vehicle-test-drive-success

Event Data:

How to Listen:

Vehicle Test Drive Error Event

Dispatched when the booking request fails. status is the HTTP status, or 0 when the request never reached the server (offline, blocked, timed out).

A 400 means the slot was taken while the visitor was filling in the form; the wizard returns them to the appointment step with refreshed availability. A 429 means the visitor is being rate-limited.

Event Name: carpose-vehicle-test-drive-error

Event Data:

How to Listen:

Purchase

These events come from the Purchase Request Form — the wizard in which a visitor offers their own vehicle to you. They all carry channel: "form" and feature: "purchase".

detail.component is purchase-request-form for an embedded wizard, or floating-buttons when it is opened from the overlay.

None of these events carry a vehicle payload: the vehicle being described is the visitor's own car and does not exist in your inventory, so data stays limited to progress and error information. The details the visitor entered are in the enquiry itself, in the Carposé dashboard — they are deliberately not put on the page, since these events are meant for analytics tools.

Vehicle Purchase Form Open Event

Dispatched when the wizard is opened from a trigger — the button of a data-variant="modal" embed, or the "Fahrzeug verkaufen" floating button. An inline embed is visible immediately and dispatches nothing.

Event Name: carpose-vehicle-purchase-form-open

Event Data:

How to Listen:

Vehicle Purchase Form Step Event

Dispatched each time the visitor completes a step and moves on. data.step counts the visible steps from 1, so it reflects what the visitor actually saw: with the photo step enabled you receive 1, 2 and 3; with data-photo-upload="false" you receive 1 and 2. The final step has no step event — its completion is the submit.

Event Name: carpose-vehicle-purchase-form-step

Event Data:

How to Listen:

Vehicle Purchase Form Submit Event

Dispatched after the final step validates and before the enquiry is sent.

Event Name: carpose-vehicle-purchase-form-submit

Event Data:

How to Listen:

Vehicle Purchase Form Success Event

Dispatched once the enquiry has been stored and any photos have finished uploading. This is the event to use as a conversion.

Two consequences of that ordering worth planning for:

  • With photos attached, the event lags the actual storing of the enquiry by however long the upload takes. If the visitor closes the tab in between, the enquiry is safely stored but you never receive the event — treat a missing success event as "unknown", not as "no lead".

  • A failed photo upload never turns a stored enquiry into a failure. It still reports success and does not produce an error event; the visitor is told in the confirmation which images did not go through.

data-success-url redirects at the same point, so a visitor with many photos waits on the last step until the uploads are done.

Event Name: carpose-vehicle-purchase-form-success

Event Data:

How to Listen:

Vehicle Purchase Form Error Event

Dispatched when the enquiry could not be stored. status is the HTTP status, or 0 when the request never reached the server.

A 429 means the visitor is being rate-limited. Other statuses usually mean the server rejected a field; where it can, the wizard jumps the visitor back to the step that owns that field and marks it.

Event Name: carpose-vehicle-purchase-form-error

Event Data:

How to Listen:

Vehicle Search Submit Event

Dispatched when a user-initiated search runs (pagination and the automatic initial page load are excluded).

Event Name: carpose-vehicle-search-submit

Event Data:

Important: this event's channel is always "form" — even for AI-originated searches. Use data.origin ("form" or "ai") to tell them apart, not channel. An AI-driven search (started via the AI search assistant, which applies filters and then runs the normal search) flows through this same event so the funnel stays whole, but if you split reporting by channel you will silently merge AI-driven and manually-filled searches together. Always branch on data.origin when you need to distinguish them.

How to Listen:

Vehicle Search AI Open Event

Dispatched when a user opens the AI search assistant.

Event Name: carpose-vehicle-search-ai-open

Event Data:

How to Listen:

Vehicle Search AI Submit Event

Dispatched when a user submits a query to the AI search assistant.

Event Name: carpose-vehicle-search-ai-submit

Event Data:

How to Listen:

Vehicle Search AI Reset Event

Dispatched when a user resets the AI search assistant's conversation history.

Event Name: carpose-vehicle-search-ai-reset

Event Data:

How to Listen:

Vehicle Search Type Select Event

Dispatched when a user selects a vehicle type in the vehicle types browser.

Event Name: carpose-vehicle-search-type-select

Event Data:

How to Listen:

Wishlist

Vehicle Wishlist Add Event

Dispatched when a vehicle is added to the wishlist.

Event Name: carpose-vehicle-wishlist-add

Event Data:

How to Listen:

Vehicle Wishlist Remove Event

Dispatched when a vehicle is removed from the wishlist.

Event Name: carpose-vehicle-wishlist-remove

Event Data:

How to Listen:

Vehicle Wishlist Clear Event

Dispatched when the entire wishlist is cleared.

Event Name: carpose-vehicle-wishlist-clear

Event Data:

How to Listen:

Vehicle Wishlist Open Event

Dispatched when a user opens the wishlist panel.

Event Name: carpose-vehicle-wishlist-open

Event Data:

How to Listen:

Comparison

Vehicle Comparison Add Event

Dispatched when a vehicle is added to the comparison tray.

Event Name: carpose-vehicle-comparison-add

Event Data:

How to Listen:

Vehicle Comparison Remove Event

Dispatched when a vehicle is removed from the comparison tray.

Event Name: carpose-vehicle-comparison-remove

Event Data:

How to Listen:

Vehicle Comparison Open Event

Dispatched when a user opens the comparison view.

Event Name: carpose-vehicle-comparison-open

Event Data:

How to Listen:

Budget

Vehicle Budget Open Event

Dispatched when a user opens the budget calculator.

Event Name: carpose-vehicle-budget-open

Event Data:

How to Listen:

Vehicle Budget Apply Event

Dispatched when a user applies their budget settings and closes the calculator.

Event Name: carpose-vehicle-budget-apply

Event Data:

How to Listen:

Viewer

Both viewer events carry data.viewer, one of "exterior", "interior" or "slider", so a single listener can tell which viewer type fired. carpose-vehicle-viewer-unavailable fires exactly once per occurrence, and data.reason distinguishes why it fired — "no-media" means no media exists for the vehicle at all (the shared fallback screen shown by every viewer type when it has nothing to display), while "fetch-failed" means the viewer's own media fetch rejected.

detail.component on both viewer events reports whichever widget the viewer is mounted inside — same as every other tracking event — rather than a fixed identity for the viewer itself. Nested inside a vehicle's detail view it reports vehicle-detail; mounted standalone (see 360° Exterior Viewer) it reports the viewer's own component type (e.g. exterior-viewer).

Vehicle Viewer Load Event

Dispatched when a 360°/image viewer successfully loads its media.

Event Name: carpose-vehicle-viewer-load

Event Data:

How to Listen:

Vehicle Viewer Unavailable Event

Dispatched exactly once when a viewer has no media to show, either because none exists or because the fetch for it failed.

Event Name: carpose-vehicle-viewer-unavailable

Event Data:

How to Listen:

Last updated