Data Storytelling

How to annotate charts in Data Studio (formerly Looker Studio)

A spike with no explanation generates a question; a spike with a label generates a decision. Every way to annotate a Data Studio chart, which sheet to use when, and how to write the note.

Lazarina Stoy·

How to annotate charts in Data Studio

Data Studio has no button that pins a note to a date on a chart, so annotating a chart means choosing a carrier: a text box, the chart title, a date reference line, or a sheet of dated events blended into the report. Knowing which one to reach for is most of the job.

There are several methods, they suit different situations, and the one worth learning properly is the sheet. It comes in three versions, depending on what the rows hold, and each has its own step-by-step tutorial:

This post is the overview: what Data Studio gives you natively, the methods compared and when to use which, keeping commentary in step with a report that refreshes itself, and how to write an annotation that doesn’t turn into a claim you can’t support. The worked examples use Harbour & Fern, the fictional garden and home retailer from my ebook.

Why an annotation matters more than the chart it sits on

A spike with no explanation generates a question. A spike with a label generates a decision.

Every unexplained movement in a client report is an invitation for someone else to supply the explanation. A dip in March means “the migration went live on the 4th” if you say so, and “something went wrong with SEO” if you don’t. Without annotation, a dashboard is a data feed with your logo on it.

Think of annotations as your data’s diary entries. Here’s what they buy you:

What you get What it looks like in practice
Faster analysis You see the reason for a peak or a dip at a glance, instead of racking your brain or sifting through emails to recall what happened that week.
A shared language A new team member, a client or a director reads the same marker and gets up to speed without a call. Annotations replace the long email chain and the notes scattered across tools.
A knowledge base Over time the sheets become a record of what was done and what you thought about it, so whoever analyses the account next sees the “why” behind past trends.
Better next decisions Knowing what moved your metrics before helps you anticipate what the next launch, campaign or update will do.

What Data Studio natively gives you for annotating a chart

Carrier Good for Limits
Text box A sentence beside the chart Static; edited by hand every month
Chart title The finding every reader sees One line; charts have a title and no subtitle field
Tooltip Values on hover Gone in a PDF or a screenshot
Reference line or band Thresholds; on a time series, one or two dates One typed date per line, per chart

Text boxes

Free, static, and underrated: a sentence beside the chart, with no dependencies.

Chart titles as annotation

The most under-used annotation space in the tool. A chart title should state the finding, not name the metric. “Organic traffic fell 12% after the March update” does more work than “Sessions by month”, and it costs nothing. In a chart’s Style tab, turn on Show title under Chart title and type the sentence. There’s no subtitle field, so a second line of context goes in a text box under the title.

If you change one thing after reading this, change your chart titles.

Tooltips

Values on hover: useful live, gone in a PDF or a screenshot, which is where a lot of client reporting ends up.

Reference lines and bands, including a date on a time series

Good for thresholds, and on a time series they can mark a single date: in Style, add a reference line, set Line axis to X-axis and Line type to Constant value, pick the date and label it. I tested it in October 2026, and the line prints in the PDF. Column and bar charts with a date take Y-axis lines only.

A Data Studio time series of views with a dashed vertical Reference Line #1; the Style tab shows Line axis set to X-axis, Line type Constant value and a date field reading 16/10/2026
A date line on a time series: X-axis, Constant value, then the date. View full size

It’s a native marker for one or two big events on a key chart. It doesn’t scale: each date is typed into one chart, a chart takes up to ten reference lines, and a dozen reports means a dozen edits. The full steps are in reference lines and targets.

GA4 and Search Console annotate now, but not in your report

GA4 and Search Console both let you pin a note to a date now. In GA4 you need the Analyst role or above to add one, and Google Analytics adds system notes of its own when something affects the data (About annotations). Search Console followed in November 2025 with custom annotations on its Performance reports (Google’s announcement).

None of those notes travel to Data Studio, and Google documents no way to pull them in. So the sheets below are my record, and I copy the handful of events that matter into GA4 or Search Console for colleagues who work there.

Four ways to get real, data-driven annotations into a Data Studio report

