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:
- Trend - The underlying growth (or decline) of your business
- Seasonality - Predictable patterns that repeat monthly, quarterly, or yearly
- Holiday effects - Special events that cause temporary spikes or dips
- Random noise - Natural variation that doesn't follow a pattern
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:
- A point estimate - your best guess for each day or week
- Prediction intervals - a model-based range (e.g., an 80% interval of $75K to $95K)
- Component breakdown - how much of your forecast comes from trend vs. seasonality vs. holidays
- Accuracy metrics - so you know how much to trust the forecast
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
- Time period: A few months of daily data can show weekly patterns. Yearly seasonality needs at least two years: Prophet's default turns it off below that, because one pass through the calendar cannot separate a seasonal effect from a one-off.
- Frequency: Daily or weekly data works best. Monthly data works but gives less detail.
- Format: A CSV file with two columns: date and revenue
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
Common Data Sources
If you're wondering where to get this data, here are typical sources:
- Stripe: Export your revenue data from the dashboard (Revenue → Reports → Export)
- QuickBooks: Run a Profit & Loss report and export to Excel/CSV
- Your database: Query daily revenue with:
SELECT DATE(order_date), SUM(amount) FROM orders GROUP BY DATE(order_date) - Google Analytics 4: Export e-commerce revenue data
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
- Export your revenue as a CSV with one date column and one revenue column
- 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)
What to Check Before Fitting
Look for these problems in the file before you fit anything:
- Date gaps: Are there missing days? Prophet can handle gaps, but large ones reduce accuracy.
- Outliers: Are there extreme values that might be data errors?
- History length: Do you have enough for the seasonal periods you want? Weekly patterns need weeks of daily data, yearly patterns need at least two years.
Step 2: Select Prophet Decomposition Module
Once your data is ready, choose a forecasting method.
Why Prophet?
Common forecasting options:
- Moving Average: Simple but can't handle seasonality
- ARIMA: Powerful but requires statistical expertise to configure
- Prophet: Fits trend and seasonality with few settings to choose
- Exponential Smoothing: Good for simple trends
For revenue with trend and seasonal patterns, Prophet is a reasonable first model to try, compared against a simple baseline, because it:
- Fits weekly and yearly seasonal components (yearly only with enough history)
- Handles missing data and outliers gracefully
- Provides uncertainty intervals (not just point estimates)
- 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) |
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:
- Q4 spike: Enterprise customers spend remaining budget in December
- Q1 slowdown: Decision-making delays in January-February
- Summer dip: Slower sales during vacation season
Prophet uses Fourier series to model these smooth, repeating patterns.
3. Weekly Seasonality
Day-of-week effects. For e-commerce, you might see:
- Weekend spike: Higher consumer purchases on Saturday-Sunday
- Monday dip: Lower activity as the work week starts
For B2B businesses, weekdays typically show higher activity than weekends.
4. Holiday Effects
Special events that don't fit the regular seasonal pattern:
- Black Friday/Cyber Monday: Massive spike for retail
- Christmas/New Year: Shutdown period for many businesses
- Independence Day: Reduced activity in the US
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.
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:
- Black dots: Your actual historical revenue
- Blue line: The forecast (Prophet's best estimate)
- Light blue shaded area: The uncertainty interval (typically 80%)
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."
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
- Trend: growth of roughly 2.4% to 2.8% a month in the forecast below ($94,200, $96,800, $99,100)
- Yearly Seasonality: with 15 months of history, Prophet's default would leave this off. If you switch it on explicitly, the annual pattern rests on a single pass through most months, so treat it as weak evidence
- Weekly Seasonality: not applicable, because the data are monthly
- Holiday Effects: none specified in this example
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
- Growth momentum: The trend continues upward in this example
- Seasonal recovery: In this illustration, April follows a typical Q1 slowdown
- 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
- 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:
- 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)
- Generate forecast: Run Prophet on just the training data to predict Jan-Mar 2026
- 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 |
Visual Validation
Numbers matter, but also look at the forecast chart and ask yourself:
- Does the forecast line follow the general pattern of historical data?
- Are the seasonal patterns consistent with your business knowledge?
- Do the uncertainty intervals contain most of the actual data points?
- Are there obvious outliers that might be skewing the forecast?
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:
- Customer support: If revenue keeps growing, plan support capacity to follow it
- Sales team: Seasonal Q4 spike? Hire temp sales help in October-November
- Operations: Plan for summer slowdown by scheduling team vacations during low-revenue periods
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:
- Not enough historical data to estimate seasonality (at least 2 full seasonal cycles)
- Your revenue actually doesn't have strong seasonal patterns
- Seasonality mode is set incorrectly
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:
- Your revenue is highly volatile (large day-to-day swings)
- Forecasting too far into the future (uncertainty grows with time)
- Recent trend changes make the future less predictable
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:
- Manually adjust the forecast upward based on your business knowledge
- Add a custom regressor to Prophet (e.g., "product_launch = 1" after launch date)
- Start the forecast from post-launch data if the business has fundamentally changed
Problem 4: "Seasonality seems backward"
Example: Prophet shows December as a low month, but you know it's your peak season.
Possible causes:
- Data quality issue (dates might be formatted incorrectly)
- Insufficient history (only one December, which happened to be low due to a one-time issue)
- Multiplicative vs. additive seasonality setting
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.
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.
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:
- Keep the previous forecast alongside the actuals
- Record the error and the baseline's error for the same period
2. Forecast Other Metrics
The same Prophet technique works for any time series:
- Customer acquisition: Forecast new signups to plan marketing spend
- Churn: Forecast customer losses to spot retention issues
- Support tickets: Forecast volume to optimize staffing
- Website traffic: Plan infrastructure capacity
3. Add External Factors
Prophet allows custom regressors - external factors that influence revenue:
- Marketing spend: How does ad budget correlate with revenue?
- Product launches: Quantify the revenue lift from new features
- Pricing changes: Measure impact of price increases/decreases
4. Scenario Planning
Create multiple forecasts for different scenarios:
- Base case: Current trends continue
- Optimistic: New product launch succeeds beyond expectations
- Pessimistic: Major competitor enters market
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:
- ARIMA models: More control over seasonal patterns
- LSTM neural networks: Capture complex nonlinear patterns
- Ensemble methods: Combine multiple models for better accuracy (learn more about AdaBoost and ensemble techniques)
Key Takeaways
Let's recap what we've covered in this tutorial:
- Simple averages fail when revenue has trends, seasonality, and holiday effects
- Prophet decomposes your revenue into trend, seasonal and holiday components you can read
- Intervals matter - plan from a low scenario, and check that the interval's coverage holds on held-out data
- Test your forecasts with holdout data and a simple baseline before trusting them
- Apply forecasts practically to budgeting, hiring, inventory, and investor reporting
- 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 →