The one rule
Impression pixels fire client-side, from the user’s browser or app, as an image request. Never from your backend. Never via fetch. Impressions fired from server infrastructure are classified as general invalid traffic (GIVT) by verification vendors (IAS, DoubleVerify, MOAT) because they originate from datacenter IP space. GIVT impressions are discarded and unbilled. Impressions fired viafetch() fail silently on CORS in many contexts, so the event never arrives. The correct client-side implementation:
Event classes
Impression. Fired client-side when the ad enters the viewport. SDKs handle viewability timing automatically. This is the billable event for CPM demand. Billing notice (burl). A server-side notification fired on impression receipt. This is the only legitimate server-side event in the stack, and it is used on headless surfaces (AdsMCP) where no client render exists. A burl does not substitute for an impression pixel and does not qualify a surface for CPM demand. Engagement. Interaction events inside interactive formats: chip taps, free-text questions, interaction depth in a Spark unit. Fired client-side by the format runtime. Click. All clicks route through the Adgentek redirect layer, where click-quality filtering runs. This is what makes CPC demand safe on every surface, including headless ones. Never link directly to advertiser destinations; always use the click URL from the ad payload. Conversion. Measured advertiser-side via the Adgentek conversion pixel on the advertiser’s site. Conversions are what make CPA demand work on headless surfaces: the billable event is verified independently of the ad render.What this means per integration path
| Path | Impression | burl | Engagement | Click | Notes |
|---|---|---|---|---|---|
| SDKs and Widget | Automatic | Not needed | Automatic | Automatic | Nothing to implement |
| REST API | You fire it client-side | Optional | You report via SDK-lite events | Use the payload click URL | Certification unlocks CPM demand |
| AdsMCP | Not available | Fired on receipt | Not available | Use the payload click URL | CPA and filtered CPC only |

