“WelcomeHome already reports marketing ROI.”
On the touches and sources it holds. What it does not hold is the rent the move-in went on to bill, which is in the billing system — joining those two is the job.
For WelcomeHome
Match move-ins and the rent they earn to the campaigns that produced the inquiry — and price that against the agency's fee.
CloseRev reads a WelcomeHome export of move-ins — the responsible party's phone or email, the billed revenue and the move-in date — and matches it against the inquiries and tours that preceded it. A senior living inquiry converts over six to eighteen months, which is well past the window any ad platform reports on. Move-ins with no traceable inquiry are reported as Direct / Unknown.
Page updated September 24, 2026.
The gap
You know precisely what a referral agency charges per move-in, because they invoice you. Every other channel's cost per move-in is a guess.
What was sold, to whom, and for how much.
The click, the keyword, the call, and what each one cost.
The file
Three things carry the match: who, how much, and when. Anything else is optional and only changes how the report can be sliced.
The inquiring family member, not the resident. This is the contact that appears on both the prospect record and the billing record.
From the billing system rather than the CRM, in most operators. The CRM hands off at deposit and the money lives downstream.
Used consistently. Move-in date is the usual choice for attribution.
Mapped as Location, for an operator with several communities. The care type is not a column here: assisted living or memory care beside a resident's billing records the care that person needs, which is health information CloseRev does not take.
Step by step
Written for somebody with WelcomeHome open in the next tab. Report names vary by edition, so each step says what to look for.
One row per inquiry carrying the inquiring family member's phone or email and the source as recorded.
In most operators this comes from the billing or property system rather than the CRM, because the CRM hands the prospect off at deposit. Two exports and a join is the normal shape here, not a failure.
The cycle runs a hundred days and more, and independent living routinely runs past three hundred. A short file matches almost nothing.
Paid search, paid social and a call export, as rows in the same lead file as the prospects, each with its source named — senior living inquiries arrive by phone more often than by form.
This is the comparison worth running: your own channels' cost per move-in against a fee you already know.
What comes back
Revenue by channel, the count of sales behind each figure, and an honest bucket for the ones nobody could trace. Sample figures, from the worked example on the Senior Living page — not from a WelcomeHome account.
| Channel | Share | Sales | Revenue |
|---|---|---|---|
| Google Ads | 3 | $385,000 | |
| Referral agencies | 3 | $311,000 | |
| Meta Ads | 1 | $103,500 | |
| Community events | 1 | $74,000 | |
| Direct / Unknown | 5 | $606,500 |
Unmatched sales stay in Direct / Unknown. They are never spread across the paid channels to make the total look better.
The argument
A placement agency's fee is roughly a month's rent and it arrives as an invoice attached to a named resident. That makes it the one channel in the whole mix with an honest, countable cost per move-in.
Every other channel is measured in inquiries and tours. So the comparison an operator most wants to make — what a move-in from our own website costs against what the agency charges for one — cannot be made, and the aggregator keeps the volume by default.
Adding the agency's placements to the lead file, under the agency's name, puts both on the same axis. Sometimes the answer is that the agency is good value, and that is a finding worth having in writing rather than a suspicion.
Senior living CRMs are built around the sales process, and the sales process ends at the deposit. What the resident then pays every month, and how that changes with level of care, lives in the billing or property system.
That means the honest version of this report needs two exports and a join, and any vendor promising a single-click answer is either only using the CRM's own source field or quietly ignoring the revenue. Saying so up front is more useful than pretending otherwise.
The join is the responsible party's contact detail, which both records carry because both need somebody to contact.
Two channels can produce move-ins at the same cost while one produces residents who stay nine months and the other residents who stay two years. Cost per move-in rates them identically and is wrong by more than double.
Because the match is on the resident's household, every month billed credits the channel that produced the inquiry, and level-of-care increases credit it too. That is where much of the revenue growth in assisted living actually comes from, and no inquiry-based report can see any of it.
The person who filled in the form is an adult child, often in another state. The person on the billing record is their parent. A join on name finds nothing and the report reads as though the website produced no move-ins at all.
The match runs on the contact detail that appears in both files — the family member's phone or email, which the CRM keeps on the prospect and the community keeps as the responsible party. Where neither detail agrees, the move-in stays in Direct / Unknown rather than being linked on a guess.
Senior living sales run through stages that behave very differently: a tour, a deposit, a move-in, and sometimes a deposit that is refunded when a family's circumstances change. Counting deposits as conversions flatters whichever channel is best at generating interest, which is frequently not the channel that produces residents.
Keep deposits out of the sales file: every row there counts as a sale, so only billed rent belongs in it. For an operator reporting occupancy progress to an owner, that is the difference between a number that has to be restated and one that does not.
What the report does show per channel is inquiries beside move-ins and the rent they billed, which is where two apparently similar sources can turn out not to be similar at all.
Fair questions
On the touches and sources it holds. What it does not hold is the rent the move-in went on to bill, which is in the billing system — joining those two is the job.
Which is why the match is on the household rather than a session. The gap costs nothing.
Yes, and that is the honest shape of this segment. Anything claiming one file is either ignoring the revenue or using only the CRM's source field.
Prospects with lead source and the inquirer's contact detail, plus move-ins or billed rent with amounts and dates.
Because senior living CRMs hand off at deposit and the revenue lives in the billing system. The join is the responsible party's contact detail.
Yes, and it credits the channel that produced the original inquiry.
Yes — add the agency's placements to the lead file under its name and both are ranked on move-ins and revenue.
Not with a care-type column. Billed rent already carries the difference, because each resident counts at what their care actually bills, and a community column mapped as Location splits the report by building.
Yes — map a community column as Location.
At least twelve months; more where independent living is a meaningful share.
No. A contact detail, an amount and a date.
Not required, but most inquiries arrive by phone, so it is the strongest second file.
The responsible party's contact detail, the billed revenue and a date. No assessments, no health information, no family correspondence. It is encrypted in transit and at rest, isolated to your community's workspace, and deletable — rows and original file — whenever you choose.
Keep deposits out of the sales file instead: every row there counts as a sale, so a refunded deposit left in would be counted as revenue.
Not deposits, which stay out of the sales file. Per channel, the report shows inquiries beside move-ins and billed rent.
By trade
What the report looks like once the export is in, written for each one.
Other systems
Running more than one system, or comparing? The method is the same and the columns are not.
WelcomeHome and the other product names and logos on this page belong to their owners and are shown to identify the software a file comes from. CloseRev is not affiliated with or endorsed by them, and connects to none of them: it reads a file you export.
From 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 articleCall tracking answers one question well: which campaign produced the ring. It has no view of what happened after the call ended, which is where the money is decided. This is what the gap costs, and how to close it without replacing the call tracker you already have.
Read the articleThe cheapest leads you buy can turn into your most expensive customers. Customer acquisition cost by channel divides what a channel cost by the new customers it actually produced, and for a business that closes by phone or in person those customers live in the sales records, not the ad dashboard. Here is the formula, which customers to count, fully loaded against paid-media CAC, blended against per-channel, untraced customers, payback and time lag, with a worked example where cost per lead and CAC rank four channels in different orders.
Read the articleStart today
Nothing to install in WelcomeHome, no API key, and no need to have been tracking anything until now. Last year works as well as this month.