ARCHIVE
QUERY = 'contents'; TYPE = 'all' // 145 rows
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.
Read PostCommon Value-Sending Mistakes in OpenAI Ads: Decimal or Minor Unit?
OpenAI Ads expects monetary value as an integer in ISO 4217 minor units: 2599 for $25.99. The most common mistake is sending a decimal, because Meta CAPI, GA4, and Google Ads gtag all use decimals (25.99). Other traps: mis-scaling zero-decimal currencies like JPY, sending amount without currency, and confusing the Google Ads API micros value.
OpenAI Ads Identity Matching and Privacy: SHA-256, oppref, and opt_out
OpenAI Ads uses the identity fields in the user object to bind a conversion to an ad interaction. Email and external ID are hashed with SHA-256 and sent as lowercase 64-character hexadecimal strings; raw email, external ID, and phone are never sent. This post explains identity matching, the hashing rules, and the oppref and opt_out fields.
An applied measurement
case, every week
Analytics and measurement, developer tools, server-side tracking, AI & LLM integrations: weekly real case analyses.
The OpenAI Ads Event Taxonomy: Which Event When, With Which Data Shape
OpenAI Ads defines eleven standard events and four data shapes (contents, customer_action, plan_enrollment, custom). Each event is bound to a specific shape: order_created and checkout_started use contents, lead_created uses customer_action, subscription_created uses plan_enrollment. This reference lists when each event fires and the fields of each shape.
Dedup in OpenAI Ads: Not Counting the Same Conversion Twice
When the pixel and the Conversions API send the same conversion, double-counting happens. OpenAI Ads deduplicates it with three components: Pixel ID, event name, and event_id, keeping the pixel event_id equal to the server id. This guide shows how to generate a stable event_id, match on both sides, and the common mistakes.
Sending Server-Side Conversions with the Conversions API: An OpenAI Ads Guide
The OpenAI Ads Conversions API sends conversion events server-to-server: a POST to the bzr.openai.com/v1/events endpoint with your Pixel ID and API key. This guide shows the request structure, the event fields and their required rules, the batch behavior, testing with validate_only, and dedup with the pixel.
Setting Up the OpenAI Ads JavaScript Pixel: A Step-by-Step Guide
Setting up the OpenAI Ads pixel takes three steps: add the snippet to the head of every page, pass your Pixel ID with oaiq('init'), and call oaiq('measure') when a conversion happens. This guide shows the install snippet, the init and measure calls, standard and custom event examples, and the testing steps.
OpenAI Ads Measurement Architecture: How the Pixel and Conversions API Work Together
OpenAI Ads conversion measurement rests on two layers: the browser JavaScript pixel and the server-side Conversions API. This post explains what each layer captures, why both are needed, and how they reconcile the same conversion without double-counting, conceptually, without diving into setup steps.
Who Can Access ChatGPT Ads: Geographic Eligibility and Category Restrictions
ChatGPT ads (OpenAI Ads) are open as of June 2026 only to advertisers based in the US, Canada, Australia, and New Zealand. Türkiye is not yet 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.
Local Semantic Code Search: An MCP Server for AI Agents
A local semantic code search MCP server that solves AI coding agents' search problems using Tree-sitter AST chunking and hybrid search. Development process, architectural decisions, and real-world results.
Claude Code Context Management: Three Different Approaches
Claude Code's context window fills up fast. claude-context-mode, claude-context, and dnomia-knowledge solve this problem in different ways. Architectural decisions, trade-offs, and real-world comparison.
Your Google Tag Is Now a GTM Container: The Destinations Model and the Container ID You Need to Audit
Google Tags are upgraded to fully capable Google Tag Manager containers, and each Google destination gets its own tag inside the container. The opt-in upgrade's performance gain, the container ID audit in the snippet, and its impact on sGTM setups.
GDPR Compliance: Obligations When Your Tracking Tools Collect Personal Data
Tracking, email and e-commerce infrastructure collects IP, cookie and identity data, so it falls under GDPR. What obligations arise, and what must your systems do?
Argus: Make Your AI Coding Assistant's Web Searches Visible
AI coding assistants run web searches during a conversation, but those searches stay invisible. Argus logs every WebSearch and WebFetch call to a local SQLite database, lets you query it from the CLI, and analyzes search patterns. I walk through what 68 days of real data revealed.
How to Read and Interpret Heatmaps: Click, Move, and Scroll Maps
Reading a heatmap means interpreting patterns, not colors. I walk through which question each map type answers, what common patterns mean, and when a heatmap misleads you.