pixellint

Blog · Floodlight and Google Ads

Floodlight vs Google Ads conversion tracking is a Campaign Manager activity, not an AW- send_to.

Floodlight vs Google Ads conversion tracking is two hits that both end up in a Google UI and do not share an identifier. A Floodlight activity tag is an image GET on doubleclick.net. Parameters ride on the path as semicolon pairs: /ddm/activity/src=123;type=conv;cat=purch;ord=987. src is the numeric Floodlight configuration id. type is the activity group. cat is the activity tag. The wrong cat is a silent wrong conversion, not a 404.

A Google Ads conversion is gtag event conversion with send_to set to AW-123456789/label, plus value, currency, and transaction_id when it is a sale. The image fallback is googleadservices.com /pagead/conversion/{conversion_id} with label on the query. View-through uses /pagead/viewthroughconversion/. Without label the hit lands on the account rather than a conversion action. An AW- id is not a Floodlight src. A cat is not a label.

Floodlight is not a conversion API. There is no event_time digit count and no SHA-256 email on the standard activity tag. Do not hash the path. Do not invent an event_id query because a CAPI playbook said so. Cache-busting is ord, and unique counting also wants num beside ord. Dedup is the activity counting method in Campaign Manager, not a shared UUID with the Google Ads tag.

ord=1 is an undercount, and a leftover macro never fired

src, type, cat, and ord are required on the activity. Unique counting needs num alongside ord. num without ord does not count uniquely. A live tag that still says ord=1 makes every impression the same GET, and the first cache hop wins. A timestamp plus a random, or a cache-buster expanded at serve time, is enough. Do not put an email in ord. Floodlight will not match a hash stuffed into the cache buster. Sales tags that want one ord per transaction are a different job from busting an impression cache, even though the parameter name is the same.

A fired URL that still contains [CACHEBUSTER] or an unexpanded GDPR macro never expanded. That is a template captured from trafficking, not a hit. GTM preview can show the macro as filled while the published container sends the bracket text. Confirm Network on doubleclick.net after publish. A filter on the word pixel misses this host.

Google Ads uses transaction_id to dedupe repeat fires of the same sale. Persist it. Do not reuse Floodlight ord as that id unless you meant them to be the same opaque token. The conversion tag should fire once, on the thank-you event, not on a URL pattern that also matches checkout. Purchase does not belong on the landing page.

Two URLs, two products

Illustrative. src, type, and cat come from Campaign Manager. send_to comes from the Google Ads conversion action.

Floodlight: https://ad.doubleclick.net/ddm/activity/src=123;type=sales;cat=purch;ord=1759010400123;num=1
Google Ads: gtag('event','conversion',{send_to:'AW-123/label',transaction_id:'order-1842'})

Server-to-server Floodlight, if you use that Campaign Manager feature, still has to name src, type, and cat. It does not become a Google Ads upload because both are Google. The upload is a different API, a different id, and a different clock. Staging must use a staging Floodlight cat so QA purchases do not land on the production activity, and a staging conversion action so they do not land in the live Google Ads account.

Pixellint is not affiliated with Google. Validate the Floodlight URL with the Floodlight pack and the conversion URL with the Google Ads pack. One pass does not cover the other host. A 200 GIF is the start. The path still has to contain src, type, cat, and a real ord, or the query still has to contain label.

The loader is not either hit

googletagmanager.com/gtm.js or gtag/js loading a container is not a conversion. After it loads, Network still has to show the Floodlight activity on doubleclick.net or the Google Ads hit on googleadservices.com. A container that contains both tags will fire both if both triggers match. That is two products recording one thank-you, which is what you want only when Campaign Manager and Google Ads are both supposed to count it. It is double intent when someone copied the Floodlight tag into the conversion trigger by mistake.

Quantity and cost on a Floodlight sales tag, when you send them, are Floodlight fields. They do not fill Google Ads value and currency. value on the gtag conversion is the Google Ads number. Send each if each system is supposed to optimize. Do not assume Campaign Manager cost lands in the AW- action.

Image pixels are GETs. A fetch POST to those hosts is the wrong transport. Floodlight and the Google Ads image fallback stay images. The gtag conversion call is the tag, and it still results in a hit you can copy from Network. Paste that URL. Status 200 with a GIF is the start of the story.

Staging cats and staging actions

A production Floodlight cat on a QA site writes QA purchases into the live activity. Counting method then dedupes or accumulates them beside real orders. A production AW- label does the same in Google Ads. Use a staging cat and a staging conversion action. GTM environments exist to swap those ids. Do not reuse production secrets, and do not reuse production activity tags.

Enhanced conversions and Floodlight consent can both be wrong on the same page without either tag looking broken. Consent Mode denied means the linker may not store gclid. The Floodlight tag can still fire with gdpr_consent=1, which is not a TC string, and Campaign Manager records a non-consent. Fix the macro and the consent update separately. One green tag is not the other signal.

Validate each URL with its pack. The Floodlight pack checks src, type, cat, and ord. The Google Ads pack checks the conversion id in the path and label on the query. Core privacy rules read the Floodlight path for gdpr_consent. Run both. A single playground paste of the wrong host answers the wrong contract.

What does not transfer

Sources

Contract pages

The dated argument is above. These pages are the field lists.

Read Floodlight Docs