pixellint

Time · marketers · PMs · engineers

The window is a report setting, not a pixel

A conversion pixel that looks broken is often a window that closed: the hit landed, the click was nine days ago, and the report is set to seven. Engineering cannot fix that in GTM.

Click-through vs view-through

Click-through credits a click inside the window. View-through credits an impression with no click. Meta and Google Ads expose both as settings on the conversion or on the report. They are not two pixels you forgot to traffic. Last-click vs data-driven is a different setting on top of the same hits.

A view-through conversion in the UI with no gclid and no fbclid on your thank-you page is often working as designed. Confirm the window and the view-through toggle before you rebuild the tag. Empty fbc is an identity problem. It is not a view-through setting you can flip in GTM.

Defaults are not a law

Meta's common click-through default is 7 days, view-through 1 day, and you can pick other combinations in Ads Manager. Google Ads conversion actions have their own click-through and view-through windows, often 30 days and 1 day unless someone changed them. Compare accounts before you compare ROAS. Two brands with the same pixel quality and different windows will not agree on CPA.

Changing the window restates past conversions in the platform UI. It does not backfill your warehouse. Finance that reads BigQuery and marketing that reads Ads Manager will disagree on the day you flip it. Write down the window in the brief so a later audit does not treat a UI restatement as a tag regression.

Windows are not max upload age

The attribution window decides which prior click or impression may receive credit. The vendor's maximum event age decides whether the conversion is ingested at all. Meta CAPI event_time can be at most about 7 days old when sent. LinkedIn conversionHappenedAt rejects events older than 90 days. An event can be young enough to ingest and still fall outside the click window, or old enough that the API drops it before reporting starts.

Offline CRM closed-won at day 12 will miss Meta CAPI's age cap even if the Ads Manager click window is 28 days. The window never sees an event the API refused. That is a late-events problem, not a window you can widen in the UI to resurrect a dropped POST.

What the payload can still break

event_time in the wrong unit puts the conversion outside the window even when the real purchase was today. A 13-digit Meta event_time is in the future, which is also outside. A 10-digit LinkedIn conversionHappenedAt is 1970, which is outside the 90-day cap. Late offline uploads past the vendor's maximum age never enter the window at all.

The pixel does not carry the window. Do not add a custom parameter named window and expect bidding to read it. Set the window where the platform documents it, then send honest event times. Pixellint checks digit counts and ISO shape. It does not know your Ads Manager window. Pixellint is not affiliated with Meta or Google.

How to debug a conversion that looks missing

First: did the hit leave the device (HAR, pixellint validate json / url)? Second: is event_time the right unit and the real instant? Third: is the click id present? Fourth: is the click older than the window in the UI you are looking at? Fifth: is view-through off while you expected impression credit?

Engineering owns one through three. Marketing owns four and five. Mixing those five into one 'the pixel is broken' ticket is how a 7-day window spends a sprint in GTM.

// The window is not a field you send
// WRONG: hoping CAPI reads this
custom_data: { window: '28d' }

// RIGHT: honest time; window lives in Ads Manager
event_time: Math.floor(order.purchasedAtMs / 1000)

Check the artifact

Paste the pixel URL or JSON body into the playground. Same engine as pixellint validate. Nothing leaves the tab.