Free Shopify store auditSpeed, SEO and conversion leaks — no cost, no obligation.
Claim it
Thriftizer Solutions LLPShopify Select Partner
Book a Growth Audit
Email Marketing Oct 13, 2026 8 min read

Annotating BFCM in Shopify Analytics: Notes That Explain November

Shopify turned on annotations for time-series Analytics reports on 1 October, six weeks before BFCM. Here's what to log, who logs it, and how annotated charts make the December post-mortem defensible.

Annotating BFCM in Shopify Analytics: Notes That Explain November

Shopify Analytics annotations are short, date-stamped notes you pin to a time-series chart so that a spike or a cliff comes with an explanation attached. Shopify switched them on for date-axis reports on 1 October. That gives US teams about six weeks of practice before the four days that decide how the year gets graded. Use the practice. A note that says "SMS blast 9am, 25% sitewide, 41k recipients" sitting on the 28 November column is worth more in January than any amount of squinting at a line graph.

The habit matters more than the feature. Most BFCM post-mortems we read are reconstructions: someone opens Slack in mid-December and tries to remember which day the free-shipping threshold dropped. Annotations kill that work if, and only if, somebody is actually writing them during the week.

How to add notes to Shopify Analytics reports

Open any report in your admin that plots a metric over a date range: sales over time, sessions over time, conversion rate over time. The chart itself is where the note lives. Pick the date, type the note, save. It then shows as a marker on that date and surfaces on other time-series reports covering the same window, so a note you wrote while looking at sessions also explains the dip you find later in average order value.

Three rules we give clients on day one:

  • Write it the same day. Not Monday. The detail you lose first is the time of day something happened, and on BFCM, 9am versus 4pm is the whole story.
  • Lead with a category tag. We use CAMPAIGN, PRICE, STOCK, SITE, SHIP, APP. Prefixed notes can be scanned down a year of charts in about ten seconds.
  • Numbers, not adjectives. "Big email send" is useless. "Email 7:02am ET, 182k sends, 38% off outerwear" is evidence.

Keep a parallel row in a shared sheet if your finance or BI team works outside the Shopify admin. The chart note is for the person reading the chart; the sheet is for everyone else.

Which Shopify reports support annotations

Anything with a date on the x-axis. Sales, sessions, conversion rate, average order value, returning customer rate, all of the over-time views. What does not carry them: single-number summary cards, the live view, and tabular breakdowns by product or channel, because there's no date axis to pin a marker to. Shopify has been widening the set, so check inside your own admin rather than taking a blog post's word for it, this one included.

The practical consequence: annotate once, on whichever time-series report you happen to have open. You're tagging a date, not a chart.

Tracking campaign launches inside Shopify reports without duplicating your UTM work

These answer different questions and people conflate them constantly.

UTMs answer where did this session come from. They're attached to the click, they roll up in your acquisition reports, and they're the only honest way to separate the Meta prospecting campaign from the retention flow from the TikTok Shop referral.

Annotations answer what did we do to the store, and what happened to it. Most of the things that move a BFCM chart leave no UTM at all. A price change leaves none. A stockout leaves none. Neither does a Klaviyo flow you paused by accident, a checkout change, an app that started injecting a script on every page, or the hour your theme fell over under load.

So: campaign launches get both. A UTM on the link, an annotation on the launch date recording the offer, the audience size and the send time. The UTM tells you the campaign drove 14,000 sessions. The annotation tells you those sessions arrived at 7am against a page where the hero still showed last week's offer because the scheduled publish failed.

Why did sales spike on this day? Reading an annotated November chart

Here's the forensic case, with real arithmetic.

A store's baseline in early November: 4,200 sessions a day, 2.1% conversion, $68 AOV. That's 88 orders and roughly $5,984 a day.

Black Friday: 26,000 sessions, 1.6% conversion, $54 AOV. 416 orders, $22,464. Revenue up 3.75x, conversion down a quarter.

With no notes on the chart, the December meeting becomes an argument about why the site converted worse on the biggest day of the year. Somebody proposes a CRO sprint. With annotations, you see a CAMPAIGN note on that date: a creator video went wide at 11am and pushed roughly 9,000 extra sessions from an audience that had never heard of the brand. Strip those out and the remaining 17,000 sessions converted at about 2.4%. The site did fine. The traffic mix changed.

Then do the money. $54 AOV, $31 COGS, $7 of subsidised shipping leaves $16 contribution per order. 416 orders is $6,656. Spend $5,400 on ads that day and the whole of Black Friday cleared $1,256 before anyone's salary. That's the number worth arguing about, and the annotation about the free-shipping threshold dropping from $75 to $0 at midnight is what explains the $7.

Documenting price changes and stockouts while they're happening

