Roofing CRM Reactivation: How to Find the Money Already in Your Database
Your CRM is not a mailing list. It is a history of properties, people, promises, permissions, and unfinished decisions. This is how to turn that history into a measured next-action system.
To find money in a roofing CRM, do not blast every old contact. Resolve contacts to properties, preserve permission and exclusion history, remove ineligible records, identify a specific serviceable opportunity, rank it, match the message to the known relationship, and compare the campaign with a holdout. The valuable unit is an eligible property with a defensible next action, not a row with an email address.
What matters most
- Clean and exclude before scoring; a model cannot rescue duplicate or ineligible records.
- Prior repairs, estimates that did not sell, and monitored not-ready properties need different reasons to reconnect.
- Keep original source, reactivation source, and latest touch separate so revenue is not double-counted.
- Channel eligibility and opt-outs travel with the household even when tools or vendors change.
What does “finding money in your roofing CRM” actually mean?
It means finding an eligible property with a timely, evidence-supported next action and enough expected contribution to justify contact. It does not mean treating every customer, estimate, lead, canvassing record, and imported spreadsheet as a fresh prospect.
Most roofing databases contain several kinds of latent value:
- an estimate that did not sell because timing, price, trust, or scope was unresolved;
- a prior repair that created a legitimate maintenance or replacement-planning relationship;
- a gutter, siding, ventilation, or ancillary customer whose roof was not the original job;
- a property inspected or canvassed before it was ready;
- a past replacement customer with an appropriate maintenance or warranty touch;
- a neighborhood near verified work where brand recognition may reduce friction;
- a property whose opportunity signal changed after the last “not now.”
Those rows also contain liabilities: duplicate people, bad addresses, stale owners, wrong phone numbers, conflicting permissions, unresolved complaints, existing active jobs, and notes that should not be exposed to a new vendor. A CRM becomes valuable when the system can distinguish the two.
The unit of analysis is the property opportunity
A contact is a person or communication endpoint. A property is the place where work may occur. An opportunity is a dated hypothesis about an appropriate next service. Permission is the legal and relationship basis for a particular channel. They are related, but they are not interchangeable.
One homeowner may own two properties. One property may have two decision-makers. One spouse may have opted out of calls while another email address remains eligible for a transactional message. A property may be high priority but have no permissible digital channel. A sound reactivation system keeps those distinctions instead of collapsing them into a single “lead score.”
Use a contribution-first equation for each segment:
expected campaign contribution = eligible properties × incremental contract yield × gross profit per contract − outreach cost − incremental inspection/sales cost
The word incremental matters. If ten prior customers would have called anyway, crediting all ten to a postcard makes the campaign look stronger without creating more work. A holdout or credible counterfactual estimates how many outcomes occurred because of reactivation.
A CRM row is not inventory. It becomes actionable only when identity, property, serviceability, permission, reason, owner, next step, and economics are sufficiently clear.
How much recoverable revenue is actually in a roofing CRM?
Estimate recoverable value by segment and constraint; never multiply every old record by the average roofing ticket. The database contains records at radically different levels of identity, eligibility, relevance, and intent. A good audit converts the raw count into an economic inventory.
Use this waterfall:
raw rows → resolved properties → serviceable properties → channel-eligible properties → segment-eligible opportunities → capacity-limited treatment cohort → incremental contracts → realized gross profit
For each stage, report the count removed and the reason. Then calculate three cases, downside, operating, and upside, with different incremental yield, gross profit, selling cost, cancellation, and collection assumptions.
A recoverable-inventory example
The following is an illustrative model, not a PorchRocket forecast:
| Step | Count | Explanation |
|---|---|---|
| Raw exported rows | 48,600 | Leads, contacts, customers, jobs, and imports before resolution |
| Resolved serviceable properties | 31,200 | Duplicates, nonproperty rows, and out-of-area records removed |
| No active job/dispute or hard exclusion | 26,900 | Current work and protected relationships excluded |
| At least one reviewed eligible channel | 18,400 | Eligibility evaluated per endpoint and channel |
| Defensible reactivation segment | 12,800 | Prior outcome supports a specific next action |
| Capacity-safe 60-day cohort | 4,000 | Sized to intake and inspection capacity |
Suppose the operating case assumes 0.55% incremental signed-contract yield, $4,200 gross profit per realized job, a 10% post-sign cancellation/nonrealization allowance, $18,000 of outreach cost, and $650 of incremental inspection/selling cost per signed contract. The cohort implies 22 incremental signed contracts before the allowance and about 19.8 realized-job equivalents.
19.8 × $4,200 − $18,000 − (22 × $650) = $50,860 estimated campaign contribution
The arithmetic identifies the decision inputs. It does not certify that the yield is attainable. A downside case might use 0.25% yield and lower gross profit; if that case produces an unacceptable loss, shrink the pilot or improve the evidence before increasing volume.
Value the queues separately
Do not assign one yield to the entire CRM. Build a ledger by segment:
| Segment | Eligible count | Specific unresolved decision | Primary offer | Capacity required | Economic input that matters most |
|---|---|---|---|---|---|
| Prior estimate, no sale | Enter | Scope, timing, financing, trust, competitor choice | Updated scope/timing review | Estimator time | Re-estimate and close rate |
| Prior repair | Enter | Maintenance, recurrence, replacement planning | Documented condition/maintenance review | Inspection time | Job mix and prior warranty status |
| Past customer | Enter | Maintenance or adjacent exterior need | Customer-specific service review | Service/inspection time | Repeat-job gross profit |
| Not-ready opportunity | Enter | Previously deferred decision | Confirm pause, review, or close | Call plus possible inspection | Trigger precision |
| Unworked or no-contact lead | Enter | Whether a valid need and decision-maker existed | Permissioned qualification | Intake capacity | Contactability and service fit |
| Lost to competitor | Enter | Future maintenance or new lifecycle event | Respectful future-service option | Low initially | Frequency and relationship risk |
Some queues should not be “monetized” now. Completed replacements inside a maintenance-free interval, unresolved complaints, people who clearly declined, and records with uncertain identity may be valuable only as exclusions or service obligations. Counting them as missed sales creates pressure to violate the relationship.
Put a confidence grade on the opportunity estimate
An owner-facing audit should label inputs:
- Observed: exact counts, outcomes, cost, and dates from the contractor’s systems.
- Derived: arithmetic such as deduplication, yield, gross profit, or aging calculated from observed fields.
- Assumed: future response, gross margin, cancellation, or cost used for planning.
- Unknown: missing or irreconcilable fields that could materially change the estimate.
This makes the “money in the CRM” claim auditable. If gross margin is an assumption and permission is unknown, say so on the first page. The right first engagement may be data repair and a small feasibility cell, not an expansive revenue projection.
Which roofing companies have recoverable value in their CRM?
A roofer has recoverable CRM value when its historical file contains identifiable, serviceable properties with a legitimate prior relationship, a current reason to review the property, and at least one eligible contact path. A large row count is not enough. The opportunity has to survive identity, permission, timing, capacity, and contribution tests.
The best candidates are usually contractors that have already paid to create observations: inspections, estimates, repairs, completed jobs, canvassing conversations, inbound inquiries, maintenance notes, or ancillary exterior work. Reactivation can recover value from that prior acquisition and field effort. It cannot turn an unrelated third-party list into a customer relationship by labeling the import “old leads.”
| Company/file situation | Recoverable asset | Sensible first cohort | Principal risk |
|---|---|---|---|
| Owner-led shop with spreadsheets and phone contacts | A small number of known estimates, repairs, and customers | Human-reviewed list with one relationship-specific next action | Missing permissions, duplicate people, and no durable outcome field |
| Growing roofer with inconsistent CRM discipline | Volume plus partial history across reps and stages | One segment after property resolution and reason-code cleanup | Automating ambiguous notes into inappropriate contact |
| Established local company with years of installs | Trusted relationship, maintenance history, and neighborhood proof | Repairs, unsold estimates, and appropriate lifecycle service, not blanket replacement | Soliciting recent replacement customers for work they do not need |
| Restoration-heavy contractor | Dated inspections, event context, documentation, and deferred decisions | Clearly eligible “not ready” or incomplete next-action queue | Recasting old event evidence as current damage or claim entitlement |
| Multi-branch or acquired operator | Multiple installed bases and lead histories | One branch/market with common definitions and identity conflict review | Duplicate outreach, disputed ownership, and incompatible consent history |
| Purchased “aged leads” with no contractor relationship | A vendor-supplied prospect file, not a CRM relationship | Evaluate as new acquisition under its documented origin and outreach authority | Misleading relationship language and unverified permission |
Recoverable value is not evenly distributed
A prior repair may contain a confirmed property, a real service relationship, dated observations, and a credible maintenance question. An unsold estimate may contain scope and timing evidence but also a clear reason the homeowner chose not to proceed. A completed replacement may be valuable for maintenance, warranty, referral, or adjacent exterior work while being a poor replacement prospect for years. The offer has to follow the relationship.
This is why a generic “checking in” blast underperforms as an operating system even when it produces a few jobs. It cannot tell the owner whether results came from strong prior relationships, households that would have returned organically, an unusually timely segment, or pure volume. Segment-specific treatment and a holdout turn known opportunity into a decision the company can repeat.
How old is too old?
There is no defensible universal age cutoff. Record age is only one dimension. Ask five questions:
- Can the current property and relevant person be identified with acceptable confidence?
- What exactly happened, when, and under which service or opportunity?
- Is there a current, evidence-supported reason for the next action?
- Is the chosen channel eligible now, and are all declines or exclusions preserved?
- Can the company serve and measure the response profitably?
A ten-year-old repair record with verified property identity and a timely maintenance reason may be more useful than a six-month-old web lead with no valid address, unclear consent, and repeated failed contacts. Conversely, a decade-old phone number attached to an unknown owner should not be “reawakened” because a score is high. The property may remain suitable for carefully governed address mail while the stale phone is ineligible.
Set freshness at the field level. Ownership, phone, email, roof observation, permit, service territory, and permission do not age at the same rate. Refresh what can legitimately be refreshed, retain its source and date, and route unresolved conflicts to review. “Updated record” should never mean a vendor silently replaced the historical customer with a commercially matched stranger.
Does roof-age monitoring create a reason to reconnect?
It can change priority, not reality. A prior note that a roof was relatively new, a dated repair, a permit history, or an estimated installation band can become more relevant as time passes. Updated evidence may justify asking whether the roof history has changed and offering an inspection or planning review. It does not prove present condition or need.
The strongest trigger combines prior relationship, elapsed time, and a current property signal. For example: a contractor repaired flashing seven years ago; the file identifies the same property; no subsequent full-replacement evidence appears; the property remains serviceable; the homeowner has not declined; and the company can offer a maintenance/condition review. Each fact narrows the next action without asserting that replacement is required.
In Florida, do not convert an estimated roof age into an insurance warning. The direct-mail guide’s Florida roof-age section explains the current statute, remaining-useful-life boundary, carrier-specific underwriting distinction, and why a proposed 2026 bill is not enacted law. The CRM treatment still needs history-aware copy: “our records show we repaired the roof in 2019” is different from “public records suggest an age range.”
Reactivate known opportunity or acquire a new audience first?
Start with the eligible known audience when four conditions are true: the historical relationship is usable, the current reason is specific, the response path works, and conservative incremental contribution clears the company’s threshold. The contractor has already paid to create some of the identity, trust, and context. That can make reactivation a more efficient first experiment than buying cold exposure.
Do not make it a doctrine. A small or young company may have no useful file. A mature company may exhaust the high-value segments. A CRM can also be full while every eligible record is already being worked correctly. In those cases, selected net-new roofing direct mail, search, referral, or canvassing may be the appropriate next cohort.
Compare both on incremental realized contribution and constrained capacity, not “free database” versus “paid media.” Reactivation still carries data, creative, channel, call, inspection, selling, and relationship costs. A familiar customer who would have returned anyway belongs in the holdout counterfactual, not in a claim that the campaign created all repeat revenue.
Questions that should stop a database-wide launch
Pause and narrow the work if the operator cannot answer:
- Which original objects and IDs created this row?
- Is the service address current, and is the contacted person still related to it?
- What was the last meaningful outcome rather than the last automated email?
- Has anyone opted out, complained, hired the company, or received another campaign since the export?
- Which exact channel basis has been reviewed for this treatment?
- What will the message say that remains true if the roof-age or property signal is wrong?
- Who owns a reply, how quickly, and what accepted CRM state proves the handoff happened?
- How will contracts, cancellations, collections, and gross profit return to the treatment record?
- Can the vendor return identity links, exclusions, outcomes, and derived fields at exit?
If the answers are missing, the first value is a better data contract and a rejection queue. That is still economic work. It prevents paid outreach, duplicate contact, relationship damage, and false reporting before the company asks the file to create revenue.
How clean does a roofing CRM need to be before reactivation?
Clean enough that a campaign can identify the property, honor every relevant exclusion, explain why the record is eligible, route the response, and measure the outcome. Perfection is not required. An explicit rejection queue is.
At minimum, an eligible reactivation record should have:
| Field group | Minimum viable information | Failure if absent |
|---|---|---|
| Property | Normalized address, serviceability, property ID | Duplicates, wrong territory, broken matchback |
| Relationship | Last meaningful interaction, outcome, service/job type | Generic or inappropriate message |
| Person/channel | Current contact endpoint, source/provenance where available | Wrong person or untraceable permission |
| Eligibility | Channel-specific consent/legal basis, opt-out/exclusion, frequency state | Compliance and trust failure |
| Workflow | Internal owner, campaign/segment, next action, due date | Responses become orphaned |
| Measurement | Original source, reactivation source, timestamps, final outcome | Double-counted or unattributable revenue |
Resolve without erasing history
Property-level entity resolution combines records likely to describe the same property while keeping lineage. Use standardized addresses, trusted property identifiers, contact relationships, and conservative match thresholds. Never merge solely because two records share a surname or an imprecise street string. Queue ambiguous matches for review.
When two records merge, preserve both original IDs and sources. Define field precedence rather than “newest wins” for everything. A recent phone number may supersede an old one; a recent marketing import should not supersede a previously recorded do-not-call request. Consent and exclusion need their own immutable event history.
What PorchRocket observed in the case-study file
The CRM analysis began with 162,400 raw contacts. Duplicate consolidation reduced the file by 14.7%, and invalid or nonserviceable records removed another documented portion of the working population. The resulting property-level analysis file contained 118,200 records after deduplication and exclusion.
One documented removal set contained 23,900 records that would otherwise have been mailed. At an illustrative $0.74 per mailer used in the case economics, not mailing those records avoided approximately $17,686 in variable mail cost. That is a case result, not a promise: a contractor’s avoided cost depends on channel, vendor, mailer format, postage, and how many invalid records it actually has.
The larger point is structural. Hygiene produces value before prediction. Every duplicate or prohibited record removed avoids waste and makes response, matchback, complaint, and frequency metrics more trustworthy.
The rejection report is part of the product
Require a count and reason for every record that does not enter scoring:
- duplicate consolidated into property ID;
- invalid or undeliverable address;
- outside service area;
- no eligible channel;
- company or household exclusion;
- active opportunity/current job;
- recent contact under frequency cap;
- unsupported property type;
- inadequate relationship history;
- ambiguous identity requiring review.
Do not permanently delete a excluded record merely to make the campaign file look clean. Keep the minimum exclusion artifact needed to prevent the record from reappearing through the next import, consistent with counsel, policy, and retention requirements.
Define the identity model before deduplicating
A reactivation system usually needs at least five objects:
- Property: the service location, with a stable internal ID and address history.
- Person or organization: the party with a relationship to one or more properties.
- Endpoint: phone, email, or mailing address, each with provenance and eligibility events.
- Opportunity/job: the dated commercial or service episode, including its outcome.
- Interaction: the call, message, visit, estimate, complaint, opt-out, or other event.
Model the relationships rather than flattening them into one row. The current owner may differ from the person attached to a 2019 repair. A property mailing address may differ from the service address. A phone may be shared by spouses or a property manager. The safe rule is not “merge more”; it is “merge only to the level the evidence supports.”
Each match decision should record the candidate records, features used, match score or rule, decision, version, and reviewer when manual. High-confidence address normalization can resolve duplicate spellings. Cross-property person matching deserves more caution. A false merge can reveal one customer’s history to another; a false split mainly creates duplicate pressure. Both matter, but their consequences differ.
Maintain field precedence by meaning
Do not use a universal newest-value-wins rule. Establish precedence for each field:
- a verified customer correction should outrank a purchased enrichment field;
- a hard opt-out event should outrank a later marketing import;
- current serviceability should come from the approved territory version, not an old opportunity;
- job outcome should come from the authoritative job/contract object, not free-text notes;
- a property characteristic can carry its source date and uncertainty rather than overwriting prior observations;
- original source should never be replaced by the latest campaign.
Retain null as “unknown.” Converting unknown permission to false may unnecessarily discard a possible reviewed channel; converting it to true creates risk. Route it to an eligibility decision queue.
Make corrections part of the learning loop
Every response can improve the file. Capture “wrong person,” “sold property,” “roof recently replaced,” “outside service expectation,” “do not contact,” and “duplicate” as structured outcomes. Do not bury them in call notes. Corrections should update future eligibility, preserve the source interaction, and be reviewable if a new vendor import conflicts later.
A campaign-quality review should calculate corrections per 1,000 attempted records and by data source. If one enrichment source produces most wrong owners or one imported list repeatedly restores exclusions, fix the upstream feed. Treating corrections as receptionist cleanup guarantees the same error next quarter.
Which old roofing leads should you contact first?
Within the eligible and serviceable population, start with records that have a clear segment hypothesis, calibrated opportunity, and an operational owner. Allocate scarce inspection capacity from the highest expected contribution downward. “Most recent” and “oldest lead” are both weak default strategies.
The case study used five operational segments:
| Segment | Why renewed contact might be relevant | Observed signed-contract yield in the case |
|---|---|---|
| Prior repair | The contractor has documented roof history and a legitimate service relationship | 0.958% |
| Prior estimate, no sale | Need was previously evaluated but timing, price, or decision prevented a contract | 0.786% |
| Ancillary-service customer | Existing relationship exists, but roof work was not the original service | 0.600% |
| Canvassed/inspected, not ready | A prior interaction established interest or timing, but no immediate job | 0.558% |
| Past replacement/maintenance | A maintenance, warranty, or future planning touch may be appropriate | 0.409% |
Each percentage is contracts divided by eligible contacted records in that segment during the study. The ordering is descriptive, not destiny. Segment sizes, age, creative, permission, brand, geography, and outcome mix differ. A prior repair does not mean a homeowner needs replacement; it means the existing relationship can support a more relevant question than a cold message.
Ranking performance must be validated through time
The case model used time-split validation: training occurred on earlier records and evaluation on later records. That is more realistic than randomly mixing the future into the past, because a production model must rank opportunities it has not yet seen under newer conditions.
Its validation metrics were:
- ROC AUC: 0.78;
- precision-recall AUC: 0.22 against a 7.2% event rate;
- calibration slope: 0.94;
- top-decile lift: 3.9;
- top 20% of ranked records captured 55.2% of future observed opportunities.
ROC AUC asks how often the model ranks a later positive above a later negative across thresholds. It can look respectable in an imbalanced population even when positive predictions are inefficient, so precision-recall AUC is reported alongside the 7.2% base rate. Calibration asks whether predicted levels match observed frequencies. A model can rank correctly but overstate the chance of conversion, which causes a company to overbudget and overload its calendar.
Top-decile lift and top-20% capture are operationally intuitive: how concentrated is the opportunity near the top? They still do not prove that an individual roof needs work. They indicate where an eligible inspection offer may deserve capacity first.
Guard against leakage and inherited bias
Leakage occurs when a field available only after the outcome sneaks into scoring, for example, a later contract status or a note written after inspection. Historical bias occurs when the model learns past sales coverage, rep behavior, or data completeness rather than underlying opportunity. Test for both.
Exclude protected-class attributes and direct proxies. Review geography and property fields for unfair effects and legitimate operational necessity. Publish the fields/categories used, their dates, and the human review point. Monitor performance and false-positive burden by relevant operational cohorts. “The model found it” does not excuse a decision the business cannot explain.
What should a roofing CRM reactivation campaign say?
A reactivation message should accurately acknowledge the prior relationship, explain why contact may be useful now, avoid implying known damage or coverage, and offer one relevant next step. It should never pretend the sender remembers more than the record supports.
Prior estimate that did not sell
We prepared a roofing estimate for this property in [month/year], but the project did not move forward with us. We are reviewing older estimates so homeowners can confirm whether the scope, timing, or material options still make sense. If you would like an updated inspection or estimate, choose a time here. This is not a statement that work is now required.
Do not write “your roof has gotten worse” unless a qualified recent observation supports it. A stale estimate establishes history, not current condition.
Prior repair customer
We completed a repair at your property in [year]. We are offering prior customers a documented maintenance check so small issues can be reviewed before they become disruptive. If you would like us to look at the current condition, request a visit here.
The exact offer must match the original contract, warranty, and company policy. Do not imply free warranty work when it is not included.
Ancillary customer
Thank you for trusting us with [gutter/siding/ventilation] work at your property. We are reaching out to existing customers who want one contractor to document the rest of the exterior. If a roof condition and replacement-planning review would be useful, you can request one here.
Previously not ready
When we last spoke in [month/year], the timing was not right. We are checking whether you would like to keep the project paused, request an updated review, or stop future follow-up. Choose the option that fits; no response is required.
That final choice is valuable. A clear “not interested” or “do not contact” improves both trust and the next campaign’s denominator.
Which channels can a roofer use for CRM reactivation?
Eligibility is channel-specific, jurisdiction-specific, and relationship-specific. A prior CRM record is not blanket permission to call, text, email, or use an artificial voice forever. Have qualified counsel review the actual audience, script, consent record, dialing technology, state footprint, and vendor arrangement.
For commercial email, the FTC’s CAN-SPAM compliance guide explains that the law covers commercial messages, including B2B email. Among its requirements are accurate header information, nondeceptive subject lines, identification as an advertisement where applicable, a valid physical postal address, a clear opt-out, and honoring opt-out requests within 10 business days. Hiring a vendor does not remove the sender’s responsibility to monitor compliance.
For outbound telemarketing, the FTC’s Telemarketing Sales Rule guide covers National Do Not Call access, entity-specific requests, established-business-relationship limits, calling-time and disclosure rules, prerecorded messages, seller responsibility, and recordkeeping. The guide states that sellers and telemarketers using the registry must synchronize against it at least every 31 days. A company-specific do-not-call request must be honored even when another exception might otherwise be considered.
The registry is not an obscure edge case: the FTC reported more than 258 million active registrations and more than 2.6 million complaints in its Fiscal Year 2025 Data Book. State telemarketing and privacy rules can be more restrictive.
For artificial or prerecorded voice, the FCC has ruled that AI-generated voices fall within TCPA restrictions on artificial or prerecorded voice calls. Do not assume that labeling a tool “conversational AI” avoids rules governing the technology or the purpose of the call. Texting also requires a channel-specific TCPA/state-law review.
Postal mail is often operationally simpler, but it is not free from truth-in-advertising, privacy, contract, data-use, or company exclusion obligations. One household-level contact-pressure ledger should coordinate all channels so three vendors do not each send their own “first follow-up.”
Use an endpoint-level channel-eligibility ledger
A single marketing_consent = yes field cannot represent the decisions above. Store eligibility as events and evaluate it at send time. A practical ledger includes:
| Field | Purpose |
|---|---|
| endpoint ID and type | Identifies the exact phone, email, or postal endpoint being evaluated |
| person/property relationship | Shows whose relationship supports the communication and where the service applies |
| channel and purpose | Separates voice, automated voice, SMS, email, and mail; distinguishes marketing from service communication |
| basis/source artifact | Records where the business obtained the endpoint and the evidence relied on |
| collected timestamp and disclosure version | Shows when and under what language the event occurred |
| jurisdiction/context | Preserves relevant state/location and business context for review |
| revocation/opt-out events | Captures words, channel, timestamp, scope, and source system |
| DNC/exclusion check | Stores list/source/version and check time where applicable |
| frequency state | Coordinates prior and scheduled contacts across tools |
| decision and policy version | Records allowed, blocked, or review, and which approved rule decided it |
| expiration/recheck date | Prevents a once-valid evaluation from becoming permanent by accident |
The system should be able to answer, “Why was this exact message allowed to go to this exact endpoint at this time?” If the answer is a salesperson’s memory or a vendor checkbox, the record is not ready for automated scale.
Make revocation propagate faster than campaigns launch
Test opt-outs end to end. Submit an email unsubscribe, send a natural-language SMS revocation, ask a call handler not to call again, and enter a company-level exclusion in the CRM. Verify that every active vendor and queued campaign receives the restriction before another contact can occur.
Keep a minimal exclusion key after other marketing data is deleted so the endpoint does not reappear in the next purchased or restored file. Define how household-level requests are interpreted, who resolves ambiguity, and how service/warranty communications remain separated from promotional outreach. Counsel should approve that policy for the operating states and channels.
Coordinate contact pressure across segments
A property could qualify simultaneously as a prior estimate, a recent weather intersection, a neighbor of a completed job, and a ranked direct-mail target. Choose one communication owner and next-best action. The ledger should reserve the property when a campaign is scheduled, release or advance it after the outcome, and prevent independent tools from stacking touches.
Contact pressure is not just a compliance counter. It is part of measurement. When the “CRM reactivation” cohort also receives mail and canvassing, the experiment estimates a bundle or becomes contaminated. Record all intentional exposures and design the comparison around the actual business-as-usual policy.
Does personalization improve roofing CRM reactivation?
In PorchRocket’s 72,000-record randomized trial, history-aware personalized outreach outperformed generic outreach on response and signed-contract yield. The result supports testing legitimate relationship context; it does not support exposing private notes or inventing familiarity.
The eligible population was assigned in three equal arms:
| Arm | Records | Response rate | Signed contracts | Contract yield |
|---|---|---|---|---|
| Holdout | 24,000 | 0.35% | 10 | 0.042% |
| Generic outreach | 24,000 | 1.75% | 62 | 0.258% |
| History-aware personalized outreach | 24,000 | 3.40% | 161 | 0.671% |
Personalized versus generic outreach produced a response relative risk of 1.94 (95% CI 1.73–2.18) and a signed-contract relative risk of 2.60 (95% CI 1.94–3.48). The holdout again shows nonzero background conversion; not every contract observed after outreach was necessarily incremental.
Using the case-study assumptions of $15,000 average signed revenue, 35% gross margin, and $5,250 gross profit per contract, the personalized arm represented $2.415 million in signed revenue and modeled $742,505 in campaign contribution. Its variable acquisition cost was approximately $638 per signed contract, compared with approximately $835 for generic outreach. The personalized arm’s modeled contribution was $468,800 higher than the generic arm under the stated cost model.
Those figures are not EBITDA. They subtract outreach and incremental inspection/sales expense from modeled job gross profit but not fixed overhead, taxes, owner compensation, financing, or every possible cancellation/collection difference. Replace the ticket, gross-margin basis, outreach cost, and sales cost before planning a campaign.
Personalization should use the minimum accurate context needed to make the next step relevant. It should not quote sensitive free-text notes, mention a family event, reveal an inferred financial situation, or tell one household member about another’s interaction. Prefer controlled fields and approved templates over unrestricted model access to the entire CRM.
How should each roofing CRM segment be worked?
Give each segment its own entry rule, exclusion rule, offer, response owner, exit state, and cooling period. A campaign is not segmented merely because the email has five subject lines.
Prior estimates that did not sell
Separate at least: no decision, timing deferred, price/financing, scope disagreement, chose competitor, unreachable, and administratively closed. Review the original estimate age, whether the scope can still be relied on, active warranties/competitor relationship risk, and any complaint.
The response owner needs the prior scope, date, decision reason, and current next step before contacting the homeowner. Do not send an old dollar amount as if material and labor prices are unchanged. Offer a current review, label what may need to be remeasured or reinspected, and close the record cleanly if the homeowner confirms another contractor completed the work.
Exit states should include: updated inspection scheduled, estimate refreshed, future month agreed, project completed elsewhere, no current need, unable to serve, opt-out, and needs human review. “Contacted” is not an outcome.
Prior repairs and service customers
Check the contract, warranty, repair location, prior photos, unresolved service history, and promised maintenance terms. The campaign must not convert a covered service obligation into a new sales pitch or imply that an inspection is included when it is not.
Use a service-first owner for open concerns. A mature workflow can route stable, satisfied customers to an appropriate maintenance or replacement-planning offer while routing recurrence, leak, or workmanship language directly to service. Mixing those queues makes the front desk appear responsive while increasing customer risk.
Not-ready and long-cycle opportunities
“Follow up later” needs a reason and date. Store the condition that would make contact useful: homeowner-requested month, financing milestone, property closing, planned renovation, repair-monitoring interval, or a verified external trigger. If no condition exists, ask once for a preferred disposition and stop indefinite pursuit.
Triggered outreach should enter a review queue with evidence and expiration. A new model score alone should not override a direct “not interested” or channel restriction. The operator should see the prior conversation beside the trigger so the message does not contradict it.
Unworked and unreachable leads
Distinguish a lead that never received a timely attempt from one that received six attempts on bad endpoints. First repair routing and source tracking: why was it unworked, who owned it, and can the same failure recur? Validate service area and endpoint before recontact.
The offer is qualification, not feigned continuity. Do not write “circling back on our conversation” when no conversation occurred. If the original source or permission cannot be established, hold the endpoint for review or choose a channel with a defensible basis; age does not cure uncertain provenance.
Completed replacement customers
Protect the relationship and the known lifecycle. Appropriate work may include documented warranty/service communication, maintenance guidance promised by the contractor, referral requests handled under an approved policy, or adjacent exterior needs. Immediate replacement solicitation is nonsensical and signals that the CRM cannot recognize completed work.
Each completed job should exclude prospecting for the relevant service until a defined event or lifecycle point. If ownership changes, do not expose the prior owner’s financial or claim information to the new owner. Start a new relationship record while preserving the property’s appropriate technical history under access rules.
Build a handoff contract for every positive response
The campaign owner and response owner should agree on the record delivered:
- property and decision-maker identity with confidence;
- segment and exact prior relationship;
- campaign, creative, channel, and promise made;
- stated need and urgency in the homeowner’s words;
- serviceability and job-type result;
- appointment or callback status;
- consent/opt-out changes;
- accountable owner and due time;
- source documents safe and necessary for the next person.
The receiving team either accepts the record or rejects it with a reason within the service target. Silent handoff failure is measured as a workflow defect, not as low lead quality.
How do neighborhood and trigger-based reactivation work?
Neighborhood and trigger systems work when they convert a vague “follow up someday” into a dated, reviewable hypothesis. They fail when adjacency or a threshold is treated as proof of property condition. Both approaches need exclusions, expiration, and a human-visible reason.
Risk-adjacency experiment
In a separate 48,000-record neighborhood study, 24,000 general records were compared with 24,000 records selected through risk adjacency around relevant activity/evidence.
| Cohort | Records | Contracts | Contract yield | Modeled contribution |
|---|---|---|---|---|
| General neighborhood | 24,000 | 24 | 0.100% | $90,015 |
| Risk-adjacency | 24,000 | 101 | 0.421% | $442,230 |
The observed signed-contract relative risk was 4.21, and modeled contribution differed by $352,215 under the case assumptions. Adjacency can capture local brand recognition, shared building age, event exposure, or operational density. It does not establish that a neighboring home is damaged or has the same roof system. The message must stay at the level of “we are working nearby” or “we are offering a review in this area,” when those statements are true.
Monitored “not ready” experiment
The monitoring population contained 31,800 properties previously classified as not ready. During the study, 6,240 crossed a pre-defined opportunity threshold and were assigned to annual-contact or triggered-contact arms of 3,120 each.
| Follow-up | Records | Contracts | Contract yield | Modeled contribution |
|---|---|---|---|---|
| Annual schedule | 3,120 | 13 | 0.417% | $61,072 |
| Threshold-triggered | 3,120 | 38 | 1.218% | $181,954 |
Triggered follow-up recorded a signed-contract relative risk of 2.92 and $120,882 more modeled contribution than annual follow-up in this sample. The credible operational advantage is timing: contact occurred when a defined signal changed rather than on an arbitrary anniversary.
Every trigger should expose:
- what changed;
- source and data-as-of date;
- confidence/uncertainty category;
- why the change is relevant to the approved offer;
- how long the trigger remains eligible;
- which exclusions were checked;
- who reviewed it;
- what correction feedback is captured.
Across personalized CRM outreach, neighborhood selection, and threshold monitoring, the case recorded 300 signed contracts, $4.5 million in signed revenue, and approximately $1.37 million in modeled campaign contribution. These were distinct operational uses summarized together; they should not be presented as a single randomized treatment or a guarantee for another database.
How should a roofing company measure CRM reactivation?
Measure from the eligible property population through collected economics, while preserving the original relationship source and the reactivation treatment separately. Otherwise reactivation steals credit from the source that created the relationship, or the original source hides the value of the new work.
Use these fields:
original_source: how the property/person first entered the CRM;reactivation_campaign: the new experiment/treatment;latest_meaningful_touch: the most recent operational interaction;eligibility_as_of: when exclusion and serviceability were evaluated;segment_at_assignment: fixed before treatment;holdout_or_arm: locked assignment;response,booking,completed_inspection,estimate,contract,cancellation,collectiontimestamps;gross_profit_basisand incremental campaign/sales cost;- opt-out, complaint, correction, and disqualification reason.
Funnel and quality dashboard
| Layer | Core metrics |
|---|---|
| File quality | raw, resolved properties, duplicates, invalid, unserviceable, excluded, eligible |
| Model/segment | volume, observed opportunity, calibration, lift/capture, age/freshness |
| Contact | attempted/delivered, response, opt-out, complaint, channel failure |
| Sales | qualified response, booked, completed, estimated, signed, cancelled |
| Economics | gross profit basis, outreach cost, inspection/sales cost, CAC, contribution |
| Incrementality | holdout outcomes, mailed-minus-holdout lift, uncertainty |
| Capacity | days to appointment, unworked response age, no-show, rep utilization |
Report by assignment cohort, not only by the month a contract closed. July closings can come from May and June treatments. If every July contract is divided by July sends, the denominator and outcome population do not match.
Set scale and stop rules before launch. A segment might scale when its conservative contribution is positive, opt-outs and complaints remain inside limits, calibration is acceptable, and response queues meet SLA. It should pause when a exclusion sync fails, the contact-pressure ledger is incomplete, data freshness expires, a channel basis is uncertain, or capacity causes response aging.
Diagnose the first broken denominator
Do not respond to every weak cohort by changing the score. Trace the waterfall:
| Symptom | Inspect first | Likely class of problem |
|---|---|---|
| Large drop from raw to resolved properties | imports, address normalization, object model, duplicate rules | Data architecture |
| Large eligible population but few deliverable endpoints | endpoint age, provenance, validation, prior capture process | Data collection |
| High delivery, low response across every segment | offer, sender recognition, timing, creative, channel | Market/message |
| One segment responds and another does not | segment hypothesis and relationship accuracy | Allocation |
| Strong response, poor qualification | misleading offer, stale property/serviceability, weak intake | Promise/handoff |
| Strong bookings, low kept inspections | scheduling delay, confirmation, routing, homeowner expectation | Operations |
| Normal estimates, low signed yield | estimate quality, price, follow-up, rep/territory differences | Sales |
| Good signed yield, low realized profit | cancellations, collections, job mix, gross-margin basis | Economics |
| Opt-outs or complaints concentrate by source | permission provenance, frequency, false familiarity | Eligibility/trust |
| Holdout converts nearly as well as treatment | organic returns, concurrent touches, weak treatment | Incrementality |
Compare assignment cohorts using fixed windows. A trigger cohort may be inherently more time-sensitive than an annual cohort; a descriptive difference is not automatically the treatment effect. Preserve intention-to-treat even when a recipient is unreachable, because reachability is part of the operating strategy that was assigned.
Reconcile the case-study economics
For the personalized trial arm:
161 contracts × $15,000 = $2,415,000 modeled signed revenue.$2,415,000 × 35% = $845,250 modeled contract gross profit.$845,250 − $742,505 reported campaign contribution = $102,745 campaign and incremental selling cost.$102,745 ÷ 161 = $638.17 variable acquisition cost per signed contract.
For the generic arm, the reported $468,800 contribution difference implies $273,705 of modeled contribution ($742,505 − $468,800). Its gross profit is 62 × $5,250 = $325,500, so campaign and incremental selling cost was $51,795, or about $835.40 per contract. The rounded “$835 CAC” is a display value; source totals control the reconciliation.
That reconciliation is useful because it reveals what a vendor must provide: contract count, per-contract gross-profit basis, total channel cost, and total incremental selling cost. A dashboard that shows only $2.415 million of pipeline has not calculated return.
Should you buy CRM reactivation software or run it manually?
Run it manually when the eligible file is small, the segment logic is simple, and a trusted owner can enforce permissions and outcomes. Buy or use a managed system when identity resolution, multiple channels, recurring triggers, experimentation, and audit requirements exceed that owner’s repeatable capacity. Automation is justified by complexity and recurrence, not by the word AI.
| Model | Best fit | Main advantage | Main risk |
|---|---|---|---|
| Manual CRM view/list | Small file and one-time campaign | Cheap, visible, quick to learn | Inconsistent exclusions and no repeatable trigger |
| CRM-native automation | Clean records and adequate native workflow | Fewer systems and direct writeback | Limited resolution/model/testing depth |
| Specialist software | Internal data/marketing team | Control and repeatable orchestration | Integration and model-governance burden |
| Managed reactivation | Owner wants outcome/process support | Faster design and operational accountability | Vendor access, dependency, and contract quality |
| Custom build | Large, differentiated data capability | Maximum control and proprietary learning | Ongoing engineering, monitoring, security, and compliance cost |
Ask a vendor to demonstrate:
- property-level resolution with preserved original IDs;
- channel consent and exclusion lineage through an import/export cycle;
- exact model validation period, outcome, baseline, calibration, and leakage tests;
- a human-readable inclusion and exclusion reason;
- a locked holdout and address-level matchback;
- duplicate event/write protection when CRM sync retries;
- field-level permissions and minimal vendor access;
- correction, export, retention, and deletion procedures;
- full cost including mail/message/call, data, integration, and managed labor;
- the owner responsible when a recipient opts out or a workflow fails.
Require contract terms that survive a vendor change
Reactivation vendors often touch the most complete customer file in the business. The statement of work and data terms should define:
- the contractor’s ownership of source records, resolved identities, exclusion history, campaign outcomes, and derived fields specific to its data;
- whether any customer or outcome data may be used to improve a shared model, and the approved scope if so;
- minimum field access by role, MFA, encryption, log availability, subcontractors, and production support access;
- allowed purposes, retention periods, deletion method, and timing for working files and backups;
- incident notification, investigation cooperation, and access suspension;
- export format for identity links, reason codes, assignments, treatments, outcomes, permissions, and exclusions;
- correction and dispute workflows for wrong matches or messages;
- service levels for exclusion propagation, inbound response, CRM writeback, and failed integrations;
- transition assistance and the date credentials, tokens, forwarding numbers, domains, and accounts return to contractor control.
The FTC’s small-business cybersecurity guidance advises limiting vendor access to what is needed, using security provisions in contracts, verifying compliance, and defining data handling and deletion. Apply those controls proportionally; a marketing label does not reduce the sensitivity of customer history.
Price proposals on the same volume and work definition. Separate platform, data, enrichment, communications, mail, phone, implementation, integration, managed labor, creative, analysis, overage, support, and exit charges. If compensation is tied to booked appointments or revenue, define duplicates, existing active work, attribution, cancellations, collection, margin basis, disputes, and the holdout treatment. Misaligned definitions can make a vendor appear successful while the contractor loses contribution.
PorchRocket’s CRM reactivation workflow is designed to sit around an existing CRM: resolve and prioritize the property universe, orchestrate approved outreach, capture inbound response, and return outcomes. It is a potential fit when there is a meaningful historical file, stable service area, known economics, response capacity, and an internal accountable owner. It is not a fit for buying unrelated third-party “old leads,” bypassing permission, guaranteeing appointments, or replacing the contractor’s responsibility for sales and service.
A 30-day roofing CRM reactivation plan
The first month should produce a controlled, auditable pilot, not a database-wide blast. Each week closes one class of failure before contact volume increases.
Week 1: inventory and data contract
- Export objects, fields, attachments counts, stage definitions, users, automations, and exclusion sources.
- Define property, person, opportunity, job, and campaign IDs.
- Measure missingness, duplication, invalid endpoints, stale ownership, unserviceable records, and unresolved complaints.
- Choose the channel/legal owner and the system that controls final exclusion.
Week 2: resolve, exclude, and segment
- Normalize addresses and create conservative property relationships.
- Preserve original source and every consent/opt-out event.
- Reject ineligible records with reason codes.
- Define two or three relationship segments and one clear offer for each.
- Calculate conservative break-even yield and capacity by segment.
Week 3: treatment and instrumentation
- Write channel-specific, history-aware creative with approved variables.
- Review scripts and permissions with qualified counsel for the actual states and technologies.
- Lock holdout/treatment assignment.
- Configure durable source fields, call/form capture, booking, owner, and next action.
- Test opt-out propagation and CRM write failure.
Week 4: launch small and inspect
- Release a capacity-safe cohort.
- Review every critical defect and a random sample of normal interactions.
- Monitor response aging, bookings, opt-outs, complaints, bad-data corrections, and calendar load.
- Do not reshuffle assignment because early response “looks slow.” Preserve the test unless safety/compliance requires stopping.
- Close the cohort only after the defined sales/collection window matures.
Use the first result to update list quality, calibration, creative, channel mix, and capacity, not just to decide whether to send more.
Once the reactivation cohort matures, compare its incremental contribution and constrained sales-hour use with the other channels in the roofing lead-generation guide. Do not let a strong owned-data result absorb the budget required to win a new market, or let a weak first pilot erase a correctable data or intake problem.
Roofing CRM reactivation questions owners ask
How old is too old for a roofing lead?
Age alone does not decide. A ten-year-old completed repair with accurate property history and a legitimate maintenance reason may be more useful than a six-month-old purchased lead with unknown consent. Set segment-specific recency, permission, data-freshness, and frequency rules.
Should I call every estimate that did not sell?
No. Exclude active disputes, clear opt-outs, unserviceable properties, duplicate opportunities, and records without a defensible channel basis. Segment the remainder by prior outcome and reason lost. “Went with competitor” deserves a different decision from “timing next year.”
Can I text old customers?
Do not infer texting permission from being a customer. Consent, message purpose, technology, revocation, state law, and existing agreements matter. Have counsel review the actual workflow and preserve the consent event/source rather than a single unchecked “SMS okay” box.
Is email safer than calling?
It has a different rule set, not no rule set. CAN-SPAM covers commercial email and requires accurate/nondeceptive messaging, a postal address, opt-out mechanism, and timely honor of opt-outs. State privacy, contractual, platform, and relationship concerns still apply.
How large should my database be before scoring is useful?
There is no magic count. Scoring adds value when opportunity is meaningfully heterogeneous and capacity is constrained. With a few hundred clean records, explicit rules and human review may outperform a model because the sample is too small to validate. Start with segment economics and hygiene; add model complexity only when it changes allocation.
Does PorchRocket replace JobNimbus, AccuLynx, Roofr, or ServiceTitan?
No. Those platforms can serve as the system of record. PorchRocket is intended to identify and act on opportunities around that record, then write outcomes back. The best roofing software guide owns the system-of-record decision.
Who should answer the responses?
An employee, live service, AI, or hybrid can work if it understands the campaign, has accurate service and booking rules, writes a complete record, and escalates exceptions. The AI receptionist for roofing guide provides that procurement and test framework.
Methodology and limitations
The PorchRocket CRM evidence combines data-hygiene analysis, time-split model validation, and three field comparisons. The randomized outreach trial provides stronger causal evidence than descriptive segment yields; none of it guarantees another contractor’s result. The source record is PorchRocket_CaseStudy.docx in the project research file.
The main outreach trial assigned 72,000 eligible records equally to holdout, generic, and personalized arms. Results are intention-to-treat. Personalized-versus-generic response and signed-contract relative risks are reported with 95% confidence intervals. Holdout outcomes show background conversion but can be affected by untracked contacts or organic returns.
The neighborhood comparison used general and risk-adjacency cohorts of 24,000 each. The threshold-monitoring test used 6,240 properties that crossed a pre-defined threshold and compared 3,120 annual with 3,120 triggered follow-ups. Their populations and treatments differ; combining their 300 contracts is an economic portfolio summary, not a single causal estimate.
Model validation used a later time period, with ROC AUC, precision-recall AUC, calibration slope, lift, and capture. Missing-not-at-random data, imperfect address matching, changing CRM practices, historical rep/territory bias, feature leakage, and population drift can affect those metrics. A model trained on what salespeople previously worked can learn coverage patterns rather than need.
Economic reporting assumes $15,000 average signed contract, 35% job gross margin, and $5,250 gross profit per contract, then subtracts outreach and incremental inspection/sales cost to estimate campaign contribution. It is not EBITDA and does not include every fixed cost, tax, financing effect, cancellation, or collection difference. Substitute actual company economics.
Channel eligibility depends on content, purpose, consent, relationship, technology, jurisdiction, and evolving law. The FTC and FCC sources below are starting points, not a legal opinion. Contractors remain responsible for vendors, opt-outs, recordkeeping, and state-specific requirements. Property and event signals prioritize human review; they do not diagnose condition, establish homeowner need, or decide insurance coverage.
Sources used in this guide
Sources are linked at the claim they support and collected here for auditability. Vendor features and prices can change; verify them before purchasing.
- CAN-SPAM Act compliance guide for businessFederal Trade Commission: Official requirements for commercial email, including B2B email and opt-out handling.
- Complying with the Telemarketing Sales RuleFederal Trade Commission: Official seller and telemarketer guidance, Do Not Call responsibilities, and prerecorded-call rules.
- National Do Not Call Registry Data Book FY 2025Federal Trade Commission: Current scale of registrations and complaints; published December 2025.
- FCC declaratory ruling on AI-generated voicesFederal Communications Commission: AI-generated voices fall within TCPA restrictions on artificial or prerecorded voice calls.
- Cybersecurity for small businessFederal Trade Commission: Official vendor-access, contract, retention, encryption, MFA, and oversight guidance.
- PorchRocket CRM reactivation field experimentsPorchRocket: Data hygiene, model validation, 72,000-record randomized trial, neighborhood test, and trigger test.
Find the records with a real next move.
PorchRocket can resolve the property file, show the hygiene loss, model segment economics, and design a controlled reactivation pilot without replacing your CRM.