Your Meta dashboard says the campaign is winning: $38 cost per lead, 4% click-through rate, the agency sends a pretty report. Meanwhile your intake desk signed two contracts last month, and one of them came from a referral. The dashboard is measuring the wrong thing, and you're paying for it.

CPL is not a business metric

A lead is a form fill. A signed contract is a fee. Those are not the same asset, and Meta will happily flood you with the cheap one if that's what you ask it to optimize for.

Run the numbers on a typical residential book. Average settlement around $60,000, a 10% fee, that's $6,000 in revenue per signed claim. If you sign one out of every twelve leads, each lead is worth $500 to you. If you sign one out of forty — common with cheap "free inspection" funnels — each lead is worth $150, and your intake team burned thirty-nine phone calls finding it.

Two campaigns, same spend: Campaign A delivers leads at $35, signs 1 in 40. Campaign B delivers leads at $110, signs 1 in 8. Campaign A costs you $1,400 per signed claim. Campaign B costs $880. The "expensive" campaign is 37% cheaper where it counts. Firms that keep optimizing for cheap clicks while a competitor optimizes for signed contracts aren't losing slowly — they're going extinct slowly.

Close the loop with offline conversions

Meta's algorithm optimizes toward whatever event you feed it. Feed it form fills, it finds form fillers. Feed it signed contracts, it finds policyholders who actually retain you.

The mechanics: tag every lead with its campaign and ad set ID in your CRM (most intake tools pass this automatically through hidden form fields). When a contract gets signed, upload that event back to Meta through the Conversions API or an offline event set — hashed email and phone, matched against the original lead.

One catch: Meta's learning phase wants roughly 10 conversion events per week per ad set. If you sign 6 contracts a month, "signed" is too sparse to optimize against directly. Use a mid-funnel proxy instead — "inspection scheduled" or "contract sent" — and verify monthly that the proxy still correlates with signings. Upload weekly. Stale data trains the algorithm on last storm season's behavior.

Creative that pre-qualifies

The fastest way to fix close rate is to repel the wrong people before they click. Generic "FREE roof inspection" creative attracts everyone with a water stain and zero intention of filing a claim.

What pre-qualifies:

  • Real damage photos. A collapsed ceiling from an actual client file outperforms stock imagery and filters out the curious.
  • Real settlement deltas. "Carrier offered $9,400. Final settlement: $87,000." Specific numbers attract policyholders who already suspect they're being lowballed.
  • Disqualifying copy. "If your hurricane claim was denied or underpaid in the last 18 months" eliminates people with no open dispute. Your CPL goes up. Your cost per signed claim goes down.

During a CAT event, expect CPLs to drop 40-60% — and quality to drop with them, because every roofer and their cousin is in the same auction. Pre-qualifying creative matters most exactly when leads look cheapest.

Budget math, backward

Start from the fee, not the ad budget. $6,000 average fee, target a 4:1 return on ad spend: you can pay up to $1,500 per signed claim. At a 1-in-8 close rate, that's a $187 allowable CPL. Anyone promising you $30 leads is either a genius or selling you tire-kickers, and the base rates favor tire-kickers.

Do this this week

  • Pull last quarter's signed contracts and trace each one to its source campaign. That's your real cost per signed claim.
  • Add hidden fields to your lead forms capturing campaign and ad set IDs into your CRM.
  • Set up an offline event set or Conversions API connection and schedule a weekly upload of signed contracts.
  • Rewrite your worst ad with one real settlement number and one disqualifying sentence.
  • Calculate your allowable CPL backward from average fee and close rate. Put it in writing where your agency can see it.