ds@mcpanalytics.aiEmail your data and your question and get an answer about your own data, with the method shown.Email your data and question. Get an answer.

Revenue Forecasting with Seasonal Patterns (Prophet)

Updated October 2026

By MCP Analytics Team • Published March 10, 2026

When Simple Averages Fail

Here is a common scenario that trips up even experienced business analysts. Imagine you run a SaaS company, and your CFO asks: "What should we expect for Q2 revenue?"

To see where your own measure is heading, with a likely range, try the free forecasting tool.

Your first instinct might be to take the average of recent months. You calculate: January brought in $85,000, February hit $92,000, and March reached $88,000. So you forecast approximately $88,000 per month for Q2, right?

Not so fast. What if January always dips because enterprise customers delay renewals after the holidays? What if March consistently spikes because that's when annual contracts renew? What if there's a steady growth trend underneath all this noise?

This is where simple averages fail us. They can't distinguish between:

Before we build a complex forecasting model, let's just look at the data differently. That's what Prophet helps us do - it separates these components so we can see what's really happening in our revenue.

What You're Building: A Q2 Revenue Forecast

By the end of this tutorial, you'll have created a revenue forecast for the next quarter that includes:

The best part? Prophet handles the complex mathematics automatically. Prophet fits trend and weekly and yearly seasonal components from your history. Holiday effects are different: you supply the events yourself, or select a country calendar.

Prerequisites: Your Revenue Data Format

Before we can forecast anything, you need historical revenue data in the right format.

What You Need

Example Data Format

date,revenue
2025-01-01,12450.00
2025-01-02,13200.50
2025-01-03,11800.00
2025-01-04,14500.25
2025-01-05,13900.00
Note: Your revenue column can represent daily revenue, weekly revenue, or any other metric you want to forecast (bookings, ARR, MRR, etc.). Prophet doesn't care what the numbers mean - it just finds patterns.

Common Data Sources

If you're wondering where to get this data, here are typical sources:

If your revenue is in Stripe, export it from the dashboard or pull it through Stripe's API, then aggregate it to one row per day or per month.

Step 1: Prepare Historical Revenue Data

This step is straightforward, but there are common pitfalls.

