analytics
QUERY = 'contents'; CATEGORY = 'analytics' // 55 rows
An applied measurement
case, every week
Analytics and measurement, developer tools, AI & LLM integrations, server-side tracking: weekly real case analyses.
Who Can Access ChatGPT Ads: Geographic Eligibility and Category Restrictions
ChatGPT ads (OpenAI Ads) opened to 31 European markets on August 24, 2026, on top of the US, Canada, Australia, and New Zealand. Türkiye is still not eligible as an advertiser. The business location and category in the Ads Manager form determine eligibility; this post covers who can access it, which categories are excluded, and what can be done from a non-eligible region.
The Newsletter Form as an Interaction Layer: Decisions and Tests
The form is the only surface of the newsletter layer the reader sees. This post takes each step of that form separately: where it goes, what it looks like, and what it says. There are three tests, and in all three the decision came from measured form events and behaviour in session recordings.
Why Direct Contact Got Valuable: Zero-Click, AI Crawlers, and Content Tiers
Search volume is not shrinking and neither are impressions, yet fewer visitors reach the site, and a share of the visits that do arrive are not human. This post lays out the terminology, what it looks like from the publisher's side, and the two decisions that follow: splitting content into access tiers and running a newsletter on my own stack.
sGTM or Data Manager: The Wrong Question and the Right Distinction
The two do not fill the same gap, and their scopes are not equal either. Data Manager writes only to Google products, sGTM writes anywhere. Which data travels which path, how the two feed each other, and the irreversible cost of getting the order wrong.
GA4 Landing Page (not set): A Diagnostic Playbook
When the GA4 Landing page dimension shows (not set), the problem is usually not UTM or consent but the absence of a page_view in the session. Root causes in priority order, a diagnostic flow, page_view ownership architecture, a BigQuery proof query and acceptance criteria.
Uploading with the Data Manager API: Setup Order from Authentication to Diagnostics
The API begins where the dashboard connector stops. Service account impersonation, the asymmetry of batch limits, the fields that are not hashed, the hidden cost of a dry run, and the only way to read the result of an upload.
Connecting a Backend Record to a Tag Conversion: Where the Uploaded Value Lands
When an additional data source is connected to a Google Ads conversion action, the uploaded record permanently changes the value the tag wrote. Match thresholds, currency differences, double counting risk and the fourteen day non-biddable window.
Reading URLs for Tracking: Gateway Design, ITP and Pixel Sandbox
How URL parts (scheme, host, path, query, fragment) impact tracking. Server-side gateway design, first-party context, Safari LTP and Safari 26 AFP, Shopify Custom Pixel sandbox pitfalls.
Advertising Measurement Within Consent Limits: Google's Signal Architecture
Which measurement signals still work, legally and ethically, when a user declines consent? Consent Mode V2 ping architecture, gcs/gcd parameters, wbraid/gbraid, modeled conversions and Enhanced Conversions.
Writing the Same Conversion to Four Different APIs: Data Manager's Destination Map
A single order record in your backend goes to Google Ads, GA4 and Floodlight today through three separate integrations. Data Manager collects them under one data model, but every destination has its own account type, identity surface and access gate.
Why Google Ads and GA4 Conversions Never Match: Counting Unit and Time Axis
Why does the conversion count in Google Ads differ from purchases in GA4? Six columns across two dashboards count the same order with different units and write it to different days. The two axes to align before any comparison.
Fractional Conversions in the Ads Dashboard: The Model or the Date Range?
What does a fractional value like 0.29 against a single order in Google Ads actually mean? DDA's credit distribution and the report date range side effect get conflated. The test that separates them, a measured total preservation at account level, and how the lookback window changes things.
Joining Google Ads and GA4 at Row Level: A Shared Key and a Two-Layer Reading
Instead of putting two dashboard totals side by side, join at row level on an identifier present in both. How the join key is chosen, the precondition in the Ads Webpages report, the three-bucket reading, and the measured ceiling of first-party cookie capture.
Connecting a Shopify Order to an Ad Click: Choosing a Join Key for Offline Conversions
The ad platform wants a click ID for offline conversion upload, but the Shopify order does not carry one. The cart attribute path only works going forward, so it cannot serve a backfill request. Using GA4 as a join table, the cart token naming trap, and the consent ceiling both paths share.
Are ChatGPT Ads a Measurable Channel? Preparing Before Access
ChatGPT ads are a measurable channel: the pixel, the Conversions API, and dedup together give a solid base. The real insight is that the measurement infrastructure can be built today, before access arrives in your market. The healthy setup I recommend (deployment via GTM and sGTM, consent with a CMP, cross-validation with GA4 and cookieless tools) already applies to every ad channel; when access lands, getting the ID from Ads Manager and starting is all that is left.