Uncategorized

Real margin vs forecast: what to do if actual margin is lower

In 4 out of 10 projects that come to us after another agency, the owner says the same thing: “There’s traffic, there are sales too, but the money isn’t right.” The actual margin turned out 15-40% below forecast. An ad budget of $3,000/mo, revenue of $15K, but after deducting hidden costs — an 8% margin instead of the promised 25%. That isn’t a technical error — it’s a systemic planning problem.

A failure case: an aesthetic medicine clinic

March 2023. A clinic from Kyiv approached us after 8 months with its previous agency. The forecast had been optimistic: an average procedure ticket of 4,500 UAH, a 12% conversion to booking, a CAC of 800 UAH, a 65% gross margin. On paper the unit economics looked healthy — an LTV/CAC of 3.25, payback within 2 visits.

What came of it after 8 months:

  • The real average ticket: 2,800 UAH (not 4,500)
  • Conversion to booking: 7.2% (not 12%)
  • The actual CAC: 1,350 UAH (not 800)
  • Gross margin after all costs: 41% (not 65%)

The result: LTV/CAC fell to 0.85. Every new client cost more than they brought in over their entire lifetime. The clinic lost 187,000 UAH over 8 months of “successful” marketing with constantly growing traffic. There were plenty of bookings, but the economics didn’t work.

When we broke the numbers down in detail, we found 6 critical gaps between forecast and reality. Each one on its own “ate” 3-8% of margin; together — a catastrophe. The previous agency reported conversions from the ad account, but nobody was calculating the actual economics of the business.

What to take from this case

The problem wasn’t that the agency “ran the ads badly.” CTR was 3.8%, CPC was normal for the niche, form conversion was 11%. Technically everything worked. The problem was that nobody validated the business assumptions with real numbers. The forecast was built on an idealized model that ignored:

  • The order structure (60% of clients took the cheaper procedures)
  • Drop-off between booking and attendance (a 28% no-show rate)
  • Repeat purchases (only 31% came back)
  • Demand seasonality (July-August -40%)
  • Additional operating costs (materials logistics, commissions, waste)

This article is a breakdown of the 6 root causes of the gap between forecast and real margin + the correction methodology we’ve applied in 23 projects with a similar situation. Not theory — practice with specific numbers.

Cause #1: An optimistic average ticket with no structure

The most common mistake is taking the average ticket of the top 20% of clients and forecasting that “everyone” will be like that. In reality the order distribution is uneven. In the clinic case the 4,500 UAH forecast was based on the top procedure (botox + fillers). But 58% of new clients bought a consultation + a basic cleansing for 1,200-1,800 UAH, “to try it out.”

What to do:

  1. Split the products into segments: entry (a trial purchase), core (the main product), premium (the top).
  2. Collect the actual distribution for the last 3-6 months: what % of clients buy each segment.
  3. Calculate the weighted average ticket: (entry_price × % entry) + (core_price × % core) + (premium_price × % premium).
  4. Put that into the model instead of “a nice number.”

An example from the same project after the audit:

SegmentPrice% of new clientsContribution to the average ticket
Entry (consultation + cleansing)1,500 UAH58%870 UAH
Core (botox / mesotherapy)3,800 UAH31%1,178 UAH
Premium (fillers + a package)7,200 UAH11%792 UAH
Weighted average ticket2,840 UAH

Instead of the forecast 4,500 UAH, the real weighted ticket turned out to be 2,840 UAH. That’s 37% less. That one difference alone “ate” the entire planned margin. When we recalculated the unit economics with the real number, it became clear the current acquisition model didn’t pay back.

Cause #2: Conversion in the CRM is lower than conversion in the ad account

The Meta ad account says: form conversion 11.2%. Google Analytics says: 9.8% on the “form submitted” goal. The CRM says: 7.1% of bookings that actually came to the appointment. Three different numbers for “one” metric. Which is correct? The last one. Because that’s the one that affects real revenue.

