How to follow up on unsold roofing estimates (without an agency or a new CRM)

Somewhere in your job system there are estimates that were quoted, sent to a homeowner, and then never closed. Not because the homeowner said no. Not because the job disappeared. Just because the follow-up never happened. The crew got busy, a storm came through, the office manager had three other things open, and the estimate aged out of the active pipeline.

Those estimates don't require a new CRM, an agency contract, or an AI voice bot. They require a ranked list and a repeatable 20-minute process your office manager can run every Monday. This guide walks through exactly how to do it, from pulling the right export to verifying the first paid job.

Step 1: Pull the right export from your job system

Every major roofing job-management platform has an estimate or opportunity export. Here's where to find it in the systems most roofing companies use:

AccuLynx: Go to Reports, then Estimate reports, and export the full estimate list filtered by status. Include Pending, Sent, and any custom status you use for proposals that didn't close. Export as CSV.

JobNimbus: From the Contacts or Jobs view, use the Bulk Export option. Filter by the statuses you use for unsold or dormant opportunities. CSV export is under the More menu.

Jobber: Quotes are exportable from the Reporting section. Filter for any quote with a status of Awaiting Response or drafted more than 30 days ago. Export to CSV.

Housecall Pro: Estimates are under the Reports tab. Export the full estimate list and filter by status after export if the platform doesn't support pre-filtered exports for your plan tier.

ServiceTitan: Use the Reporting module and the Estimates report. You can filter by date range and opportunity status before exporting. CSV is the default format.

You don't need to clean the file before moving to the next step. Inconsistent date formats, money values written different ways, and missing fields are all handled during import. The only thing you need is the raw CSV.

Step 2: Score and rank your backlog

Once you have the export, the goal is to turn a flat list into a ranked board where the opportunities at the top are the ones most worth calling this week.

A good ranking accounts for at least four things. Quoted amount relative to your own backlog, because a $16,000 replacement in the top 20% of your jobs is worth more attention than an $800 repair at the median. Dormancy window, because an estimate that's 45 days old is more actionable than one that's 600 days old. Reachability, because a contact with both an email and a phone on file is easier to reach than one with neither. And opportunity type, because your close rate on insurance jobs is probably different from your close rate on discretionary replacements.

You can approximate this ranking manually in a spreadsheet if your backlog is small, but the math gets complicated when you're working with 300 or 800 rows. Paidback does this automatically: you upload the CSV, confirm the column mapping, and within a few seconds you have a scored board with each opportunity's rank explained line by line. The free Backlog Audit plan lets you import up to 150 rows and see the full estimated recovery total before you pay anything.

Whatever method you use, the output you want is a short list of 10 to 20 opportunities worth contacting this week, sorted by realistic recovery value, with enough context on each row (quoted amount, days dormant, job type, contact details) that your office manager can start making calls or sending emails without doing additional research.

Step 3: Draft a first touch for each opportunity

The first touch for a dormant roofing estimate should reference the actual quote. Not a generic "we haven't heard from you" message. The homeowner needs to remember who you are and what the quote was about, ideally in the first two sentences.

A good first email for a dormant estimate includes the customer's name, the job type ("the 28-square replacement on the main roof"), the quoted amount, and roughly how long ago it was. It doesn't apologize for not following up sooner. It doesn't offer a discount that wasn't in the original quote. It just reconnects the homeowner with the conversation and asks a direct question, something like whether they're still planning on moving forward or whether their timeline has changed.

For phone calls, your office manager needs a script that covers the same points in 40 seconds or less: who you are, what you quoted, when, and one direct question. Reading from a script is fine for the first few calls. After that it becomes natural.

For text messages, keep it under 300 characters and include the job type and your company name. Texts that look like spam get ignored. Texts that look like they're from a real person who knows the customer's address and what they were quoted get responses.

If you're using Paidback, the drafts are generated automatically from the actual row data for each opportunity. You edit them before sending, which is the right behavior. A draft that's 80% there is faster than writing from scratch, but you should read it before it goes out.

Step 4: Send from your own address

This matters more than most people expect. A homeowner who got a quote from your company nine months ago is not going to respond warmly to a follow-up email from an unfamiliar domain or an SMS from a number they don't have saved. They'll assume it's spam or a scam.

When the follow-up comes from your own Gmail address, the from field shows your company name, the reply goes to your inbox, and the homeowner has a clear path to respond. It also means you retain the relationship regardless of which tool you use to send the message.

If you're using Paidback, connect your Google account once and every email in the queue sends from your own address. You don't need a separate email service provider or a shared inbox. Replies come back to wherever your Gmail account lives.

Step 5: Track what happens

For each contact you reach out to, log the outcome. Not in a spreadsheet, because spreadsheets don't enforce the distinction between activity and revenue. But somewhere that tracks the chain from first touch to booked to paid.

The statuses that matter are: contacted (you sent a message), replied (they responded), booked (they agreed to move forward), and paid (you received a payment and have an invoice reference). Everything before "paid" is activity. "Paid" is revenue.

When a job closes, enter the invoice reference, the paid amount, and the paid date. That's the only thing that should move your verified recovered revenue total. Not a booked appointment. Not a callback. An invoice reference and a paid date.

This discipline is what separates a backlog follow-up process that earns its time from one that generates activity reports you can't connect to real business outcomes.

Step 6: Do it again next Monday

The power of a backlog follow-up process is not in doing it once. A one-time push through 200 dormant estimates might recover a few jobs, but the real value is in building the habit. Your job system is generating new unsold estimates every week. Left unworked, those estimates accumulate into the same backlog problem in six months.

A Monday routine that takes 20 minutes, works the ten highest-value opportunities from the ranked board, and updates the outcomes for anything that came back the prior week is more valuable than a quarterly blitz. It keeps the board from growing, it builds your office manager's fluency with the process, and it produces a verified revenue total that compounds over time.

Paidback is built around this weekly rhythm. The Monday Recovery Digest surfaces the ten highest-value untouched opportunities each week, flags estimates that just crossed the stale threshold, and lists any bookings still waiting on payment confirmation, so your office manager knows exactly where to start without opening the board first.

Frequently asked questions

How old is too old for a dormant estimate? There's no universal cutoff, but estimates older than 12 to 18 months have a meaningfully lower response rate than ones in the 30 to 180-day window. That said, some homeowners sit on a replacement decision for years and respond to a well-timed follow-up. A ranked board lets you prioritize the higher-probability rows without ignoring the older ones entirely.

What if an estimate is missing the quoted amount? You can still score and rank the opportunity using your typical job value for that job type. Paidback falls back to the shop's typical job value setting for rows where the quoted amount is missing or couldn't be parsed, and labels those estimates clearly so you know the estimated recovery is based on a default rather than the actual quote.

How do I know if the follow-up is working? The only metric that matters is verified paid invoices attributed to the follow-up. Track the invoice reference, the paid amount, and the date, and compare that total to what you spent on the follow-up process. If the multiple is greater than one, it's working. If it's not, something in the ranking, the messaging, or the timing needs to change.