Skip to content
ceaksan

analytics

QUERY = 'contents'; CATEGORY = 'analytics' // 55 rows

Every Monday · One email

An applied measurement
case, every week

Analytics and measurement, developer tools, AI & LLM integrations, server-side tracking: weekly real case analyses.

Recent Emails
  • Turning Typography Rules into Prompts with Vibe Coding
  • Data Loss Analysis After GA4 Consent Mode v2
  • E-commerce Code Review Automation with Gemma 4
  • Shopify Flow: Auto Pricing Strategy on Low Stock
  • Server-side Tracking Setup with Cloudflare Workers
...and more
analytics

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.

6/5/2026 Updated
analytics MEMBERS ONLY

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.

8/24/2026
analytics

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.

8/22/2026
analytics

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.

8/19/2026
analytics SUBSCRIBERS ONLY

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.

8/19/2026
analytics MEMBERS ONLY

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.

8/18/2026
analytics

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.

8/17/2026
analytics

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.

6/11/2019 Updated
analytics

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.

4/8/2026 Updated
analytics

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.

8/16/2026
analytics

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.

8/15/2026
analytics MEMBERS ONLY

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.

8/15/2026
analytics MEMBERS ONLY

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.

8/15/2026
analytics SUBSCRIBERS ONLY

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.

8/6/2026
analytics

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.

6/23/2026