Guides

Stack math: putting a dollar figure on each layer

Every layer of a heating growth stack can be priced in lost or won jobs. This guide works through the numbers with one example company, so you can swap in your own figures.

Written by Ali Sedighi, MBAPublished: Last updated:

Owners are often told that marketing is an investment, without anyone showing them the arithmetic. This guide does the arithmetic. It follows one illustrative heating company through each layer of the stack and prices every leak in sold jobs. The numbers are made up but realistic; replace them with yours as you go.

The example company

Our example sells furnace, boiler and heat pump replacements plus repairs and maintenance agreements. In a typical heating-season month it has these figures:

Figure Value
Inbound calls, texts and emails 200
Of those, genuinely new enquiries 140
Replacement opportunities among them 50
Replacement quotes sent 40
Quote close rate 30%
Average replacement sale $8,000
Gross margin on replacements 35%
Monthly ad spend $6,000

From those figures: 12 sold replacements (40 × 30%), $96,000 in replacement sales, and $33,600 in gross profit. Ad cost per sold replacement is $500 ($6,000 ÷ 12), which is 17.9% of the $2,800 gross profit on each job.

That looks healthy. Now we look for the leaks.

Capture layer: the calls nobody answers

Suppose 15% of calls in the busiest weeks reach voicemail, and most of those callers phone the next company instead. That's 30 calls out of 200. If they mirror the overall mix, 21 are new enquiries and about 7 or 8 are replacement opportunities.

At the company's normal path (opportunities to quotes at 80%, quotes to sales at 30%), 7.5 lost opportunities would have become about 1.8 sold jobs. At $2,800 gross profit each, that's roughly $5,000 a month in gross profit walking away before anyone speaks to the customer.

A missed-call text that reaches those callers within a minute, plus a callback task, won't recover all of them. If it recovers a third, that's about $1,700 a month in gross profit for a small piece of configuration. Our sister site CallText.chat goes deeper on missed-call text-back.

Record layer: quotes that go quiet

The company sends 40 replacement quotes and closes 30%. A replacement quote is a large decision, and many homeowners simply stall. Without a follow-up process, those quotes go cold.

Suppose consistent follow-up (a reminder at day three, a call at day five, a final message at day ten) lifts the close rate from 30% to 36%. On 40 quotes, that's 14.4 sold jobs instead of 12. The extra 2.4 jobs are worth $19,200 in sales and $6,720 in gross profit a month, with no change in ad spend.

That improvement also lowers ad cost per sold job, from $500 to about $417, because the same $6,000 now produces more sales. This is the clearest example of why the record layer often pays back before the ads are touched. The CRM integration page explains how the follow-up is set up.

Demand layer: paying for the wrong calls

Of the 200 inbound contacts, 60 were not new enquiries: existing customers calling for service, suppliers, wrong numbers, job seekers. If the ad account counts all calls over a minute as conversions, it may be attributing many of those to campaigns.

Say ads drove 90 of the 200 contacts, and 25 of those 90 were not new business. The ad platform reports a cost per conversion of $66.67 ($6,000 ÷ 90). The real cost per new enquiry from ads is $92.31 ($6,000 ÷ 65). That's a 38% gap, and the platform's bidding is chasing the cheaper, wrong-type conversions.

Sending real outcomes back from the CRM (booked, sold, invoiced) lets the platform shift spend toward the searches that produce sold jobs. We won't put a number on how much that improves things for you, because it depends on your market and your data volume. What we can say is that a platform learning from revenue is aiming at the right target, and one learning from call length is not.

Proof layer: what reviews do to conversion

Reviews affect how many visitors become callers. Suppose the company's replacement pages convert 6% of visitors into calls or texts, from 1,000 visits a month. That's 60 contacts.

If a steadier flow of recent, specific reviews moved that conversion rate from 6% to 7%, the same 1,000 visits would produce 70 contacts. If half of those ten extra contacts are genuine replacement opportunities, the company's own path (80% quoted, 30% closed) turns them into about 1.2 sold replacements, or roughly $3,360 in gross profit a month. The point isn't the exact percentage, which varies. It's that proof works on every visitor you have already paid for. The review generation page covers how the requests are triggered.

Putting the layers together

Fix Extra sold jobs per month Extra gross profit per month
Missed-call recovery (a third of missed calls) about 0.6 about $1,700
Quote follow-up (30% to 36%) 2.4 $6,720
Better review flow (6% to 7% page conversion) about 1.2 about $3,360
Total, before any change to ads about 4.2 about $11,760

These gains don't simply add up in real life, because they interact. But they show the order of magnitude. A heating company with these numbers can find close to $12,000 a month in gross profit inside the business it already has, before buying more traffic.

The full monthly cost, checked

Now compare that with the cost of running the stack. On the HVAC.Agency Growth plan at $4,498 a month plus 5% GST ($224.90) for a company in BC or Alberta, the plan costs $4,722.90. Add the existing $6,000 ad spend and total marketing cost is $10,722.90.

At the improved figures (about 16 sold replacements once all three fixes are counted), the ad cost per sold job falls and the total marketing cost per sold replacement lands somewhere around $650 to $700, or roughly a quarter of the gross profit per job. Whether that's acceptable is your decision, but it's now a decision based on arithmetic rather than a feeling. The pricing page has the plan details.

A five-line calculator for your own company

Write these down from your last busy month:

  1. Gross profit on an average replacement: G
  2. Total monthly marketing cost (plan, tools, ad spend): M
  3. Sold replacements you can link to marketing: S
  4. Marketing cost per sold replacement: M ÷ S
  5. Share of gross profit spent to win each job: (M ÷ S) ÷ G

If you can't fill in line 3, your stack is missing wire two or wire five, and that is the first thing to fix. The guide to how the stack connects explains those wires, and finding the leak shows how to test them. If you'd like us to run the numbers with you, call, text or email.

Frequently asked questions

What is a reasonable ad cost per sold heating job?

It depends on your gross profit per job and how much of it you are willing to spend to win the job. Many owners start by capping marketing at a fixed share of gross profit, then check monthly whether cost per sold job stays under that cap.

Should maintenance agreements count in the return?

Yes, but separately. A maintenance customer produces revenue for years, so count the first year's value in the campaign that produced them and track renewals on their own line. Mixing them into first-month revenue makes campaigns look better than they are.

Where do these example numbers come from?

They are an illustrative company, not client data. The method is what matters: replace each figure with your own and the calculation still holds.