Nextdoor browser pixels identify their pixel and event.
Nextdoor browser events use flask.nextdoor.com/pixel or /pixel-test. This pack checks pixel identity, standardized event names, page URLs and matching data serialized inside cd.
The pinned SDK uses GET and POST form transport. Producer checks and legacy event migration remain advisory. Blank referrers and supported prehash variants remain accepted.
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 |
|---|---|---|---|---|
pid |
recommended | The SDK sends the configured pixel identity. Its identifier grammar is opaque. Presence diagnostic severity: warning. | vendor.nextdoor-pixel.param.pid.missingvendor.nextdoor-pixel.param.pid.empty |
docs |
ev |
recommended | Universal Pixel documentation lists these events. Unknown or legacy event names receive migration advice. Presence diagnostic severity: warning. | vendor.nextdoor-pixel.param.ev.missingvendor.nextdoor-pixel.param.ev.emptyvendor.nextdoor-pixel.param.ev.invalid |
docs |
pl |
recommended | The SDK sends the current absolute page URL. Presence diagnostic severity: warning. | vendor.nextdoor-pixel.param.pl.missingvendor.nextdoor-pixel.param.pl.emptyvendor.nextdoor-pixel.param.pl.invalid |
docs |
cd |
optional | The SDK serializes custom and matching data as a JSON object. | docs | |
rf |
optional | An empty referrer is normal. Presence diagnostic severity: warning. | vendor.nextdoor-pixel.param.rf.emptyvendor.nextdoor-pixel.param.rf.invalid |
docs |
ndclid_src |
optional | The SDK marks missing, URL-derived and cookie-derived click IDs with 0, 1 and 2. Presence diagnostic severity: warning. | vendor.nextdoor-pixel.param.ndclid_src.emptyvendor.nextdoor-pixel.param.ndclid_src.invalid |
docs |
v |
optional | Optional SDK bootstrap version. Presence diagnostic severity: warning. | vendor.nextdoor-pixel.param.v.emptyvendor.nextdoor-pixel.param.v.invalid |
docs |
sw |
optional | The SDK emits a nonnegative integer screen dimension, including zero. Presence diagnostic severity: warning. | vendor.nextdoor-pixel.param.sw.emptyvendor.nextdoor-pixel.param.sw.invalid |
docs |
sh |
optional | The SDK emits a nonnegative integer screen dimension, including zero. Presence diagnostic severity: warning. | vendor.nextdoor-pixel.param.sh.emptyvendor.nextdoor-pixel.param.sh.invalid |
docs |
root |
optional | The SDK emits an object; custom members remain open. Decoded body source: cd. Encoding: json. Decoding diagnostic severity: warning. Presence diagnostic severity: warning. Native JSON type: object. | vendor.nextdoor-pixel.body.root.invalid |
docs |
email |
optional | Manual matching accepts prehashed MD5, SHA-1, SHA-256 or SHA-512 hex in the pinned SDK. Digest correctness is external. Decoded body source: cd. Encoding: json. Decoding diagnostic severity: warning. Presence diagnostic severity: warning. Native JSON type: string. | vendor.nextdoor-pixel.body.email.emptyvendor.nextdoor-pixel.body.email.invalid |
docs |
phone_number |
optional | Manual matching accepts prehashed MD5, SHA-1, SHA-256 or SHA-512 hex in the pinned SDK. Digest correctness is external. Decoded body source: cd. Encoding: json. Decoding diagnostic severity: warning. Presence diagnostic severity: warning. Native JSON type: string. | vendor.nextdoor-pixel.body.phone_number.emptyvendor.nextdoor-pixel.body.phone_number.invalid |
docs |
first_name |
optional | Manual matching accepts prehashed MD5, SHA-1, SHA-256 or SHA-512 hex in the pinned SDK. Digest correctness is external. Decoded body source: cd. Encoding: json. Decoding diagnostic severity: warning. Presence diagnostic severity: warning. Native JSON type: string. | vendor.nextdoor-pixel.body.first_name.emptyvendor.nextdoor-pixel.body.first_name.invalid |
docs |
last_name |
optional | Manual matching accepts prehashed MD5, SHA-1, SHA-256 or SHA-512 hex in the pinned SDK. Digest correctness is external. Decoded body source: cd. Encoding: json. Decoding diagnostic severity: warning. Presence diagnostic severity: warning. Native JSON type: string. | vendor.nextdoor-pixel.body.last_name.emptyvendor.nextdoor-pixel.body.last_name.invalid |
docs |
gender |
optional | Manual matching accepts prehashed MD5, SHA-1, SHA-256 or SHA-512 hex in the pinned SDK. Digest correctness is external. Decoded body source: cd. Encoding: json. Decoding diagnostic severity: warning. Presence diagnostic severity: warning. Native JSON type: string. | vendor.nextdoor-pixel.body.gender.emptyvendor.nextdoor-pixel.body.gender.invalid |
docs |
street_address |
optional | Manual matching accepts prehashed MD5, SHA-1, SHA-256 or SHA-512 hex in the pinned SDK. Digest correctness is external. Decoded body source: cd. Encoding: json. Decoding diagnostic severity: warning. Presence diagnostic severity: warning. Native JSON type: string. | vendor.nextdoor-pixel.body.street_address.emptyvendor.nextdoor-pixel.body.street_address.invalid |
docs |
city |
optional | Manual matching accepts prehashed MD5, SHA-1, SHA-256 or SHA-512 hex in the pinned SDK. Digest correctness is external. Decoded body source: cd. Encoding: json. Decoding diagnostic severity: warning. Presence diagnostic severity: warning. Native JSON type: string. | vendor.nextdoor-pixel.body.city.emptyvendor.nextdoor-pixel.body.city.invalid |
docs |
state |
optional | Manual matching accepts prehashed MD5, SHA-1, SHA-256 or SHA-512 hex in the pinned SDK. Digest correctness is external. Decoded body source: cd. Encoding: json. Decoding diagnostic severity: warning. Presence diagnostic severity: warning. Native JSON type: string. | vendor.nextdoor-pixel.body.state.emptyvendor.nextdoor-pixel.body.state.invalid |
docs |
zip_code |
optional | Manual matching accepts prehashed MD5, SHA-1, SHA-256 or SHA-512 hex in the pinned SDK. Digest correctness is external. Decoded body source: cd. Encoding: json. Decoding diagnostic severity: warning. Presence diagnostic severity: warning. Native JSON type: string. | vendor.nextdoor-pixel.body.zip_code.emptyvendor.nextdoor-pixel.body.zip_code.invalid |
docs |
country |
optional | Manual matching accepts prehashed MD5, SHA-1, SHA-256 or SHA-512 hex in the pinned SDK. Digest correctness is external. Decoded body source: cd. Encoding: json. Decoding diagnostic severity: warning. Presence diagnostic severity: warning. Native JSON type: string. | vendor.nextdoor-pixel.body.country.emptyvendor.nextdoor-pixel.body.country.invalid |
docs |
method |
recommended | The documented transport uses these methods. Complete HTTP capture contract. Presence diagnostic severity: warning. | vendor.nextdoor-pixel.http.method.missingvendor.nextdoor-pixel.http.method.emptyvendor.nextdoor-pixel.http.method.invalid |
docs |
method |
optional | Scope guard. Complete HTTP capture contract. Applies when {"kind":"value_in","param":"method","values":["POST"]}. | docs | |
content_type |
recommended | The GET producer uses a form body when it switches to POST. Complete HTTP capture contract. Applies when {"kind":"value_in","param":"method","values":["POST"]}. Presence diagnostic severity: warning. | vendor.nextdoor-pixel.http.content_type.missingvendor.nextdoor-pixel.http.content_type.emptyvendor.nextdoor-pixel.http.content_type.invalid |
docs |
Validate a payload
pixellint validate url "$ARTIFACT" --rulepack vendor/nextdoor-pixel
Try this failing payload in the playground. A Nextdoor browser event missing pixel identity.
https://flask.nextdoor.com/pixel?ev=purchase&pl=https%3A%2F%2Fexample.test%2F
cargo install pixellint
·
npm install pixellint