Nextdoor CAPI
What Is Nextdoor CAPI?
Nextdoor ads are targeted advertisements on the Nextdoor platform, a social networking service for neighborhoods. These ads are designed to reach local audiences, leveraging user data to provide relevant content based on geographical location and community interests. Businesses can use Nextdoor ads to connect with nearby potential customers, promoting services, events, and offers in a trusted, community-centric environment.
Nextdoor CAPI (Conversions API) allows businesses to track and measure the effectiveness of their Nextdoor ads by directly sending conversion data from their server to Nextdoor. This integration helps improve ad targeting and performance tracking by providing more accurate and comprehensive data on user actions, such as purchases or sign-ups, ensuring that businesses can optimize their advertising strategies effectively.
Product Type: Advertising
Integration Type: Starter Kit & ID Sync
Event Source Type: Web and/or Mobile Browser
Event Scope: Full Funnel
Capabilities
- CAPI Endpoint: Integrates with the Nextdoor CAPI endpoint to send detailed event data.
- Client and Partner Identification: Enriches events with static identifiers for the partner (metarouter) and client, ensuring each event is properly attributed.
- Event Identification and Timing: Maps event-specific data, including unique event IDs and timestamps, ensuring accurate tracking of events.
- Source Information: Captures and maps the source of events, including the URL where the event occurred and the type of source (e.g., app or website).
- Comprehensive Customer Data Mapping: Utilizes complex transformations to hash and map customer data, including email, phone number, and address details, ensuring customer privacy and data integrity.
- Event-Specific Data Enrichment: Provides tailored enrichment for specific events, such as marking an order_completedevent with a staticpurchaseidentifier.
Considerations
- Token Expiration: Your Nextdoor access token will expire in a year after it’s been generated. Please mark your calendar to update the token in the MetaRouter integration a year from when the token was generated.
Limitations
- Batching: This integration does not support batching multiple conversions in a single request.
Nextdoor Ads vs Nextdoor CAPI
- Endpoint: https://ads.nextdoor.com/graphql/api/v1
- Filters: Reject events if the ndclid (Nextdoor Click ID) is missing.
- Event-Specific Configurations: Static string enrichments for eventNamefor events likecart_viewed,order_completed, andsigned_up
Nextdoor CAPI:
- Endpoint: https://ads.nextdoor.com/v2/api/conversions/track
- Filters: Allow events based on their names without extra conditions.
- This means that any event with a specified name is accepted and processed.
- No additional conditions or criteria are required for these events to be allowed.
- The filter list is set to accept events simply if their names match the allowed list.
 
- Mappings: Use Lua scripts to hash customer information (email, phone number, address) for increased user matching
- Event-Specific Configurations
- For order_completedevents:- Map order_id,product_context, andorder_valuewith complex transformations
- Calculate the total order value by summing product prices and adding the currency code
 
- Map 
 
