pixellint

vendor/nextdoor-conversions-api · vendor documented

Nextdoor CAPI events need event_name, seconds, and a match key

event_name is a documented lowercase event. action_source is the channel. event_time_epoch is Unix seconds, a 10-digit value. customer needs hashed email, hashed phone_number, or click_id. website events need action_source_url. purchase needs custom.order_value.

What this pack matches

Hosts
ads.nextdoor.com
Paths
/v2/api/conversions/track
Vendor docs
developer.nextdoor.com/reference/conversions-track

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
event_name required It is the conversion event name. Nextdoor documents a fixed lowercase set. Fix: Set `event_name` to a documented value such as `purchase` or `page_view`. vendor.nextdoor-conversions-api.body.event_name.missing
vendor.nextdoor-conversions-api.body.event_name.empty
vendor.nextdoor-conversions-api.body.event_name.invalid
docs
action_source required It names the channel the conversion happened on. Fix: Set `action_source` to a documented channel such as `website`. vendor.nextdoor-conversions-api.body.action_source.missing
vendor.nextdoor-conversions-api.body.action_source.empty
vendor.nextdoor-conversions-api.body.action_source.invalid
docs
event_id required It identifies the event so Pixel and CAPI can deduplicate. Fix: Set `event_id` to the same deterministic id the Pixel sent. vendor.nextdoor-conversions-api.body.event_id.missing
vendor.nextdoor-conversions-api.body.event_id.empty
docs
event_time_epoch required It is Unix time in seconds. Nextdoor documents no milliseconds. `event_time` is deprecated. Fix: Send `event_time_epoch` as a 10-digit Unix timestamp in seconds. vendor.nextdoor-conversions-api.body.event_time_epoch.missing
vendor.nextdoor-conversions-api.body.event_time_epoch.empty
vendor.nextdoor-conversions-api.body.event_time_epoch.invalid
docs
data_source_id required It is the Pixel ID. Nextdoor documents `data_source_id` and deprecated `pixel_id`. Fix: Set `data_source_id` to the Pixel ID from Nextdoor Ads. vendor.nextdoor-conversions-api.body.data_source_id.missing
vendor.nextdoor-conversions-api.body.data_source_id.empty
docs
customer required It holds matching identifiers. Nextdoor documents it as required. Fix: Send a `customer` object with at least one of hashed `email`, hashed `phone_number`, or `click_id`. vendor.nextdoor-conversions-api.body.customer.missing docs
action_source_url optional It is the page URL. Nextdoor documents it as required for website events. Fix: Set `action_source_url` to the absolute page URL. vendor.nextdoor-conversions-api.body.action_source_url.empty
vendor.nextdoor-conversions-api.body.action_source_url.invalid
docs
customer.email optional It is the SHA-256 digest of the email after trim and lowercase. Fix: Trim, lowercase, SHA-256, and send 64 lowercase hex characters. vendor.nextdoor-conversions-api.body.customer.email.empty
vendor.nextdoor-conversions-api.body.customer.email.invalid
docs
customer.phone_number optional It is the SHA-256 digest of the phone number. Fix: Hash the ten-digit phone and send 64 lowercase hex characters. vendor.nextdoor-conversions-api.body.customer.phone_number.empty
vendor.nextdoor-conversions-api.body.customer.phone_number.invalid
docs
customer.click_id optional It is the `ndclid` from the Nextdoor click URL. vendor.nextdoor-conversions-api.body.customer.click_id.empty docs
customer.client_user_agent optional It is the raw browser user agent. Nextdoor documents it as required for website events, and not hashed. vendor.nextdoor-conversions-api.body.customer.client_user_agent.empty docs
custom.order_value optional It is ISO 4217 currency then the amount, such as `USD49.99`. Nextdoor documents it as required on purchase. Fix: Set `custom.order_value` to a currency code followed by the amount, such as `USD49.99`. vendor.nextdoor-conversions-api.body.custom.order_value.empty docs
body.user_needs_an_identifier required `customer` carries none of the match keys Nextdoor requires. Send hashed `email`, hashed `phone_number`, or `click_id`. Fix: Add at least one of hashed email, hashed phone, or `ndclid`. vendor.nextdoor-conversions-api.body.user_needs_an_identifier docs
body.website_requires_url required The event is `action_source: website` but carries no `action_source_url`. Nextdoor documents the page URL as required for website events. Fix: Set `action_source_url` to the absolute page URL. vendor.nextdoor-conversions-api.body.website_requires_url docs
body.purchase_requires_order_value required The event is `purchase` but carries no `custom.order_value`. Nextdoor documents order value as required on purchase. Fix: Set `custom.order_value` to a currency code followed by the amount, such as `USD49.99`. vendor.nextdoor-conversions-api.body.purchase_requires_order_value docs
body.unhashed_email required `customer.email` carries what looks like a raw email address. Nextdoor documents SHA-256 after trim and lowercase. Fix: Trim, lowercase, hash with SHA-256, and send the 64-character hex digest. vendor.nextdoor-conversions-api.body.unhashed_email docs

Validate a payload

pixellint validate json @payload.json --rulepack vendor/nextdoor-conversions-api

Try this failing payload in the playground. Nextdoor CAPI missing event_name.

{"event_id":"order-123","event_time_epoch":1710438591,"action_source":"physical_store","data_source_id":"5b0b9e9a-156a-11ee-be56-0242ac120002","customer":{"click_id":"92dea472-8b8b-456f-8b5b-b2a55147c3cc"}}

cargo install pixellint · npm install pixellint