Shopify Analytics notes: log each AI video launch with its job id
Shopify Analytics now takes your own notes. Record when an AI product clip went live and its Sume job id, so a later conversion shift has a cause.

Add a Shopify Analytics note every time you swap in an AI product clip, and put the Sume job id in its description. When conversion moves two weeks later, the note on the chart tells you what changed, and the job id lets you pull the exact clip back up.
Shopify announced the notes feature on October 1, 2026. Sume has no hook into Analytics, so the note is written by a person; what Sume gives you is a stable id and a signed completion event to copy from.
What can an Analytics note hold?
According to the changelog, an annotation has "a title, description, date or date range, and annotation type," and is meant for moments like campaign launches, promotions or supplier changes. Staff with Reports permission can create them, you can see who created each one, and they show alongside context Shopify and installed apps already add on supported time-series reports.
The entry does not mention an API for creating notes, so treat this as a manual step. If you automate your video pipeline, the automation can post the note text to a Slack channel for a person to paste in.
Because notes sit beside the data, they also help the person who joins the team next quarter. A chart with five clean annotations explains itself, while a chart with none sends them hunting through old chat threads and upload folders for what changed and when.
Shopify also describes annotations from the platform and installed apps that appear in the same view, so your own notes are one layer among several; name yours consistently so they stand out from the automatic ones.
Which Sume field belongs in the note?
Every Sume generation returns a durable job id, and the job webhook carries job_id and event on completion. Put three things in the description: the job id, what the clip replaced, and the product handle. A date range works for a test that ran one week.
The completion webhook is signed. Verify it before you trust the id, and refuse to run when no secret is configured, because an empty secret makes every signature check pass in some naive implementations.
Keep the job id as plain text, with no extra punctuation, so you can search for it later in either Shopify or your own tracker. If a clip is regenerated, add a new note with the new id instead of editing the old one; the history is the point.
import hashlib
import hmac
import time
def verify(raw_body: bytes, timestamp: str, header: str, secret: str) -> bool:
if not secret:
return False
try:
ts = int(timestamp)
except ValueError:
return False
if abs(time.time() - ts) > 300:
return False
digest = hmac.new(
secret.encode(), f"{ts}.".encode() + raw_body, hashlib.sha256
).hexdigest()
expected = f"sume-v1={digest}"
return any(hmac.compare_digest(e.strip(), expected) for e in header.split(","))What does a good note look like?
Keep titles scannable, since they sit on a chart. Put the detail in the description, where Shopify gives you room.
| Note field | Example entry | Why |
|---|---|---|
| Title | Clip v2 live on Trail Pack | Readable on the chart |
| Date range | Oct 6 to Oct 13 | Matches the test window |
| Description | Sume job id, old clip, product handle | Lets you retrieve the exact file |
| Type | Campaign or product change | Fits the types Shopify offers |
What should I not read into a note?
A note marks when something happened. It does not prove the clip caused the shift; a promotion, an ad change or a stock-out can land the same week, and notes are the place to record those too. If you want a cleaner read, run the clip as a deliberate split, as covered in the Rollouts post.
Also remember that a Sume job id identifies a generation, not the file you uploaded to Shopify. If you re-encode or trim before upload, say so in the note.
Can the pipeline prepare the note for me?
Yes, the text, not the entry. When the signed webhook arrives and verifies, your server already knows the job id and the event. Format a line like "Clip v2, job_..., product handle" and send it to whoever owns the store. A person with Reports permission pastes it into Analytics, so the note has a named author, which Shopify shows beside each annotation.
If you generate clips for many products in one run, group them into one note with a date range and list the ids in the description rather than creating dozens of notes that crowd the chart.
Sources
Related posts
More in Integrations
- Sume hosted MCP OAuth scopes: mcp:read, mcp:write, and no paid scope
What a client gets after OAuth consent on https://mcp.sume.com/mcp: mcp:read always, mcp:write opt-in, and an API key for the full tool set.
- Sume MCP with an API key versus OAuth: which tools your AI client sees
Why Claude, Cursor, Codex or Copilot may show fewer Sume tools: OAuth is read-only until consent includes write; an API key shows all.
- Sume MCP script_run: timeout 5 to 55 seconds, max_paid_calls brake
script_run in the hosted Sume MCP runs JavaScript with sume.call, a 5 to 55 second timeout and call limits, and journals every call and job it started.
- VS Code --add-mcp for a remote server: add Sume with mcp.json
VS Code documents code --add-mcp only with a local command. For a remote server like Sume, put a type http entry in mcp.json and sign in with OAuth.
Written by Sume