Closed revenue, not inquiries
Rank on rent, so a single high-value move-in is not averaged away by the noise around it.
Marketing attribution for self storage operators
Match move-ins and the rent they earn over their whole stay to the campaigns that produced the tenant.
$440,000 55% of $800,000 paid
The blind spot
A move-in looks like a $79 transaction. Held for fourteen months at rising rates, it is closer to $1,300 — and no channel is ever credited for the difference.
What you get
Rank on rent, so a single high-value move-in is not averaged away by the noise around it.
Time between the advertisement and the rent is irrelevant to the match, which is the reason this works where tag-based tracking does not.
High-confidence matches count automatically; a partial link is queued for review rather than quietly counted as a move-in.
A worked example
Not impressions, not leads, not cost per click. Closed revenue, by the channel that produced it, for a period you choose — with the portion we could not trace shown rather than quietly shared out across your paid channels.
| Channel | Sales | Revenue | Share | % |
|---|---|---|---|---|
| Google Ads | 241 | $296,000 | 37% | |
| Local service ads | 79 | $96,000 | 12% | |
| Meta Ads | 41 | $48,000 | 6% | |
| Direct / Unknown | 294 | $360,000 | 45% |
Two channels can produce move-ins at the same cost while one produces tenants who stay four months and the other tenants who stay eighteen. Cost-per-move-in rates them identically and is wrong by a factor of four.
Because the match is on the tenant, every month of rent credits the channel that produced them. That single change usually reverses which channel an operator considers their best.
A city site and a suburban one draw from different demand, and a portfolio-level report averages away exactly the differences an operator would act on.
A facility column mapped as Location splits the revenue by site, with how much of each site traces to a channel, so each site's budget can follow its own evidence rather than the portfolio's.
Move-in pricing in storage is promotional almost everywhere: a dollar for the first month, half off for three, a waived administration fee. The street rate a tenant sees is set to win a booking rather than to describe what the unit will earn over a year. Counting the first payment as a campaign's outcome therefore measures the promotion rather than the demand, and it measures it most wrongly at exactly the sites running the deepest discounts, because those are the sites whose occupancy is thin and whose numbers most need to be right.
What the unit actually earns emerges over the following year, as the promotional period lapses and the rate steps up toward street and past it. Two tenants who moved in on the same offer, from different sources, can be paying very different amounts by month eight, because the rate management applied to each depends on how long they stayed and how the site was performing when the review came round. Neither of those things was knowable on the day the advertisement was clicked.
Because every later charge credits the channel that produced the tenant, the ranking is built on the sum of what was billed rather than on what was quoted. That is the only version of the figure that ties back to the site's own revenue, and it is the version that separates a channel filling units with price-shoppers from one filling them with people who will not move their belongings again over ten dollars. Those two channels can cost the same per move-in and differ by a factor of three by the end of the year.
A large share of storage demand books online or by phone for a move-in a few days out, and a meaningful share of those reservations never turn up. The tenant found somewhere cheaper, the move fell through, or they simply took a unit at the first place they drove past on the day. A report built on reservations is counting intent, and intent is the thing this industry has most of and can rely on least, which is exactly why it is the metric most often quoted.
The only outcome worth ranking is a unit occupied and a payment taken. That record sits in the management software as a move-in or a ledger line, with the tenant's phone number and email attached because the site needs to reach them about gate codes, late notices and the annual insurance renewal. It makes a clean file for matching precisely because it was maintained for operational reasons rather than for reporting, and operational records are the ones people keep properly.
Setting reservations beside completed move-ins turns the shortfall into a channel-level number instead of a site-level frustration. A source producing cheap reservations of which a third arrive is more expensive than it looks; a source producing fewer that nearly all arrive is cheaper than it looks. No cost-per-reservation report can tell those two apart, and the gap between them is frequently wider than the gap in the headline price that everybody is arguing about instead. The shortfall is where the real cost of a source quietly hides.
Storage demand is drawn from a radius of a few miles and driven by events: a move, a separation, a business outgrowing a garage, a death in the family. Two sites twenty minutes apart can face entirely different competitive sets, different price ceilings and different mixes of household and commercial tenants. A portfolio-level channel ranking averages those differences away and then hands every site the same instruction, which is how a site with a genuine problem ends up funded the same way as one that has none.
Marketplaces and aggregator listings sit on top of all this, charging for the tenants they send and reporting on the tenants they send. Their export goes into the lead file like any other source, and once billed rent is attached to it the comparison an operator has never been able to make becomes routine: what a marketplace tenant is worth over the whole stay against what a tenant from the site's own advertising is worth over theirs.
The facility column is what makes any of it local. With it, a site whose revenue is largely attributed can be told apart from one where most tenants arrive with no trace in the lead file — usually the sign that a map listing does the work and the advertising buys tenants who were arriving anyway. It does not rank channels within each site, but no operator manages a portfolio at the portfolio level: they manage one site that is struggling and four that are not, and the struggling one is what the budget should be answering questions about.
Why it matters
"We generated 400 leads" invites an argument. "This channel closed $186,400 last quarter, here is the reconciliation" ends one. The teams that can show closed revenue by channel are the teams that get the next increase approved, because they are asking with evidence rather than with conviction.
Killing spend is politically harder than adding it, because someone always owns the channel being cut. A number that reconciles to the sales export takes the argument out of the room — you are not overruling a colleague's judgment, you are reading the same ledger they are.
Platform-reported conversions do not reconcile to revenue, and eventually someone in finance notices. Reporting built from your own closed-sales export starts from the number finance already trusts, which is why it holds up when it is checked.
Because this reconciles exports rather than tracking visitors, it works on months that have already closed. You are not instrumenting now to learn something in ninety days — you can answer for last quarter today, which is usually when the question is being asked.
Honest answers
Which is why lifetime rent rather than first payment is the measure — that is where the difference between channels actually shows.
Which the report is honest about. What it adds is whether the paid spend around that is producing anything.
If it exports move-ins or rent revenue to CSV, that is enough.
Pricing
The price here is the price on the invoice, plus any sales tax that applies — no per-call, per-minute or per-form fees. Growth usually fits self storage operators — thirteen months of history to compare a month to the same month last year, and a PDF you can put in front of whoever holds the budget.
A business scaling ad spend
$49/mo
billed monthly
Questions
Anything else? Talk to us — a person answers, usually the same day.
Move-ins or rent revenue: a tenant email or phone, the amount, and a date.
Yes — later rent credits the channel that produced the tenant.
Yes, with a facility column.
Yes, if move-out dates are exported.
No. It helps where tenants call rather than fill in forms, but the report does not depend on it.
Encrypted throughout, isolated to your workspace, and deletable in one click. We act as a data processor and a DPA is available on request.
Yes. Most self storage operators begin with last year, because it is the cheapest way to find out whether the exercise tells them anything.
Move-in or rent rows analyzed in a calendar month. Lead rows do not count.
The ledger. With promotional move-in rates the first payment describes the offer rather than the demand, and the difference between sources only becomes visible once several months of rent are attached to each tenant.
Yes. Add the marketplace's tenant export to the lead file, tagged with the marketplace, and it is ranked on rent billed, which is a comparison no marketplace has ever published about itself or is likely to.
Yes. Every later charge on that tenant's ledger credits whichever channel produced them, so a source whose tenants accept increases and stay put shows a materially higher figure than one whose tenants leave.
They earn nothing and count for nothing. Put them in the inquiry file and the report shows how many each source produced against how many actually arrived and paid for a unit.
As one tenant with several ledger lines, all crediting the channel that produced them; each line counts as a sale. A tenant-type column mapped as Product / service shows commercial and household revenue apart if you want the two seen separately.
Include it if the export carries it as rows against the tenant. It credits the same channel, though it is usually better left out, because it says more about collections than about marketing.
Nearby
Match filled lots and the years of site rent they earn to the campaigns that produced the resident.
See how it worksMatch signed doors and the recurring fees they earn to the campaigns that produced the owner.
See how it worksMatch booked interstate jobs and what they invoiced to the lead vendor or campaign that produced them.
See how it worksWhere your sales already are
Supermove already reports revenue by referral source. This adds the campaign behind it — and prices bought leads against your own advertising.
What to exportSmartMoving reports on the sources it holds. This adds the campaign behind them and ranks every lead vendor on invoiced work.
What to exportExport leases from DoorLoop, upload the inquiry sources behind them, and rank listings on lease value rather than on inquiries.
What to exportFrom the blog
Every attribution tool is built for businesses where the inquiry and the purchase happen in the same quarter. If yours does not, almost every default is wrong: the date ranges, the reporting cadence, the optimization signal and the patience of everyone involved.
Read the articleA multi-location business that reports one national attribution number is hiding its most important finding. The same campaign performs differently in every market, and the aggregate is an average of things that should never have been averaged.
Read the articleA channel judged on its first invoice is judged on the wrong customer. For a business that sees the same households again, the channel that sends loyal customers can look expensive and the one that sends deal hunters can look brilliant. Here is how to compute revenue per customer by acquisition channel at 12 and 24 months from a sales export, read cohorts honestly, switch to margin, and set what you can afford to pay for a customer.
Read the articleStart today
Upload two exports and see your real revenue by channel in minutes. 14 days free, no card.