Skip to main content
Craft → NextdoorIntegration guide

Connecting Craft CMS to Nextdoor Ads

Craft is a developer-oriented CMS, usually built bespoke by an agency, which means the implementation is whatever that agency decided and nothing is standard. 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 Craft Commerce 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

Craft CMS to Nextdoor: quote forms for local service sites

For local service sites on Craft, capture ndclid with JavaScript into a hidden Freeform or Formie field. On submission, send a lead to Nextdoor's Conversions API with ndclid, hashed email and phone, and the submission ID shared with the pixel, only after spam protection runs. Upload booked jobs with value later.

Nextdoor matters to a Craft site when the business serves a local area: a contractor, a clinic group or a landscaper whose agency built on Craft. The conversion is rarely a Commerce order; it is a quote or booking request through a Freeform or Formie form, and the value only appears later when the job is booked in whatever system runs the business.

Capture the ndclid with JavaScript on landing and write it into a hidden field on the form, since a cached Twig template cannot render it per visitor. On submission, send a lead event to Nextdoor's Conversions API from a form-submission listener with the click identifier, hashed email and phone, and the submission ID as the event identifier shared with the pixel. Confirm current field names in Nextdoor's documentation.

At neighborhood volumes, a few spam submissions a week can double your apparent conversions, and Nextdoor will optimize toward them. Make sure the form plugin's spam protection runs before the conversion is sent, not after. If jobs are booked offline, upload booked jobs later with their value and the same identifiers; the quote request alone tells you little about what Nextdoor actually earned.

Craft → Nextdoor · what breaks

Why this join usually fails — Craft → Nextdoor

  1. 01

    The ndclid click identifier never reaches Craft

    Craft's template caching and static caching plugins both serve stored output, and because every build is custom, where the capture code lives differs per site. There is no standard place to look.

  2. 02

    Every install is bespoke

    There is no standard Craft setup, so an approach that worked on another Craft site may have nothing to attach to on this one. Read the build before quoting.

  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.

Craft → Nextdoor · the fix

What working looks like — Craft → 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

    Craft CMS's own records are the reference, not either dashboard.

Craft → Nextdoor · architecture

How Craft and Nextdoor actually connect

  1. 1

    Craft CMS holds the truth

    Craft installs are bespoke by nature. Establish how this particular build models a completed order before assuming anything transfers from another Craft site.

  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 Craft Commerce order.

  4. 4

    The event source decides reliability

    Fire from the event listener in PHP rather than a Twig template, which may be cached.

  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.

Craft → Nextdoor · normal or broken

Working vs. broken, side by side — Craft → Nextdoor

Normal, not a fault

  • The ndclid click identifier present on the order

    Visible on the record itself in Craft CMS, not merely captured somewhere on the site.

  • Sent from the Craft Commerce order-complete event

  • 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

    Nextdoor's count and Craft CMS's records agree within a few percent over a closed window.

Actually broken

  • The ndclid click identifier missing on most records

    Craft's template caching and static caching plugins both serve stored output, and because every build is custom, where the capture code lives differs per site. There is no standard place to look.

  • Sent from the browser

    There is no standard Craft setup, so an approach that worked on another Craft site may have nothing to attach to on this one. Read the build before quoting.

  • 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

    The dashboard shows a number and no one has compared it to Craft CMS.

Craft → Nextdoor · diagnose

Diagnostic order — Craft → Nextdoor

  1. 01

    Count orders carrying the ndclid click identifier

  2. 02

    Follow one real conversion end to end

  3. 03

    Read how this specific build handles order completion

    Assumptions carried from another Craft project are the main source of wasted time here.

  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.

Craft → Nextdoor · prove

How it gets proven — Craft → Nextdoor

Against Craft CMS's own records, not against either platform's dashboard.

Source of truth

Craft Commerce's order records in your own database, filtered to completed.

  • 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 custom field confirmed populated on an order placed as an anonymous visitor through cache.

Craft → Nextdoor · free audit

What we check in the free audit

  • Count orders carrying the ndclid click identifier
  • Follow one real conversion end to end
  • Read how this specific build handles order completion
  • Check the volume before reading the trend
  • Read the match rate, not the success message

Checked against

Craft Commerce's order records in your own database, filtered to completed.

Get my free conversion tracking audit

Free30 minutesNo obligation

Craft → Nextdoor · when not to buy

When you don't need this — Craft → Nextdoor

  • If Nextdoor already reports conversions that reconcile against Craft CMS's records within a few percent, this join is working and there is nothing to buy.
  • Measure identifier coverage yourself first — pull your last hundred orders and count how many carry the ndclid click identifier.
  • If the original agency is still engaged, the fastest path is usually specifying the field and having them add the hook.
  • If you do not serve a defined local area, Nextdoor's entire value proposition does not apply to you.

Craft → Nextdoor · what we deliver

What gets built — Craft → Nextdoor

  • Identifier capture into Craft

    Capture the identifier and store it as a custom field on the order through a Craft event listener, server-side.

  • Event source: the Craft Commerce order-complete event

    Fire from the event listener in PHP rather than a Twig template, which may be cached.

  • 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

    Refunds and cancelled orders are recorded against the order.

Written guarantee

95%+ tracking accuracy

Measured against Craft Commerce's order records in your own database, filtered to completed.. Miss it and we keep working at no cost.

Get my free conversion tracking audit

From $400 · See packages

FAQ

Craft → Nextdoor questions, answered

Capture the ndclid into a hidden form field, then send the submission to the Nextdoor Conversions API server-side with hashed email and phone and an event ID shared with the pixel.

Free · 30 min

Get Craft and Nextdoor joined properly

Free30 minutesNo obligation