The gap between “form submitted” and “the client showed up” runs 15-35% depending on the niche. The reasons:

  • Duplicates and spam requests (bots, competitors, accidental clicks)
  • Poor-quality leads (“just curious,” a non-matching audience)
  • The sales team didn’t call back in time (a loss of 20-40% of leads)
  • No-shows: they booked but didn’t come (especially in medicine, dentistry)
  • Cancelled after the call (the price / terms didn’t suit)

In the clinic case the situation was this: Google Ads showed a 12.4% “request” conversion. But:

  • 14% of requests were duplicates (one person filled in the form 2-3 times)
  • 9% were spam/tests (phone numbers like +380111111111)
  • 28% booked but didn’t come (a no-show with no warning)
  • 6% cancelled after the administrator’s call

The result: of the 12.4% “conversion” in the ad account, 7.2% real visits remained. The CAC calculated on requests was 800 UAH. The CAC on real clients — 1,375 UAH. A 72% difference.

What to do:

  1. Integrate the CRM with the ads: send the events “payment,” “visit took place,” “repeat purchase” back to Meta/Google.
  2. Calculate CAC not on requests but on paying clients: (ad budget) / (number of payments).
  3. Audit the CRM → till funnel: where are leads lost? At the call stage? Booking confirmation? No-shows?
  4. If the no-show rate is >20% — implement: an SMS reminder the day before, a 20-30% prepayment, a confirmation script.

At LeadPrice we always build end-to-end analytics that passes events from the CRM back into the ads. Without that, campaign optimization runs “blind” — the algorithm learns on requests, not on paying clients. It’s like training an employee to sell by the number of conversations rather than deals.

Cause #3: LTV calculated on assumptions, not cohorts

Lifetime Value (LTV) isn’t “how much a client COULD buy,” it’s “how much they actually buy over N months.” In most forecasts LTV is calculated as “average ticket × forecast number of repeat purchases.” The forecast is taken out of thin air or “like the competitors.” Reality is often different.

In the same clinic the LTV forecast was: 4,500 UAH (the first purchase) + 3,800 UAH × 2 (two repeats) = 12,100 UAH a year. Sounds logical for the aesthetic medicine niche — clients come regularly. But:

  • Only 31% of clients returned for a second procedure within 6 months
  • Of those who returned, 18% came a third time
  • The average ticket of repeat purchases was 2,400 UAH (not 3,800), because they took maintenance procedures

The real 12-month LTV: 2,840 (first) + 2,400 × 0.31 (second) + 2,400 × 0.18 × 0.31 (third) = 3,720 UAH. Instead of the forecast 12,100 UAH. A 3.25x difference.

What to do:

  1. Run a cohort analysis: take the clients who came in January and see how many of them bought in February, March, April and so on.
  2. Calculate the Retention Rate: the % of clients who return after 1, 3, 6, 12 months.
  3. Measure the average ticket of repeat purchases separately (it’s often different).
  4. The formula for real LTV: AOV_1 + (AOV_repeat × RR_M2) + (AOV_repeat × RR_M3 × RR_M2) + …
  5. If there’s no data or less than 6 months of it: assume a pessimistic scenario (retention 20-30% below the industry benchmark).

In our methodology the “Who” step includes an analysis of current clients: who they are, how often they buy, what their value is. Not assumptions — numbers from the CRM. When we audited FZone (5,250 bookings in 38 months), the first step was to break down the cohorts and the real retention. Only after that did we build the forecast.

Cause #4: Hidden operating costs “eat” the margin

Gross Margin is revenue minus the direct costs of the product. Forecasts usually include only the obvious costs: the cost of goods or the materials for a service. They forget:

  • Logistics and delivery (if e-commerce)
  • Payment system commissions (2-3%)
  • Returns and waste (1-5% depending on the niche)
  • Discounts and promo codes (if you give 10% to every new client, that’s -10% off the margin)
  • Staff time to serve one client (in services)
  • Additional materials not included in the base cost

