Revenue Forecast
A 13-week revenue and margin forecast for your Shopify store — down to the SKU, with confidence built in.
Revenue Forecast is a fieldset that projects your store's revenue and gross margin 13 weeks out at the SKU level, then delivers a weekly brief to Slack. It forecasts each product's sales velocity statistically, reconciles costs from your accounting system to get to margin, and tags every projection with a confidence tier so you know which numbers to lean on.
What it does
Once a week it syncs your Shopify order history, reconciles per-SKU costs, runs a statistical forecast for every active SKU, and writes a brief covering the next 13 weeks of revenue and gross margin.
It runs as a four-stage pipeline:
- Shopify sync — pulls your order line items and builds weekly sales velocity per SKU.
- Cost reconciliation — resolves each SKU's cost (COGS) from your accounting system where available, falling back to Shopify cost and category blends so the margin view is as complete as your data allows.
- Forecasting — runs a statistical model per SKU to project units, revenue, and margin for each of the next 13 weeks.
- Brief delivery — generates the summary and sends it to Slack.
Who it's for
Shopify brands that want a forward revenue and margin view they can plan inventory, cash, and spend against — without a data analyst stitching exports together. It's the demand-and-margin companion to Cash Flow Forecast: one tells you what you'll sell, the other tells you where your cash lands.
Prerequisites
- Shopify — required. The forecast is built on your Shopify order history, so this integration must be connected and active.
- QuickBooks or Xero — recommended, for cost reconciliation. Connect one if you want a true gross-margin view; the forecast still runs without it, but margin coverage will be limited and the brief will flag the gap.
- Slack — to receive the weekly brief.
Connect these on the Integrations page. Enabling the fieldset is admin-only.
Setup
- Go to Dashboard → Fieldsets and enable Revenue Forecast, passing through the requirement check and consent step.
- Connect Shopify if it isn't already. On Belay tells you what's missing.
- Run through the setup wizard. The fieldset page shows a readiness checklist so you can see your status at a glance — whether Shopify is connected, whether the first data sync has run, the state of your cost data, and whether Slack is wired up for delivery.
- The first run syncs your Shopify history (this can take a little while on a large catalog), reconciles costs, forecasts, and delivers your first brief on the next scheduled run.
How does the setup wizard work?
The setup wizard walks you through five steps at Dashboard → Fieldsets → Revenue Forecast → Setup. The rail on the left tracks your progress; steps 2 and 3 are marked Optional.
-
Connect Shopify. Revenue Forecast needs your Shopify order and inventory data to build the velocity model. If Shopify is already connected, this step confirms it and shows your store domain. Otherwise it links you to Integrations in a new tab — connect there, return, and continue.
-
Connect accounting (optional). Buttons link out to QuickBooks, Xero, Acumatica, and NetSuite — each stores item-level costs that get matched to your Shopify SKUs. Connecting an accounting system typically resolves 60–80% of SKUs that would otherwise have unknown cost data. You can skip this step and run on Shopify cost data only.
-
Connect Slack (optional). Your forecast always lives in the dashboard; connecting Slack also delivers a Monday-morning summary to a channel of your choice. You can skip and use the dashboard only.
-
Configure. Set the options that shape your forecast:
- Slack channel for delivery — pick a channel, or leave it unselected to post to your workspace's default.
- Gross margin alert threshold (%) — you're alerted when any high-confidence week falls below this. Defaults to 30%.
- Forecast horizon — 13 weeks (recommended), 26 weeks, or 52 weeks.
- Timezone — controls when the brief is timed for your day.
Saving here writes your configuration and advances you to the final step.
-
Done. A summary confirms what's connected, when your first Monday brief is scheduled, and what it will include — the 13-week SKU revenue and gross-margin forecast, the COGS coverage report, and the confidence breakdown. From here, go to the dashboard.
How do I change my settings?
Settings live at Dashboard → Fieldsets → Revenue Forecast → Settings, organized into sections you save independently:
- Delivery — the brief always goes out Monday (weekly); you choose the delivery time and timezone, and the Slack channel it posts to.
- Gross margin alert — flag any week where forecasted blended GM% falls below a threshold you set. This applies to Weeks 1–4 (high confidence) only — medium- and low-confidence weeks are excluded to reduce false positives.
- Cost data — set a cost variance alert: when accounting cost and Shopify cost differ by more than this percentage, the SKU is flagged in the COGS Coverage Report with a discrepancy warning. This section also shows your accounting integration status with Reconnect / Disconnect links (or a Connect accounting link when none is connected) — all pointing to Integrations.
- Agent prompts — customize the instructions the Brief Delivery Agent uses when it writes your Monday brief. The output format — table structure and section headers — is fixed; you're adding context, not changing the layout. This is the place to tell the agent about seasonal patterns, promotions, or product-launch timing (for example, "Our peak season is October–December" or "We run a 30% off promo in week 3 every year — exclude that week from velocity baseline"). Reset to default restores the standard prompt.
Cost-source precedence
How a SKU's cost is resolved follows a fixed order — the most accurate source always wins:
Accounting system → Shopify cost field → Manual entry → Unknown
You can't reorder this. Connecting an accounting system is the highest-quality source; manual entry fills gaps where neither accounting nor Shopify has a cost; anything still unresolved is marked Unknown and surfaces in the COGS Coverage Report.
Free trial
If your org is in its trial period, a Free trial card appears in Settings showing the expiry date and how many weeks remain. The trial runs four weeks; after it ends, billing is $129/month. The card links to Manage subscription at Settings → Billing.
How do I see and fix SKUs that are missing cost data?
Every run includes a COGS Coverage Report at the bottom of the run detail page. It opens with a coverage bar — what percentage of your active SKUs have confirmed cost data — broken down by source: accounting system (most accurate), Shopify cost field (fallback), manual entry, and SKUs with no cost data. If coverage drops below 60%, a banner at the top of the run also points you down to this report.
Below the bar, SKUs with no cost data are listed sorted by revenue impact (the ones costing you the most coverage first), each showing recent revenue. For each one you can:
- Enter cost manually — open the inline form, type the unit cost, and save. That cost becomes the SKU's cost going forward and moves it into the "manual entry" tier.
- Ignore — exclude the SKU from gross-margin projections. Revenue is still forecasted for it; only its margin is dropped. You'll be asked to confirm before it's excluded.
Long lists collapse to the top few with a Show all toggle. When every active SKU has a cost, the report shows an all-clear and gross margin is fully covered. An All cost records table at the end lists every SKU with its source, unit cost, and last-updated date.
If you haven't connected an accounting system, the report reminds you that doing so typically resolves 60–80% of unknown SKUs and links you to Integrations.
How do I drill into the forecast by SKU?
The run detail page pairs the 13-week forecast table with a hierarchy navigator on the left. It steps down through four levels — Total → Collection → Product → Variant — so you can move from your store's whole-book forecast into a single collection, product, or variant. Expand a branch with its caret; selecting a node updates the table to that scope. A small amber dot next to a branch means it contains SKUs with unknown COGS, so you can spot margin gaps without opening every level.
Where do I find past forecasts?
Opening the fieldset takes you straight to your most recent completed run. From any run's detail page, the run-history dropdown in the header lists your recent runs by date and status (Completed, Running, Failed) — pick one to jump to it. Each run is a snapshot of that week's forecast, so you can compare how the outlook shifted week to week.
If you haven't completed a run yet, the landing page shows a readiness checklist instead — whether Shopify is connected, whether the first data sync has run, the state of your cost data, and whether Slack is wired up for delivery — with a button into the setup wizard. Once setup is configured but the first forecast hasn't run, it tells you the first 13-week brief lands Monday morning.
How it runs
The forecast runs weekly, Monday at 08:00 UTC. The scheduler enqueues a run for every org with the fieldset enabled, and each run flows through Shopify sync → cost reconciliation → forecasting → brief delivery automatically.
Review & approval
Revenue Forecast is informational — it delivers a brief and a dashboard; it does not write anything back to Shopify or your accounting system, so there's no approval gate to clear. You stay in control of what you do with the numbers.
You can make manual adjustments that shape future runs: override a SKU's forecasted units, or enter a cost manually where reconciliation couldn't find one. Those refinements feed forward into later forecasts.
Outputs & where they land
- Slack — a weekly brief with an executive summary, the near-term revenue and margin outlook, a cost-coverage callout, top SKUs, and a link to the full model.
- Dashboard — every run is saved under the fieldset, with a sticky summary of the next several weeks, a 13-week table you can drill from total down through collection, product, and variant, a cost-coverage report, and a prior-week variance panel once there's enough history.
Confidence tiers
Every projection carries a confidence tier so you read the forecast with the right weight:
- High — the nearest weeks, anchored to known orders and receivables.
- Medium — the middle of the window, driven by sales-velocity trends.
- Low — the far weeks, where the projection is most extrapolated.
Lean on the high-confidence weeks for commitments; treat the low-confidence tail as direction, not gospel.
All external calls run through the On Belay proxy, so credentials stay server-side and each call is recorded in your audit log.
Billing
Revenue Forecast is included with your base plan — flat-rate, no per-run or per-event metering. Your On Belay subscription covers it. (See Billing for how plans and the trial work.)
Tips
- Connect QuickBooks or Xero early. Revenue without margin is half the picture; cost reconciliation is what turns this into a planning tool.
- Watch the cost-coverage report. It tells you exactly which SKUs are missing cost data — fix those and your margin view sharpens.
- Give the first sync time. A large order history takes a moment to ingest; the readiness checklist shows you where it's at.
- Read the tiers, not just the totals. Plan against the high-confidence weeks and revisit the far weeks as they move closer and firm up.