The problem.

The Super Prime is a luxury property platform. It wanted GA4 ecommerce tracking to see which listings drew interest and how visitors moved from a listing to an enquiry. There was no dataLayer, no ecommerce events and little developer time to build them.

Property templates varied, and enquiry forms submit in the background, so page-view tracking misses them. Marc Alexander built the whole tracking layer in Google Tag Manager instead, with no changes to the site's code.

What Marc did.

Listing pages

view_item_list covers featured properties and the grid, up to 80 items per page.

  • Properties in both places counted once, each with its position.
  • select_item on click, so clicks can be compared with impressions.

Homepage carousels

The sponsored and luxury carousels tracked in a single view_item_list event.

  • Positions numbered continuously across the two.

Property pages

view_item with the cleaned name, asking price, currency, developer or brand, and a stable ID.

  • The ID comes from the URL, or a consistent hash of the path where there isn't one.
  • Price found by position: the highest currency value just below the main heading.

Enquiries

Contact Form 7 enquiries tracked from first click to confirmed submission.

  • add_to_cart and begin_checkout fire once on the first field click; a successful submission sends purchase.
  • The whole funnel reuses the property details from view_item.

Tracking that survives redesigns

Grids found by their structure, not CSS class names.

  • Background fetch and XMLHttpRequest calls watched for cart and form requests.
  • Once-only listeners and a flag per page stop duplicate events.

Strict GA4 format

GA4 silently drops payloads that are nearly right.

  • Exact field names, a full items array, event-level currency and value, index starting at 0.

Results.

  • The full funnel, from listing impression to property page to enquiry, live in under two weeks.
  • No code changes, development sprints or release coordination. The equivalent custom build was conservatively estimated at 11 to 16 developer days, before maintenance.
  • Featured listings captured with full details and not double counted.
  • Tracking that keeps working when templates, property types or URLs change.
  • A base for testing featured slots, layouts and the enquiry form, and later connecting enquiries to the CRM.

If your site has no dataLayer and little developer time, a GA4 mini audit shows what your tracking is missing.