How to Forecast Ecommerce Revenue and Profit (Free Template)

How to Forecast Ecommerce Revenue and Profit (Free Template)

I have built a version of this model for pretty much every brand we have worked with, from a first launch to brands doing tens of millions a year online. By the end of this you will have one for your store, and you will be able to answer the two questions I get asked most: how much can I spend to hit my number, and how much is actually left when I do.

The Test Every Model Has to Pass

To this day I am shocked at how many brands, and I mean real operators with real titles, still forecast like this: what growth do I need this year, add 50%, multiply last year by 1.5, done. It is a scary way to run a department, let alone a whole company, because it assumes nothing in the market or in your own business changes. Something always does.

Before You Start: Pull 12 Months of Data by Channel

The model is only as good as the history you feed it, so before you open the template, pull your last 12 months, month by month, split out by channel. For each channel you need four numbers.

InputWhere to get itWatch out for
Cost (ad spend)The ad platform (Meta, Google) or your reporting toolUse spend, not billed amount. Owned channels like email and organic have little or no media cost.
Visits (sessions or clicks)GA4, or the platform's clicksPick one source and use it the same way across every channel.
Conversion rateOrders divided by visits for that channelChannel rates are all over the place. Do not use one blended number.
RevenueThe platform's attributed revenue, or GA4 by channelUse the same attribution source for every channel so they line up.

If you have Supermetrics or Triple Whale hooked up, this is a five minute export. If you are doing it by hand, GA4's Traffic Acquisition report plus Shopify gets you most of the way. The one thing I would push on is using your real numbers here. The second you start typing in guesses, you are right back to the last-year-plus-50 thing, it just looks nicer in a spreadsheet.

Quick gut check while you are in there. The average Shopify store converts around 1.4% (Littledata), but that blended number hides a lot. Your email and paid search convert well above it, your cold paid social sits well below. That gap between channels is exactly why we do not run the whole store off one number.

Step 1: Fill In Your Channels (This Is the Engine)

Scroll to the channel blocks in the Model (Blank) tab. There are four of them: Paid Social (Meta), Paid Search (Google), Email & SMS, and Organic & Direct. Each block has the same four blue rows, and you fill them in month by month from the data you just pulled.

  • Cost: what you spent on that channel that month. For organic and direct, leave it at zero.

  • Visits (clicks): the sessions or clicks the channel drove.

  • Conversion Rate: how many of those visits turned into orders. It is a blue cell because it is your real, observed rate, not something you are guessing at.

  • Revenue: what the channel actually made. You type this in directly, the model does not invent it from an average.

From those four, the model works out the rest for each channel on its own: Conversions, AOV, effective CPC, cost per order, and ERS, which is your cost of sale for that channel.

I build it channel by channel instead of running one blended number for the whole store because it forces you to look each channel in the eye. When your Paid Social is sitting at a 55% ERS and your Email is at 3%, you stop pretending a dollar of email budget and a dollar of cold prospecting budget are the same dollar. They are not close.

Step 2: Set Your Global Assumptions

Head back up to the top block. Five rows drive the entire profit side of the model, and every one of them is a blue cell worth setting on purpose instead of leaving on the default.

  • Fixed Costs (monthly): the stuff that does not move with orders. Software, platform fees, rent, salaries, a fixed agency retainer.

  • Reporting Discount Factor (negative): the haircut you take on platform-reported revenue. This is the most important honesty lever in the whole model, so it gets its own step next.

  • Net Returns + Discount % + Cancellation: the piece of revenue you never actually keep. For food and consumables it is usually 2 to 3%. For apparel it is a lot higher. Online returns across retail hit 19.3% of sales in 2025 (NRF), so do not leave this at zero.

  • COGS % of net sales: your product cost plus pick, pack and ship, as a share of net sales.

  • SG&A + R&D %: overhead and product development as a share of net sales.

These are the ranges I want to see when I look at a brand. If yours are way outside them, that is worth chewing on before you trust the output.

LineRange I want to see
COGS20-40% (up to 50% in beverage; 10-15% dropship)
ERS (cost of sale)33-50%, which is a 2-3x ROAS
SG&A + R&D13-20%
Returns, discounts, cancellations2-3%

Food and beverage is a brutal margin business. A really well run F&B CPG brand is clearing north of 10% net margin, and even that is hard. It is also why I get nervous when a brand wants to run 30 or 40% off. There is just not enough margin there to give away.

Step 3: Set the Reporting Discount Factor Honestly

This is the step almost everybody skips, and it is why most forecasts come in high. Every ad platform takes credit for revenue it only touched. Meta will claim a sale if someone saw an ad and bought inside the window, even if they were always going to buy, and Google and email will claim that same order right alongside it. Add up what all of them report and it comes in over what actually landed in Shopify.