Stockouts are the single most under-recorded event in US D2C reporting. A product sells out at 2pm on Saturday, demand moves to the next SKU, conversion drops on Sunday, and in January the merchandising team concludes that the Sunday email underperformed. It didn't. There was nothing to sell.

What we log during peak week, in order of how often it rescues a post-mortem:

  • Hero SKU sold out, with the time and the size or variant. Variant-level matters: losing the three middle sizes kills a category even though the product still shows as available.
  • Discount depth changes and the exact hour. Sitewide to category, 25% to 30%, codes stacking when they weren't supposed to.
  • Free shipping threshold changes, and any carrier cutoff you publish on the site. The day you post "order by Dec 18 for UPS Ground delivery by the 24th" shows up in the data two days later.
  • Site incidents. Checkout slow, theme deploy, an app update, a third-party script timing out. We annotate the deploy date whenever we ship a speed fix, because an LCP going from 3.1s to 1.6s changes the conversion baseline and you want to know when the step change began. If you're not monitoring that over time, SwiftStore tracks the score day by day, or our team handles it as part of Shopify speed optimization.
  • Tax and compliance changes. New state registrations going live in Shopify Tax mid-season will move your effective AOV on checkout reports, and nobody remembers that in January.

Who writes the notes

One person owns the log for the week. Not the team. A shared responsibility here produces either nothing or four contradictory notes on the same date.

In practice the best owner is whoever is already watching the live view on Friday morning, usually the eCommerce manager. Everyone else sends them a line in a dedicated Slack channel and they transcribe it into the admin at the top of each hour. Fifteen notes across five days is a realistic target. If you're writing fifty, you're logging noise; if you're writing three, you'll regret it.

Our own habit, running peak for US brands from Bengaluru: our team covers the overnight ET window and writes the notes for that shift, because an incident at 3am ET is 1:30pm for us and it would otherwise go undocumented until the client's team wakes up. That handover only works if both sides use the same tags.

How to read sessions and conversion in the week after a sale

The post-BFCM hangover is predictable and people still panic about it. Sessions stay elevated for three to five days because retargeting pools are full and inboxes are still warm. Conversion drops hard, because the people who were going to buy already did and the rest are waiting to see if you discount again. Returning customer rate climbs. AOV usually falls further before it recovers, since the leftovers are the long tail.

Annotate the end of the promotion as deliberately as you annotated the start. The day your codes expire is a structural break in the data. Without a marker there, the first week of December looks like a collapse in demand rather than the arithmetic of a sale ending.

Two things worth separating in that week: gross revenue and revenue after returns. Apparel returns from BFCM land in late December and January. If you're comparing December's conversion to November's without accounting for that, the comparison is cosmetic.

A BFCM post-mortem template that holds up

The document we build in the second week of December, and the annotated reports that feed each section:

  1. Daily table, 20 November to 5 December. Sessions, orders, conversion rate, AOV, revenue, ad spend, contribution. One row per day. Pull the annotations in as a final column so every anomaly has its explanation on the same line.
  2. Traffic mix by day. From UTM and channel reports. Paid social, email, SMS, organic, direct, marketplace referral. The question is whether a conversion drop was the site or the mix.
  3. Offer ledger. Every discount, threshold and bundle, with start and end timestamps straight from the PRICE annotations, and the orders attributable to each.
  4. Stockout log. SKU, variant, time out, time back. Multiply the lost hours by that product's normal hourly rate for a defensible missed-revenue figure rather than a guess.
  5. Incidents. Every SITE and APP note, with duration and an estimate of the sessions affected.
  6. Three decisions for next year. Not twelve. Each one has to cite a specific date and note from the log.

That last rule does the heavy lifting. If a proposed change can't point at a dated piece of evidence, it's a preference, and preferences shouldn't get budget.

Where this breaks

Annotations are free-text. There's no validation, no required fields, nothing stopping two people writing the same event three different ways. The tag convention is what keeps it usable, and it holds for about six weeks before someone drops the prefix. Audit the log once in mid-December and fix the stragglers.

They're also tied to a date, not a timestamp, so put the hour in the note text yourself. And they live in the admin. If your reporting actually runs in a warehouse, the annotations won't flow there on their own, which is why the parallel sheet exists.

None of this fixes a store that can't handle the traffic, a checkout that breaks under load, or an accessibility problem that turns into a demand letter in January. Annotations document. They don't repair.

Start now, on a quiet week. Annotate the next three things you change on the storefront and see whether the notes still make sense to you on the fourteenth day. If you want a second set of eyes on what the data is going to look like under peak traffic, our US team runs a free pre-peak audit covering speed, checkout and reporting setup. Booking it before the first week of November is the difference between fixing things and watching them.

Previous postNext post

Ready to scale your D2C brand profitably?

Let's build a growth engine that drives more traffic, more conversions and more profit.

Book a Growth Audit
📅 Free Audit💬 WhatsApp