Prepare the File

  1. Export your revenue as a CSV with one date column and one revenue column
  2. If you fit Prophet yourself, name the columns:
    • Date column → "ds" (Prophet's required name for dates)
    • Revenue column → "y" (Prophet's required name for the value to forecast)
Common Mistake: Make sure your dates are in a consistent format. Prophet accepts formats like "2025-01-01", "01/01/2025", or "Jan 1, 2025" - but don't mix formats in the same file.

What to Check Before Fitting

Look for these problems in the file before you fit anything:

Step 2: Select Prophet Decomposition Module

Once your data is ready, choose a forecasting method.

Why Prophet?

Common forecasting options:

For revenue with trend and seasonal patterns, Prophet is a reasonable first model to try, compared against a simple baseline, because it:

  1. Fits weekly and yearly seasonal components (yearly only with enough history)
  2. Handles missing data and outliers gracefully
  3. Provides uncertainty intervals (not just point estimates)
  4. Allows custom holiday specifications

Configuration Options

Prophet has a few settings. Here is what they mean in plain language:

Setting What It Does Recommended Value
Forecast Period How far into the future to predict 90 days (one quarter)
Seasonality Mode Additive (constant effect) or Multiplicative (percentage effect) Multiplicative for revenue (seasonal effects grow with business size)
Yearly Seasonality Detect annual patterns (Q4 spike, summer slowdown) Auto (Prophet turns yearly seasonality on only with at least two years of history; with less, leave it off or enable it explicitly and treat the annual effects as weak)
Weekly Seasonality Detect day-of-week patterns (weekday vs. weekend) Auto (usually important for daily data)
Include Holidays Account for country-specific holidays Select your country (e.g., US, UK, Canada)
Tip: Start with the default "Auto" settings, then check the result against held-out data before refining.

What Prophet Does: Trend + Seasonality + Holidays

Before we look at the results, let's understand what's happening behind the scenes. Prophet decomposes your revenue into four components:

1. Trend Component

This is the underlying direction of your business. Is revenue growing, declining, or flat? Prophet uses a piecewise linear or logistic growth curve to capture this.

Example: Your revenue has grown from $80K/month to $95K/month
over the past year = positive trend

2. Yearly Seasonality

These are patterns that repeat annually. For B2B SaaS, you might see:

Prophet uses Fourier series to model these smooth, repeating patterns.

3. Weekly Seasonality

Day-of-week effects. For e-commerce, you might see:

For B2B businesses, weekdays typically show higher activity than weekends.

4. Holiday Effects

Special events that don't fit the regular seasonal pattern:

Prophet does not find holidays in your revenue history. You select a built-in country calendar or supply your own events (like your company's product launch or annual conference), and it estimates their effect.

The Power of Decomposition: By separating these components, you can answer questions like "Are we actually growing, or did December just look good because of seasonal effects?" This is the core insight that simple averages miss.

Interpreting the Output: Forecast Range & Confidence Intervals

Now for the forecast itself and what it means for your business.

The Forecast Chart

A Prophet forecast chart shows three things:

The shaded area is a model-based 80% prediction interval: if the model's assumptions hold, about 80% of actual values should land inside it. That has to be checked, not assumed: compare against held-out periods and see whether close to 80% of actuals fell inside (the Coverage metric below). The wider the band, the more uncertainty the model estimates.

Reading the Numbers

For each future date, a forecast has the form (illustrative numbers):

Date: 2026-04-15
Point Forecast: $92,000
Lower Bound (80%): $83,700
Upper Bound (80%): $101,300

Translation: "Our best guess is $92,000, and the model's 80% interval runs from $84K to $101K."

What the interval covers: Prophet's interval reflects the uncertainty in the fitted trend and the noise level it saw in your history. It does not model events that are not in that history, such as a new competitor, a product launch that exceeds expectations, or a key customer churning. Handle those with separate scenarios (see Next Steps).

Component Breakdown

A component plot shows how much each part contributes. For a model fit on daily data, one day might look like this (illustrative numbers):

Component April 15 Contribution What It Means
Trend +$88,000 Base revenue at this point in time
Yearly Seasonality +$2,800 April is typically 3% above average
Weekly Seasonality +$1,200 Wednesdays are slightly above average (April 15, 2026 is a Wednesday)
Holidays $0 No holidays on this date
Total Forecast $92,000 Sum of all components

This breakdown is incredibly valuable for planning. If you see that Q2 forecast is high primarily due to seasonal effects (not trend growth), you know not to over-hire based on that temporary bump.

Sample Output: SaaS Company Monthly Revenue Forecast

Here is a worked example. It is illustrative: the company, the 15 months of MRR and every figure in this section are made up for this tutorial, not taken from a real business or from a model run, and Prophet was not fitted to produce them. Use it to see how a forecast is laid out and how to read it, not as evidence of what Prophet would find in your data.

Historical Context

Company: hypothetical B2B SaaS company
Data Period: Jan 2025 - Mar 2026 (15 months)
Forecast Period: Apr 2026 - Jun 2026 (Q2 2026)
Revenue Type: Monthly Recurring Revenue (MRR)

What a Model Like This Might Report

Q2 2026 Forecast

Month Forecast Lower (80%) Upper (80%) Notes
April 2026 $94,200 $88,500 $99,900 Illustrative: post-Q1 recovery
May 2026 $96,800 $90,200 $103,400 Continued growth trend
June 2026 $99,100 $91,800 $106,400 Approaching $100K milestone
Q2 Total $290,100 not shown not shown Sum of the point forecasts. The monthly bounds add to $270,500 and $309,700, but that is not an 80% interval for the quarter

Key Insights from This Forecast

  1. Growth momentum: The trend continues upward in this example
  2. Seasonal recovery: In this illustration, April follows a typical Q1 slowdown
  3. Plan conservatively: Budget from a low scenario, not the point forecast. The sum of the monthly lower bounds ($270K) is a rough floor; a proper interval for the quarter comes from summing simulated forecast paths across the three months and taking that total's range
  4. Widening uncertainty: Notice how the interval gets wider further out? That's normal - the future is inherently less certain.

As each month closes, compare the forecast with the actual revenue from your Stripe export and record the error. That feedback tells you how far to trust the next forecast.

Accuracy Check: How to Validate Your Forecast

A forecast is only useful if it is accurate enough for the decision it supports. Here is how to check that for your own data.

Holdout Validation

The gold standard for testing a forecast: hide recent data, make a prediction, then compare to what actually happened.

Here's how to do it:

  1. Split your data: Use 80% for training (e.g., Jan 2025 - Dec 2025) and hold out 20% for testing (e.g., Jan 2026 - Mar 2026)
  2. Generate forecast: Run Prophet on just the training data to predict Jan-Mar 2026
  3. Compare: Check how well the forecast matches what actually happened
Example results (illustrative):
Actual Jan 2026: $86,500
Forecast Jan 2026: $85,200 (within 1.5% - excellent!)

Actual Feb 2026: $91,000
Forecast Feb 2026: $87,800 (3.5% underestimate - good)

Actual Mar 2026: $88,900
Forecast Mar 2026: $90,100 (1.3% overestimate - excellent)

Error Metrics to Watch

Common accuracy metrics, in plain language:

Metric What It Measures Good Value
MAPE
(Mean Absolute Percentage Error)
Average % difference between forecast and actual No universal cutoff. Compare it with a simple baseline (for example, repeating the same month last year, or the last value) and with the error your decision can tolerate
MAE
(Mean Absolute Error)
Average dollar difference (in your revenue units) Depends on scale - compare to your typical revenue range
Coverage % of actual values that fell within the uncertainty interval Should be close to your interval % (e.g., about 80% for an 80% interval); with only a few held-out points it is a noisy check
When Forecasts Fail: If Prophet's holdout error is not clearly lower than a simple baseline's, it might not be capturing the patterns in your data. Common reasons include: (1) Too little historical data, (2) Recent major business changes (new product, market shift), or (3) Highly irregular revenue patterns. In these cases, consider collecting more data, trying a different model, or investigating a specific change point, then backtest again.

Visual Validation

Numbers matter, but also look at the forecast chart and ask yourself:

Trust your domain expertise. If Prophet predicts a July spike but you know your industry always slows down in summer, investigate why the model thinks otherwise.

Use Cases: Budget Planning, Hiring, and Inventory

Once you have checked the forecast against held-out data, here is how it can be used.

1. Budget Planning and Resource Allocation

Your finance team needs to know: Can we afford to hire three engineers in Q2?

Use a low scenario rather than the point forecast for conservative budgeting. Here, the sum of the monthly lower bounds stands in for it:

Q2 Forecast (sum of monthly lower 80% bounds, a rough floor): $270,500
Current burn rate: $190,000/month = $570,000/quarter
Revenue - Costs = $270,500 - $570,000 = -$299,500 shortfall

Adding 3 engineers ($150K/year each = $112,500/quarter):
New shortfall = -$412,000

Conclusion: Only hire if you have sufficient runway/funding.

This conservative approach prevents over-hiring based on optimistic forecasts. For deeper analysis of prioritizing resources, check out our guide on ABC Pareto analysis for data-driven decisions.

2. Hiring and Capacity Planning

Your revenue forecast can drive staffing decisions:

3. Inventory and Supply Chain

For physical product businesses, revenue forecasts directly inform inventory planning:

May Revenue Forecast: $96,800
Average Order Value: $150
Expected Orders: ~645 orders

If typical order contains 2 units:
Need inventory for ~1,290 units in May

Add 20% buffer for uncertainty interval:
Order 1,550 units for May delivery

This prevents both stockouts (lost revenue) and over-ordering (cash tied up in inventory).

4. Investor and Board Reporting

Investors want to see data-driven growth projections. Instead of saying "We think Q2 will be good," you can present:

"Based on 15 months of history and a Prophet forecast, we expect Q2 revenue of about $290K. The monthly 80% bounds add to $270K and $310K, which we use as a rough planning range, not as a quarter-level 80% interval. On a three-month holdout the mean absolute percentage error was 2.1%."

State the holdout error and the baseline it was compared with, so the reader can judge the forecast.

5. Campaign and Launch Timing

Should you launch your new product in April or wait until June?

Look at the seasonal component: If April shows a natural seasonal lift, launching then gives you tailwinds. If June is typically slower, launching in April gives you more time to build momentum before the seasonal dip.

When dealing with intermittent or irregular demand patterns in your forecasts, you might also want to explore the Croston method for intermittent demand forecasting, which complements Prophet for certain business scenarios.

Troubleshooting Common Issues

Common problems when forecasting revenue:

Problem 1: "My forecast looks like a straight line"

Possible causes:

Solution: If you have less than two years of data, Prophet's default leaves yearly seasonality off. Either collect more data or manually specify custom seasonality if you know your business has patterns (e.g., quarterly contract cycles).

Problem 2: "The uncertainty interval is huge"

Why it happens:

Solution: Wide intervals reflect the uncertainty the model estimated. For planning, work from a low scenario. To narrow intervals, you can: (1) Aggregate to weekly instead of daily, (2) Remove one-time events/outliers, or (3) Add more historical data.

Problem 3: "The forecast missed a major event"

Example: You launched a new product in February that doubled revenue, but the forecast doesn't show this continuing.

Why: Prophet assumes the future will follow historical patterns. It can't predict genuinely new events (product launches, market expansions, competitor exits).

Solution: Either:

Problem 4: "Seasonality seems backward"

Example: Prophet shows December as a low month, but you know it's your peak season.

Possible causes:

Solution: Check your raw data for errors. Verify dates are parsed correctly. If you only have 1-2 seasonal cycles, Prophet might be learning from outliers rather than true patterns.

Problem 5: "The forecast is accurate historically but wrong going forward"

Why: This is called "overfitting" - the model learned to fit past data perfectly but doesn't generalize to new data.

Solution: Prophet is designed to avoid overfitting, but it can happen if you've enabled too many custom seasonalities. Simplify your model by removing custom components and sticking with Prophet's default settings.

Remember: All models are wrong, but some are useful. The goal isn't perfect predictions - it's better decision-making.

Run It on Your Own Revenue Export

Export your revenue by day or month as a CSV and upload it at MCP Analytics. The analysis returns the forecast, its components and the holdout accuracy checks described in this tutorial. You choose the columns; nothing connects to your accounts.

Try it on your data

Next Steps: Beyond Basic Forecasting

Congratulations! You've now built a solid revenue forecast with confidence intervals and validation metrics. Here's where to go from here:

1. Repeat the Forecast Each Quarter

Re-run the forecast on a fresh export when each quarter closes, and compare it with what happened:

2. Forecast Other Metrics

The same Prophet technique works for any time series:

3. Add External Factors

Prophet allows custom regressors - external factors that influence revenue:

4. Scenario Planning

Create multiple forecasts for different scenarios:

This helps you plan for uncertainty rather than being blindsided by changes.

5. Dive Deeper into Time Series

Once you're comfortable with Prophet, explore advanced techniques:

Key Takeaways

Let's recap what we've covered in this tutorial:

  1. Simple averages fail when revenue has trends, seasonality, and holiday effects
  2. Prophet decomposes your revenue into trend, seasonal and holiday components you can read
  3. Intervals matter - plan from a low scenario, and check that the interval's coverage holds on held-out data
  4. Test your forecasts with holdout data and a simple baseline before trusting them
  5. Apply forecasts practically to budgeting, hiring, inventory, and investor reporting
  6. All forecasts are uncertain - the goal is better decisions, not perfect predictions

The greatest value of a forecast is when it forces us to notice what we never expected to see - patterns in our revenue we wouldn't have spotted with simple averages or gut feeling. Prophet makes time series modelling accessible to anyone with enough historical data.

Start with your own revenue data: fit the model, hold out the most recent months, and see how it compares with a simple baseline.


Written by the MCP Analytics Team. Questions about revenue forecasting? Reach out to our team.

Not sure which plan? Compare plans →

Your turn

Bring your own data and the question you actually need answered.

MCP AnalyticsData science by email Send us your data and your question, and we will reply. ds@mcpanalytics.ai