Connecting Concrete CMS to Nextdoor Ads
Concrete CMS is a self-hosted PHP CMS used by small organisations and agencies, typically with commerce added through an add-on rather than built in. Nextdoor is hyperlocal by construction, which makes it unusually good for home services and unusually easy to misread at low volume. The join between them succeeds or fails on one thing: whether the ndclid click identifier reaches the Concrete CMS order before the conversion happens, because Nextdoor can only match a conversion it can tie back to a click it recognizes.
Free30 minutesNo obligation
Specific to this pair
Nextdoor leads from Concrete CMS forms, with ndclid kept
For local businesses on Concrete CMS, the Express form entry is Nextdoor's conversion. Store ndclid in a first-party cookie, then send a lead event to Nextdoor's Conversions API from a new-entry listener with hashed email and phone. Generate the event ID server-side and hand it to the browser pixel, since cached thank-you pages can't print one.
Local service businesses on Concrete CMS, such as contractors, clinics and property managers, collect leads through the built-in form block, and that Express entry is the conversion Nextdoor should receive. The click identifier arrives on the landing URL while the form usually sits on another page. Read ndclid into a first-party cookie on landing and, in a listener on the new entry, attach it and send a lead event to Nextdoor's Conversions API with hashed email and phone. Verify the current endpoint and field names in Nextdoor's documentation.
The Nextdoor pixel goes in Concrete's Tracking Codes setting and fires a matching lead event in the browser after submission. Concrete's form block either shows an inline thank-you message or redirects to a page, and a cached thank-you page cannot print a per-submission value. Generate the event ID server-side when the entry is saved, hand it to the browser in a cookie or query parameter, and send the same value from the listener.
Nextdoor volumes are small, and Concrete keeps the full list of entries, so use it: compare entries carrying ndclid with Nextdoor's reported leads monthly, not weekly. If the business sells jobs rather than products, a later booked-job event from your scheduling tool is worth more than the form fill, provided ndclid travels with the lead record.
Concrete CMS → Nextdoor · what breaks
Why this join usually fails — Concrete CMS → Nextdoor
- 01
The ndclid click identifier never reaches Concrete CMS
Full page caching and the add-on ecosystem both interfere. Because commerce is an add-on rather than core, where the order is created differs by which add-on is installed.
- 02
Commerce as an add-on, not a core feature
Which add-on is installed determines the entire integration surface, so nothing transfers between two Concrete sites without checking first.
- 03
Small numbers read as trends
Hyperlocal audiences produce low weekly volumes. Three conversions instead of six looks like a fifty percent collapse and is usually noise, so judge Nextdoor over longer windows than you would use elsewhere.
- 04
Nothing reconciles afterwards
Nextdoor Ads Manager reports received and matched conversions. Reconcile against your own records over a month rather than a week — at these volumes shorter windows are noise.
Concrete CMS → Nextdoor · the fix
What working looks like — Concrete CMS → Nextdoor
The ndclid click identifier on every order
Conversions arriving in Nextdoor
Conversions appear in Nextdoor Ads Manager against the campaign and neighbourhood targeting, with the value you sent.
Reconciled against the source
Concrete CMS → Nextdoor · architecture
How Concrete CMS and Nextdoor actually connect
- 1
Concrete CMS holds the truth
Self-hosted means you own and can query the data directly, which makes reconciliation straightforward once the identifier is present.
- 2
Nextdoor Ads needs a click to match
Nextdoor matches server events on the click identifier and hashed customer information. Verify the current Conversions API endpoint and field names against Nextdoor's own documentation — this is a younger API than Meta's.
- 3
The identifier is the bridge
The ndclid click identifier, captured at the visit and carried into the Concrete CMS order.
- 4
The event source decides reliability
Fire server-side. Page caching means the confirmation template may not execute.
- 5
Deduplication at the destination
Nextdoor deduplicates on an event identifier shared between the pixel and the Conversions API. At Nextdoor's typical volumes a doubling is easy to miss because the absolute numbers stay small, so this needs testing rather than assuming.
Concrete CMS → Nextdoor · normal or broken
Working vs. broken, side by side — Concrete CMS → Nextdoor
Normal, not a fault
The ndclid click identifier present on the order
Sent from the order-completed event from your commerce add-on
Deduplicated correctly
Nextdoor deduplicates on an event identifier shared between the pixel and the Conversions API. At Nextdoor's typical volumes a doubling is easy to miss because the absolute numbers stay small, so this needs testing rather than assuming.
Reconciles with the source
Actually broken
The ndclid click identifier missing on most records
Full page caching and the add-on ecosystem both interfere. Because commerce is an add-on rather than core, where the order is created differs by which add-on is installed.
Sent from the browser
Which add-on is installed determines the entire integration surface, so nothing transfers between two Concrete sites without checking first.
Counted twice, or not at all
Hyperlocal audiences produce low weekly volumes. Three conversions instead of six looks like a fifty percent collapse and is usually noise, so judge Nextdoor over longer windows than you would use elsewhere.
Nobody has reconciled it
Concrete CMS → Nextdoor · diagnose
Diagnostic order — Concrete CMS → Nextdoor
- 01
Count orders carrying the ndclid click identifier
- 02
Follow one real conversion end to end
- 03
Identify which commerce add-on is in use
That decides where the order is created and what events exist to hook.
- 04
Check the volume before reading the trend
If weekly conversions are in single figures, week-over-week comparison is not telling you anything about campaign performance.
- 05
Read the match rate, not the success message
Nextdoor Ads Manager reports received and matched conversions. Reconcile against your own records over a month rather than a week — at these volumes shorter windows are noise.
Concrete CMS → Nextdoor · prove
How it gets proven — Concrete CMS → Nextdoor
Source of truth
Your own database's order records, at agreed states.
- The ndclid click identifier confirmed present on a live order.
- Deduplication confirmed on a real conversion, and the reporting window set long enough for the volume.
- Order attribute confirmed populated on a purchase through a cached page.
Concrete CMS → Nextdoor · free audit
What we check in the free audit
- Count orders carrying the ndclid click identifier
- Follow one real conversion end to end
- Identify which commerce add-on is in use
- Check the volume before reading the trend
- Read the match rate, not the success message
Checked against
Your own database's order records, at agreed states.
Free30 minutesNo obligation
Concrete CMS → Nextdoor · when not to buy
When you don't need this — Concrete CMS → Nextdoor
- Measure identifier coverage yourself first — pull your last hundred orders and count how many carry the ndclid click identifier.
- If your Concrete site is brochure-only with enquiries by form, treat it as a lead-gen site rather than a commerce one.
- If you do not serve a defined local area, Nextdoor's entire value proposition does not apply to you.
Concrete CMS → Nextdoor · what we deliver
What gets built — Concrete CMS → Nextdoor
Identifier capture into Concrete CMS
Capture the identifier and persist it as order attribute data through an event listener, server-side.
Event source: the order-completed event from your commerce add-on
Fire server-side. Page caching means the confirmation template may not execute.
Dispatch to Nextdoor
Server events to the Nextdoor Conversions API with the click identifier, hashed customer data and a matched event identifier.
Reversals where they exist
Order state changes recorded by the add-on.
Written guarantee
95%+ tracking accuracy
Measured against Your own database's order records, at agreed states.. Miss it and we keep working at no cost.
From $400 · See packages
FAQ
Concrete CMS → Nextdoor questions, answered
Capture ndclid on landing, attach it to the form entry server-side, and post a lead event to Nextdoor's Conversions API with hashed contact data and an event ID shared with the pixel.
The pixel and server events are probably not sharing an event ID. Generate one per submission and send it from both.
Almost always because the ndclid click identifier never reached the Concrete CMS order. Full page caching and the add-on ecosystem both interfere. Because commerce is an add-on rather than core, where the order is created differs by which add-on is installed. Measure coverage before debugging the dispatch.
Nextdoor's click identifier, appended to your landing page URL, alongside a pixel that sets its own cookie. Nextdoor also matches on hashed email and phone. The practical constraint is volume: a neighbourhood-level audience produces small numbers, and small numbers move a lot week to week for reasons that have nothing to do with your campaign.
The order-completed event from your commerce add-on. Fire server-side. Page caching means the confirmation template may not execute.
Nextdoor Ads Manager reports received and matched conversions. Reconcile against your own records over a month rather than a week — at these volumes shorter windows are noise.
More on Concrete CMS → Nextdoor
- Craft → NextdoorConnecting Craft CMS to Nextdoor Ads
- Concrete CMS → Google AdsConnecting Concrete CMS to Google Ads
- Concrete CMS → MetaConnecting Concrete CMS to Meta Conversions API
RELATED GUIDES
Where Concrete CMS → Nextdoor fits in the rest of your tracking
- Nextdoor · Local servicesNextdoor Ads conversion tracking for local service businesses
- Nextdoor · B2BNextdoor Ads conversion tracking for B2B companies
- Nextdoor × Ecommerce OrdersHow to reconcile Nextdoor Ads against your store's order table
- Nextdoor · Lead magnet → saleHow to track lead magnet to sale for Nextdoor Ads
- Ghost → NextdoorConnecting Ghost memberships to Nextdoor Ads
- Concrete CMS → Microsoft AdsConnecting Concrete CMS to Microsoft Ads
- Local servicesConversion tracking for local businesses, where most conversions bypass the website
- AEM → NextdoorConnecting Adobe Experience Manager to Nextdoor Ads
Free · 30 min
Get Concrete CMS and Nextdoor joined properly
Free30 minutesNo obligation