Method Effort Maintenance Client-safe? Best for
Text box by hand Minutes Manual, but trivial Yes One-off commentary; small reports
Google Sheets blend (events, commentary or Google’s updates) An hour to set up Adding a spreadsheet row Yes Recurring reports; teams; many events
Community component Minutes Low, until it breaks With caution Internal dashboards
Third-party connector Setup + subscription The vendor’s problem Yes Agencies already paying for one

Reach for the sheet when the manual work stops being trivial, usually at a few reports or when more than one person maintains them. It’s the only method where updating the story means editing a spreadsheet rather than the report, and it needs no advanced technical skills: a sheet, a blend and two style settings.

The three annotation sheets compared, and when to use which

The three sheets share one build: dated rows blended with your analytics data on the date, drawn as bars on a right axis, with a table beside the chart. What changes is what each row holds and who writes it:

Sheet One row is Who writes it Columns Use it when
Custom events Something your side changed or launched Whoever shipped it: developers, email, PR, SEO Date, Event Category, Event Name, Description Several teams change things that move the numbers, and the report has to say what happened when
Expert commentary An interpretation of a metric for a period The consultant or analyst Date, Category, Metric, Metric Source, Commentary, Written by The client needs to know what the numbers mean, and the dashboard refreshes faster than you write
Google’s updates A core, spam or other ranking update Nobody: it’s a dataset start_date, end_date, update_name, type, duration, source_url Any organic search report, so Google’s changes sit next to yours

Method 1: the custom events sheet

Credit for the blend goes to Chris Green, who published it in 2022: keep your events as dated rows in a Google Sheet, join them to the analytics data by date, and plot them as a second series. Everyone whose work moves the numbers adds a row on the day something ships. The event name, counted distinct, returns 1 on an event day; drawn as bars on a right axis from 0 to 1, each event becomes a full-height bar.

A Data Studio combo chart of Search Console URL clicks with three teal event bars, and an events table beside it; the Style tab highlights Series no. 2 set to Bars on the Right axis
The event series as bars on the right axis, with the events table beside the chart. Screenshot from my tutorial on lazarinastoy.com (my own site’s Search Console data). View full size

I built it into a template, sheet included:

The Custom Event Annotations for Search Console Data Studio template — a Data Studio dashboard by Lazarina Stoy
Custom event annotations on Search Console: an events summary with category filters, then impressions, clicks, CTR and average position each with the event bars on them. Open the template · by Lazarina Stoy

The full build, with the sheet’s columns, the GA4 and Search Console blends, which metric to pair with which event category and the chart settings, is in custom event annotations for GA4 and Search Console, step by step.

Method 1b: the expert commentary sheet

The events sheet records what happened; the commentary sheet records what you think it means. Each comment carries a date, the metric it’s about and who wrote it, so the reading stays attached to its period. Blend it with GA4 on Date (GA4 first, left outer join) and put a table of the comments beside the chart each one explains.

A report page headed Traffic Breakdown: an Organic Sessions time series with a table beside it listing dated comments by metric, each signed by the person who wrote it, and the same pairing for organic social sessions below
The chart and the commentary about it, side by side. The commentators in my demo are invented. Screenshot from my tutorial on lazarinastoy.com. View full size
The Expert Commentary Annotations for GA4 Data Studio template — a Data Studio dashboard by Lazarina Stoy
Expert commentary on GA4: a summary of who said what, filterable by category and author, then each chart with its dated comments beside it. Open the template · by Lazarina Stoy

Worked example. At the end of September, Harbour & Fern’s SEO lead adds one row: 30 Sep · SEO · Sessions · GA4 · “Organic now 6% above pre-migration. Two category pages down about two positions since the 12 August core update (likely contributor); recovery plan in October’s report.” · SEO lead. Dated, it reads as September’s view, not as a standing claim on the page.

The full build and my rules for writing the comments are in expert commentary annotations for GA4, step by step.

Method 2: a community visualisation

Community visualisations that add hover annotations are quick and they work. The caveat is the same as for any community visualisation: it’s third-party code running against your data, and if it breaks or is abandoned there’s no support. Fine on an internal dashboard; on a client report you’ll maintain for two years, it’s a dependency you don’t control (community visualisations, and when to trust one).

Method 3: a third-party annotation connector

