GA4 Measurement Audit ↗ Real Brand

Italo Treno
GA4 Architecture

External audit of Italy's second-largest rail operator. Reverse-engineered the existing digital funnel across web and app, identified tracking gaps, and designed a full GA4 measurement architecture — account structure, event taxonomy, conversion framework, and BigQuery integration rationale.

Google Analytics 4 Measurement Strategy Event Taxonomy Funnel Analysis BigQuery E-commerce Tracking
Audit Context
SubjectItalo Treno (NTV S.p.A.)
TypeExternal — public funnel
ScopeWeb + Android + iOS
GA4 Property1 property · 3 streams
Events defined28
Conversions5
Custom dimensions6
1
GA4 Property
3
Data Streams
28
Events Defined
6
Business Objectives

01 — Scope
Business Objectives

Every tracking decision maps back to a measurable business objective. No event was defined without a clear owner in the funnel.

OBJ 01
Increase ticket sales
Monitor the full booking funnel from search to purchase confirmation across web and app.
view_item_listbegin_checkoutpurchase
OBJ 02
Upselling & cross-selling
Track upgrade and add-on interactions to increase average order value per transaction.
select_upgradeupsell_purchaseadd_lounge_access
OBJ 03
Lead acquisition via email
Capture high-intent contacts who abandon the funnel before purchase via pop-up reminder flow.
generate_leadabandoned_checkout_email_submit
OBJ 04
Loyalty programme retention
Monitor account creation, points activity and benefit engagement to increase purchase frequency and LTV.
sign_uployalty_points_earnedredeem_loyalty_points
OBJ 05
Editorial → conversion attribution
Measure whether Italo Blog content drives booking intent — not just organic traffic volume.
blog_to_booking_clickscroll
OBJ 06
Cart abandonment recovery
Intercept undecided users via pop-up to reduce funnel drop-off and feed remarketing audiences.
abandoned_checkout_popup_viewabandoned_checkout_email_submit

02 — Architecture
Account Structure

Single account → single property → three data streams. Standard multi-platform architecture for unified cross-device tracking without data fragmentation.

Account
Italo Treno
NTV S.p.A.
GA4 Property
GA4 — Italo Treno Web & App
Single source of truth across all platforms
Data Streams
Web
italotreno.com
Includes blog.italotreno.com — same stream, differentiated via event params
Mobile
Android App
Italo Treno — Google Play
Mobile
iOS App
Italo Treno — App Store
User-ID implementation — Authenticated users assigned a persistent User-ID, enabling cross-device journey stitching between web and app. Eliminates duplicate user counts and enables accurate attribution across multi-device sessions.
Why one property
Unified view, no fragmentation

Splitting web and app into separate properties breaks cross-platform conversion paths. A user searching on mobile and completing checkout on desktop would appear as two non-converting users. One property preserves the full journey.

Scalability
GA360-compatible by design

The property and stream configuration is fully compatible with a GA4 360 upgrade. Advanced governance, enterprise SLAs, and higher hit limits can be added without touching the base architecture.


03 — Event Taxonomy
Events & Conversions

28 events across automatic measurement, GA4 recommended, and custom — each mapped to a business objective. Filter by type.

