Writing
Notes on analytics engineering, server-side tracking, tag management, and the data pipelines behind them.
When a mobile attribution SDK hits End-of-Support your app doesn't crash — it keeps running while data quality quietly erodes. Two BigQuery queries to catch it in your own data before the monthly report does.
Campaign Data Import with cost data now requires an explicit currency. Small update, but it quietly fixes a real data-corruption problem — and it can stop an import cold if you edit a config and leave the field blank.
Google Ads is rolling out a Target CPA / Target ROAS bidding change on August 17, 2026. What is it, how will it affect your campaigns, and what should you do before the deadline? Full breakdown with the Bid Target Adjustment Tool.
GA4's new Source Group dimension collapses facebook, fb, m.facebook.com and friends into one clean row — retroactively, with zero implementation work. Here's what it does and where it still falls short.
Google is expanding what it uses EEA, UK, and Swiss IP addresses for — from routing traffic to identifying devices and personalizing ads. A purpose change that lands squarely on your consent setup.
Why moving your tag container into a server-side environment changes the trust and accuracy equation for every downstream report.
A field-by-field breakdown of the GA4 ecommerce object, and the schema decisions that keep a data layer maintainable past launch day.
GTM workspaces multiply fast. Here's the review process that keeps a container auditable once more than two people can publish to it.
The GA4-to-BigQuery export is a firehose. A few partitioning and materialization habits keep the monthly bill from surprising anyone.
Consent Mode doesn't just toggle tags on and off — it changes what a hit looks like on the wire. Here's what modeling can and can't fill in.