Reverse engineered from eight delivery days of real lead data on a contractor in the same county, selling to the same buyer, through the same channel. Every build below exists because a number said so.
A2P 10DLC brand and campaign submitted. Sub account, numbers, pipelines, locked loss reason list. Nothing sends until the campaign shows approved.
Layer 05 workflows WF-01, WF-02, WF-07. Calendar on the last form step. Webhook carrying visitor id and click ids into the CRM.
WF-03, WF-04, WF-05, WF-11. Full event map before any spend. WF-12 writes closed revenue back to the ad account.
Paid launches small and feed only. Layer 07 intelligence in payback order. Layer 08 commercial lane opens on a named list.
Read this first or the numbers will mislead you. The funnel data behind this document is not Larchmont's.
Elite Northwest Flooring. 8 delivery days, $252.42 of Meta spend, 10 leads, 7 booked, 3 estimates run, 3 quotes sent, $0 closed. Snohomish County, homeowner buyer, Facebook lead form.
The shape transfers, not the forecast. Same county, same buyer age, same channel, same job size band, same problem of a two person operation answering a phone from a job site.
Nobody can tell you Larchmont's cost per lead from someone else's account. This document never tries. Where a number does not exist it says UNKNOWN and names who produces it.
A first party beacon capturing UTMs, platform click ids, a persistent visitor id, firing on phone taps and text taps. For a contractor the call is the lead.
Lead store and dashboard with source, campaign and journey stitching. Nightly SEO bot. 153 page SEO property, AEO pages, GMB post library.
Not traffic and not tracking. Nothing catches the lead in the first sixty seconds and nothing carries it to a signature. That is what Layers 01 through 05 build.
Where a number is borrowed, it says borrowed. Where a number is Larchmont's, it says so. Where a number does not exist yet, it says UNKNOWN. There are no invented figures anywhere in here, and none should be added later.
Not hours. Minutes. The reason is boring and mechanical: the calendar sat on the last step of the form, so the person booked themselves while still holding the phone.
Seven of eight bookings landed between 1.3 and 5.2 minutes after submit. Nothing else in that funnel moved the number this much, and it had nothing to do with creative.
The one lead who took 883 minutes to book is also the only booked lead who never got an estimate run. One data point, so treat it as a hint rather than a law.
No ad budget. It is a form layout and two automations. Cheapest finding in the document and the most expensive to ignore.
The site posts a lead to /api/lead, pings a notification, and stops. No calendar on the form, no automated call. A lead at 7pm Saturday sits until someone opens a phone.
WF-01 Speed to Lead and WF-02 Missed Call Text Back. Calendar on the last form step, call bridge inside sixty seconds. Both in Layer 05.
Fix the sixty seconds before spending another dollar on reach. Every other build in this document is downstream of it. WF-07 measures it daily.
Every one of these will be sold to Larchmont by someone. Four have hard evidence against them from the reference account itself.
| The thing | Verdict | What the record shows |
|---|---|---|
| AI texting bot as the booking mechanism | Failed | 167 outbound messages, 6 inbound replies at 3.5 percent, zero bookings traceable to it. A human call inside five minutes booked 7 of 10. |
| Tool that scores a video and predicts views | Do not buy | Creative features explain 10 to 25 percent of performance variance, ceiling near 30 percent. Anything promising a view count is selling an R squared near 0.2. |
| Hashtags for reach | Dead | Head of Instagram on record: not an important thing for reach. |
| Trending audio for distribution | Folklore | No documented mechanism. It survives only as a creative prompt. |
| Best time to post | Folklore | No methodology behind any of it and the vendors contradict each other. |
| Tag a friend giveaway | Never | Trips engagement bait rules and giveaway conditions at once. The demotion lands on the account, not the post, and it is durable. |
| Reels and Stories placements at launch | Off | Took 17 percent of spend across both platforms and produced zero leads. Facebook feed took 77.7 percent and produced 9 of 10. |
| 101 ad variants | No | One ad set took 78 percent of spend and produced 100 percent of leads. The other 100 were budget that never got a chance. |
| Cutting the radius to kill far leads | Reversed | Cutting it would have removed 94 percent of quoted pipeline. The two biggest quotes were the two furthest leads. |
Meta concentrated budget early, so the winner and the ad Meta fed are confounded. The honest read is not that one creative was brilliant. It is that 101 variants split a small budget so thin that most never got tested at all. Ship five to eight, let them run, then judge.
Every build traced back to the number that caused it. Nothing on this page exists because it sounded good in a meeting.
| Finding | What it means | Build |
|---|---|---|
| 7 of 8 bookings inside 5.2 minutes | Calendar sat on the last form step. | WF-01 + WF-02 |
| 7 booked, 3 run, 4 lost between | Cancellations and no shows ate the middle. | WF-03 |
| 3 quotes sent, nothing moved past sent | No follow up existed after the quote. | WF-05 |
| Pixel fired only on submit | 153 clicks, 10 page views, page views equalled leads. | Layer 06 |
| Every large quote came from a GC or PM | Nothing in the ad stack targeted that buyer. | Layer 08 |
| GBP category set to Remodeler | Larchmont's own audit. Invisible for the money terms. | Layer 09 |
Booking is close to solved by speed. Getting the booked person to be home, and the quoted person to sign, is where every dollar of the reference account died.
| Stage | Enters when | Exits when | Reference drop |
|---|---|---|---|
| 1. New Lead | Form, call, or text arrives | Two way contact made | 10 in |
| 2. Contacted | Lead replies or answers | Appointment on the calendar | 10 to 7 |
| 3. Estimate Booked | Calendar slot held | Eddie is standing in the house | 7 to 3 |
| 4. Estimate Run | Walkthrough done | Written number sent | 3 to 3 |
| 5. Quote Sent | Price delivered | Signed or dead | 3 to 0 |
| 6. Won / Lost | Decision made | Closed out with a reason | 0 won |
Four jobs lost between a yes and a doorstep, on a funnel with ten leads in it. WF-03 exists for this number and nothing else.
Three live quotes worth $37,550 sat with no sequence behind them. The single largest recoverable number in the dataset.
Fixed list only: price, timing, another bid, cancelled, could not reach, out of area, not a fit. A fixed list lets you sort a year of losses and see which one costs most.
Each one names its trigger, its exact waits, and its exit. Written so they can be built without a second conversation. Every SMS line has been through the Larchmont copy gate.
Brand and campaign registration has to be approved before GHL will deliver SMS at volume. Unregistered traffic gets filtered by the carriers, not by GHL, so it fails silently and looks like people are ignoring you. Register the brand, register a campaign per use case, and do not build the SMS steps until the campaign shows approved.
Form, webhook or FB lead form fires it. SMS at 0 seconds, Call Connect at 5 seconds, second number at +45s, task at +2 min. Exits on two way contact.
Any missed, voicemail or busy on a tracked number. SMS at 8 seconds from the same number. One follow up at +1 hour, then drops to WF-10.
Confirm on booking, question at 24 hours, on my way at 2 hours. No Show fires a recovery text plus a manual task. Aimed at the 7 to 3 drop.
Task to Eddie due in 24 hours. Internal nudge at 24h, escalation at 48h. Nothing to the customer until the number is real. Guard rail, not a fix.
Four touches over 21 days, then close the file. Day 2 asks about the price, day 7 asks what is blocking it, day 21 releases pressure. Never discount inside it.
One ask by text at +1 day, one email reminder at +4 days, then stop permanently. No gating, no incentive, no filtering by star rating. 16 CFR Part 465.
Daily at 07:00. Median seconds from lead created to first two way contact, plus every lead that broke five minutes, named. One line, no dashboard to open.
Routes to the Commercial pipeline, not Residential. Internal notification only. No automated SMS to a GC. Ever. Call plus capability one pager at +1 business day.
Skips the calendar entirely. This buyer does not book a Tuesday. All numbers in sequence with no 45 second gap, escalation at 90 seconds.
One text every 45 days. No campaign, no newsletter, no blast. A reply pulls the contact back to New Lead and restarts WF-01. Four silent cycles then stop.
Contacted for over 24 hours with no appointment. One text that lowers the cost of saying yes, manual call at +3 days, drops to WF-10 at +7.
Writes contract value and close date, then fires the offline conversion to Meta CAPI with the hashed contact and real revenue. Step two is the one nobody builds.
The reference account fired its pixel on submit and nothing else. 153 link clicks produced 10 landing page views, and page views equalled leads exactly. That is not a funnel, it is a single event.
| Event | Fires when | Carries | Why it exists |
|---|---|---|---|
| PageView | Any page | visitor id, source | Baseline and audience building |
| ViewContent | Service or city page, 15s dwell | service, city | Separates a real reader from a bounce |
| InitiateCheckout | Form started, first field focused | service | The abandonment signal. Nobody tracks this and it is where the form dies |
| Lead | Form submitted | service, city, source | The current only event |
| Schedule | Appointment booked | slot, service | The real top of the money funnel |
| Contact | Phone tap or text tap | page, source | Larchmont's beacon already emits this. Feed it to the pixel too |
| Purchase | Offline, on stage Won | contract value | Sent by WF-12 through CAPI, not the browser |
Adding events mid flight to a campaign that is already learning will reset that learning. Build the full map before the first dollar, or accept a reset on a day you choose.
/api/lead posts to GHL by webhook carrying _lv_vid, UTM fields and click ids. GHL writes appointment and closed value back. WF-12 sends the offline Purchase.
The click id captured on day one is what makes the closed job on day forty attributable. Capture it or the rest is theatre.
Every one processes data that already exists or that the layers above start producing. None of them talk to a customer unsupervised, because the one that did produced zero bookings out of 167 messages.
Record and transcribe every inbound call, then mine the objection, service, city and the words the caller used. For a contractor the call recording is the only unfiltered voice of customer data in the business. Feed top objections into WF-05 monthly.
Not a performance predictor. A mechanical pre publish check, because predicting failure is far easier than predicting success. Fails on missing final line, late first cut, wrong caption font, missing reg number, unapproved claim, em dash, banned word.
Weekly Meta Ad Library sweep across the radius. Days on air, variant count, offer, relaunch behaviour are the only honest proxies that exist. Any tool claiming a competitor cost per lead invented it.
Once thirty quotes exist with loss reasons, cluster by service, job size, city, source and reason. Output is one sentence a month: this is the job we keep losing and this is why.
Assisted local discovery moved from roughly 6 percent to roughly 45 percent inside a year. Asks the assistants the twenty questions a Snohomish County homeowner would ask, logs whether Larchmont appears and what got cited instead.
Drafts WF-10 variants so the 45 day text is not identical for two years. A human approves the batch monthly. The model never sends, never replies, never holds a thread.
Anything that cannot be answered returns a refusal instead of an estimate, because a plausible number is worse than no number when you act on it. Every output carries where it came from.
In the reference account every large quote on file came from a general contractor or a property manager, and not one came from an ad. The largest was $200,500 against an average residential quote of $12,517.
| Channel | Mechanism | Response product | Paid social role |
|---|---|---|---|
| Property managers | Named list, quarterly touch, unit turn pricing sheet | Predictable pricing | None |
| Insurance restoration | Referral relationships, standing availability | Response time is the product | None |
| Realtors, pre list repairs | Fast small jobs, list of what kills an inspection | Turnaround inside a close window | None |
| General contractors | Prequalification, plan rooms, certificate of insurance on file | Paperwork already done | None |
Larchmont is a general contractor rather than a flooring sub, so the repeat volume buyer is the property manager, the insurance restoration referrer, and the realtor with turns.
Larchmont has a partnership SOP built for exactly this and it is not wired to anything. WF-08 is the wire.
A property manager who gets a chirpy automated text at 8pm is a relationship you just spent. The residential machine is wrong for this buyer.
Paid social has no role in any row above. This lane is slower to start and it does not decay when the ad budget stops.
Larchmont's own GBP audit found the primary category set to Remodeler, which made the profile invisible for the terms that carry intent. Category is the one field that moves the most and it costs nothing to change.
Never publish a review count, a star rating, or a job count that is not verifiable on the day it ships. It does not come back through a side door.
Six settings. Each one is a reversal of what the reference account did, and each one has the number that caused the reversal sitting next to it.
| Setting | Launch with | Because |
|---|---|---|
| Placements | Manual, feed only | Feed produced 9 of 10 leads on 77.7 percent of spend. Reels and Stories produced zero on 17 percent. |
| Creative count | 5 to 8 | 101 variants split a small budget so thin most never got a real test. |
| Age | Do not exclude 55+ | Women 65+ were the cheapest lead in the reference account at $14.03. Men 65+ produced nothing on similar spend. |
| Radius | Wide, price the drive in | Cutting distance would have removed 94 percent of quoted pipeline. |
| Objective | Leads, then Purchase | Optimizing on form fills buys form fills. Switch once WF-12 feeds CAPI. |
| Every ad | LARCHBL744BK | RCW 18.27.100 requires the registration number in contractor advertising. |
A 1.25x effect has no bar because it is not reachable at this account size at any post count worth running. Do not promise to detect one.
An undersized test does not fail loudly. At fifteen per arm it reports roughly 2x whether the truth is 1.15x or 2x, because only the lucky results clear the bar.
That is the machinery behind every confident marketing case study. Run fewer tests, properly powered, and read nothing until the arm closes.
A2P registration is the only item with a lead time you cannot compress, which is why it sits in week 0 and why nothing in Layer 05 sends until it clears.
Everything above is structural and holds regardless of the figures. What it cannot do is tell you whether to scale or stop. That takes five numbers only Larchmont has.
| Input | Value | Who has it | Status |
|---|---|---|---|
| Average job value, residential | UNKNOWN | Eddie, last 20 invoices | |
| Gross margin, blended | UNKNOWN | Eddie | |
| Close rate, quote to signed | UNKNOWN | Produced by this system after 30 quotes | |
| Current inbound call volume | UNKNOWN | Phone records, this month | |
| Verified Google review count | UNKNOWN | GBP, today |
The governing question stops being cost per lead and becomes one sentence: how many jobs does one month of spend have to close to pay for itself. In the reference account that answer was one job in seven, and it had nothing to do with the $25.24 cost per lead everyone was staring at.
Blue hub is the system. Black nodes are the six functions. White leaves are the builds, each labelled with the layer or workflow that owns it.