The Doozer Brainlive from the knowledge bundle · v2.2.618 · 2026-09-13 17:14 ETall pages · one page

Lead Capture (the revenue pipeline)

systems/lead-capture.md · System · leads, monetization, contact-form, leadbuilder, routing, value

unverified: no trust signals recorded yet

How a visitor's message or call becomes a routed, deliverable lead — the shared nbmn_lead_requests pipeline, auto-routing, no-email self-heal, and LeadBuilder handoff.

Lead Capture

Leads are how Doozer turns free sites into revenue (see the value model). There is ONE lead pipeline; every surface feeds it.

The pipeline

nbmn_lead_requests is the single table. A lead enters from:

From the table: admin triage (includes/nbmn-lead-requests.php) → route-to-owner (nbmnLeadRouteToBusiness()) → LeadBuilder bridge (leadCaptureBridgeToLeadBuilder()). Routing to an owner emails them when a contact address is on file.

One business, one inbox (the canonical recipient)

businessLeadRecipientEmail($business) (nbmn-lead-requests.php) is THE single place lead-recipient precedence is decided: the claimed owner (admin_email, set when someone redeems a postcard code or matches by email) wins; the scraped businesses.email is only the fallback for an unclaimed listing. One business, one inbox — every lead from anywhere in the ecosystem (business site, NBMN, calls, clouds) goes to that one email. Future agency/agent fan-out extends this one function. The redeem + claim pages state the promise to the owner explicitly ("the email you claim with becomes where every lead arrives"). See [[identity-and-auth]] (implicit verification: admin_email = the claim).

Auto-route + the no-email plan (load-bearing)

A business_site lead with a selected_business_id auto-routes on submit — the target is unambiguous (it's the site's own business). If the business has no email, the lead is not dropped: Doozer fires a priority basic_enrichment email-discovery scrape (the implicit-verification self-healing backfill) and flags the lead awaiting_email to deliver once an address lands. A lead is never a dead end — delivered if reachable, hunted for a channel if not, and held meanwhile as a warm lead + an ownership hook. NBMN directory leads still go through manual triage (which business a directory lead belongs to is a judgment call).

Spam + integrity

reCAPTCHA v3 (includes/recaptcha.php, invisible/score-based, fail-open so a Google outage never drops a real lead) + a honeypot field + per-IP-hash rate limiting. Keys live in platform_settings (secret-free in the graph).

The gotcha that made it work

getParam() (includes/api-endpoints.php) read ONLY $_GET until v2.2.319, so every ?e= WRITE endpoint silently ignored POST-body params and the lead forms captured nothing. It now reads $_GET then falls back to $_POST. Any new write endpoint can accept a normal form POST. Filed under render gotchas: the write "succeeded," the row just never arrived.

IndexNow (instant crawl notification)LeadBuilder (the lead-intelligence platform)