Kevel event multipliers follow their documented numeric ranges.
Kevel accepts event multipliers from negative 100 million through negative one, or one through 100 million. Advice catches zero, fractions below one in magnitude and values beyond those bounds with exact decimal comparisons.
Negative and fractional multipliers inside either interval remain valid. Bare noredirect flags and revenue overrides retain their behavior. The separate conversion API, signature authenticity, event delivery and revenue calculations require further context.
What this pack matches
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.missingvendor.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.missingvendor.kevel.param.s.empty |
docs |
override |
optional | Kevel documents override as a monetary numeric event value. | vendor.kevel.param.override.emptyvendor.kevel.param.override.invalid |
docs |
additional |
optional | Kevel documents additional as a monetary numeric event value. | vendor.kevel.param.additional.emptyvendor.kevel.param.additional.invalid |
docs |
gmv |
optional | Kevel documents gmv as a monetary numeric event value. | vendor.kevel.param.gmv.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.kevel.param.position.invalid |
docs |
tracking_route |
optional | The concrete URL path distinguishes click redirects from impression and custom-event pixels. | docs | |
eventMultiplier |
optional | Kevel documents the inclusive ranges [-100000000, -1] and [1, 100000000]. Numeric comparisons preserve boundary precision. The source does not explicitly restrict URL multipliers to integers. New advice accepts JSON decimal and exponent spelling; receiver spelling is not certified. Placement override and revenue multiplication need external context. Presence diagnostic severity: warning. | vendor.kevel.param.eventMultiplier.emptyvendor.kevel.param.eventMultiplier.invalid |
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.missingvendor.kevel.http.method.emptyvendor.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. A Kevel impression with a zero event multiplier.
https://e-1234.adzerk.net/i.gif?e=synthetic&s=synthetic&eventMultiplier=0
cargo install pixellint
·
npm install pixellint