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