At the clinic the gross margin forecast was 65%: a 4,500 UAH procedure, 1,575 UAH in materials. Seems logical. But when we broke it down in detail:

Cost itemForecastReality
Materials (preparations)1,575 UAH1,820 UAH (8% waste, a change of supplier)
Doctor’s time (40 min × rate)—680 UAH (not accounted for)
Consumables (syringes, wipes, anesthesia)—190 UAH
Acquiring commission (if paid by card)—84 UAH (3% of 2,800)
New-client discount—280 UAH (10%)
Total costs1,575 UAH (a 65% margin)3,054 UAH (a –9% margin at a 2,800 ticket)

The margin turned out negative at the real average ticket of 2,800 UAH. Every new client brought a loss of 254 UAH, not counting the 1,350 UAH CAC. That’s a catastrophe. But in the forecast everything looked wonderful, because 5 cost items were “forgotten.”

What to do:

  1. Do a detailed Unit Economics calculation: take ONE average order and write out ALL the costs on it — from materials to staff time.
  2. Add an “unknowns buffer” of 5-10%: there’s always something you’ll forget.
  3. If the margin is <30% after all costs: either raise the price, or optimize processes, or change the product line.
  4. Review pricing: perhaps the entry product should be more expensive or absent altogether (an audience filter).

As a result of working with that clinic we changed the strategy: we stopped driving traffic to the cheap consultations, focused on the core procedures (3,800-5,200 UAH), and added a qualification questionnaire before booking. CAC rose to 1,680 UAH, but the average ticket became 4,100 UAH, the gross margin 52%, LTV/CAC 2.8. The economics started working.

Cause #5: Seasonality and unstable demand

Most forecasts are built on “an average month.” But in reality demand isn’t even. E-commerce has peak months (November-December, Black Friday) and troughs (January-February). Services have summer vs winter. B2B has quarterly cycles (quarter end = budgets, quarter start = silence).

The problem: if you plan a year’s budget assuming “every month is the same,” the real figures will diverge by 30-60% in individual months. That will create a cash gap or force you to cut advertising sharply exactly when you should be scaling.

Example: an aesthetic medicine clinic. Summer (June-August) — demand -35-40%, because people are on vacation and don’t get injections before sun exposure. December-January — the peak (+50%), because of “getting ready for the holidays” and New Year resolutions. If you planned 100 bookings evenly every month, but got 55 in July and 145 in December — your cash plan is broken.

What to do:

  1. Collect statistics for the past year (or an industry benchmark): which month was strongest, which weakest.
  2. Build a seasonality index: (sales in month M) / (average sales) × 100%.
  3. Put it into the forecast: not “100 leads every month,” but “70 in July, 90 in September, 140 in December.”
  4. Plan the budget accordingly: in weak months — testing and preparation, in strong ones — scaling.

In our practice we always ask the client about seasonality at the audit stage. If there’s none (a new business) — we take industry data or assume a conservative ±20% corridor. That way nobody is “surprised” by a dip in the weak season, and budget isn’t burned on ineffective scaling at the peak.

Cause #6: External conditions changed (CPM, competition, the market)

The forecast was made in January 2023 with an $8 CPM. By June the CPM was $14 because of changes to Meta’s algorithms and an influx of competitors into the niche. Sudden? No, natural — the market is alive, the auction changes. But if your forecast didn’t allow for variability in the cost of traffic, the economics broke.

Other external factors:

  • Exchange rate changes (if costs are in $ or €)
  • The arrival of a big new competitor that’s dumping prices
  • Platform algorithm changes (iOS 14.5 in 2021, SGE in 2024)
  • Regulatory restrictions (a ban on advertising certain categories)
  • Macroeconomics (inflation, changes in purchasing power)