- For 
Identity Sync
- Sync Available: Yes
- Required for Starter Kit: Yes
- Prerequisites: Requires ndclid(Nextdoor Click ID) from the Nextdoor sync
- Documentation: See Additional Nextdoor CAPI Documentation
Sync Details
- Captures the Nextdoor Click ID used for conversion attribution.
- Required to link server-side conversions to ad click interactions.
- Without this sync, conversion events may not appear in Nextdoor Ads Manager.
Starter Kit Setup Guide
1. Deploy the Nextdoor Sync
- To collect the Nextdoor Click ID (ndclid), you must implement a Nextdoor ID Sync.
- Refer to the Nextdoor – ID Sync Guide to complete the setup.
- This sync enables conversion attribution between Nextdoor ad clicks and server-side events.
2. Gather Credentials
- Apply for API access: Please follow the instructions here to apply for API access. Once granted, you will be given a Client ID that you will need to use for this integration.
- Access Token: Please follow the instructions here to obtain your Access Token.
- Important Note: Your Nextdoor access token will expire one year after it’s generated. Please mark your calendar to update the token in the MetaRouter integration before expiration.
3. Add a Nextdoor – CAPI Integration
- From the integration library, add a Nextdoor – CAPI integration.
- Then, fill out the following Connection Parameters:
| Connection Parameter | Description | 
|---|---|
| ACCESS_TOKEN | Access token generated after API access approval. Expires annually. | 
| DATA_SOURCE_ID | The Nextdoor data source ID used to attribute conversions. | 
4. Configure Event Mapping
- MetaRouter provides all of the event mappings that Nextdoor – CAPI integrations typically require.
- You may add custom events, parameters, or mappings in accordance with Nextdoor’s API documentation.
5. Deploy to Pipeline
- In the Pipelines tab, add your Nextdoor – CAPI integration.
- Select the correct integration revision.
- Click Add Integration to finalize deployment.
Event Mappings
Global
Global mappings will be applied to all events. If your parameter names do not match the Expected Inputs provided, you will need to overwrite the Inputs provided with your own.
| Output Key | Description | Expected Input | 
|---|---|---|
| partner_id | String: A unique identifier for the MetaRouter partner. | Enrichment – metarouter | 
| data_source_idRequired | String: The Nextdoor data source ID assigned to the advertiser. | $$DATA_SOURCE_ID$$ | 
| event_idRequired | String: Unique identifier for the event. | messageId | 
| event_time_epochRequired | Integer: Timestamp of the event in Unix epoch seconds. | Expression – converts from input.timestamp | 
| action_sourceRequired | String: The source of the action (e.g., app, website). | Expression – detects from app or device context | 
| action_source_urlRequired | String: The URL where the action occurred. | context.page.url | 
| customer.click_idRequired* | String: The click ID from Nextdoor used for attribution. | context.providers.nextdoor.ndclid | 
| customer.emailRequired* | String: The hashed email address of the customer. | Expression – hashes traits.email(SHA256) | 
| customer.phone_numberRequired* | String: The hashed phone number of the customer. | Expression – hashes traits.phone(SHA256) | 
| customer.first_name | String: The hashed first name of the customer. | Expression – hashes traits.firstName | 
| customer.last_name | String: The hashed last name of the customer. | Expression – hashes traits.lastName | 
| customer.date_of_birth | String: The hashed date of birth (YYYYMMDD). | Expression – hashes traits.birthday | 
| customer.street_address | String: The hashed street address. | Expression – hashes traits.address.street | 
| customer.city | String: The hashed city (lowercase, no spaces). | Expression – hashes traits.address.city | 
| customer.state | String: The hashed state (two-letter code). | Expression – hashes traits.address.state | 
| customer.zip_code | String: The hashed zip/postal code. | Expression – hashes traits.address.postalCode | 
| customer.country | String: The hashed country (ISO-2 code). | Expression – hashes traits.address.country | 
| customer.client_user_agent | String: User agent string captured from the browser or app. | context.userAgent | 
| customer.client_ip_address | String: The client IP address (IPv4 or IPv6). | context.ip | 
| customer.external_id | String: An external identifier for cross-system matching. | anonymousId | 
*Note: The integration requires at least one or a combination of the following parameters: hashed_email , hashed_phone and / or click_id .
Event Specific
Checkout Started
| Output Key | Description | Expected Input | 
|---|---|---|
| event_nameRequired | String: Identifies the event type as checkout initiation. | Enrichment – initiate_checkout | 
| custom.order_id | String: The order ID for the checkout session. | properties.order_id | 
| custom.product_context | Array: List of products included in the checkout. | Expression – maps from properties.products | 
Product Added
| Output Key | Description | Expected Input | 
|---|---|---|
| event_nameRequired | String: Identifies the event type as add to cart. | Enrichment – add_to_cart | 
| custom.product_context.id | String: Product identifier added to cart. | properties.product_id | 
| custom.product_context.quantity | Integer: Quantity of the product added. | properties.quantity | 
| custom.product_context.item_price | Float: Price of the product. | properties.price | 
Product Viewed
| Output Key | Description | Expected Input | 
|---|---|---|
| event_nameRequired | String: Identifies the event type as content view. | Enrichment – view_content | 
| custom.product_context.id | String: Product identifier viewed. | properties.product_id | 
| custom.product_context.quantity | Integer: Quantity of the viewed product. | properties.quantity | 
| custom.product_context.item_price | Float: Price of the viewed product. | properties.price | 
Product Added To Wishlist
| Output Key | Description | Expected Input | 
|---|---|---|
| event_nameRequired | String: Identifies the event type as add to wishlist. | Enrichment – add_to_wishlist | 
| custom.product_context.id | String: Product identifier added to wishlist. | properties.product_id | 
| custom.product_context.quantity | Integer: Quantity of the wishlist item. | properties.quantity | 
| custom.product_context.item_price | Float: Price of the wishlist item. | properties.price | 
Products Searched
| Output Key | Description | Expected Input | 
|---|---|---|
| event_nameRequired | String: Identifies the event type as search. | Enrichment – search | 
Page
| Output Key | Description | Expected Input | 
|---|---|---|
| event_nameRequired | String: Identifies the event type as a page view. | Enrichment – page_view | 
Order Completed
| Output Key | Description | Expected Input | 
|---|---|---|
| 
 | String: The name of the event (e.g., purchase). | Enrichment -  | 
