Before you export
What your CRM export needs
The values come from your own closed deals, so the export decides what the report can say. Here is the bar, stated before you go looking in your CRM: what stops the analysis, what every row carries, what sharpens it, and how to fix the usual gaps in ten minutes.
Two things stop it
What the analysis cannot run without
Everything else on this page is a matter of degree. These two are not: the report refuses the file and says why.
Fewer than 25 closed deals
A value is a close rate times a deal size, and under 25 deals that are won or lost, neither can be read. A hundred or more is where the model starts to separate leads well; 25 is where it can start at all.
Won deals and no lost ones
The most common export is a "Closed Won" report. With no lost deals in it, every close rate reads 100% and the model could only price deal size. The file is refused with the fix, which is to export every lead from the period.
Every row
Four columns, whatever your CRM calls them
Column names are matched automatically, in any language, and you confirm them on the mapping screen. These are the four that have to be there.
| Column | Why | Usually called |
|---|---|---|
| Create date | When the lead arrived. Each lead is judged against leads from the same period, and it is the date the value is attached to. | Create date, Created at, Lead date |
| Outcome | Won, lost or still open, read from a stage or status column. The words are yours: "Closed Won", "Sold", "Bound", "Gewonnen" all read, and you confirm the reading on the mapping screen. | Deal stage, Status, Pipeline stage |
| Amount on won deals | What the deal was worth. A won deal without an amount counts toward the close rate and not toward the value; we never guess a missing amount. | Amount, Deal value, Revenue, Fee |
| Something to match on | How the ad platform finds the click. Google: the click ID (gclid) on the lead, or the email address with enhanced conversions for leads. Meta: email or phone, or the instant-form lead ID. | gclid, Email, Phone |
What sharpens it
The columns that turn a flat value into a model
None of these is required to run. The first one is what decides whether the values differ from lead to lead at all.
One or two fields that could tell leads apart
This is what the values are made of. A service requested, a company size, a product line, a timeline, a plan: anything on the form that your best customers answer differently. A file with nothing like it prices every lead the same, and the report says so.
Close dates
How long a deal takes, which decides how soon the model can be refitted and which recent leads are still undecided rather than lost.
Stage timestamps that were lived
When a deal reached each stage. A stage that reliably fires inside Google's 7 days can raise a lead's value in time. Stages dragged through in one sitting are detected and set aside, never trusted.
A source column
Never used to price a lead, but it is how the report shows what each channel has been worth per lead, and it is what the evaluation uses as a control group.
Volume
How many leads a month
The model needs outcomes to price from; the ad platforms need events to learn from. Both are counted on the leads that can be matched, not on every row.
30/mo
The floor this product uses
About 30 matchable leads a month. Below it the model has too few outcomes arriving to keep the values current, and a Google campaign bidding on value learns slowly. Google's own published minimums are lower and differ by campaign type; this floor is about the model, not Google's rules. Under it, the report still runs and says so.
~218/mo
Meta's bar for bidding on value
Meta offers value optimisation to an ad set after about 100 valued events with at least five different values in 14 days. Under that, ad sets optimise on the lead count and the values still go, building toward the bar.
When something is missing
What the product does, gap by gap
Nothing is invented to fill a hole. Each gap has a set response, shown in the report with the count behind it.
| Gap | What happens |
|---|---|
| No create date on a row | The row is excluded and listed with the reason. |
| No amount on a won deal | Counted in the close rate, left out of the deal size. The report says how many. |
| No click ID and no email on a lead | Priced, but not sent: there is nothing to match it to. The match rate shows the share. |
| Leads left open for months | They teach the model nothing. The report counts them and asks you to close them out. |
| A stage that looks backfilled | Set aside for the early gate. Values are unaffected. |
| A column that is an outcome in disguise (a lost reason) | Refused as a signal, with the reason: it never fires at bid time. |
| Age, gender, health, credit and the like | Refused by header before the shape is examined. Bidding differently on them is what the platforms' rules forbid. |
Fix it in ten minutes
The three gaps that are a setting, not a rebuild
Most files that fall short do so in one of three ways: dead deals left open, wins without an amount, and a form that asks nothing that separates leads. Each is a small change in the CRM, and the next export is a different file.
HubSpot
- 1Mark the dead deals lost: filter deals still open past your usual cycle, select all, set the stage to Closed lost.
- 2Make the amount required on a win: Settings, Objects, Deals, Pipelines, then under the Closed won stage add Amount as a required property.
- 3Add one qualifying question to the form as a contact property, such as company size or what they need, and map it on the way in.
Salesforce
- 1Mark the dead opportunities Closed Lost with a list view and an inline edit, or a mass update.
- 2Add a validation rule: Amount is required when StageName is Closed Won.
- 3Add one qualifying field to Web-to-Lead and map it to the lead and the opportunity.
Pipedrive
- 1Mark the dead deals lost, with a lost reason if you keep one.
- 2Under Deals, Customize fields, make Value an important field for the last stage so a win cannot be closed without it.
- 3Add one custom field to the web form and to the deal, such as service requested.
A form question added today shows up in the model once enough of those leads have closed, which is usually one sales cycle. The report names any field it could not price yet rather than pricing on it thinly.
Not sure your file clears the bar? Upload it and find out.
Your export is read in your browser and never uploaded. The mapping screen runs every check on this page against your rows before anything is worked out, and says which one is short, with the count.