Some paid connectors offer annotation as a feature. If you already pay one for data, check whether it’s included before building anything.

Method 4: text boxes positioned by hand

The unglamorous one, and frequently correct. Three charts and monthly commentary? A text box beside each is faster to build and impossible to break.

Annotate Google’s updates and the AI search changes

On an organic search report, the biggest bends in the line are often Google’s doing, not yours: core and spam updates, and since 2024 the AI features that change how often a search ends in a click. Give them rows like any other event, marked “context”, since you didn’t cause them and they rarely hit every page the same way.

For the ranking updates you don’t need to type anything. This site keeps a CSV of Google’s ranking updates, refreshed daily from Google’s Search Status Dashboard, with incidents kept in a separate file. One IMPORTDATA formula pulls it into a Google Sheet, and from there it blends like the events sheet.

A finished report section: sessions and URL clicks time series with pink algorithm update bars, an Algorithm Updates Count scorecard of 5, a date control, a search box for the update name, and a table of updates with month, summary and duration
Google’s updates as bars on sessions and clicks, with an update count and a searchable table. Screenshot from my tutorial on lazarinastoy.com. View full size

The AI Overviews and AI Mode launches aren’t ranking updates, so they go into the events sheet by hand. The step-by-step build, the dataset’s columns and the AI search dates I’d add for a UK or US site are in how to annotate Data Studio charts with Google’s algorithm updates.

The real objection: the dashboard refreshes and your commentary doesn’t

The dashboard refreshes automatically. Your commentary doesn’t. So on the first of the month, the report shows this month’s data next to last month’s notes, which is worse than no commentary, because it’s confidently wrong. Four habits fix it, and none of them is “update it more often”:

  • Move the commentary out of the report. The commentary sheet means each note lives in a spreadsheet with a date attached, tied to the period it describes rather than floating on the page.
  • Date the text box when you can’t. A commentary box whose first word is the period (“September: …”) still goes stale, but honestly: the reader can see which month it describes.
  • Publish your update cadence on the page. A small text box saying “Commentary updated on the first Monday of each month” turns a stale-looking report into a documented one.
  • Stamp how fresh the data is. A “GA4 data to 15 Oct 2026” line, whose date comes from the data itself, through a query result variable. The steps are in the executive summary post.

Before you write “data to” anything, check how often the source refreshes. Open Resource › Manage added data sources, click Edit on the source, then Data freshness in the header. On GA4 the choices are every hour, every 4 hours, or every 12 hours, the default.

The Data freshness dialog for the GA4 Google Merch Shop source: How fresh do you need this data to be, with Every hour, Every 4 hours and Every 12 hours, the last marked Default and selected
The GA4 source’s Data freshness setting, opened from the data source header. View full size

Chapter 24 of my ebook, Data Storytelling in Data Studio, covers how to show a reader how old a number is, and how to keep commentary in step with the data when it refreshes.

An annotation records an event, it doesn’t prove a cause

An annotation placed next to a movement reads as a causal claim, whether you meant it that way or not. Put “core update” next to a dip and you’ve told the reader the update caused it. If the real cause was a tracking change, a stock-out or seasonality, you’ve anchored the conversation on the wrong thing, and it’s very hard to walk back.

So before an annotation stays on the chart, check it against the inputs. Did anything else change in that window? Did the tag break? Did a redirect go in? An annotation should survive the question “how do you know”. That’s what the Confidence column in my events sheet is for: “confirmed” needs evidence, not timing.

When you’re inferring rather than measuring, say so in the annotation. “Core update landed 12 August, likely contributor” is honest and still useful. “Core update” beside a cliff is a claim you may not be able to support.

What to annotate on a marketing report, and what to leave alone

Worth annotating: algorithm updates and AI search changes · campaign launches and end dates · site migrations and redesigns · tracking, tag or consent changes · pages deleted or redirected · known seasonality · data gaps.

Not worth annotating: everything else that happened. A chart with eleven labels communicates less than a chart with three. The test: does this event explain the shape of the line? If not, it stays in the sheet, not on the chart.

