LONELY PINE AI Prepared for Equipped Painting
Walkthrough · 28 July 2026

Tracking a lead before it becomes a job

Your sheet already tracks where leads come from. What it cannot do yet is tie a lead to the job it became. That takes one ID.

For
Mitchell, Daniel, Juan
Sheet
2026 Sales & Production Costing
Change
Two columns
The one idea

A join key

Today the story starts at the appointment. To bring lead data in, we move the start line back to the lead and give every lead one stable ID that rides along through appointment, sold and produced.

DripJobs already creates that ID the moment a lead exists. Nothing new gets invented.

Names can never be the link. Jennifer Carroll appears twice in your own history as two different jobs. So does Arden Dougan. Names collide, get misspelled, and change. IDs do not.

Where you actually are

Further along than it feels

Lead Source already exists on all four tabs, along with City, Location Code and Tax Rate. Nothing there needs adding. Two things are missing, and they are the whole problem.

0
Tabs with a DripJobs ID
There is no join key anywhere, so nothing can be tied to anything except by name.
No
Lead date on Sales Tracking
The earliest column is Estimate Scheduled. The funnel literally starts at the appointment.
47
Spellings of ~12 channels
Found in the all-time export. Not carelessness — a side effect of the retype below.
Production Costing header row showing Lead Source, City, Location Code and Tax Rate columns
Your Production Costing tab. Lead Source, City, Location Code and Tax Rate are already here. There is no DripJobs ID column anywhere on it.

The retype is the actual leak

A job passes through four tabs, and the same five fields are entered by hand at every one.

Sheet tab strip showing Leads, Appmts/Sales Tracking, Sold Jobs Feed and Production Costing
The four tabs a job passes through, in your sheet today.
Tab 1
Leads
Job Name
Lead Source
City
Location Code
Tax Rate
Tab 2
Appmts / Sales Tracking
Job Name
Lead Source
City
Location Code
Tax Rate
Tab 3
Sold Jobs Feed
Job Name
Lead Source
City
Location Code
Tax Rate
Tab 4
Production Costing
Job Name
Lead Source
City
Location Code
Tax Rate

That is where attribution drifts. A lead entered as Google LSA on tab one becomes Google on tab two and website by tab four.

The point

With an ID on the row, Lead Source is entered once at first touch and the later tabs inherit it. This change is less typing, not more.

The list

One locked set of sources

These live on the Dropdown Data tab, with Reject input switched on so a typo cannot get in. Where this differs from what you already have, yours wins — except the two splits below.

Google LSAGoogle AdsWebsite SEO/GMBMetaThumbtackYelpAngi AdsBBBContractor HotlineRepeat/ReferralNetworking/EventsYard Sign/VehicleOutbound/CanvassingOtherUnattributed

Google is three lines, because it is three costs

$539
Google LSA
Cost per sale, your 2026 numbers.
$1,347
Google Ads
Two and a half times LSA. Averaging them hides which one to feed.
184
Rows saying only "google"
Could be either, or organic. These now report as Unattributed.

Reporting a bare google as Unattributed rather than guessing is deliberate. Guessing is how the website channel came to look like a 65x return: paid leads that landed on the site were counted as free. An honest gap beats a flattering wrong number, and the dropdown is what shrinks the gap.

Reassurance

No history is lost

Every existing spelling maps forward automatically. Nothing needs cleaning by hand.

What DripJobs says todayReports as
facebook ads, Facebook Ads, facebook, instagram, FMM FB Lead FormMeta
Google Local Services Ads, Google LSAGoogle LSA
Google Ads, google_ads, Call Ads ExtensionsGoogle Ads
Google Business Profile, Google My Business, Google Organic, website, Website PoolWebsite SEO/GMB
word of mouth, repeat customer, Client Referral, BHG ReferralRepeat/Referral
THG 2026 Trade Show, TRE 2026 Trade ShowNetworking/Events
contractor hotlineContractor Hotline
door to door, Cold CallOutbound/Canvassing
VehicleYard Sign/Vehicle
google, phone call, email, No Lead SourceUnattributed
Spam, TestNot counted as leads at all
The build

Your Leads tab, pre-filled

The Leads tab is empty today, so there is nothing to migrate. This is the header row it gets. The two navy columns are the only genuinely new fields — everything else already exists elsewhere in the sheet.

