How to Make a Control Chart in Google Analytics
Tired of overreacting to every little dip and spike in your Google Analytics data? A control chart is the perfect tool to help you distinguish between normal, everyday fluctuations and significant changes that actually need your attention. In this tutorial, we’ll walk through what a control chart is and how to build one for your website traffic using data from Google Analytics.
What is a Control Chart (and Why Should You Care)?
In simple terms, a control chart is a graph used to study how a process changes over time. It shows you the normal range of variation for a specific metric and helps you immediately spot when something out of the ordinary happens.
Think about your daily commute to work. Most days, it might take you between 25 and 35 minutes. That’s your normal, expected range of variation. An accident that shuts down the freeway and makes your commute 90 minutes long is an outlier - an event that is not part of the normal process. A control chart does the same thing for your website data, helping you separate the "normal traffic jam" from the "freeway shutdown."
The Key Components of a Control Chart
Every control chart has three main lines that give your data context:
- The Center Line (Average): This is simply the historical average of your metric (e.g., your average daily sessions over the last 90 days). It represents the central tendency of your data.
- The Upper Control Limit (UCL): This line is plotted three standard deviations above the average. Data points above this line are highly unusual.
- The Lower Control Limit (LCL): This line is plotted three standard deviations below the average. Data points below this line are also highly unusual and can signal a problem.
Any data points that fall between the Upper and Lower Control Limits are considered "in control" or "common cause variation." This is the natural, random noise inherent in any process. The points that fall outside the limits are "out of control" or "special cause variation," signaling that something non-random has affected your process and is worth investigating.
For Google Analytics, this means you can stop asking questions like, "Why were sessions down 8% yesterday?" and start focusing on the events that truly matter - like a viral blog post that sends your traffic above the UCL or a technical issue that pushes it below the LCL.
Free PDF · the crash course
AI Agents for Marketing Crash Course
Learn how to deploy AI marketing agents across your go-to-market — the best tools, prompts, and workflows to turn your data into autonomous execution without writing code.
The Catch: You Can't Build Control Charts in Google Analytics
Before we go further, it's important to know that Google Analytics 4 doesn't have a built-in feature for creating control charts. Its strengths lie in collecting, organizing, and displaying standard marketing analytics. Statistical Process Control (SPC) charts like this are a more specialized analysis that requires a little help from another tool.
Don’t worry, it's not complicated. To build our control chart, we’ll simply export our daily traffic data from GA4 into a spreadsheet tool like Google Sheets or Microsoft Excel.
How to Create a Control Chart with GA4 Data: Step-by-Step
We'll use Google Sheets for this walkthrough since it's free and easy to use. The process is nearly identical in Excel.
Step 1: Get Your Data from Google Analytics 4
First, we need a simple dataset: daily sessions over a period of time. A 90-day window is a great starting point for establishing a reliable average.
- Navigate to the Explore section in your GA4 property and start a new Blank exploration.
- In the Variables panel, click the "+" sign next to Dimensions. Search for and import the Date dimension.
- Next, click the "+" sign next to Metrics. Search for and import the Sessions metric.
- Drag the Date dimension to the Rows section in the Tab settings panel.
- Drag the Sessions metric to the Values section.
- In the top left, adjust the date range to "Last 90 days" and click Apply.
- You should now have a simple two-column report showing sessions for each day. In the top right corner of the report, find the export icon (a sheet with a down arrow) and choose Google Sheets or Download CSV.
Exporting directly to Google Sheets is the easiest path, but if you download a CSV, just open a new blank Google Sheet and import the file via File > Import.
Step 2: Prepare Your Spreadsheet for Calculations
Your exported data might have a header row and an extra, unneeded summary row at the end. Clean up your sheet so you only have two clean columns: Date (Column A) and Sessions (Column B).
Create new column headers in C, D, E, and F for our calculations: Average, StDev, UCL (Upper Control Limit), and LCL (Lower Control Limit).
We'll also reserve a couple of cells on the side to hold our main statistical values so they’re easy to reference. Let’s use column H.
In cell H1, type the label "Overall Average". In cell H2, type "Standard Deviation". This keeps our sheet organized.
Step 3: Calculate the Average and Standard Deviation
Now, let’s do the basic math needed for our control limits.
Calculating the Average (Center Line)
The center line is the average of all your sessions. Assuming your 90 days of session data are in cells B2 through B91, click on cell H1 (next to our "Overall Average" label).
Enter this formula:
=AVERAGE(B2:B91)
Now, in your Average column (cell C2), link to this calculated average. Crucially, use dollar signs to create an absolute reference so the value doesn’t change when you drag the formula down.
In cell C2, enter:
=$H$1
Click the small blue square on the corner of cell C2 and drag it down to the last row of your data. The average value should now appear in every row.
Calculating the Standard Deviation
Standard deviation measures how spread out your data is from the average. We need it to define our upper and lower limits.
Click on cell H2 (next to our "Standard Deviation" label). Enter the following formula to calculate the standard deviation for your sessions:
=STDEV.S(B2:B91)
Step 4: Calculate the Upper and Lower Control Limits
With our average and standard deviation calculated, we can now define our control limits. These are almost always set at three standard deviations from the average.
Calculate the UCL
The formula for the UCL is: Average + (3 * Standard Deviation).
In cell E2 (under your UCL header), enter this formula, again using absolute references for our calculations in column H:
=$H$1 + (3 * $H$2)
Drag this formula down to apply it to all rows.
Calculate the LCL
The formula for the LCL is: Average - (3 * Standard Deviation).
However, you can’t have negative website sessions. To ensure our LCL never drops below zero, we’ll use the MAX function.
In cell F2 (under your LCL header), enter this formula:
=MAX(0, $H$1 - (3 * $H$2))
Drag this formula down to the last row.
Your spreadsheet should now be complete, with the original data and all the components for your chart calculated.
Free PDF · the crash course
AI Agents for Marketing Crash Course
Learn how to deploy AI marketing agents across your go-to-market — the best tools, prompts, and workflows to turn your data into autonomous execution without writing code.
Step 5: Visualize Your Control Chart
Now for the fun part: creating the chart.
- Select your main data columns, starting from cell A1. Hold Shift and click the last cell in column F that contains data. Your selection should include Date, Sessions, Average, UCL, and LCL (skip the StDev calculation column).
- Go to Insert > Chart.
- Google Sheets will likely default to a line chart, which is a good starting point. In the Chart editor on the right, change the Chart type to a Combo chart.
- Go to the Customize tab in the Chart editor.
- Click on Series. Here you can style each line individually.
- Finally, give your chart a descriptive title, like "Daily Sessions Control Chart (Last 90 Days)."
You did it! You now have a control chart showing your daily sessions in the context of their normal statistical range.
How to Read and Use Your Control Chart
The chart makes it visually obvious when something needs your attention. Here are the main signals to look for:
Points Outside the Control Limits
This is the most direct signal. A point that falls above the UCL or below the LCL is a "special cause" variation.
- A point above the UCL: Ask what went right. Did a new marketing campaign launch? Did an influencer mention your brand? This is an anomaly worth learning from.
- A point below the LCL: Ask what went wrong. Did an ad campaign get paused accidentally? Did the website experience downtime? This requires immediate investigation.
The Rule of Seven
Another important signal is a run of seven or more consecutive points that are all on the same side of the center line (all above the average or all below it).
- A run of 7+ points above the average suggests a real positive shift in performance, even if no single day crossed the UCL. Maybe your recent SEO improvements are starting to pay off, lifting your baseline traffic.
- A run of 7+ points below the average signals a sustained dip. Perhaps a competitor has launched a major promotion, or a change in a Google algorithm is negatively impacting your search visibility.
Using these rules helps you focus your energy where it matters most, instead of spending time analyzing random statistical noise.
Final Thoughts
Building a control chart transforms your GA data from a list of confusing daily numbers into a clear story about your website's performance. It gives you the statistical context to confidently distinguish random noise from significant events, letting you focus on the insights that truly matter.
We believe data shouldn’t be so hard to work with. The manual process of exporting data to spreadsheets, building formulas, and formatting charts gets the job done, but it’s slow and tedious. That’s why we built Graphed to automate this work. You can connect Google Analytics and other data sources in seconds, then ask for charts and reports using simple, natural language—instantly building live, professional dashboards that save you hours of manual reporting drudgery.
Related Articles
How to Create Facebook Ads API for Claude Code
Create a Meta Marketing API access token that never expires, using a system user, so Claude Code can pull Facebook ad reports and manage campaigns.
ClickHouse vs Postgres: When to Switch to Columnar
Comparing ClickHouse vs PostgreSQL means matching storage architecture to workload. Row storage wins for transactions. Columnar wins for scan-heavy analytics.
Google Ads for Orthodontists: Get More Booked Consults
Most orthodontic Google Ads campaigns waste money on low-intent searches. The problem is structure, not the platform.