Cheap SaaS Demo Leads, Empty Pipeline: Audit Meta Ads Through to Closed Revenue

A cheap demo lead is useful only if it can become a customer at an acquisition cost you can support. If your calendar fills while pipeline stays empty, I would trace the same leads from form submission to qualification, attendance, opportunity, signed contract and collected payment.
Don't change targeting because the revenue report looks weak before you know where those prospects stopped. A bad-fit lead, an unanswered inquiry and an unpaid invoice need different fixes. One blended conversion rate hides all three.
Give every stage a clear definition
I would keep the initial lead date, source, campaign, prospect ID and account ID together. Store the timestamps for each later stage. In B2B SaaS, two people from the same company can be two contacts but one buying opportunity. Count those units consistently instead of adding contacts and deals together.
| Stage | What it establishes |
|---|---|
| Lead | A valid inquiry, with spam and duplicates separated |
| Qualified meeting | The prospect meets your agreed fit criteria and has a meeting booked |
| Attended meeting | The meeting actually happened |
| Opportunity | Sales accepted an active buying process |
| Closed-won | Your defined commercial agreement was won |
| Collected payment | Money received against that agreement |
A reschedule should stay attached to the original prospect and meeting history. Keep canceled, no-show and attended outcomes distinct. Don't delete the history to make the final count tidy; use it to explain how long people waited and what happened before they attended.
Work through one acquisition cohort
This example is hypothetical. A SaaS company spends $15,000 on Meta and acquires 300 unique leads. The cohort has had enough time to complete its normal sales cycle. Counts below are exact illustrative integers, with rates calculated from the preceding row.
| Stage | Count | Rate from prior stage | Media cost per outcome |
|---|---|---|---|
| Leads | 300 | — | $50 |
| Qualified meetings | 90 | 30% | $166.67 |
| Attended meetings | 60 | 66.7% | $250 |
| Opportunities created | 30 | 50% | $500 |
| Closed-won customers | 6 | 20% | $2,500 |
The $50 lead becomes a $2,500 media CAC. Sales salaries, tools and other acquisition costs would raise the fully loaded figure. Whether that customer cost works depends on contribution, retention and the time needed to recover it.
Suppose each opportunity has a hypothetical $15,000 annual contract value. Thirty opportunities created represent $450,000 of created pipeline. If six are won and the other 24 remain open, open pipeline is $360,000 and won contract value is $90,000. Neither figure is collected cash. Monthly billing, unpaid invoices and refunds can make collections very different.
Find the specific break before assigning blame
| Observation | What I would inspect | Next test |
|---|---|---|
| Few leads qualify | Company fit, use case, ad promise and form answers | Make the qualification requirement explicit |
| Qualified leads never respond | Routing, first-response time and attempted contact | Fix the handoff and compare contact rates |
| Meetings are booked but missed | Booking delay, reminders and cancellation reasons | Remove confirmed scheduling friction |
| Meetings happen but opportunities do not | Recorded needs, qualification agreement, demo and offer | Test the specific mismatch found in call reviews |
| Wins appear without collections | Invoices, payment terms and billing status | Reconcile payments to won deals |
The largest percentage drop is a starting point, not automatically the highest-value repair. Some stages are designed to filter prospects out. I would prioritize a confirmed, recoverable problem using its frequency, likely revenue effect and implementation effort. A low opportunity rate alone does not prove sales failed; the ad may have promised the wrong thing.
Keep time and attribution straight
Compare leads acquired in matched periods at the same age. Don't divide this month's spend by wins from older campaigns. Use a window long enough for your actual sales cycle, and leave immature cohorts open rather than recording pending deals as losses.
Keep platform attribution beside your source records. Multiple channels can touch the same account, and matching a lead to an ad does not prove the ad caused the sale. Record missing source data as unknown. For a self-serve funnel, the related trial-to-paid CAC worksheet follows the same discipline.
Make the next account decision
I would leave this audit with a defined stage, an owner for the fix and a measurement date. That gives the next budget conversation something concrete to work from. Use the cohort payback guide to connect acquired customers to contribution recovery.
My AI SaaS case study shows the structure, tracking and scaling work I owned. If you want that direct involvement in your account, see my SaaS Meta ads service. Already spending $15K or more a month? Bring the account and funnel numbers to me.