Lead DateLead SourceDripJobs IDJob NameSalespersonCurrent StageAppt DateStatus
2026-07-240789508238cbb6…Karey JensenMitchellLeadOpen
2026-07-21229500615776550…Clem - Lynnwood 3070343IsmaelEstimate sent2026-07-22Open
2026-07-11Google Business ProfileKearns, RachelleSophiaLeadNot booked
2026-07-10Facebook AdsLangan, HelgaSophiaLeadNot booked

New columns. Everything else is copied from what your other tabs already track.

We pre-fill 273 rows so nobody backfills by hand

Your team does not start from a blank tab. We hand it over already populated:

38
Live pipeline rows
ID, date, source, stage and salesperson. Your open deals, ready to work as-is.
235
Open lead rows
Real source and date, no ID — and none needed. They count toward their channel now, and pick up an ID by themselves if they ever progress.
273
Total, May onward
Older leads deliberately excluded — pasting dead 2023 leads would distort every rate.
No back-filling

Nobody types in 235 IDs. A lead that never books has nothing to join to, so it only ever needs a date and a source, which it already has. The ID matters the moment a lead moves — and at that moment DripJobs sends it to us automatically. The only new habit is on leads arriving from now on.

What it cost to build those 38 rows

The live feed gives an ID and no source. The export gives a source and no ID. So filling in those 38 meant cross-referencing three separate exports and matching on customer name, including unpicking the doubled names DripJobs writes for nameless deals (CHAPMAN JOEL CHAPMAN JOEL).

It worked — 38 out of 38 — but it is reconstruction, and it is not repeatable every week. One ID on the row is what replaces all of that. That is the whole argument for the two new columns, in one paragraph.

Two caveats worth saying plainly rather than burying:

For the 38 live rows the date is when Steward first saw the lead, not necessarily when DripJobs created it, because our capture only starts 10 July. Fine as a start date, not safe to measure sales-cycle length from. Rows created from here on carry the real date.

And one row — 2909 223RD PL SW, Thumbtack, appointment booked 13 July — appears in the 12 July export but is missing from the 27 July one. It is flagged in the file. Worth a look at whether deals are being renamed or deleted, since a second one behaved the same way.

Next steps

Who does what

WhoDoes whatWhen
Daniel & JuanAgree who enters the DripJobs ID and Lead Date, and at what moment a lead comes in. You two are doing this, so you define it, not us.On this call
MitchellSign off the source list, or send edits. We compare it against your Dropdown Data tab live.On this call
NaluHand over the 273-row seed and set up the Leads tab header row and the dropdown, once the list is agreed.Same day
NicoleInstall the sync script on the sheet. Four steps, about three minutes, no Google Cloud work. It runs under whoever installs it, so it should be an owner's account rather than a consultant's.This week
EveryoneEvery lead gets a row the day it arrives, booked or not, with a source picked from the dropdown.From this week
NaluWire cost per lead and cost per sale by channel into Steward, and switch on sales-cycle length.Once leads flow

Two decisions we need from Mitchell

1. When a job hits "Project Accepted", should it move onto the production board?

Sounds small, is not. It is the same sold-definition question from last time: proposal-accepted (447 jobs) or completed (645). Your answer decides whether we let those events through or correct them at the source.

2. How should Daniel's work show up?

The DripJobs feed is keyed on the salesperson of record. Daniel is the pre-closer and is never the salesperson of record, so the system structurally cannot see his activity today. Either DripJobs starts assigning him on the leads he sets, or his view keys off his own activity instead. This is a business decision, not a technical one.

What changes on Monday

Three habits

  1. Start the row at the lead, not the appointment.Every lead gets a row the day it arrives, including the ones that never book. A channel's cost per sale is meaningless if only the leads that booked were recorded. The dead leads are what tell you a channel is expensive.
  2. Pick the source at first touch, from the dropdown.Whoever takes the call or the form picks it right then. The channel that produced the lead owns it for life, so a later, vaguer correction cannot overwrite it.
  3. Paste the DripJobs ID.It is the only thing tying the lead to the job. Everything else follows from it.
Then it stops being manual

What Steward does with it

Leads arrive from DripJobs the moment they are created, carrying the same ID and source. Steward advances the one record through each stage as events fire, so nothing is entered twice.

Cost per lead and cost per sale by channel go live. Sales-cycle length — days from lead to purchase — starts reporting as leads captured from now on begin to close.

The sheet keeps working the whole time. Steward reads it rather than replacing it, so there is no cutover day where anything stops.

Expect this

The first month of full-funnel numbers will look worse than what you see today. That is the honest denominator arriving, not performance dropping. Channels that looked efficient because their dead leads were never recorded will move toward their real cost.