A Shopify revenue forecast is a projection of upcoming revenue based on historical patterns and current marketing inputs. Most merchants either don't forecast (planning is reactive) or forecast badly (gut-feel projections that miss by 30%+). The 90-day rolling model walks through three components — base trend, seasonal lift, marketing-driven growth — that produce forecasts within 10% of actual for most stores under $1M/year.
This guide is the model, the inputs, and the failure modes that produce systematically optimistic (or pessimistic) forecasts.
Why most forecasts fail
Three failure modes:
- Optimism bias. Founders forecast based on best-case scenarios. Actual revenue typically lands 20% below forecasted.
- Ignoring seasonality. "Last month was $40K, next month will probably be $42K" misses that next month is December (or January post-holiday slump).
- No marketing accountability. Forecast assumes growth that requires marketing spend that wasn't budgeted.
Better: forecast components separately. Each component has explicit assumptions you can stress-test.
The 3-component model
Component 1: Base trend
Rolling 90-day average revenue, extended forward. The "do nothing changes" baseline.
base_trend_monthly = (revenue_last_90d / 90) × 30
For a store doing $100K in last 90 days: base trend = $33K/month.
This baseline assumes everything stays the same — same traffic, same conversion, same marketing spend. Your actual forecast adjusts up or down from here.
Component 2: Seasonal multiplier
Year-over-year multiplier for the forecast month. If December historically does 1.6× October revenue, your December forecast is base trend × 1.6.
Compute from prior year's monthly revenue:
seasonal_multiplier = revenue_target_month_last_year / avg_monthly_revenue_last_year
For most consumer-product Shopify stores:
- Spring (March-April): 0.95-1.05× of average
- Summer (May-July): 0.85-0.95×
- Fall (August-October): 1.0-1.1×
- November: 1.4-1.8× (Black Friday driver)
- December: 1.4-1.7× (holiday gift)
- January: 0.7-0.85× (post-holiday slump)
- February: 0.85-0.95×
If you don't have a year of data, use industry-standard multipliers above. They're approximate but better than ignoring seasonality.
Component 3: Marketing-driven growth
Net new revenue from marketing investments above baseline.
marketing_growth = (incremental_ad_spend × historical_ROAS) - revenue_from_replaced_organic
If you're increasing Meta spend by $5K/month at 3× ROAS, expect $15K incremental revenue. Minus any cannibalization from existing organic traffic (typically 10-20% of paid lift comes from customers who would have bought organically).
Be honest. Most merchants over-estimate marketing ROAS, under-estimate cannibalization. Use your trailing 3-month measured numbers, not aspirational ones.
Putting it together
Forecast = (base trend × seasonal multiplier) + marketing growth
For a store with:
- Base trend: $33K/month
- October seasonal multiplier: 1.05
- Marketing growth from $4K spend at 3× ROAS, 15% cannibalization: $10,200
October forecast = (33K × 1.05) + 10.2K = $44.85K
If actual lands at $43K, model is within 4% — useful for planning. If it lands at $35K, you missed something (ad creative fatigue, competitive pressure, etc.) — investigate which component was wrong.
Refining the model
Once the basic model is running, three refinements add accuracy:
1. Cohort-based base trend
Replace the simple 90-day average with cohort-based revenue (see cohort analysis guide). Customers acquired in different months have different spending patterns; aggregating obscures it.
For maturing stores with 6+ months of data, cohort math improves forecast accuracy.
2. Channel-specific marketing
Don't average across channels. Compute marketing growth per channel (Meta, Google, TikTok) at their respective ROAS. Different channels respond differently to budget changes.
See traffic-source analysis guide for channel-level signal.
3. Subscription-aware splitting
If you have a subscription program, split base trend into "subscription MRR" and "one-time orders." Subscription has lower variance; one-time has more.
forecast = subscription_MRR + one_time_base × seasonal × marketing_factor
The 90-day rolling discipline
Re-forecast every 30 days using the most recent 90 days as base. This:
- Catches trend shifts: if revenue dropped meaningfully in the last 30 days, the base trend reflects it within a month.
- Smooths out noise: 90-day window absorbs week-to-week variation.
- Aligns with planning: forecasts become Monday-of-month-1 input for the rest of the month's decisions.
Don't re-forecast weekly (too much noise) or monthly using all-time history (slow to catch real changes).
What forecasting unlocks
Three operational decisions improve with reliable forecasts:
1. Inventory planning
Knowing you'll do $60K in December lets you order 50% more inventory of top SKUs in October. See inventory management guide.
2. Cash flow
Inventory + payroll + marketing all drain cash before customers pay. A 90-day forecast tells you cash flow, not just revenue. Critical for stores at scale or with thin margins.
3. Hiring decisions
A forecast showing $80K/month revenue justifies a $5K/month full-time support hire. Without forecasting, hiring is gut-feel and often poorly timed.
Common forecasting mistakes
- Ignoring seasonality: forecasts December at base trend, misses 50% lift.
- Using aspirational ROAS: forecasts assume 5× ROAS when current trailing-90 is 2.8×.
- Not adjusting for marketing fatigue: assumes paid spend will scale infinitely at current ROAS.
- Forecasting too far out: 12-month forecasts beyond signal noise. Stick to 90 days.
- Hiding bad news: forecast that "next month will be better" isn't a forecast, it's hope.
A worked example: forecasting Q4
A skincare store in October forecasting Q4:
Inputs:
- Base trend (last 90 days): $42K/month
- Last year Q4: October $44K, November $63K, December $78K, January $31K
- Last year average monthly: $48K
- Seasonal multipliers: Oct 0.92×, Nov 1.31×, Dec 1.63×, Jan 0.65×
- Planned marketing increase Q4: +$3K/month at 2.8× ROAS, 15% cannibalization
Forecasts:
- October: 42K × 0.92 + 3K × 2.8 × 0.85 = $45.8K
- November: 42K × 1.31 + 3K × 2.8 × 0.85 = $62.2K
- December: 42K × 1.63 + 5K × 2.8 × 0.85 = $80.4K (extra spend for holiday push)
- January: 42K × 0.65 + 3K × 2.8 × 0.85 = $34.4K
Q4 total: $222.8K. Compare against last year's Q4 ($216K). 3% growth forecast.
If actuals land at: Oct $44K, Nov $61K, Dec $77K, Jan $33K → total $215K. Model was 3.5% optimistic — reasonable, especially with December's slight underperformance probably due to ad fatigue.
The merchant uses the model to plan inventory orders for November and December, which arrived 30 days before holiday peak. The next forecasting cycle uses the January base trend.
Frequently asked questions
How often should I forecast?
Monthly minimum. Re-forecast on the first of each month using the most recent 90 days. Don't forecast weekly (too much noise).
Do I need a year of data to forecast?
No, but more is better. With 3 months of data, you can do base trend + crude seasonality estimate. With 12 months, the seasonal multiplier is much more accurate.
What about Shopify's built-in forecasting?
Shopify Plus has revenue forecasting built into Analytics for stores on the Plus plan. It's reasonable as a starting point — but the manual model gives you assumption visibility that Plus's black-box model doesn't.
Should I forecast at the SKU level?
At $200K+/month, yes for top-10 SKUs (informs inventory). Below that, store-level monthly forecast is enough.
Does DropifyXL forecast?
Indirectly. DropifyXL surfaces signals that inform forecasts (seasonal trends, subscription health, restock urgency). The forecasting math itself sits outside the tool.
Key takeaways
- Three-component forecast: base trend (rolling 90-day) + seasonal multiplier + marketing growth.
- Re-forecast monthly. Compare actual to forecast at month-end.
- Use trailing 90-day ROAS, not aspirational. Marketing growth should be honest.
- Ignoring seasonality is the #1 cause of forecast errors. Monthly multipliers handle most of this.
- Forecasting unlocks inventory planning, cash flow management, and hiring decisions.
A forecast within 10% of actual is actionable. A forecast within 30% is hope. The discipline of comparing forecasts to actuals every month makes the model better over time.