Industry 5 min read

Offline Conversion Tracking for Roofing Companies

How roofing companies and roofing-specialist PPC agencies use The Upload Offline Conversions App (TUOCA) to send call tracking + CRM/FSM revenue data back to Google Ads, Meta, Microsoft Ads, and TikTok with click-level attribution.

Roofing is a higher-stakes version of the home services offline conversion problem. Job values are 5-20x higher than HVAC or plumbing on the high end, sales cycles are longer, and the proportion of leads that actually close is lower — which means Smart Bidding without revenue data optimizes for the wrong outcome: inspection bookings instead of closed jobs.

This page is for roofing contractors, roofing-specialist agencies, and storm restoration operators running Google Ads, Meta, Microsoft Ads, and TikTok at meaningful budget levels.

The roofing conversion problem

A typical roofing funnel has more steps than typical home services:

Click ──► Landing page ──► Call (CallRail captures GCLID) OR Form fill (HubSpot captures GCLID)
                                    │
                                    ▼
                            Inspection scheduled
                                    │
                                    ▼
                          Inspection completed (sometimes free, sometimes paid)
                                    │
                                    ▼
                              Estimate / proposal
                                    │
                                    ▼
                  ┌─────────────────┴──────────────────┐
                  ▼                                    ▼
        No close (lost to competitor or         Job closed and contracted
        deferred)                                       │
                                                        ▼
                                              Job completed (FSM updates)
                                                        │
                                                        ▼
                                                Final invoice paid

Some inspection bookings never become a roof. Count your own: inspections booked, jobs sold. If Google Ads optimizes for “inspection booked” and you never upload the sold job, it bids the same for an inspection that became a $30,000 roof and an inspection that did not. That $30,000 is an example of a job, not a close rate.

Closing this gap is the entire reason offline conversion tracking matters for roofing.

Typical TUOCA setup for roofing

The architecture for roofing has more options than HVAC/plumbing because roofing-specific FSMs (JobNimbus, AccuLynx) are popular alongside the general-purpose ones (ServiceTitan, Jobber):

LayerTool
Call trackingCallRail or CTM
Form / CRMHubSpot (common for roofing) or native FSM forms
FSM / job managementServiceTitan, Jobber, JobNimbus, or AccuLynx
Conversion uploadsTUOCA
DestinationsGoogle Ads, Meta CAPI, Microsoft Ads, TikTok

Conversion action structure typically used:

Conversion actionWhen it firesSmart Bidding signal
Roof Inspection BookedCall/form → inspection on calendarLead-quality signal (lower weight)
Roof Job Closed (Contract Signed)Estimate → contract signed in CRM/FSMMid-funnel signal (medium weight)
Roof Job Completed (Revenue)Job marked complete in FSM with invoiceRevenue signal (highest weight)

These are possible measurement stages, not a recommendation to make every stage a primary bidding goal. Choose goals and values deliberately to avoid counting the same job revenue repeatedly.

Roofing conversion values

Use actual job revenue when available. These illustrative ranges show why a single fixed value can hide differences between jobs:

Service categoryIllustrative valueNotes
Roof inspection$0 - $250Often free; some operators charge for diagnostic
Minor roof repair$300 - $1,200Patches, leak fixes
Storm-damage tarping (emergency)$300 - $800Insurance-funded common
Mid-size roof repair$1,500 - $4,000Partial replacement, multi-area work
Partial re-roof$4,000 - $9,000One slope, garage roof
Full asphalt re-roof$8,000 - $18,000Most common closed-job size
Premium / metal re-roof$15,000 - $40,000Standing seam, copper, slate
Insurance-funded restoration$10,000 - $35,000Full hail/wind damage rebuild

These ranges are illustrative planning examples, not market benchmarks. Use your own invoice data and a consistent revenue definition, including how you handle tax, deposits and insurance payments.

When the job closes months after the click

Enhanced conversions for leads is not a way around an expired import window. Google’s import guidelines specify a 90-day limit after the associated last click for standard offline imports and 63 days for enhanced conversions for leads. Your conversion action’s configured window also matters. Upload promptly; waiting until the deadline leaves no room to fix a rejected record.

Record the actual completion time for a completed-job conversion. Changing that timestamp to fit a window would misrepresent when the job happened.