You can’t predict everything. But you can build in a buffer. In our methodology we calculate three scenarios: optimistic (all is well), baseline (realistic), pessimistic (CAC +30%, conversion -20%). If the business doesn’t survive the pessimistic one — the model isn’t robust and needs revising before launch.

What to do:

  1. Don’t fix CAC/CPM in the forecast as “a single number”: give a ±25-30% corridor.
  2. Compare actuals with the forecast every month: if the gap is >15% two months in a row — revise the model.
  3. Have a plan B: if the cost of traffic jumped sharply — are there alternative channels? Can you raise the price?
  4. Diversify channels: don’t bet everything on one (Meta or Google). Have 2-3 working sources.

Example: one of our clients in real estate (the real estate niche) built the whole model on Google Ads. In summer 2023 the CPL grew from $18 to $31 because of an influx of competitors (a market boom). Within 3 weeks we launched TikTok Ads + Telegram Ads — the CPL there came out at $22-24. The plan was saved by diversification.

The correction methodology: 5 steps from chaos to clarity

When the real margin turns out below forecast, panic won’t help. You need a clear audit and correction plan. Here’s how we do it at LeadPrice for clients in a similar situation:

Step 1: Stop scaling (if it’s underway)

If you’re currently pouring budget into a loss-making model — the first step is to stop the bleeding. Not switch everything off (that kills the statistics), but freeze the current budget and not increase it until things are clear. Hold it at a level that lets you collect data without burning through cash.

Step 2: Collect the REAL numbers (not the forecast, the actuals)

You need an export from the CRM/till for the last 3-6 months. The minimum dataset:

  • The number of new clients by month
  • The average ticket of the first purchase (not a forecast, the median)
  • The distribution by products/services (what % buys what)
  • Retention: how many came back after 1, 3, 6 months
  • The average ticket of repeat purchases separately
  • The ad budget by month
  • ALL operating costs per client (in detail, including the hidden ones)

This is the basis for recalculating the Unit Economics. Without this data any action is guesswork.

Step 3: Recalculate the unit economics with real numbers

Take a CAC / LTV / Payback calculation template and fill it in with ACTUALS. The formulas:

  • CAC = (ad budget for the period) / (number of new paying clients in the period)
  • AOV = (total revenue for the period) / (number of deals in the period)
  • Gross Margin % = (revenue – direct costs) / revenue × 100%
  • LTV = AOV_1 + (AOV_repeat × RR × number of cycles)
  • LTV/CAC = how many times the investment in a client pays back
  • Payback = how many months until the CAC is recovered (CAC / marginal profit per month)

If LTV/CAC is <1.5 — the model doesn’t work; something fundamental has to change (price/product/audience). If 1.5-2.5 — it’s borderline and needs optimization. If >3 — good, but you need to understand why the forecast was different.

Step 4: Find the main bottleneck (what “ate” the most margin)

Compare forecast vs actuals on 6 parameters:

ParameterForecastActualDelta %
Average ticket4,5002,840-37%
Request→client conversion12%7.2%-40%
CAC8001,350+69%
Gross margin %65%41%-37%
Retention M360%31%-48%
12-month LTV12,1003,720-69%

In this example the biggest gaps are in LTV (-69%) and retention (-48%). That means: the problem isn’t so much acquisition as retention. The focus should be on repeat sales, email marketing, a loyalty program. If the biggest gap had been in CAC — the focus would be on creatives and targeting.

Step 5: Adjust the strategy to the new reality

Based on the bottleneck, choose 2-3 priority actions. NOT “fix everything at once,” but focus on what will have the biggest effect. The options:

  • If the problem is the average ticket: change the product line, remove the entry tier, add an upsell, raise prices.
  • If the problem is conversion: audit the sales team, scripts, CRM processes, reduce no-shows.
  • If the problem is CAC: new creatives, narrowing the audience, testing new channels.
  • If the problem is retention: email automations, a loyalty program, follow-up after purchase.
  • If the problem is margin: negotiate with suppliers, optimize processes, raise prices.

