Direct mail math, the honest version.
Every response rate, set rate, and close rate below is an assumption we picked and labeled. None came out of a database, because none exist in one. What did come out of a database: the share of a blind Cook County mailing list that structurally cannot buy what you sell. That part is measured, and it moves break-even further than any rate you argue about.
01 · The chain
Four inputs, three multiplications, one answer.
The funnel is simple. Homes mailed times a response rate gives responses. Responses times a set rate gives inspections. Inspections times a close rate gives sold jobs. Sold jobs times average ticket gives revenue. That is the whole model, and the same chain the calculator on our pricing page runs.
Our modeled cell: 1,500 pieces at $0.85 each, plus $750 of setup (design, list prep, print handling), against a $14,000 average roofing ticket. Campaign cost is 1,500 × $0.85 + $750, or $2,025. Those four inputs are assumptions we chose for this walkthrough. Swap yours in; the arithmetic does not care.
Three rate assumptions drive the rest. Response, set at 0.5% / 1.0% / 2.0%. Response to inspection, what most shops call the estimate set, at 35% / 50% / 65%. Inspection to sale, at 15% / 25% / 35%. All nine are planning assumptions. We have no dataset that establishes them, and neither does anyone selling you a list.
If a vendor hands you a projection without telling you which of its numbers are assumed, all of them are. Ask which figure came from a record and which came from a guess, then re-fit both from your own first thirty days.
| Input | Value |
|---|---|
| Homes mailed | 1,500 |
| Mail cost per piece | $0.85 |
| Setup cost | $750 |
| Average job value | $14,000 |
| Campaign cost | $2,025 |
| Gross margin | 30% |
02 · The scenario band
The optimistic column is arithmetic, not a forecast.
Run the three rate sets through the chain and you get the table on the right. Conservative returns 1.7x on campaign spend. Base returns 12.0x. Optimistic returns 46.2x.
Study that spread before the right-hand number excites anyone. It is 27 times the left-hand number, and nothing moved except three assumptions moving together. Optimistic wants a 2.0% response and a 65% set rate and a 35% close, same cell, same season. Each is possible alone. All three at once is rare.
Note the sold-job counts too. Base case: 1.9 jobs off 1,500 pieces. That is small enough that ordinary variance swamps it. One extra sale doubles your quarter. One scheduling failure erases it.
Plan the cell on the conservative column and staff for the base. A campaign that only works at optimistic rates cannot be underwritten, because you will not know for six weeks which column you were in.
| Scenario | Resp. | Insp. | Sold | Revenue |
|---|---|---|---|---|
| Conservative | 8 | 3 | 0.4 | $5,512 |
| Base | 15 | 8 | 1.9 | $26,250 |
| Optimistic | 30 | 20 | 6.8 | $95,550 |
03 · The missing line
Revenue is not the number that pays for the mail.
Here is where most contractor ROI tools quietly cheat. They divide revenue by campaign cost and call it return. But a $14,000 roof is not $14,000 of money you keep. Materials, labor, dump fees, and warranty reserve come out first.
Assume a 30% gross margin, our figure, chosen for this walkthrough and measured from nothing. Contribution per sold job becomes $4,200. Re-run the three scenarios and the picture changes shape: conservative produces 0.39375 sold jobs, worth $1,653.75 against $2,025 of spend, a loss of $371.25. Base clears $5,850. Optimistic clears $26,640.
Break-even tells the same story more cleanly. On a revenue basis the cell needs 0.14 sold jobs. On a contribution basis it needs 0.48. That is 3.33 times as many jobs, which is exactly one divided by your gross margin, and it is the single most common omission in campaign projections we get shown.
Compute break-even as campaign cost divided by (average ticket × gross margin). If a projection does not show you a margin input anywhere, it is measuring revenue against cost and calling the difference profit.
04 · Roofing, measured
Three in ten Palos homes already bought.
This is the part that is not an assumption. Join the county roof-permit file to the assessor's parcel file and count: 4,085 of Palos Township's 14,008 residential parcels, 29.16%, carry a roof permit on the county record. Those homes bought a roof, mostly inside the last six years. They are not going to buy another one from your postcard.
Draw 1,500 Palos addresses blind and roughly 437 of them fall in that group, leaving about 1,063 live prospects. If you want 1,500 live prospects out of a blind draw, you have to mail 2,118 pieces, which costs $525.30 more in postage and print. Break-even on contribution moves from 0.48 jobs to 0.61, a bar about 26% higher, for identical work in identical neighborhoods.
One caveat, and it matters more than the headline. Permit coverage in this county is uneven. Palos sits at 29.16%; Lake Township, on Chicago's South Side, sits at 1.12% (1,593 of 142,560 parcels); county-wide the figure is 7.41%. That spread mostly reflects which municipalities report permits into the county file. Absence of a permit is absence of a record, and any suppression built on it should be weighted by how good the local record is.
Suppression is worth real money where the permit record is thick and worth very little where it is thin. Before you pay for permit filtering in a given township, ask what share of its parcels have any permit on file at all.
05 · Siding, measured
In Berwyn, three quarters of the list is brick.
Roof permits shift the math. Wall material breaks it. The assessor records exterior wall type on every residential parcel, and in Berwyn Township 9,330 of 12,955 homes, 72.02%, are masonry. Only 3,208 parcels, 24.76%, carry frame or frame-plus-masonry walls. County-wide the siding-eligible share is 54.46% (606,824 of 1,114,289 parcels with the field populated), so Berwyn is unusually hard, which is exactly why it makes the point.
Mail 1,500 blind Berwyn addresses for a siding offer at an assumed $18,000 ticket and about 371 homes could physically say yes. At base rates that cell produces 0.46 sold jobs, $2,507 of contribution, and clears $482. Spend the same $2,025 on 1,500 frame-walled addresses and the same rates produce 1.88 sold jobs, $10,125 of contribution, $8,100 net. Same postage, same creative, same assumed rates. The list did all of it.
Put it the other way round. To place your offer in front of 1,500 siding-eligible Berwyn homes without filtering, you have to mail 6,058 pieces, which costs $5,899.30 and needs 1.09 sold jobs to break even. The filtered 1,500-piece version needs 0.375. Nearly three times the bar, from one field on a public record.
Wall material is the highest-value filter in the exterior trades and one of the cheapest to apply, because the county already published it. Filter first, then argue about response rates.
| Cell | Sold | Contribution | Net |
|---|---|---|---|
| Blind 1,500 | 0.46 | $2,507 | $482 |
| Filtered 1,500 | 1.88 | $10,125 | $8,100 |
06 · The losing cases
Four ways this campaign loses money.
Nobody selling direct mail publishes this section. Same $2,025 cell, same 30% margin, same rate band.
The ticket is too small. Move average job value from $14,000 to an assumed $2,200 gutter replacement and contribution per job falls to $660. Break-even jumps to 3.07 sold jobs. The base case delivers 1.875, worth $1,237.50, losing $787.50. Not the conservative case. The base case. Low-ticket trades struggle to carry cold mail at $0.85 a piece on a single-job basis and have to earn it back on repeat and referral.
The rates land at the bottom. Roofing, good ticket, conservative column: 0.39375 jobs, $1,653.75 of contribution, $371.25 in the hole. A perfectly ordinary outcome that most projections never show you, because their conservative column is still computed on revenue.
The list is blind. A 1,500-piece blind Berwyn siding drop at conservative rates: 0.10 sold jobs, $526.52 of contribution, a loss of $1,498.48, which is 74% of the money burned. The filtered version of that same conservative cell roughly breaks even. Targeting separates a bad quarter from a written-off one.
The season is wrong. Of the 653 Cook County hail reports in NOAA's archive since 1955, 369 (56.5%) fall in April, May, or June, and only 85 (13.0%) land across the whole September-through-February stretch. A storm-cohort mailer dropped in November argues against seven decades of record. That does not make it worthless; it makes it a different offer.
Write down which of the four you are exposed to before the print order goes in. Three are fixable at zero marginal cost: higher-ticket offer, filtered list, better drop date. Only the rate band is out of your hands.
07 · The diagnostic itself
Our own price has to clear the same bar.
A Territory X-Ray runs $1,500 to $2,500, and that money belongs in the same arithmetic as the postage. In the base roofing scenario one 1,500-piece cell clears $5,850, so a $2,000 diagnostic is covered by the first cell and change. In the conservative scenario the cell loses $371.25, and the diagnostic has to earn out across several cells before it is recovered.
Better you see that written down than find it in month three. Targeting does not turn a losing campaign into a winning one by itself. It moves the break-even, and the two measured deltas above (29.16% of a Palos roofing list, 72.02% of a Berwyn siding list) move it further than any plausible improvement in your creative.
Run your own inputs through the pricing-page calculator before you talk to us or anyone else. If the numbers fail with honest margin and honest rates, the answer is not a better list. It is a different channel.
| Scenario | Contribution | Net of $2,025 |
|---|---|---|
| Conservative | $1,654 | −$371 |
| Base | $7,875 | $5,850 |
| Optimistic | $28,665 | $26,640 |
Method & sources
What is measured. Parcel counts, roof-permit shares, wall material, and hail seasonality come from official public records: the Cook County Assessor's property-characteristics file (1,114,335 residential parcels), the county roof-permit file joined to those parcels by parcel identifier, and the NOAA Storm Prediction Center severe-weather archive. Wall-material percentages use parcels with the field populated as the denominator (1,114,289 county-wide; 12,955 in Berwyn), excluding 46 blank county parcels. Permit shares use all residential parcels in the township. The permit file is effectively complete from 2020 forward and township coverage varies with municipal reporting, so a parcel with no permit on file means no permit was recorded, nothing more. Everything here is aggregate, no individual home is identified, and nothing on this page is a claim about any specific property's condition.
What is assumed. Every rate, cost, ticket, and margin in the campaign model is a planning assumption chosen for this walkthrough: response (0.5% / 1.0% / 2.0%), response to inspection (35% / 50% / 65%), inspection to sale (15% / 25% / 35%), mail $0.85 per piece, setup $750, roofing job $14,000, siding job $18,000, gutter job $2,200, gross margin 30%. None came from the datasets above or from client results. They are illustrative inputs for a projected band, not a forecast and not a guarantee. Arithmetic and rounding match the pricing-page calculator, so any figure here reproduces by entering these inputs there. Blind-list scenarios assume a suppressed home responds at zero, which overstates suppression's value at the margin.
Want this run on your townships instead of ours?
The Territory X-Ray measures the same two deltas in the markets you actually work: how much of your list already carries a permit, and how much of it structurally cannot buy your product. Then it ranks what is left. Run your own inputs through the ROI calculator first, and bring the numbers with you.
Request a Territory X-Ray