Skip to main content
Concrete CMS → NextdoorIntegration guide

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

  1. 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.

  2. 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.

  3. 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.

  4. 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. 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. 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. 3

    The identifier is the bridge

    The ndclid click identifier, captured at the visit and carried into the Concrete CMS order.

  4. 4

    The event source decides reliability

    Fire server-side. Page caching means the confirmation template may not execute.

  5. 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

  1. 01

    Count orders carrying the ndclid click identifier

  2. 02

    Follow one real conversion end to end

  3. 03

    Identify which commerce add-on is in use

    That decides where the order is created and what events exist to hook.

  4. 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.

  5. 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.

Get my free conversion tracking audit

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.

Get my free conversion tracking audit

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.

Free · 30 min

Get Concrete CMS and Nextdoor joined properly

Free30 minutesNo obligation