ASC GA4 Standard v1.2 — Dealership Analytics Without a Separate Session
Platform updatev1.2

Platform update

ASC GA4 Standard v1.2 — Dealership Analytics Without a Separate Session

Carvia widgets emit ASC GA4 v1.2 events through a secure iframe-to-parent postMessage bridge into window.asc_datalayer.events, GTM dataLayer as dl_<event> + eventModel, and parent gtag when already present — on by default, without extra pageviews on injected VDPs.

~6 min read
01

Release Overview

Carvia widgets now support the Automotive Standards Council (ASC) GA4 Standard v1.2 without creating a separate analytics session inside the iframe.

Interactions that Carvia actually owns — report navigation, configuration, CTAs, and the Get My Full Report lead form — are mapped to canonical ASC events and forwarded through a secure parent-page SDK listener. Events are written to window.asc_datalayer.events with the real asc_* name. GTM receives { event: "dl_<asc_event>", eventModel } so ASC GTM-5FC28SQ tags can listen without double-counting GA4. If the dealer page already loaded gtag, the parent SDK also forwards the event with existing dealer Measurement IDs as send_to. Carvia never invents those IDs or loads gtag.js inside the iframe. Your consent and attribution stay in place. Carvia's first-party carvia_* widget analytics is unchanged and is not renamed to ASC.

Standard: ASC GA4 Standard v1.2  ·  Default: On for all widget clients  ·  Unsupported dealer pages: No-op, widgets still load  ·  Measurement IDs: Optional — used only if the dealer page already defines them

02

What's New

  • Secure iframe-to-parent postMessage bridge with origin, source-window, envelope, and schema validation.
  • Dealership asc_datalayer.events forwarding, GTM dl_* dataLayer events, and optional parent gtag using the parent page URL as page_location.
  • Standardized ASC payload mapping. Vehicle item_* parameters are copied from the dealer asc_datalayer.items[0] (VIN-matched when present) so they match the website provider; Carvia VIN/MSRP mapping is fallback only when the host item is missing those fields.
  • PII-safe handling: customer name, email, phone, and free-text comments never enter ASC events.
  • In-page VDP widgets do not fire asc_pageview or asc_item_pageview — the dealer site already owns those.
  • Duplicate prevention for the parent listener; share-form engagement is start on the first field and engage on later fields.
  • In-carousel Vini chat emits asc_comm_engagement without utterance text, and Connect with our team uses form_name=connect_with_team.

An earlier unused v1.1 mapper that required Carvia to own dealer Measurement IDs is replaced. The parent SDK only reads IDs the dealer page already published on asc_datalayer.


03

Implemented Event Families

Only interactions Carvia owns are tracked:

  • asc_cta_interaction for explicit CTAs, outbound links, and opening Vini chat.
  • asc_menu_interaction for carousel tabs, pagination, swipe between report slides, and suggested Q&A Learn more.
  • asc_element_configuration for accordions, EV controls, and cost-view toggles.
  • asc_comm_engagement for in-carousel Vini chat (comm_type=chat, first shopper message start, later engage). Utterance text is never sent.
  • asc_form_engagement, asc_form_submission, and asc_form_submission_sales for Get My Full Report and Connect with our team after confirmed success. In-chat uses form_name=connect_with_team.

Voice, video call, click-to-call, special-offer popups, media galleries, and retail/finance/trade flows are not claimed. Chat transcript text never enters ASC events.


04

Privacy & Duplicates

Form engagement fires on each distinct field — comm_status=start for the first, engage after that — not when the modal appears and not on every keystroke. Submission fires only after the Carvia backend confirms success and returns a lead id. See Verified Details is a single asc_cta_interaction with event_action_result=popup|form. Widget injection on an existing VDP does not emit ASC pageviews.


05

Enablement

Disable globally with WIDGET_ASC_ENABLED=false, per client from the admin client overview (ASC tracking toggle), or per embed with CarviaWidgets.mount({ asc: false }). See docs/standards/asc-v1.2.md for the full catalog and GTM fallback snippet.