Seven conversion events.
Every path to revenue visible.
The client had no reliable conversion tracking — free trial sign-ups, subscription purchases, paywall views, and form submissions were all invisible in analytics. We designed the data layer architecture, configured all seven conversion events and seven custom parameters in GTM, wired them into GA4 with custom dimensions, and built four Looker Studio dashboards that surface conversion performance, content interaction, onboarding behaviour, and the full subscription funnel.
No event tracking. No conversion data. No way to know what was working.
"Free trial sign-ups, subscription purchases, and paywall views were happening every day — but none of it was in analytics. Marketing was spending budget with no way to prove which campaigns were driving actual conversions, because the tracking simply didn't exist."
Zero conversion event tracking — every key action was invisible
Free trial sign-ups, subscription purchases, contact form submissions, appointment bookings, and paywall views were all happening on the site with no tracking in place. GA4 was installed but only capturing pageviews. The most commercially important user actions — the ones that directly tied to revenue — were completely invisible to analytics.
No content-to-conversion attribution — can't see what drives sign-ups
The content team was publishing articles with no visibility into whether specific content was moving users toward a free trial or subscription. There was no way to answer the most important question in content analytics: which articles are actually driving conversions? Without article-level attribution data captured at the moment of sign-up, optimising the content strategy was impossible.
Marketing spend with no conversion attribution
Paid campaigns were running across multiple channels, but without conversion events firing in GA4 there was nothing for the ad platforms to optimise toward. Google Ads was optimising toward clicks instead of actual sign-ups. Campaign performance was being measured by traffic metrics — CTR, CPC, sessions — rather than the only metric that matters: how many users converted.
No funnel visibility — drop-off points were completely unknown
The subscription funnel — from plan page visit to paywall view to trial sign-up to paid subscription — had never been mapped in analytics. There was no way to see where users were dropping off, which steps had the worst conversion rates, or where a product change might have the highest impact. Every product decision affecting the funnel was being made without data.
Seven conversion events, seven custom parameters — every action mapped.
| Event name | Trigger | Custom parameters captured |
|---|---|---|
| subscription_generated | dataLayer push on purchase confirm | user_id · user_type · subscription_plan · articles_read_before_conversion |
| free_trial_signup | dataLayer push on trial confirm screen | user_id · user_type · articles_read_before_trial |
| onboarding_completed | dataLayer push on final onboarding step | user_id · user_type · newsletter_type_selected · age_category_selected |
| contact_form_submitted | Form submission success callback | user_id · user_type |
| book_appointment | dataLayer push on booking confirmation | user_id · user_type |
| paywall_view | dataLayer push on paywall element render | user_id · user_type |
| plan_page_visited | GTM pageview trigger on /plans URL | user_id · user_type |
All seven events use consistent user_id and user_type parameters — making it possible to segment every conversion report by whether the user was anonymous, on a free plan, or already paid at the time of the action.
Data layer design, GTM configuration, GA4 setup — three phases, fully deployed.
Data Layer Architecture
Designed the full dataLayer schema — event names, parameter keys, and push timing — for all seven conversion events. Handed off to the dev team as a spec.
GTM Tags, Triggers & Variables
Built Data Layer Variables for every parameter. Configured GA4 Event tags and Custom Event triggers for all seven events. Validated each tag in GTM Preview mode.
GA4 Custom Dimensions
Created seven custom dimensions in GA4 (Admin → Custom Definitions) to register each parameter — user_id, user_type, subscription_plan, articles_read, newsletter preferences, age category.
Conversion Event Configuration
Marked subscription_generated and free_trial_signup as conversion events in GA4. Configured Google Ads conversion import to pull directly from GA4 for campaign optimisation.
Looker Studio Dashboards
Connected Looker Studio to GA4, surfaced custom dimensions as available fields, and built four dashboards covering conversions, content attribution, onboarding, and funnel analysis.
-
01
→ Data layer design and dev handoff
Every event specified before a single line of GTM is configured.
The data layer spec was written first — defining the exact event name, parameter keys, data types, and the moment each push fires in the user journey. For events like subscription_generated and free_trial_signup, this included the articles_read array, which accumulates article IDs as the user reads content and is included in the final dataLayer push at the conversion point. The spec was handed off to the client's development team as a structured implementation guide.
window.dataLayer = window.dataLayer || []; window.dataLayer.push({ event: 'free_trial_signup', user_id: 'user_abc123', user_type: 'free', articles_read_before_trial: ['article-42', 'article-17', 'article-88'] }); -
02
→ GTM configuration — variables, triggers, tags
Data Layer Variables feed GA4 Event tags — no hardcoded values, all dynamic.
In GTM, a Data Layer Variable was created for each parameter (user_id, user_type, subscription_plan, articles_read_before_conversion, articles_read_before_trial, newsletter_type_selected, age_category_selected). Custom Event triggers were set to fire on each dataLayer event name. Each GA4 Event tag maps the DLV to the correct event parameter name, ensuring what arrives in GA4 matches the custom dimension keys registered in the property. Every tag was validated in GTM Preview before publishing.
- DLV: {{DLV - user_id}} · {{DLV - user_type}} · {{DLV - subscription_plan}}
- DLV: {{DLV - articles_read_before_conversion}} · {{DLV - articles_read_before_trial}}
- DLV: {{DLV - newsletter_type_selected}} · {{DLV - age_category_selected}}
- Trigger: Custom Event — fires on exact dataLayer event name match
- GA4 Event tag — event_name + all parameters passed via DLV
-
03
→ GA4 custom dimensions + conversion configuration
Seven custom dimensions registered — parameters available in all GA4 reports and Looker Studio.
Custom dimensions were created in GA4 Admin → Custom Definitions for all seven parameters. Once registered, the dimensions became available in GA4's Explore reports and as dimensions in Looker Studio. The subscription_generated and free_trial_signup events were marked as conversions in GA4. Google Ads conversion import was configured to pull these events directly from the GA4 property — replacing click-based optimisation with actual sign-up signals, giving the ad platform the correct goal to bid toward.
GTM owns event collection.
Google Tag Manager is the single place where all event tags, triggers, and variable mappings live. The dataLayer is the contract between the website and GTM — the dev team pushes structured objects, GTM listens and fires the correct GA4 event tag with the correct parameters every time.
GA4 owns event storage and segmentation.
GA4 receives every event with its custom parameters and stores them against custom dimensions. It is the source of truth for raw conversion counts, conversion rates, user-level behaviour, and funnel progression. Google Ads imports conversion data directly from GA4, making the actual sign-up event — not just the ad click — the optimisation signal.
Looker Studio owns the dashboards.
Looker Studio connects directly to the GA4 property, surfacing custom dimensions as available report fields. All four dashboards — conversion event analysis, content interaction, onboarding, and funnel — query GA4 in real time. No data exports, no spreadsheets, no manual refreshes. Stakeholders see the same numbers GA4 holds, updated daily.
Four dashboards — conversions, content attribution, onboarding, and the subscription funnel.
Every conversion event counted, trended, and segmented by user type.
The primary conversion dashboard gives the product and marketing teams a single view of all seven tracked events — daily and cumulative counts, conversion rates, and breakdowns by user_type (anonymous, free, paid). It answers the most important operational questions: how many free trials today, how many subscriptions this week, and what percentage of paywall views are converting to trial sign-ups?
With user_type as a dimension on every event, the team can immediately see whether a campaign is converting anonymous visitors into free users, or free users into paid subscribers — two very different outcomes that require different product and marketing responses.
- Daily and cumulative counts — all 7 events, filterable by date range
- Conversion rate: paywall view → free trial sign-up
- Conversion rate: free trial sign-up → subscription generated
- Event breakdown by user_type (anonymous / free / paid)
- Subscription plan distribution — Basic vs Premium split
- Week-over-week and month-over-month trend comparison
- Top articles by free trial conversion — which content drives sign-ups
- Top articles by subscription conversion — which content drives paid upgrades
- Articles read before trial: avg count + most common article sequences
- Articles read before subscription: same breakdown for paid conversion path
- Content-to-conversion attribution — filterable by user_type and date range
Which articles are actually converting readers into subscribers?
The content interaction dashboard surfaces the articles_read_before_trial and articles_read_before_conversion parameters that are captured at the moment each sign-up fires. It shows which specific articles appear most frequently in the conversion path — both individually and as sequences — giving the content team a direct line of sight between editorial decisions and subscription revenue.
This is the layer that was entirely invisible before the tracking was built. The data was always there in user behaviour — it just hadn't been captured at the conversion point and attributed correctly. Now the content team knows exactly which articles to write more of.
Onboarding Completion Report
Tracks onboarding_completed events and surfaces user preference data captured during the onboarding flow — newsletter type and age category selections.
- Onboarding completion rate — what percentage of sign-ups finish
- Newsletter type selected — distribution of Weekly vs Product News vs other
- Age category selected — demographic breakdown of completing users
- Drop-off analysis — where users abandon the onboarding flow
- Completion trend — day over day, filterable by user_type
Subscription Funnel Analysis
Visualises the full conversion funnel from plan page visit through to paid subscription — showing volume and drop-off at every step.
- Funnel: Plan Page Visited → Paywall View → Trial Sign-Up → Subscription
- Step-level conversion rates — where drop-off is highest
- Funnel breakdown by user_type — how each segment moves through the funnel
- Time-to-convert — avg days from plan page visit to paid subscription
- Funnel trend — week over week change in each step conversion rate
Data Layer, GTM, GA4, Looker Studio — each layer owns its role.
Data Layer
The dataLayer is the structured contract between the website and GTM. The client's dev team pushes event objects with defined parameter keys at the correct moment in each user journey. This separation of concerns means analytics configuration can change without requiring code deployments.
Google Tag Manager
GTM houses all Data Layer Variables, Custom Event triggers, and GA4 Event tags. It is the layer where event collection logic lives — entirely separate from the website codebase. Changes to tracking configuration are deployed through GTM, not through code releases. Preview mode enables full validation before any tag goes live.
Google Analytics 4
GA4 receives all seven events with their custom parameters and stores them against seven registered custom dimensions. Conversion events are imported directly into Google Ads — replacing click-based optimisation signals with actual sign-up events. GA4 Explore reports provide ad-hoc analysis beyond what the Looker Studio dashboards surface.
Looker Studio
Four dashboards connect directly to the GA4 property, pulling custom dimensions as available report fields. No scheduled data exports, no BigQuery intermediate layer — Looker Studio queries GA4 directly. Stakeholders access live dashboards through a shared link, with access controls managed at the report level.
Conversions happening every day that your analytics can't see. Budget spent with no attribution.
We design the data layer, configure GTM, set up GA4 custom dimensions, and build the dashboards that show you exactly which content and campaigns are driving revenue.
Book a 30-min call →US · UK · EU · APAC · Billing in USD.