In that clinic’s case we: (1) removed the cheap entry procedures from the ads, (2) added a qualification questionnaire before booking (filtering out non-target clients), (3) launched an email series at 30/60/90 days to bring clients back, (4) raised prices on the core procedures by 12%. Four months later LTV/CAC had grown to 2.6 and the margin had stabilized at 48%.

When the whole model needs revising (not just “tweaking”)

Sometimes the problem isn’t “a calculation error,” it’s that the business model doesn’t work in this niche with this product. The signals that a fundamental review is needed:

  • LTV/CAC <1.2 even after all optimizations
  • A payback period >12 months (if you don’t have patient investors)
  • A gross margin <25% after all costs
  • Retention <15% after 3 months (nobody comes back)
  • CAC growing faster than LTV (every new client is more expensive but not more valuable)

In such cases “tuning the ads” won’t help. You have to change either the product, or the target audience, or the pricing, or the niche altogether. We at LeadPrice tell the client honestly when we see such a situation. There’s an internal “2 out of 10” filter — we don’t take on projects where the math doesn’t add up even in theory.

Example: an e-commerce store with handmade goods came to us. An average ticket of 450 UAH, a 35% gross margin, a CAC from all channels of at least 380 UAH. LTV/CAC = 0.4. Retention almost zero. We ran the numbers and said honestly: “With these economics, paid advertising will never pay back. You need to either double your prices or move to organic + collaborations.” We declined the project — we don’t want to take money for a case that’s lost in advance.

What to change in the planning process (so it doesn’t happen again)

If you’ve been in the “forecast vs reality” situation once, you need to change the planning approach itself. Not “hope it’ll be more accurate next time,” but build assumption validation into the process.

  1. Don’t build an annual plan on assumptions. A quarter at most. The first 1-2 months are a test period with a minimal budget to collect real data.
  2. Build in three scenarios (optimistic / baseline / pessimistic). If the pessimistic scenario doesn’t survive — the model is too risky.
  3. Validate each assumption separately: “the average ticket will be 4,500” → launch a test campaign for 50 clients and see what ACTUALLY happens.
  4. Reconcile forecast vs actuals every month. If the gap is >10% two months in a row — revise the model rather than “wait, maybe next month it’ll even out.”
  5. Integrate the CRM, analytics and finance into one dashboard. So you see CAC/LTV/margin in real time rather than “being surprised at the end of the quarter.”

In our methodology this is built in: we don’t give “a plan for the year” at the start of a project. We give a forecast corridor for the quarter + validate every 2 weeks (sprints). If something’s off — we correct on the fly, not at the end of the year when $50K has already been burned.

FAQ: questions about margin and forecasts

How do I tell my forecast is unrealistic BEFORE launching ads?

Compare your assumptions with industry benchmarks. If your forecast CAC is 40% below the market — that’s a red flag. If LTV is 2 times higher than competitors’ with no obvious reason (a unique product, an exclusive niche) — that’s suspicious too. Ask yourself: “Why will I do better than 90% of the market?” If there’s no answer — the assumption is inflated. You can also run a pilot campaign for $500-1,000 and look at the real numbers BEFORE scaling. That’s cheaper than burning $10K on a flawed model.

What’s a “normal” acceptable gap between forecast and actuals?

In the first quarter of work ±15-20% is considered a normal gap — the market is unpredictable and calibration takes time. If after 3 months the gap is over 25% — something’s systemically wrong. Ideally the forecast “hits” within ±10% by the end of the first half-year. But that’s possible only if you have historical data or very careful validation of assumptions at the start. In a new business with no data it’s better to assume a pessimistic forecast (CAC +30%, conversion -20% from “expected”) and be glad if it turns out better.

Can the situation be fixed with “better creatives” alone, or does the product have to change?

