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.
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.
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.
A job passes through four tabs, and the same five fields are entered by hand at every one.
That is where attribution drifts. A lead entered as Google LSA on tab one becomes Google on tab two and website by tab four.
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.
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.
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.
Every existing spelling maps forward automatically. Nothing needs cleaning by hand.
| What DripJobs says today | Reports as |
|---|---|
facebook ads, Facebook Ads, facebook, instagram, FMM FB Lead Form | Meta |
Google Local Services Ads, Google LSA | Google LSA |
Google Ads, google_ads, Call Ads Extensions | Google Ads |
Google Business Profile, Google My Business, Google Organic, website, Website Pool | Website SEO/GMB |
word of mouth, repeat customer, Client Referral, BHG Referral | Repeat/Referral |
THG 2026 Trade Show, TRE 2026 Trade Show | Networking/Events |
contractor hotline | Contractor Hotline |
door to door, Cold Call | Outbound/Canvassing |
Vehicle | Yard Sign/Vehicle |
google, phone call, email, No Lead Source | Unattributed |
Spam, Test | Not counted as leads at all |
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 Date | Lead Source | DripJobs ID | Job Name | Salesperson | Current Stage | Appt Date | Status |
|---|---|---|---|---|---|---|---|
| 2026-07-24 | — | 0789508238cbb6… | Karey Jensen | Mitchell | Lead | Open | |
| 2026-07-21 | — | 229500615776550… | Clem - Lynnwood 3070343 | Ismael | Estimate sent | 2026-07-22 | Open |
| 2026-07-11 | Google Business Profile | — | Kearns, Rachelle | Sophia | Lead | Not booked | |
| 2026-07-10 | Facebook Ads | — | Langan, Helga | Sophia | Lead | Not booked |
New columns. Everything else is copied from what your other tabs already track.
Your team does not start from a blank tab. We hand it over already populated:
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.
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.
| Who | Does what | When |
|---|---|---|
| Daniel & Juan | Agree 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 |
| Mitchell | Sign off the source list, or send edits. We compare it against your Dropdown Data tab live. | On this call |
| Nalu | Hand over the 273-row seed and set up the Leads tab header row and the dropdown, once the list is agreed. | Same day |
| Nicole | Install 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 |
| Everyone | Every lead gets a row the day it arrives, booked or not, with a source picked from the dropdown. | From this week |
| Nalu | Wire cost per lead and cost per sale by channel into Steward, and switch on sales-cycle length. | Once leads flow |
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.
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.
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.
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.