Mark every GitHub release on your Amplitude charts

The moment a GitHub release is published, drop a matching marker on your Amplitude funnels and retention charts so every metric shift ties back to a deploy.

Deterministic Code
GitHubAmplitudeEngineeringProductData SyncNotifications & Alerts
PromptCreate

Whenever a GitHub release is published, mirror it into Amplitude so every deploy shows up as a vertical marker on our funnel, retention, and segmentation charts. This is a deterministic passthrough — no reasoning, no summarization, just field mapping.

Trigger: GitHub webhook on the release event, filtered to action=published. Read the release tag, release title, release body, and the published_at timestamp off the payload.

Before the first annotation is ever created, ensure the 'Releases' annotation category exists in Amplitude. Call Amplitude's List Annotation Categories and look for a category named 'Releases'. If it isn't there, call Amplitude's Create Annotation Category with name='Releases' once. Cache the resulting category id for subsequent runs so we don't re-check every time.

Then, for each published release, do two things in Amplitude:

1. Call Amplitude's Create Chart Annotation. Use the release tag as the annotation label, the release body (release notes) as the description, and the 'Releases' category id from the step above. The date must be formatted as YYYY-MM-DD — convert the GitHub published_at timestamp to that format in the project's timezone.

2. Call Amplitude's Create Release with the release tag as the version, the release title as the release name, the release body as the description, and the same YYYY-MM-DD release date. This is what makes future funnel and retention charts render the deploy as a vertical marker automatically.

Expose a repository/branch filter as a customizable knob (default: fire on every release from the connected repo). A common setup is to only annotate releases whose tag matches a prod pattern (e.g. starts with 'v' and is a semver tag on the default branch), so pre-releases and hotfix drafts don't clutter the charts. Skip GitHub releases where prerelease=true or draft=true by default; make that toggleable.

Reference: Amplitude documents this pattern in their Releases doc at https://amplitude.com/docs/analytics/releases. Amplitude annotation dates are strictly YYYY-MM-DD; do not pass ISO timestamps. The annotation category is a one-time setup — never create it more than once, always check first.

Additional information

What does this prompt do?
  • Listens for new GitHub releases and fires the moment one is published
  • Adds a vertical marker on your Amplitude charts using the release tag as the label and the release notes as the description
  • Records the release in Amplitude's Releases so future funnel and retention reports show the deploy line automatically
  • Keeps every deploy grouped under a single 'Releases' category on your charts so metric shifts are trivially attributable
What do I need to use this?
  • A GitHub account with access to the repository whose releases you want to track
  • An Amplitude account with permission to create annotations and releases
  • A rough sense of which repositories or branches count as production, in case you only want to annotate certain releases
How can I customize it?
  • Restrict which repositories or branches count. For example, only annotate releases from your main production repo or those tagged with a specific naming convention.
  • Rename the annotation category. 'Releases' is the default but many teams prefer 'Deploys', 'Prod releases', or a per-team label.
  • Change what shows up in the annotation. You can shorten the description to a one-line summary, strip markdown from the release notes, or include the release author's name.

Frequently asked questions

Will this work with private GitHub repositories?
Yes. Once you connect your GitHub account with access to the repo, the workflow fires on releases from private repos the same way it does for public ones.
Does it fire on draft or pre-release versions too?
By default it only reacts to fully published releases. If you want to include pre-releases or drafts, that's a knob you can tweak when you set it up.
What happens if I've never used annotation categories in Amplitude?
The workflow checks whether a 'Releases' category already exists and creates it once if it doesn't. Every future release lands in that same category, so your charts stay tidy.
Will old charts show these markers too?
Yes. Amplitude annotations are attached to a date, not to a specific chart, so any funnel, retention, or segmentation chart that includes the release date will render the marker automatically.
Can I annotate releases from more than one repository?
Yes. You can connect multiple repositories and either send everything into the same 'Releases' category or split them into per-team or per-product categories.

Never wonder what shipped when a metric moves.

Tie every release to the exact moment it landed in your analytics, without a single manual annotation.