Analytics & Tracking

Custom Event & Conversion Tracking
Every Action That Matters, Captured Cleanly.

Strategic dataLayer design and custom event tracking for purchase, lead, sign-up and micro-conversions. Full parameters, item data, user properties and revenue tracking so you finally know what actually drives pipeline and closed revenue.

Get a Free Tracking Audit arrow_forward
↑ 3.8×
Revenue Attribution Clarity
98%+
Event Parameter Completeness
↓ 55%
Unexplained Conversion Drop
95+
Custom Event Implementations

Why Most "Conversion Tracking" Is Incomplete or Brittle

Common Failures

  • Only tracking form submits with no context about which offer or page
  • Purchase events without line items, discounts, or payment method
  • Lead events that fire on every partial form interaction
  • No distinction between marketing-qualified and sales-qualified actions
  • Events that break the moment the site gets a redesign

Our Standard

We design a complete event taxonomy first. Every tracked action has a clear business meaning, required and optional parameters, and a defined place in the funnel. Then we implement it defensively so it survives site changes and still gives clean data to ads, CRM, and analytics.

Technical Implementation Patterns We Use

dataLayer Design

  • Standard + Custom Events: We follow Google ecommerce and lead gen specs exactly, then layer on the custom events that actually matter for your business (pricing viewed, demo booked, account upgraded, etc.).
  • Parameter Hygiene: Consistent types, no PII in event names or parameters unless hashed and documented, currency and value always present on revenue events.
  • Item Arrays: Full item data for every purchase and add-to-cart so you can analyze by category, product, and margin.

Defensive & Future-Proof

  • Event Versioning: We include event_version or schema_version parameters so you can evolve events without breaking historical analysis.
  • Centralized Tracking Library: When possible we push a small, versioned tracking helper so developers do not copy-paste GTM listeners everywhere.
  • Server-Side Enrichment: User properties and transaction values that are only known server-side are sent via Measurement Protocol or server GTM.

Our Custom Event & Conversion Tracking Process

01

Funnel & Action Mapping

Workshop to list every action that indicates intent or revenue, from first anonymous visit to closed deal and upsell.

02

Event Taxonomy & Schema

Define event names, required/optional parameters, scopes, and how each maps to GA4 key events, ad platforms, and CRM stages.

03

dataLayer & Listener Implementation

Add the dataLayer pushes in the right places (or use existing ones). Build robust GTM triggers and variables that survive DOM changes.

04

Parameter & Value Enrichment

Add user properties, item details, campaign context, and any server-side values (margin, LTV tier, contract length).

05

Validation Across Stack

GTM debug, GA4 debugView, ad platform test events, CRM payload inspection, and real-user production traffic validation for 7+ days.

06

Docs & Maintenance

Living event catalog with examples, change process, and alerts when critical events drop below expected volume.

Frequently Asked Questions About Custom Event & Conversion Tracking

Technical questions about building event tracking that survives and drives real decisions.

How do you decide which micro-conversions are worth tracking? expand_more
We score every action by two axes: how strongly it predicts revenue or pipeline movement, and how cleanly it can be measured without false positives. Only actions that score high on both make the final list.
Do you fire events on the client only or also server-side? expand_more
Both when it adds value. Client for immediate UX signals and page context. Server for anything that must be trusted (actual payment success, subscription started, high-value lead marked by sales). We deduplicate using transaction_id or lead_id.
What parameters do you always include on lead and purchase events? expand_more
lead_id or transaction_id, value (with currency), lead_source or channel context, campaign parameters (or gclid/fbclid), user type or tier if known, and any experiment or variant ID that was active.
How do you handle form tracking when forms are loaded via JS or in modals? expand_more
We listen for submit on the actual form elements and also watch for success states in the UI or dataLayer. We capture which form (by id or data attribute), which step if multi-step, and any visible offer context.
Can you track events that happen after the user leaves the site (phone calls, offline)? expand_more
Yes. Call tracking platforms, CRM webhooks, and offline conversion uploads all feed back into the same event model. We make sure the original click ID or user ID travels with the offline record.
How do you prevent duplicate events when users refresh or click fast? expand_more
We use transaction_id or a generated event_id with deduplication logic in GTM or server-side. For non-transaction events we often use a short client-side debounce or sessionStorage flag.
What about events that should only fire for certain user segments? expand_more
We gate them with user properties or dataLayer flags (logged_in, customer_type, experiment_cohort). The trigger conditions are explicit and documented so they do not accidentally fire for the wrong audience.
How do you evolve the event schema over time without breaking old data? expand_more
We version events (add event_version) and treat new parameters as optional. Old events keep working. BigQuery views can coalesce old and new schemas for consistent reporting.
Do you track negative or failure events (form error, checkout abandoned)? expand_more
Yes. These are often more diagnostic than success events. We track form_error, checkout_step_error, payment_failed with the step and reason when available. They power UX and CRO work.
How do you make sure value is reported in the correct currency? expand_more
We always pass currency explicitly with the value. For multi-currency sites we normalize or keep the original and handle conversion in reporting. We test with real orders in each currency.
Can you backfill historical events if the site had poor tracking before? expand_more
Limited. We can sometimes reconstruct from server logs, CRM records, or ad platform data and upload offline conversions. Purely client-side events from the past are usually lost.
How do you handle single-page apps and client-side routing? expand_more
We listen to router events (or history changes) and fire virtual page_view + the appropriate custom events. We make sure the dataLayer has stable page context even when the URL does not change.
What level of detail do you put in the items array for non-ecommerce sites? expand_more
For lead-gen and SaaS we often model "items" as the offer, plan, or content piece the user engaged with. It lets us analyze performance by product, tier, or content type the same way ecommerce teams analyze SKUs.
How do you test that events are reaching ad platforms correctly? expand_more
We use the official test event tools (Google Ads test events, Meta Events Manager test, Microsoft Advertising UET tag helper), plus we look at real delivery in the platforms after the 24-48h modeling delay.
How long does solid custom event work usually take? expand_more
Core revenue and lead events with parameters: 2-4 weeks. Full funnel with micro-conversions, server enrichment, versioning, and team docs: 5-8 weeks.

Ready to know exactly which actions turn into revenue?

Get a free tracking audit. We will map and show you the complete event system your business actually needs.

Get My Free Tracking Audit arrow_forward