| 
 | String: The order ID of the purchase. | 
 | 
| 
 | Array: The context of the products in the order. | N/A - Expression | 
| 
 | String: The value of the order. | N/A - Expression | 
Required & Recommended Identifiers
These identifiers must be mapped to Nextdoor CAPI in order for successful user matching to occur. Without the minimum required IDs, any events sent to Nextdoor may not be accurately reflected in reporting.
| Attribute | Example | Sync Injector Required? | 
|---|---|---|
| click_idRequired | 123abc456def789ghi | Yes | 
| emailRequired | SHA256 Hash (Lowercase): c624921e8d93d491b8b47cb1129d8d9d90b9b9a6e10a8db526b22a709cc0e280 | No | 
| phone_numberRequired | SHA256 Hash: 836c1b0b1f3ef6c1c41b67c5c0a05640d5d5e1bcd0339e919c2f1b8a3e54e8f2 | No | 
| first_nameRecommended | SHA256 Hash (Lowercase): d53c6d34a40e51011d558ba0cfb46c01ba354baab6587b1b8e7dbaaa5351edc3 | No | 
| last_nameRecommended | SHA256 Hash (Lowercase): d0b56f57fa2a8f02bcb573ad81b786cd3f1b21f004f121ac350b2ecf0d7c63b3 | No | 
| date_of_birthRecommended | SHA256 Hash (YYYYMMDD Format): f3b5a5e2c17ad4970cc8d7fc3e4c0f937a8f2a5789ad56b3a7803e48756c20d1 | No | 
| street_addressRecommended | SHA256 Hash: 8f8fe511c7a6d5730f6fabb20253f4d2f481b604f9b39d6fc71acb46f8b5f44c | No | 
| cityRecommended | SHA256 Hash (Lowercase, no spaces): 5e498e48f1dc30ad9f5e07ec3f0a20d21b4e8bcd7073dd0a8ec17d4b8baba17b | No | 
| stateRecommended | SHA256 Hash (Lowercase two-letter ANSI abbreviation): a58f8e32e677139663be8d3b92fc6c9ff1a098f4d3d3768dc542e6e846a237f0 | No | 
| zip_codeRecommended | SHA256 Hash (First 5 digits for U.S. zip codes): 5e884898da28047151d0e56f8dc6292773603b3c2d5dc6e40b4cc5d1dcb9f33e | No | 
| countryRecommended | SHA256 Hash (Lowercase 2-letter ISO 3166-1 alpha-2 code): b5d4045c7de9afba8c32d0b0b44cd3ba174bff6f0062d6c1e4f7ab27c43d817d | No | 
The integration requires at least one or a combination of the following parameters: customer.email, customer.phone_number, and/or customer.click_id.
Nextdoor recommends prioritizing the hashed email (customer.email) when available for highest match accuracy.
Integration Validation
To verify your Nextdoor – CAPI integration:
- Check your Nextdoor Ads Manager reporting dashboard for new conversion data.
- Conversions are tied to your campaigns and populated from events sent through the Conversions API.
- Allow sufficient time for processing before reviewing results.
- If you do not see conversions or need detailed validation guidance, please contact your Nextdoor account representative for assistance confirming event delivery and reporting setup.
Additional Nextdoor CAPI Documentation
Updated 2 days ago