Worked example. Harbour & Fern’s sheet has plenty of rows for the year, but its organic chart shows four: the migration (4 March), the purchase tag gap (3–9 April), the 140 missed redirects finally shipped (28 April), where the line turns back up, and the 12 August core update, labelled a likely contributor. The email flows and the paid social push stay in the sheet; neither changes the shape of the organic line.

Annotating a tracking break or data gap honestly

The most valuable annotation on any client report, and the one most often left off.

When the tag broke, the connector failed, or the GA4 property switched over, say so on the chart, at the dates affected. “Tracking gap 3–9 April, data incomplete” prevents three separate wrong conclusions and takes ten seconds. Mark it on every chart the gap affects, even where that chart’s metric looks fine: Harbour & Fern’s sessions weren’t touched by the April tag gap, but the revenue chart beside them was. A data health page that flags missing days is how you catch the gap before the client does.

It feels like admitting a fault. It reads as competence.

Where to put an annotation, and what each placement does

Four annotation placements on a chart: on the point for a single moment, across a band for a period, in the margin for longer text, and in the title for the finding itself
Where the annotation sits decides whether it explains a point, a period, or the whole chart.
Placement Marks In Data Studio
On the point A single moment: a launch, an outage, an update A date reference line, or an event bar from the sheet
Across a band A period: a campaign window, a content freeze A reference band (Google documents date ranges on the X axis) or a run of event bars
In the margin Anything over about fifteen words A text box or the commentary table beside the chart
In the title The finding everyone must see Style › Chart title, written as a sentence

The title is the placement that matters most, and the one people reach for last. If a piece of context matters to everyone opening the report, it isn’t an annotation at all: it’s the chart title.

How to write an annotation that earns its space

The same event annotated twice: 'Site migration' with no date, direction or expectation, against 'Migration 14 June — sessions down 38%, recovery expected 6-8 weeks'
The same event, annotated twice. Only one of these survives being forwarded.

Short, and in this shape: what happened, when, which way it pushed, and what to expect next. Under fifteen words on the chart; anything longer goes in the commentary.

  • “Site migration, 4 March: organic down 18%; recovery expected by June”
  • “Brand campaign ran 8–22 March: inflates the non-brand comparison”
  • “Deleted and redirected 40 thin blog posts in December: explains the Dec–Jan drop”

Each one turns a scary shape into a known event. The same goes for event names in a sheet: specific beats vague every time, because “Update” tells the next reader nothing.

For longer commentary, analyse, don’t report. These are the rules I write by:

  • Interpret, don’t restate. The reader can see the numbers. If clicks rose 10%, the scorecard already says so; say why, how sure you are, and how to repeat it.
  • Give it context: a benchmark or competitor to compare with, and the outside events that could have moved the number.
  • Add, don’t rewrite. New insight is a new dated row; past comments stay as they were written.
  • Tell readers when to expect it: “New expert insights added on the first and third Monday of each month.”

The step-by-step tutorials, and more templates to annotate

Each sheet has its own tutorial, with every step screenshotted:

Frequently asked questions

Can you add annotations in Data Studio?

Not as a “note on this date” feature the way you can in GA4 or Search Console. Data Studio gives you text boxes, chart titles, tooltips, and reference lines, including a date line on a time series. For annotations that move with the data, blend a dated events sheet into the report, use a community visualisation, or use a third-party connector.

How do I mark an event like a site migration on a Data Studio time series?

For one event, add a reference line on the X axis: Style › Add a reference line, Line axis X-axis, Line type Constant value, then pick the date and label it. It prints in a PDF download. For several events, blend an annotations sheet keyed on the same date field as the chart.

Which annotation sheet should I use?

Custom events for what your side changed, expert commentary for what the numbers mean, and Google’s ranking updates for what Google changed. Most SEO reports use all three.

Do GA4 or Search Console annotations show up in Data Studio?

No. Google documents no way to bring them into a report. Keep one events sheet as the record, blend it into the report, and copy the events that matter into GA4 or Search Console for colleagues who work there.

How do I stop report commentary going stale when the data refreshes?

Store the commentary as dated rows in a sheet and blend it into the report on the date field, so each note stays attached to the period it describes. Where you must use a text box, start it with the period, and add a line saying when commentary is updated.

Where to go next on annotations and report context

Shopping Cart
Scroll to Top