How do I know if my marketing is actually working?.

If you want this run for you instead of read about, Dynamite Growth is where engagements get scoped.
Author: Gian Gomezfounder of Dynamite Growth
Booked calls is a leading indicator. Closed revenue is the receipt. The Closed-Revenue ROAS Wedge is why I rebuild every report against dollars in the door, not against activity numbers.
If you pay a marketing agency for booked calls, you have already learned the lesson this article is about. The agency hits the call number. You eat the close rate. The math at the end of the quarter does not work. The agency keeps the retainer. You keep the leaking pipeline. I have been on both sides of that table. The version where I was the operator paying for booked calls. The version where I was the marketer producing them. The version I run now, where the only number on the dashboard is closed revenue against ad spend. This article is the long version of why that switch matters, where I learned it the expensive way, and how I actually wire it inside a campaign today. The short version is this. Booked calls is a leading indicator. Closed revenue is the receipt. If you are not tracking the receipt, you are flying blind on the only number that pays the bills.
What is wrong with booked calls as a metric?
Direct answer: booked calls is the metric the agency can guarantee. Closed revenue is the metric you actually need. The two are not the same number, and the gap between them is where most marketing budgets quietly die.
Picture two agencies pitching the same operator. Same buyer. Same offer. Same ad spend. Both promise 60 booked calls a month.
Agency A charges a flat retainer. The calls book on schedule. 60 a month, every month. The close rate sits at 12 percent because the calls are not pre-qualified. Six closes a month at a $25,000 average order value. $150,000 in revenue. $48,000 in retainer plus ad spend. Margin is real but thinner than it should be.
Agency B charges a smaller retainer plus a share on closed deals. The calls book at 50 a month instead of 60. The drop looks bad on the report. But the close rate sits at 28 percent because the calls are pre-qualified against the buyer profile. 14 closes at the same $25,000 average order value. $350,000 in revenue. $30,000 in retainer plus a share on the closes.
The operator pays Agency B more on a percentage basis. The operator’s bank account is bigger. The agency that wins on closed revenue is the agency the operator stays with.
The math is not subtle. The reason it gets missed is that booked calls is the metric that fits on a weekly report. Closed revenue takes 30 to 90 days to land. A lot of operators stop paying attention by the time the real number shows up.
How did I learn this the expensive way?
Direct answer: two years as the first marketing hire to Andy Elliott, watching the difference between calls booked and deals closed every single week. The reps who closed were not the reps with the most calls. The campaigns that produced revenue were not the campaigns with the lowest cost per lead.
I was 18 when I joined Andy Elliott’s company. First marketing hire. The business was at about $7,000 a month in revenue when I walked in. Two years later it was doing about $800,000 a month. A lot of that growth was Andy. A lot of it was the offer. A lot of it was timing. The piece I owned was the marketing engine that fed the closers.
Inside that engine, I ran the experiment that taught me this lesson. I tracked every campaign two ways. Cost per booked call. Cost per closed deal. They never matched. The campaigns that hit the cheapest cost per booked call almost never hit the cheapest cost per closed deal. Often it was the reverse. The campaign with the lowest cost per booked call was the one attracting the worst-qualified leads, which the closer then had to spend time disqualifying instead of selling.
The campaigns that closed were the ones where the ad screened as hard as it attracted. The hook was a filter. The landing page was a filter. The setter was a filter. By the time the call landed, the buyer was already 60 percent bought. The close rate on those campaigns was 3 times higher than the average. The cost per booked call was higher. The cost per closed deal was lower.
That was the receipt that flipped how I run paid acquisition. It is also the reason I do not start an account today without wiring the closed-revenue measurement first.
What is The Closed-Revenue ROAS Wedge?
Direct answer: The Closed-Revenue ROAS Wedge is the operating principle that every campaign reports against closed revenue, not against booked calls or leads. The wedge is the gap between the metric the platform can show you and the metric the business actually runs on. Closing that gap is the job.
Most ad platforms optimize against the events they can see. The click. The lead form. The page view. They do not see the contract get signed. They do not see the deal land in the bank. They cannot, because by default that data lives inside a CRM the platform does not have access to.
The wedge is the work of feeding closed-deal data back to the platform so it optimizes against revenue, not against lead forms. Once the platform sees which clicks turn into actual revenue, the audiences shift, the creative the algorithm favors shifts, and the cost per closed deal starts to come down. The cost per lead might go up. That is the trade you want.
The other half of the wedge is the reporting layer the operator sees. The dashboard does not show booked calls as the headline number. It shows closed revenue per dollar of ad spend. Every other number is a leading indicator under it. Booked calls, conversion rate, click-through rate, all of it moves to the second tier of the report.
That single reframe changes the conversation between the agency and the operator. The agency stops defending the call count. The operator stops asking about the call count. The only question on the table is whether the dollars are showing up. When they are, scale. When they are not, fix or kill.
How do I actually wire closed-revenue tracking?
Direct answer: three pieces. A click identifier that travels from the ad to the CRM and back. A server-side connection between the ad platform and the CRM. A daily job that sends closed deals back to the platform with the original click attached.
Most accounts have the first piece broken. The click identifier gets captured on the landing page and lost the moment the buyer fills out the form. The fix is to persist it through every step. Landing page. Form. CRM record. Qualification call. Proposal. Contract. When the deal closes weeks later, the click identifier is still attached to that buyer’s record.
The second piece is server-side tracking. Most accounts rely on the browser pixel for everything. Browser pixels are partial. iOS privacy changes, ad blockers, and cross-domain rules mean a real percentage of conversions never make it back to the platform through the browser. Server-side tracking sends the conversion event from your server directly to the platform, with the data the platform needs to match the original click. This piece is not optional in 2026.
The third piece is the daily sync. A backend job watches the CRM. When a deal moves to closed-won, the job pulls the original click identifier, the close amount, and the close timestamp, and sends a custom conversion event back to the ad platform. The platform sees which clicks turned into closed deals, days or weeks after the original click. The optimization layer adjusts. Audiences shift. The buyers who actually close start to outweigh the buyers who only fill out forms.
None of this is exotic. All of it is engineering work. The reason almost no agency installs the full stack is that it takes time and the report looks worse before it looks better. That conversation is uncomfortable. Most agencies skip it.
Where does this model break?
Direct answer: it breaks when the sales cycle is so long that the closed-revenue signal does not show up in time, or when the buyer’s sales team is the actual bottleneck. The agency cannot fix what is happening after the call.
Closed revenue is the right metric. It is also the slowest metric. For a B2B offer with a 90-day sales cycle, the first closes from a new campaign do not land for three months. That is real time the agency is floating the work while the operator waits for the math to confirm.
For me, that risk shows up as a hard qualifying question before onboarding a new account. If the buyer’s close rate is already broken, no marketing campaign in the world fixes the downstream problem. The math only works when the closer can actually close. If the calls go in and the deals do not come out, the answer is not more ads. The answer is fixing what happens on the call. I will tell an operator that on the intake call.
The second place the model breaks is when the operator does not have a reliable CRM. Closed-revenue tracking requires clean closed-deal data flowing back into the system. If the CRM is a spreadsheet, or worse, lives in a closer’s head, there is no signal to send. The first job is getting the data infrastructure in place. The ads come after.
Both of these are reasons to slow down before signing, not reasons to abandon the model. The agencies that take any account regardless of these conditions are the ones reporting booked calls because closed revenue would not survive an audit.
What do I tell operators who ask what to report on?
Direct answer: the metric on the headline of the report is dollars in the door against dollars spent. Everything else is a footnote.
Most operators inherit a marketing report from whoever set up the account three agencies ago. The headline metric is cost per lead or cost per booked call. The dashboard looks busy. The numbers move. None of it tells the operator whether the ads are making money. The whole report is theater.
The fix is to rebuild the report from the top. The headline number is closed revenue per dollar of ad spend. Inside the industry that gets called return on ad spend, or revenue ROAS. Under that, second-tier metrics show the funnel health. Cost per booked call. Show-up rate. Close rate. Each of those is a leading indicator for the headline. None of them is the headline.
Once the report inverts, the conversations change. The agency stops defending the inputs. The operator stops getting distracted by them. Every campaign gets evaluated against the same number. The winners get scaled. The losers get killed. The math gets sharper every cycle because the feedback loop is honest.
I wrote up the way I run the underlying funnel in the Iowa solar story. The closed-revenue principle was the operating logic under that whole run, even before I had a name for it. Every door knocked, every call placed, every system installed got measured against revenue, not against activity. The lesson did not change when I left solar. The receipts just got bigger.
What does this look like in a current account?
Direct answer: the report on the desk shows closed-revenue ROAS for the last 7, 30, and 90 days. The ad creative gets ranked by closed-revenue contribution, not by click-through rate. The team and I review what closed and what did not, weekly.
Inside Dynamite Growth, every account we run gets wired this way from day one. The click identifier persistence goes in during onboarding. The server-side tracking goes in during onboarding. The CRM-back- to-platform sync goes in during onboarding. The dashboard the operator sees is the closed-revenue dashboard. The team operates against that number.
That is the work most agencies do not do. It is also the single reason we can hand back a quarterly review that lines up with the operator’s bank account instead of a slide deck full of activity numbers. The math is the metric. The metric is the report.
FAQ
What is closed revenue ROAS?
Closed revenue ROAS is the dollars from closed deals divided by the dollars spent on ads. It is the only marketing metric that directly answers whether the channel is making money. Most dashboards report on lead-stage metrics like cost per lead. Closed revenue ROAS is the metric one level deeper that actually matters.
How long does it take to see closed-revenue data?
For a high-ticket offer with a 30 to 90 day sales cycle, the first closed-revenue signal lands in 30 to 60 days. The compounding signal, where the platform’s optimization has adjusted to the new data, shows up by day 90. The first month is mostly setup and leading indicators. The number to defend the spend is the day-90 number.
Can I run this without an agency?
Yes. The stack is server-side ad-platform tracking, click identifier persistence across the click-to-close path, and a daily sync between the CRM and the platform. The engineering work is moderate. The discipline of reporting against closed revenue instead of leads is the harder part for most operators. The team I run inside Dynamite Growth does this every day, but nothing here is locked behind us.
What if my offer is sub $1,000?
Closed revenue still matters, but the math behaves differently. At sub $1,000 offers, the same-day or same-week close means the standard pixel sees most of the path already. The extra work of CRM-back-to-platform sync still helps, but the return on installing it is smaller than at a $5,000 or $25,000 offer. The model gets sharper as the average order value goes up.
Why do most agencies still report on booked calls?
Because booked calls is a number they can guarantee on a timeline they can defend. Closed revenue takes longer to land and exposes which campaigns actually work. The agencies reporting on booked calls are reporting on what they can control, not on what the operator needs. The two are not the same thing.
If you want to see how I run paid acquisition against closed revenue inside a current account, the agency surface is at dynamitegrowth.co.
About the author

Gian Gomez.
Founder, Dynamite Growth · Miami
AI-leveraged solo operator running paid acquisition and funnels for B2B high-ticket clients out of Miami. Eight years in sales and marketing, $50M+ generated across roles, including founding Prodigy Power and operating as employee #1 at Andy Elliott’s sales education company. The receipts are the work, not the prompts.
