Impressions & view-through
Server-to-server impression API, the 1×1 pixel for display / VAST / CTV, view-through windows and household matching.
Updated 2026-09-02
Pixel#
<img src="https://go.whichclick.is/i/2098765432?cr=banner-300x250&pl=homepage&p=dv360" width="1" height="1" alt="" /><Impression><![CDATA[https://go.whichclick.is/i/ctv-sep?app=<appId>&cr=spot30&p=roku]]></Impression>{campaign} is a WhichClick campaign id or the platform's external id. Query keys: app (app id), cr (creative), pl (placement), p (partner). The pixel returns a cached-busting 1×1 GIF with Cache-Control: no-store, sets no cookies and records the IP hash (per day) plus the household hash.
Server-to-server API#
curl -X POST https://app.whichclick.is/api/v1/impressions -H "Authorization: Bearer wc_live_…" -H "Content-Type: application/json" \
-d '{"impressions":[{"campaign_external_id":"2098765432","partner":"dv360","creative_id":"cr-1","ip":"203.0.113.7","os":"android","country":"TR","ts":"2026-09-02T09:15:00Z"}]}'
# {"accepted":1}Up to 5000 impressions per call; ip is required (hashed with the day server-side, never stored raw).
Attribution#
| Method | Match | Window (per app) |
|---|---|---|
VIEW_THROUGH | Same IP hash as the install, same day | viewLookbackHours (default 24) |
HOUSEHOLD | Same /24 (IPv4) or /48 (IPv6) household hash | householdWindowHours (default 72) |
Both sit below every click-based method in the waterfall so a click always wins over a view. View-through installs are reported separately and can be excluded from ROAS in the report filters.
Reporting#
Impressions add impressions, CTR (clicks / impressions when both exist for a campaign) and view-through installs to the overview and pivot reports; the p partner value is a dimension on the CTV dashboard.