To size your haircut, grab one month. Add up the revenue every platform reported, then put it next to what Shopify actually booked. The gap, as a percent, is roughly your discount factor. Most brands land between 15 and 25%, so I start at -20% and adjust from there.

If you think I am being paranoid, the incrementality data backs it up. Haus ran 640 geo-lift experiments and found Meta's auto-optimized campaigns reported a higher ROAS than manual while actually driving less incremental revenue (Haus). The reported number and the real number drift apart, and the discount factor is how you model the real one. In the template it happens on its own: Forecasted Actual Gross Revenue is your Channel Attributed Gross Revenue times one plus the factor, and since the factor is negative, that is your haircut.

Step 4: Read What the Model Just Built

Once your channels and assumptions are in, the top block is a full monthly P&L. Read it top to bottom, because each line answers a question.

LineWhat it tells you
Total Monthly Visits / OrdersYour demand, rolled up from every channel (with daily versions for pacing).
Channel Attributed Gross RevenueWhat the platforms say you made.
Forecasted Actual Gross RevenueAfter the haircut. Closer to reality.
Net SalesAfter returns, discounts, and cancellations.
Gross Profit / GM %Net sales minus COGS.
ROAS (net sales / ad spend)Your honest blended efficiency, what most people call MER.
ERSThe flip side, your cost of sale.
Net Margin %GM% minus SG&A% minus ERS. Your contribution-style margin.
Net Profit $Net Margin % times Net Sales.

Two things I always look at first. One is the gap between what a platform reports and the model's ROAS. If Meta is telling you 4.0 and the model says 2.0, the platforms are taking credit for a pile of demand that was going to show up anyway, and your haircut probably needs to be bigger. The other is net profit. It follows the contribution-margin math and does not pull out fixed costs, which are sitting on their own line right above it, so read those two together to get to the real bottom line.

Step 5: Back Into Your Budget From a Goal

Now the question every operator actually cares about: how much can I spend and still hit my number? Go to the GOALS block and fill in two blue cells.

  • Annual gross revenue goal: the number you are chasing.

  • Target ROAS / MER: the blended efficiency you expect, meaning net sales per ad dollar. A 2.5 to 3.0 is a normal healthy target.

The model hands you an Implied annual ad budget, which is the spend that goal needs at that efficiency, and it puts it right next to your actual planned spend and net sales so you can compare.

That comparison is the whole reason to build this. In the example, the plan spends $492,000 and does about $1.3M in net sales, but the $2M goal at a 2.8 target needs a $693,000 budget. So the plan, as built, does not get there. That is the model doing its job. It is telling you the goal is not funded yet, which is exactly what you want to find out in a spreadsheet in January and not in the P&L in September. Your move from here is not complicated: put more behind it, get your conversion rate or order value up so each dollar goes further, or move the goal.

Step 6: Model an Improvement Before You Pay For It

Right under goals there is a little block called MODEL AN IMPROVEMENT. Drop in an estimated conversion rate lift, say 10%, and it shows you the incremental orders and revenue a CRO win would throw off across the year.

I use it to settle the 'where does the next dollar go' argument. If a realistic CRO project adds more net revenue than the same money would in paid, we do the CRO first. It turns 'we should probably fix the site' into an actual number you can rank against a media budget.

Step 7: Build Three Scenarios

One plan is not a forecast. Build three, and run your business off the cautious one.

  • Worst case: pull your channel volumes and conversion rates down to what a bad year looks like. This is the one you actually budget around. If you can still make payroll here, you can handle whatever comes.

  • Healthy case: your realistic plan, built straight off the history. This is the one you show the board or the client.

  • Stretch case: the aggressive version. I keep this one in the drawer until something is genuinely working, because chasing a stretch you have not earned yet is how brands spend themselves into a hole.

To build them, right-click the Model tab, hit Duplicate, and change the inputs. Three copies, three stories. The reason I always start from the worst case is that every model breaks eventually. Ours all broke during COVID, because none of us had a global pandemic in the assumptions. The brands that made it were the ones who had already thought through a bad scenario and could move fast when the real one showed up.

Scenario Planning: Modeling the Stuff That Actually Happens

Worst, healthy and stretch are your baseline. The real work is modeling the specific things you can already see coming, your Q4, a promo, a downturn, a price change, a product that pops. Each one is just a different set of blue cells to move, and each one has a trap in it.