Event NameTypeDescriptionCustom ParamsConv.
view_search_resultsAutomaticInternal site search — fires with term and results_count. Zero-result searches derived via results_count=0, no separate event needed.search_termresults_count
scrollAutomatic90% scroll depth — used on blog/editorial pages to measure content consumption quality.
clickAutomaticOutbound clicks to external domains (e.g. MSC, GNV, SNAV). Native enhanced measurement event.link_urllink_domain
view_item_listRecommendedUser views a list of available travel solutions — routes, departure times, classes.item_list_name
view_itemRecommendedUser views details of a specific travel option — route, class, price, availability.items
add_to_cartRecommendedUser adds a ticket or service to cart. Key drop-off measurement point before checkout.itemsvalue
begin_checkoutRecommendedUser initiates the ticket purchase process.itemsvalue
add_payment_infoRecommendedUser enters payment details — last measurable step before confirmed purchase.
purchaseRecommendedTicket purchase confirmed. Primary revenue conversion event.travel_classtransaction_idvalue✓ Revenue
view_promotionRecommendedUser views a promotional offer or additional service during checkout flow.
select_promotionRecommendedUser interacts with a promotional offer or upgrade proposal.
generate_leadRecommendedHigh-intent contact captured — email from pop-up or newsletter. Feeds CRM and remarketing audiences.lead_source✓ Lead gen
sign_upRecommendedUser creates an Italo account — entry point to loyalty programme tracking.✓ Lead gen
loginRecommendedUser authenticates — triggers User-ID assignment for cross-device stitching.loyalty_tier
exceptionRecommendedTechnical errors — checkout failures, payment errors, app crashes. GA4 native error tracking.descriptionfatal
upsell_purchaseCustomPurchase of additional services that increase order value — upgrade, lounge, premium extras.upsell_typevalue✓ Revenue
newsletter_subscriptionCustomNewsletter opt-in — differentiated by type (promotional, blog, travel alerts).newsletter_type✓ Lead gen
select_upgradeCustomUser selects a class or service upgrade during booking flow.upgrade_type
add_lounge_accessCustomUser adds lounge access to cart — high-value add-on signal.
remove_upgradeCustomUser removes a previously selected add-on — friction signal for upsell flow optimisation.
abandoned_checkout_popup_viewCustomUser sees the cart recovery pop-up — exposure measurement for abandonment flow.
abandoned_checkout_email_submitCustomUser submits email via recovery pop-up — high-intent lead, feeds remarketing audiences.
price_alert_subscriptionCustomUser activates a price drop alert — declared purchase intent, valuable for segmentation.
blog_to_booking_clickCustomClick from blog article toward booking area — measures editorial content's contribution to funnel entry.article_titledestination
loyalty_points_earnedCustomPoints credited after qualifying purchase — loyalty programme engagement signal.
spend_virtual_currencyCustomUser spends loyalty points — programme utilisation metric.
redeem_loyalty_pointsCustomUser redeems a reward or benefit — highest loyalty engagement signal.
view_loyalty_benefitsCustomUser consults loyalty programme benefit page — consideration signal before sign-up or redemption.

04 — Strategic Logic
Three Measurement Pillars

The event taxonomy is structured around three strategic priorities — not a flat list of trackable actions.

Click to expand ↓

Objective

Track every step of the purchase funnel

The full e-commerce sequence — view_item_list → view_item → add_to_cart → begin_checkout → add_payment_info → purchase — is measured end to end. Every drop-off point is visible and actionable.

Upsell layer

AOV optimisation independent of volume

Upsell events (upsell_purchase, select_upgrade, add_lounge_access) sit alongside the core funnel. This allows the team to optimise average order value separately from acquisition volume — two different levers, both measurable.

The problem

Traffic volume ≠ editorial value

Italo Blog generates organic traffic — but traffic alone doesn't justify editorial investment. Standard GA4 reports can't connect a blog session to a booking made days later without a dedicated event.

The solution

blog_to_booking_click as attribution bridge

This custom event fires when a user clicks toward the booking area from an article. Combined with scroll depth, it creates a measurable link between content consumption and funnel entry — making editorial ROI quantifiable.

High-intent signals

Abandon ≠ disinterest

Users who abandon the funnel but submit their email via pop-up are among the highest-intent users on the platform. abandoned_checkout_email_submit + generate_lead feed directly into CRM segmentation and Google Ads remarketing lists.

Declared intent

Price alert as purchase timing signal

price_alert_subscription identifies users with declared purchase intent and a specific price threshold. This is a high-value audience segment for remarketing automation — they've told you exactly when they want to buy.


05 — Beyond the UI
BigQuery Integration

GA4's standard interface has hard limits: sampled data above thresholds, 14-month retention, no raw event-level querying. At Italo's scale, these constraints limit the depth of analysis that's actually possible.

BigQuery Export
Why the GA4 UI is not enough at Italo's scale

The architecture was designed with BigQuery export in mind from the start. Custom dimensions exist precisely because they need to be queryable at row level — not just aggregated in the GA4 interface.

Use Case 01
Full funnel drop-off at event level

Query raw event sequences per user session — identify exactly where users exit between add_to_cart and begin_checkout without sampling distortion.

Use Case 02
Loyalty tier × conversion rate

Cross-join login (loyalty_tier param) with purchase events to measure whether higher-tier members convert at different rates or AOVs — not possible in the standard UI.

Use Case 03
Blog multi-touch attribution

Reconstruct paths where a blog session precedes a booking session across different days — quantifying editorial content's true contribution to revenue beyond last-click.

Use Case 04
Upsell sequence analysis

Map the event sequence around select_upgrade → remove_upgrade → upsell_purchase to identify friction points in the add-on flow at session granularity.

Measurement that drives decisions

This architecture transforms GA4 from a traffic counter into a decision tool — connecting content, acquisition, conversion, loyalty, and recovery into a single measurable system.