It depends on where exactly the bottleneck is. If the problem is CAC (expensive traffic, low CTR) — yes, better creatives can lower CAC by 20-40%. But if the problem is LTV (low retention, clients don’t come back) — creatives won’t help. You need to work on the product, service, a loyalty program. Also, if the gross margin is <30% — creatives won’t fix the math; you have to either raise prices or cut costs. The general rule: creatives affect the top of the funnel (CAC, CTR, conversion to lead), but not the client’s economics after purchase (LTV, retention, margin).

How long does it take to “fix” a model from an LTV/CAC of 0.8 to >2?

Realistically 3-6 months, if the problem isn’t in the foundation of the business model. The first month — diagnosis and recalculation; the second and third — testing new hypotheses (creatives, audiences, products); the fourth to sixth — scaling what worked. But that’s on condition that the team works actively (2-week sprints, fast iterations) rather than “launched and waiting a month.” If the problem is deeper (the product doesn’t fit the market, the audience was chosen wrong) — it can take 9-12 months or require a pivot altogether. In our practice the average time to go from negative economics to break-even is 4 months of intensive work.

Should I keep advertising if LTV/CAC is currently <1? Or stop until “the model is fixed”?

It depends on the business’s stage and available cash. If you have 6-12 months of runway and you’re in the process of validation — you can continue on a minimal budget ($500-1,000/mo) to keep collecting data. But DON’T scale. If money is tight — better to stop paid advertising, focus on organic (content, SEO, community) and fix the unit economics on existing clients (retention, upsell). Then return to advertising with a working model. The worst thing is to keep pouring budget into a loss-making funnel hoping “maybe it’ll work out.” That’s the road to bankruptcy, not growth. Assess honestly: how many more months can you “burn” at the current pace? If fewer than 4 — pull the emergency brake.

How do I convince management/investors that the forecast needs changing rather than “just working harder”?

Show the numbers. Not the emotion “it isn’t working,” but a specific forecast vs actuals table on 6 parameters (like the one above). Explain the reasons for the gap — not “we did a poor job,” but “the market turned out 30% more expensive than the assumption.” Give three scenarios: what happens if we continue the current strategy (how much money we’ll burn), what happens if we adjust (the new forecast), and what happens if we stop (the alternative plan). Investors/management value honesty more than “everything’s fine” until the last moment. If you come with a problem + a correction plan — that’s normal. If you hide it until the crisis — you lose trust. In our practice we always do a monthly report with a section “what didn’t go to plan and why” — that’s the norm, not a failure.

Summary: margin isn’t a forecast, it’s a hypothesis

A real margin below forecast isn’t “a failure,” it’s a signal that some assumption was wrong. The marketer’s (and the business owner’s) job isn’t to “give up” but to find exactly where the gap is and fix it. In 80% of cases the problem isn’t “bad advertising” but unvalidated assumptions about the average ticket, conversion, retention or hidden costs.

The key takeaways:

  • Calculate the weighted average ticket, not “a nice number” from the top product
  • Integrate the CRM and the ads — CAC must be calculated on paying clients, not requests
  • LTV is cohorts, not the assumption “they’ll buy 3 times a year”
  • Include ALL operating costs, not just the cost of materials
  • Account for seasonality and market instability (a ±20-30% buffer)
  • Validate assumptions with small tests BEFORE scaling

At LeadPrice we don’t build “pretty presentations with forecasts.” We build working models that we validate every 2 weeks with real numbers. If something isn’t working — we say so honestly and adjust, rather than waiting for it to “fix itself.” Because margin isn’t a hope, it’s math. And math doesn’t forgive errors in assumptions.

If you’re currently in the situation “there’s traffic, there are sales, but the money isn’t right” — write to us. We’ll do a free unit economics audit (30-45 min) and tell you honestly whether it can be fixed and what that would take. No “guaranteed results” or “exclusive methods” — just numbers and an action plan.

Зв'яжіться з нами

Want more clients?

Leave a request — we'll do a free analysis of your business

Дякуємо! Ми зв'яжемося з вами найближчим часом.