Netflix’s Conversions API is the simple case. Netflix is forecast to capture 9.2% of global Connected TV ad spend by 2027 (WARC), which means more than 90% of 2026 CTV dollars sit with Amazon Prime Video, Roku, YouTube TV, and Hulu — each running its own Conversions API with a different event schema, a different identity signal, and a different lookback window. A WooCommerce store running ads on even two of these platforms is sending one order, and that one order needs four different formatted payloads to land where it should. This is the engineering picture nobody else has put on one page.
Why CTV Attribution Doesn’t Look Like Anything Else
The reason CTV attribution is structurally different from Meta or Google Ads attribution is that CTV ads have no click, no cookie, and no UTM. A viewer sees a 30-second spot on Prime Video, picks up their phone two hours later, types your URL, and buys. The browser session that completes the purchase has no referrer, no campaign parameter, and no record that the ad was ever seen.
What CTV platforms have instead is the household IP address at the moment of ad exposure, plus an internal identity graph (Roku ID, Amazon account, Google account, Netflix profile) that maps to that household. Attribution gets done by matching: the platform sees an ad shown to a household at 7:42 PM, then your server sends a purchase event to the platform’s Conversions API at 9:17 PM with an IP that the platform already has on file, and the match closes the loop.
IP-matched household attribution is the only game in town for CTV — and every major platform implements it differently (Strategus, StackAdapt, 2026).
This is also why your GA4 reports show CTV-driven sales as “direct traffic.” From GA4’s perspective, the buyer arrived with no referrer and no UTM. The conversion is real. The attribution lives elsewhere — specifically, inside whichever CTV platform you are running on.
The Four Platforms — Same Problem, Four Solutions
This article is the explicit follow-up to Your WooCommerce Store Just Bought Its First Netflix Ad. Every Attribution Tool You Own Was Built for a Different Decade., which set up the Netflix piece of the puzzle. Here is the rest of it.
1. Netflix Conversions API
Netflix accepts a server-to-server purchase event with hashed customer email, hashed phone, IP address, user agent, and event timestamp. Lookback window: configurable per advertiser, typically 1-7 days for performance campaigns. Identity resolution: Netflix’s first-party profile graph, joined to household IP and hashed contact data. The simplest of the four because Netflix’s ad inventory is the smallest — Netflix’s 2025 ad revenue hit $1.5 billion with a $3 billion target for 2026 (ALM Corp), but that is still a fraction of Prime Video, Roku, and YouTube TV combined.
2. Amazon Prime Video (Amazon Ads + AMC)
Prime Video does not expose a standalone “Conversions API” the way Netflix or Meta does. Conversion measurement runs through Amazon Ads conversion events, and Prime Video-specific attribution lives in Amazon Marketing Cloud (AMC). AMC entered open beta with Prime Video viewing data in late 2025, allowing advertisers to join content-level viewing to conversion data (Sequence Commerce, 2026). For a WooCommerce store, the practical implication is two systems: send purchase events to Amazon Ads conversion API on a standard schema (event_type, conversion_value, hashed identifiers, IP), and use AMC queries to pull the Prime Video slice of attribution.
The Amazon documentation also assumes you have an account manager. If you don’t, a meaningful chunk of the AMC setup happens by reading other practitioners’ write-ups rather than first-party docs.
3. Roku OneView
Roku OneView accepts server-to-server conversion uploads keyed on IP, hashed email, and Roku device graph. It is not Shopify-locked, despite most public documentation focusing on Shopify integrations. For a WooCommerce store, OneView’s identity resolution accuracy depends heavily on first-party customer signals: hashed email plus IP plus order timestamp gives the device graph enough to match; IP-only falls back to lower-confidence household match.
Roku’s lookback window for performance campaigns is typically 14-30 days, longer than Netflix’s, which means the same purchase event might attribute to a Roku ad that ran two weeks ago when Netflix’s window already expired.
4. YouTube TV (Google Ads Enhanced + Offline Conversions)
YouTube TV does not have its own dedicated CAPI endpoint. CTV inventory is reported through Google Ads’ existing Enhanced Conversions and Offline Conversion Import surfaces, with CTV-specific reporting dimensions exposed in the Google Ads UI. The schema is Google Ads’ standard conversion-upload format: gclid (often missing for CTV), enhanced conversion data (hashed email, hashed phone, address fields), conversion value, conversion timestamp, and a conversion action ID.
The trap: if you do not create a separate conversion action specifically for YouTube TV, conversions get bucketed in with regular Google Ads Search and Display conversions and become uninspectable. Smart Bidding ends up training on a mixed cohort where the YouTube TV-driven purchases inflate the apparent performance of unrelated Search keywords. Your Meta ROAS Isn’t Wrong — The Measurement Was walks through the parallel pattern in the Meta stack.
Where the Schemas Disagree
The disagreement is the engineering reality of CTV attribution in 2026. The same WooCommerce woocommerce_payment_complete event has to produce four different payloads:
- Netflix: event_name = “purchase”, hashed_email, hashed_phone, ip, user_agent, timestamp_iso8601, value, currency.
- Amazon Ads: conversion_type, conversion_value, conversion_time, hashed identifiers, IP — plus AMC requires an additional log table for Prime Video-specific attribution.
- Roku OneView: conversion event with IP, hashed_email, roku_device_graph_id (if available from prior site visits), timestamp, value.
- YouTube TV (via Google Ads): gclid (usually empty for CTV), enhanced conversion data (hashed email, hashed phone, address line 1, postal code, country), conversion_action_id, conversion_value, conversion_date_time.
Four schemas. Four lookback windows. Four identity-resolution approaches. One purchase event in your WooCommerce database.
The Deduplication Problem (Same Household, Three Platforms, One Order)
Here is what nobody warns you about until after the campaign ends. A household sees your ad on Roku at 7:42 PM Saturday, on Prime Video at 8:15 PM, and on YouTube TV at 8:52 PM. Sunday afternoon, someone in that household buys from your WooCommerce store. You send the conversion event to all four Conversions APIs. All four claim attribution.
Each platform’s report says it drove the sale. None of them are wrong by the rules they were configured with. None of them know about each other. If you sum the platform-reported attributed conversions, you exceed the actual order count, sometimes by a multiple. Connected TV annual ad spend exceeds $29.4 billion, and advanced cross-platform attribution reveals CTV drives 40-60% more value than last-click models indicate (ATTN Agency, 2026) — but you only see that uplift if you have the cross-platform view.
This is the deduplication problem, and it is exactly why a unified server-side pipeline matters more for CTV than it does for Meta or Google Ads. With Meta, the click ID disambiguates. With CTV, the click ID does not exist.
The Architectural Fix: Server-Side Fan-Out
The cleanest architecture is the same one Seresa already advocates for the rest of your tracking stack: capture the WooCommerce order once on your server, then fan out to every destination from a single source of truth. The fan-out replaces the per-platform plugin model with a per-destination formatter that runs server-side.
The flow looks like this. WooCommerce fires woocommerce_payment_complete on the order hook. Your server captures the customer email, phone, IP at order time, billing address, order value, currency, and timestamp. The server formats four different payloads — one for each CTV destination — using each platform’s required schema, and sends them in parallel. Identity signals (hashed email, IP) are stamped consistently across all four so downstream deduplication tools have something to work with.
The same server handles your Meta CAPI, Google Ads Enhanced Conversions, and GA4 Measurement Protocol payloads. CTV fan-out is not a separate system — it is four more destinations attached to the same outbound pipeline.
The question is not which CTV plugin to install. The question is whether your server already routes events to multiple destinations, and whether adding four more is configuration or rebuild.
Where Transmute Engine™ Fits
Transmute Engine is a first-party Node.js server that runs on your subdomain (e.g., data.yourstore.com). The inPIPE WordPress plugin captures WooCommerce events at the order hook layer and sends them via API to your Transmute Engine server, which formats and routes them simultaneously to as many destinations as you configure — Meta CAPI, GA4, Google Ads, BigQuery, Klaviyo, and any CTV Conversions API on the list above. Adding Netflix, Prime Video, Roku, or YouTube TV is configuration work on a server that already does the fan-out, not a separate plugin per platform.
Practical Diagnostic: Is Your CTV Attribution Real?
Three checks to run on your current setup before the next CTV campaign starts:
- Direct-traffic surge after a CTV launch: if your GA4 direct-traffic numbers spike during a CTV flight, your CTV attribution is happening — but it is happening inside the platforms, not in GA4. Pull the platform reports.
- Platform-reported conversions sum greater than order count: add up Netflix + Prime Video + Roku + YouTube TV attributed conversions. If the total is greater than your actual orders for the period, deduplication is the problem, not over-reporting.
- Conversions in Google Ads with no Search/Display source: if your Google Ads conversion volume is up but your Search and Display click volume is flat, YouTube TV is converting and you do not have a separate conversion action capturing it cleanly.
Key Takeaways
- Netflix is 9.2% of global CTV spend by 2027 (WARC). The remaining 90%+ is Prime Video, Roku, YouTube TV, and Hulu — each with its own CAPI surface.
- CTV attribution is IP-matched household attribution. No click, no cookie, no UTM. Every platform implements identity resolution differently.
- Four platforms, four schemas, four lookback windows. One WooCommerce order needs four formatted payloads to attribute correctly across all of them.
- Cross-platform deduplication is the silent failure mode. Each platform claims attribution independently; summed reports exceed actual order count.
- The architectural fix is server-side fan-out. Capture the order once, format per-destination, send in parallel — the same pattern that already routes Meta CAPI and GA4 events.
Frequently Asked Questions
Prime Video conversion data lives in the Amazon advertising stack — Amazon DSP for buying, Amazon Ads conversion events for measurement, and Amazon Marketing Cloud (AMC) for cross-signal joins. AMC entered open beta with Prime Video viewing data in late 2025, allowing advertisers to join content-level viewing to conversion data. There is no single ‘Prime Video Conversions API’ endpoint; the equivalent is Amazon Ads conversion API plus AMC. The practical result for WooCommerce: you send purchase events to Amazon Ads conversion API and rely on AMC for the Prime Video-specific attribution slice.
Roku OneView accepts server-to-server conversion uploads with IP and device-graph signals; it is not Shopify-locked. The challenge is that Roku’s identity resolution is most accurate when paired with first-party customer data from your store, which means a WooCommerce store needs to send hashed email plus IP plus order timestamp at minimum. Without those signals, OneView falls back to lower-confidence IP-only matching.
Yes, but only with explicit conversion-action setup. YouTube TV inventory is reported through Google Ads’ existing Enhanced Conversions and Offline Conversion Import surfaces, with CTV-specific reporting dimensions available in the Google Ads UI. To isolate YouTube TV conversions from regular Google Ads conversions, you create separate conversion actions and route YouTube TV-attributed orders to those actions specifically. Default setups will collapse YouTube TV into the same conversion bucket as Search and Display.
GA4 attributes traffic based on the referrer or UTM parameters present when the user arrives at your store. CTV ads do not produce a click and do not carry UTM parameters — the user sees the ad, then types your URL into a different device. GA4 records the visit as direct because, from the browser’s perspective, it is. The fix is sending CTV exposure data server-side to each platform’s Conversions API and reading attribution from the platform reports, not from GA4’s channel grouping.
Map your CTV destinations against your current event-capture pipeline before the next flight. See how Seresa fans out a single WooCommerce order to every destination.