If revenue routinely arrives too late, choose a useful earlier milestone—such as a signed contract—and upload it while eligible. Keep its value definition clear: an expected value is different from collected revenue. Keep the eventual invoice in your CRM reporting even when it cannot be imported against that click.

Choose which milestone should guide bidding. Counting inspection, contract and completion values together can count the same customer journey several times; more conversion actions do not automatically mean better signals.

TUOCA Fusion Relays help with the operational problem: matching a later job to its earlier tracked lead using shared phone or email data. They cannot create missing attribution or extend Google’s deadlines. Start by comparing a few real lead dates and job dates, then configure the eligible outcome you want to send.

Import-window guidance checked against Google documentation on November 9, 2026.

Storm season patterns

Storm restoration roofing has unique seasonality:

  • Demand spikes during hail/wind events (regional, often days of frenzy followed by months of work).
  • Insurance dynamics mean revenue per job clusters in specific bands ($10K-$35K is the typical insurance-funded range).
  • Lead quality varies — storm-chaser competition and homeowner saturation can produce high-volume but low-close-rate leads during storm peaks.

TUOCA’s per-record audit trail and Smart Bidding revenue feedback help operators identify which campaigns produce closing storm leads vs. which produce no-show leads — a distinction that matters when CPL spikes during storm peaks.

  1. Connect CallRail (or CTM).
  2. Connect ServiceTitan / Jobber (native), or set up Webhooks from JobNimbus/AccuLynx.
  3. Connect HubSpot (via webhooks today, native roadmap) if forms are a major lead source.
  4. Build Fusion Relays:
    • Inspection Booked: CallRail/Form → calendar event.
    • Job Closed: CallRail/Form → contract signed.
    • Job Completed: CallRail/Form → final invoice (highest revenue weight).
  5. Destinations: Google Ads (primary), Meta CAPI, Microsoft Ads, TikTok.
  6. Schedule: daily.

For a roofing agency, the Agency tier keeps each contractor’s accounts separate, with bulk onboarding.

Bottom line

Roofing’s combination of high job values, long sales cycles, and variable close rates makes offline conversion tracking more important than for shorter-cycle home services — not less. Without revenue per conversion, Smart Bidding optimizes for inspections; with revenue, it optimizes for closed jobs.

The economic difference between the two strategies for a typical roofing account is often the difference between unprofitable and profitable Google Ads spend. Pro or Agency tiers with Fusion Relays are the typical fit.

Frequently Asked Questions

Roofing has long sales cycles (often 30-90 days from initial inspection to job completion) and very high job values ($8K-$40K+). Without offline conversion tracking, Google Ads optimizes for inspection bookings, not closed jobs — which means it can't tell which clicks produce $30K full re-roofs vs. which produce uncloseable inspection requests. Closing the loop with revenue is what makes Smart Bidding profitable for roofing.

TUOCA Fusion can match a later completed job to an earlier tracked lead, but it cannot extend Google's import limits. Google documents 90 days after the associated last click for standard offline imports and 63 days for enhanced conversions for leads. Upload an eligible earlier milestone promptly if final revenue arrives too late; do not backdate it or assume hashed contact data bypasses the limit.

Storm restoration is one of the highest-revenue conversion types in roofing — often $10K-$35K per job, fully insurance-funded. TUOCA tracks these as standard conversions with the insurance payout as the conversion value. The data flow is the same: CallRail captures the storm-damage call with GCLID; the FSM (or storm restoration software like JobNimbus) records the completed job; TUOCA's Fusion Relay matches and uploads to ad platforms.

ServiceTitan and Jobber have native connectors. JobNimbus and AccuLynx — both popular in roofing — are supported today via [Webhooks](/product/real-time-webhooks/) and are on the roadmap for native connectors. The webhook approach works well in production: when a job moves to a 'closed' or 'completed' status in JobNimbus/AccuLynx, a webhook fires to TUOCA, which validates and uploads.

Yes — and the [Agency tier](/pricing/) is built for it. A roofing agency usually gives each contractor their own Google Ads and Meta accounts. TUOCA's multi-tenant model handles the per-client connections, per-client Fusion Relays, and the [Agency Dashboard](/product/agency-dashboard/). We have not published how many contractors an agency runs.

Stop Guessing. Start Proving ROI.

TUOCA connects your CRM and call tracking data directly to your ad platforms. Set up in minutes.