A 1.24 ROAS looks fine until you realize none of those leads made it past the first sales call.

Overall ROAS for B2B SaaS Meta campaigns sits around 1.24, according to industry benchmark data. That number feels tolerable in a platform dashboard. It feels a lot less tolerable when your CRO pulls up the CRM and asks which of those leads actually became opportunities. If you can't answer that question in under sixty seconds, your reporting has a structural problem.

Why platform metrics fail B2B teams

Meta counts conversions one way. Your CRM counts them another. In B2B, sales cycles stretch weeks or months past the click, so expecting these systems to agree is a losing bet. The real issue isn't that the data is "wrong." The data is fine for what each system was built to measure. The issue is that nobody built the bridge between them.

CPL increased for 91% of industries in 2023. That macro pressure pushed plenty of teams to panic-optimize for cheaper leads rather than better ones. Cheaper leads look great in Meta's reporting. They look terrible in pipeline reviews. Refine Labs' cross-account analysis of $8.2M in spend across 30+ B2B SaaS companies found Meta CPMs around $4.00 on Facebook and $5.00 on Instagram, with CTRs of roughly 0.60% and 0.50% respectively. Reach isn't the constraint. Conversion quality is.

Directive Consulting puts it bluntly: CPL and CTR indicate motion, not pipeline. If you're reporting on activity without connecting it to revenue stages, you're telling the board a story that ends before the interesting part.

The reporting stack that actually works

Build from revenue downward. Not from impressions upward. Here's the hierarchy:

CPL and CTR still matter, but as leading indicators. Never as proof of revenue impact. Directive Consulting's guidance is worth repeating here: never interpret CPL without lead-to-SQL rate beside it. A $40 CPL with a 25% SQL rate beats a $15 CPL with a 3% SQL rate every single time, and it's not close.

Reconciliation beats attribution perfection

Stop trying to force Meta and your CRM into exact alignment. They count differently. They always will. The mature move is reconciliation: compare the directional trends, look for consistency over time, and flag divergences for investigation rather than treating either system as gospel.

Post-iOS 14.5, pixel signal quality degraded enough that Conversions API (CAPI) became table stakes for any serious B2B measurement setup. CAPI lets you push CRM stage data (MQL, SQL, opportunity, closed-won) back to Meta so the algorithm optimizes for later-stage outcomes instead of cheap form fills. Without it, Meta's optimization engine is flying blind past the landing page.

The technical lift isn't trivial, but it's not a six-month project either. Connect your CRM events to Meta via CAPI, map your offline conversions to campaign IDs, and start feeding the system signals that actually correlate with revenue.

Run it this week

Setup: Pull the last 90 days of Meta campaign data alongside CRM stage progression for the same period. Match on UTM parameters or lead source fields. Don't expect a perfect match; aim for 70%+ coverage.

Build: Create a single view (spreadsheet is fine to start) with columns for campaign name, spend, leads, SQLs, pipeline created, and cost per SQL. Add MQL-to-SQL rate as a calculated column.

Hypothesis (make it falsifiable): If we shift 20% of budget from the lowest MQL-to-SQL campaign to the highest, then cost per SQL will decrease by 15%+ over 30 days, because we're concentrating spend on proven quality signal.

Success = cost per SQL drops. Guardrails = total SQL volume doesn't fall more than 10%. Stop-loss = if SQL volume drops 20%+ within two weeks, revert.

The trade-off nobody mentions

This reporting takes longer to build and longer to read back. You won't have answers in 48 hours the way you do with a CPL dashboard. B2B sales cycles mean you're waiting weeks for pipeline data to populate. That lag is uncomfortable. It's also honest. And honest reporting is the only kind that survives a board meeting.

That 1.24 ROAS from the top of the page? It might be hiding a fantastic pipeline engine or a money pit. The only way to know is to build the bridge between the click and the contract. Everything else is decoration.