SituationWhat to change in the templateThe trap to watch
Black Friday / Cyber Monday (Q4)Push Nov and Dec channel visits and spend up hard; raise the Returns + Discount % for those months; expect a higher cost per visit as CPMs spike, so efficiency dropsRevenue spikes and margin quietly gets crushed. Make sure the quarter is actually profitable, not just big.
A promo or flash saleRaise the Returns + Discount % and the channel volumes for that month; nudge AOV up if you bundle, down if it is straight % offIs the extra volume worth the margin you gave away? A lot of the time it is not.
A downturn or recessionCut channel volumes and conversion rates; hold spend flat or trim it; lean budget toward Email and Organic, where ERS is lowestProtect your contribution margin. Owned channels are what carry you when paid gets expensive and buyers get cautious.
Scaling paid spend (an upturn)Raise Paid Social and Paid Search cost and visits, but also drop their conversion rate and let CPO climbEfficiency gets worse as you scale into colder audiences. Do not run today's ROAS out in a straight line.
A viral moment or PR hitSpike Organic & Direct visits for a month or two; leave cost near zeroGreat margin, but it does not last. Do not go rebuild your fixed cost base around a spike.
A price increaseRaise AOV (revenue per order) across the channels; trim conversion rate a little if you expect pushbackUsually it nets out ahead even with some lost volume. The model shows you by how much.
A new channel or product launchAdd spend with a deliberately conservative early conversion rate and ERSIt loses money in the learning phase. Fund it out of the cushion in your healthy plan, not the worst case.

The Q4 one gets people every year. A brand does its biggest revenue month of the year and still walks out of December less profitable than it was in October, because the discounts, the returns and the jacked-up ad costs all land at the same time. Model those three together, the bigger discount, the higher returns, and the worse efficiency, and you see the real number before you commit to a promo calendar. If the quarter only works at full price, your promo is the problem.

The downturn one is assuming demand just shrinks evenly across the board. It does not work like that. Paid gets less efficient as people get cautious and every advertiser piles into a smaller pool, while your email list and the organic traffic you already built hold up fine and cost you almost nothing. The model makes the call for you: pull the paid conversion rates down, watch ERS climb, and the case for leaning on email and organic makes itself. A downturn is also when the weaker shops pull back, so if you have modeled your worst case and can keep spending, that is when you take share.

The Part Where the Model Earns Its Keep

A filled-in template is not the finish line. Reading it well is. A few things I always dig into once the numbers are in.

  • Run the bank-account test every month. Put the forecast next to what Shopify actually booked. When they drift, go find the input that is lying, usually the discount factor or a channel's conversion rate. A model you never reconcile is just a guess you got attached to.

  • Sanity check the aggregate conversion rate up top. If it says 6% and you know your store does 2%, one of your channel inputs is off. The rollup is only as honest as the blocks underneath it.

  • Find the lever that actually moves profit. Change one thing at a time, bump a channel's conversion rate half a point, add five dollars to an AOV, cut cold social 20%, and watch net profit. Usually one or two levers do most of the work, and that is where your team's month should go.

  • Know when not to scale. If net margin is negative in your healthy case, more spend just digs the hole deeper. Fix the unit economics first. Scale does not fix a broken margin.

Frequently Asked Questions About Demand Models

How much should I spend on ads to hit my revenue goal?

Back into it. Put your gross revenue goal and a target MER into the goals block and the template hands you the budget that goal needs. If that budget is more than you can fund, the goal is not real yet, and you either get your conversion rate and order value up or you move the goal.

What conversion rate should I use if I don't have clean channel data yet?

Start conservative and split it by channel, then swap in real data the second you have it. Cold paid social usually runs below your site average, paid search and email above it. The average Shopify store is around 1.4% blended, so anchor there and adjust per channel.

Why does my platform-reported ROAS look great but the business isn't profitable?

Because platform ROAS is counting revenue the platform only touched, and a few platforms are all claiming the same orders. The honest number is the model's blended ROAS, net sales over total ad spend. If the platform number looks great and the bank account does not, push your reporting discount factor up until the model matches what actually landed.

How often should I update it?

Every month, against actuals. Reconcile the forecast to what really happened, fix the inputs that were off, and it gets sharper every cycle. A model you build once and never touch again is not worth much.

Build the Plan Before You Spend

What this template really does is turn a revenue goal into a budget you can defend and a plan you can poke holes in, one assumption at a time, until it either shows you a path to profit or shows you there is not one yet. I would much rather find that out in a spreadsheet than three months into the spend.

Copy it, put in your real numbers, back into your budget, and build the three scenarios. Then hold the whole thing to the bank-account test every month.

Want us to build your growth model with you?

We build demand models for DTC and ecommerce brands every week, then go run against them. Tell us your revenue goal and we will map the plan to get there.

Talk to Jetfuel

Launch into Success

Tell us a bit about yourself and your business. We are just one message away from the perfect partnership!