Tagline

Tagline: site tags to trusted KPIs

A tagged storefront's GA4 events, taken through BigQuery, PySpark on Dataproc and Airflow to KPIs, multi-touch attribution and alerts that fire when the tags or the numbers go wrong. This page is a snapshot of the pipeline's marts, not a live connection: aggregates only, refreshed on demand from the marts.

Loading the snapshot…

What Tagline is, and the two sources

A small React store, Tagline Supply, pushes GA4's recommended ecommerce events against a written, machine-checked contract. The pipeline unions two GA4 exports, stitches sessions to signed-in people, deduplicates orders, credits each order across the buyer's journey under six models, and checks the tags again on the collected data.

  1. Tagged site (dataLayer + gtag)
  2. GA4 daily export
  3. BigQuery models and checks
  4. PySpark attribution on Dataproc
  5. Airflow DAG
  6. Anomaly alerts

KPIs

Totals over each source's days, from mart_kpi_daily. Orders exclude purchases with no transaction id and no revenue; revenue is the items subtotal, without tax or shipping.

Daily sessions and revenue, with the anomaly alerts

The GA4 sample, day by day. The marks under the charts are the days the Stage 5 anomaly rules raised an alert (kpi_alerts). The site has one exported day, too few for the rules' history.

GA4 sample: sessions and revenue per day Two charts on one time axis, each with its own scale. Hover, or focus the chart and use the arrow keys, to read a day.
    Show the days as a table

    Funnel step rates

    A closed funnel per session: a session reaches a step when it has that step's event and every earlier one. Each bar is the share of the step before that went on to this one.

    Step-to-step conversion, both sources
      Show the funnel as a table

      Attribution: who gets the credit under six models

      The Spark job credits each order across the buyer's sessions in the 30 days before it, under last click, last non-direct click, first click, linear, time decay (7-day half-life) and position-based (40/20/40). The weights sum to 1 per order and model (the rules, in spark/README.md).

      Share of the attributed revenue under each model. Pick another channel in the table above.
      Show this channel as a table

      Tag health

      The tags are watched at three points: before a release, on every event GA4 exported, and on the KPIs built from them.

      Collected-data checks by status, per source One row per day, event and check in mart_tag_health_daily. The checks are generated from the tagging contract.

        Site campaigns synthetic spend

        The site's sessions by landing campaign from mart_campaign_daily, joined to campaign_costs. The traffic is simulated and the spend is seeded, so ROAS here shows the join working, not a business result.

        What a daily run costs, and how long it takes

        Measured runs of the daily Airflow DAG, from the project's write-ups (linked under each figure). Not from the snapshot: BigQuery does not know them.

        Wall time per daily DAG runSeconds, first task start to last task end.
        List price per daily DAG runBigQuery on demand plus the Dataproc Serverless batch, before free tiers.