pixellint

Kevel pixels need the shim and the signature

Kevel documents e as the base64 event shim and s as the signature. Copy both from the Decision API impressionUrl or events[].url. Click redirects on /r are not this pack.

e is the encoded shim from the Decision API

An /i.gif call with no e cannot record the impression Kevel counted.

Rule: vendor.kevel.param.e.missing

What this pack matches

Hosts
adzerk.net
Paths
/i.gif, /e.gif, /r
Vendor docs
dev.kevel.com/ad/docs/proxying-impressions-through-your-own-server

Rules

Codes are stable. A finding in CI, MCP, or the playground lands on the same id.

Field Required What it checks Rule ids Source
e required It is the base64 encoded event shim. Kevel documents e as unique to the event. Fix: Send e from the Decision API impressionUrl or events[].url. Do not invent it. vendor.kevel.param.e.missing
vendor.kevel.param.e.empty
docs
s required It is the signature that verifies the shim. Kevel documents s on every tracking pixel. Fix: Send s from the same Decision API URL as e. vendor.kevel.param.s.missing
vendor.kevel.param.s.empty
docs
override optional Kevel documents override as a monetary numeric event value. vendor.kevel.param.override.empty
vendor.kevel.param.override.invalid
docs
additional optional Kevel documents additional as a monetary numeric event value. vendor.kevel.param.additional.empty
vendor.kevel.param.additional.invalid
docs
gmv optional Kevel documents gmv as a monetary numeric event value. vendor.kevel.param.gmv.empty
vendor.kevel.param.gmv.invalid
docs
productId optional Kevel allows one to ten comma-separated productId strings on impression and custom-event URLs. vendor.kevel.param.productId.empty
vendor.kevel.param.productId.invalid
docs
component optional Kevel allows one to ten comma-separated component strings on impression and custom-event URLs. vendor.kevel.param.component.empty
vendor.kevel.param.component.invalid
docs
position optional Kevel allows one to ten comma-separated position strings on impression and custom-event URLs. vendor.kevel.param.position.empty
vendor.kevel.param.position.invalid
docs
tracking_route optional The concrete URL path distinguishes click redirects from impression and custom-event pixels. docs
query_too_long required Kevel limits the complete event URL query string to 1024 characters. vendor.kevel.query_too_long docs
click.productId.single required Kevel click URLs accept only one productId value. vendor.kevel.click.productId.single docs
click.component.single required Kevel click URLs accept only one component value. vendor.kevel.click.component.single docs
click.position.single required Kevel click URLs accept only one position value. vendor.kevel.click.position.single docs
path optional The published /i.gif impression and /r click endpoints support GET or POST. Complete HTTP capture contract. docs
method required Kevel documents GET or POST for impression and click tracking URLs. Complete HTTP capture contract. Applies when {"kind":"value_in","param":"path","values":["/i.gif","/r"]}. vendor.kevel.http.method.missing
vendor.kevel.http.method.empty
vendor.kevel.http.method.invalid
docs
headers.user-agent optional For server-to-server event forwarding, Kevel instructs publishers to send the end-user User-Agent for bot filtering. Browser/server integration context is not inferred from method alone. Complete HTTP capture contract. vendor.kevel.http.headers.user-agent.empty docs

Validate a payload

pixellint validate url "$ARTIFACT" --rulepack vendor/kevel

Try this failing payload in the playground. Kevel impression pixel missing the shim.

https://e-1234.adzerk.net/i.gif?s=ujZhktar1g1emAP

cargo install pixellint · npm install pixellint