How to

How to build a product launch tracker

The feature is done and the launch is not, because six teams each thought somebody else was doing the enablement. Here is the model behind a launch tracker, the prompts to build it, and what it takes to run it.

The short answer

A product launch tracker is four parts: a tier that decides how much launch a feature gets, a workstream per function with a named owner and its own readiness, exit criteria that are checkable rather than a feeling, and a go or no-go held on a date with the evidence attached. The part teams get wrong is the tier. Treating every feature as a full launch exhausts the company, and treating none of them as one means the big launch lands with nobody ready.

launches.helix-app.ai

Launches

11

Launches this quarter

2

Tier one

1

At risk, go or no-go Thursday

6 days

Median slip, tier one

100%
100%
100%
75%
60%
20%
ProductDocsLegalSupportMarketingSales enablement

Segments GA, tier one, go or no-go on 11 Sep. One blended number for this launch reads 76% and looks fine. Split by workstream, sales enablement has no owner and twelve days to go.

A sketch of the readiness view. The point of splitting it by workstream is visible here: the average looks healthy and one column is nearly empty.

What matters here

  • A launch tracker is four parts: a tier, a workstream per function, checkable exit criteria, and a dated go or no-go decision.
  • Tier the launch first. Not every feature deserves a press release, and treating them all the same is how teams stop reading launch emails.
  • Give each workstream a named owner and its own readiness. "Marketing is 60% ready" is actionable; one overall percentage is not.
  • Exit criteria have to be checkable. "Docs are ready" is a feeling; "the three how-to pages are published and linked from the release note" is a test.
  • Ship date and readiness are different questions. Track them separately or the readiness number quietly becomes whatever the date needs it to be.
  • Hold the go or no-go on a date with the evidence attached, and record no-go decisions. The launches you delayed are the most useful history you have.

Who this is for

You run product, product marketing or a launch function. Things ship and then nobody knows about them, or a big launch arrives and support has never seen the feature. What you want is one page per launch that says who is ready and who is not.

How it works in practice

What happens between a feature being finished and a launch being ready.

  1. 1

    The tier is set first

    Which decides how much launch this gets, and therefore which workstreams apply and how much each owes.

  2. 2

    Workstreams are created from the tier

    Product, docs, marketing, enablement, support, legal, each with a named owner rather than a function name.

  3. 3

    Owners update their own status

    Because a tracker only the launch owner can edit is just the launch owner chasing seven people on Slack.

  4. 4

    Readiness is the proportion of criteria met

    Which makes it a measurement. Criteria marked met with no evidence get flagged, because those are the ones that are not.

  5. 5

    Ship date and readiness stay separate

    Put them in one field and readiness becomes whatever the date needs it to be, discovered on launch day.

  6. 6

    Go or no-go happens on a date, and is recorded

    Including the no-goes. A launch function with no record of what it delayed relearns the same lesson every quarter.

What a launch tracker is made of

A launch tracker is not a project plan with a launch date on it. It is four parts, and the first one prevents most of the pain.

A tier

How much launch this gets. A tier three feature note and a tier one launch need different work, and deciding that up front is what stops the company drowning in launches.

A workstream per function

Product, docs, marketing, sales enablement, support, legal, each with a named owner and its own readiness rather than one blended percentage.

Checkable exit criteria

Per workstream, per tier. Not "docs are ready" but the specific pages that must exist, so readiness is a test rather than a mood.

A dated go or no-go

A decision held on a date, with the readiness evidence attached and the outcome recorded, including the times you decided not to go.

These prompts start from a Helix project, which is what handles sign-in, credentials and hosting. Start with Helix

The prompts

Paste these into Claude Code, Codex or Cursor in order. Each one leaves you with something that runs, so you can stop after any step.

  1. Tier the launch before anything else

    Because not every feature deserves a press release.

    In this Helix project, build me a product launch tracker.
    
    A launch record: name, the feature or release it covers, the product area,
    the target date, the launch tier, the launch owner, current status, and a
    one-line description of what changes for the customer.
    
    Tiers, and make this the first decision:
    
    Tier one is a major launch. Press, analysts, a campaign, sales
    enablement, a customer webinar.
    Tier two is a significant feature. Release note, docs, an email, a sales
    briefing.
    Tier three is an incremental change. Release note and docs only.
    
    The tier determines which workstreams apply and which exit criteria are
    required, so let me define that mapping and change it.
    
    Treating every feature as a tier one exhausts the company and people stop
    reading launch emails. Treating none of them as one means the launch that
    mattered lands with support seeing it for the first time in a ticket.
    
    I sign in through Helix, so do not build a login page. Read the signed-in
    user from the runtime. And do not put any key or connection string in the
    code: if this needs to reach another system, tell me and I will create the
    connection in my workspace.

    Worth knowing. Tiering first is the whole trick. Everything downstream, which workstreams apply and how much work each owes, falls out of one decision made at the start.

  2. A workstream per function, each with its own readiness

    Because one overall percentage tells you nothing you can act on.

    Now add workstreams, one per function involved: product, documentation,
    marketing, sales enablement, support, legal and privacy, and anything else
    I add later.
    
    Each workstream on a launch has a named owner, a set of tasks derived from
    the tier, its own readiness percentage, and a status the owner sets:
    on track, at risk, or blocked.
    
    Show readiness per workstream rather than one blended number. "Marketing
    is 60%" tells you who to call. "The launch is 78% ready" tells you
    nothing, and it is usually an average that hides one workstream at zero.
    
    Roll up to a launch view: which workstreams are ready, which are at risk,
    and specifically what is outstanding in each.
    
    Let workstream owners update their own status without touching anyone
    else's, because a launch tracker that only the launch owner can edit
    becomes the launch owner chasing seven people on Slack, which is the
    thing you were trying to replace.
  3. Exit criteria you can check rather than feel

    The difference between a readiness number and a guess.

    Add exit criteria per workstream per tier, and make them checkable.
    
    Not "docs are ready" but the specific thing: the three how-to pages are
    published and linked from the release note. Not "sales is enabled" but
    the briefing is delivered, the one-pager is in the portal, and the demo
    environment has the feature switched on.
    
    Each criterion is either met or not, with who confirmed it and when. The
    workstream readiness percentage is then just the proportion met, which
    makes it a measurement rather than an opinion.
    
    Track the ship date and readiness as separate questions. If they are the
    same field, readiness quietly becomes whatever the date needs it to be,
    and you find out on launch day.
    
    Flag any criterion marked met with no evidence and no date, because those
    are the ones that turn out not to be met.
  4. A go or no-go that is a decision

    Held on a date, with the evidence attached.

    Last, the decision, and treat it as an event rather than an email thread.
    
    A go or no-go on a date before the launch: it shows every workstream's
    readiness, the outstanding criteria, the risks raised, and it records an
    outcome. Go, go with a named exception, or no-go with a new date.
    
    Record who decided and what they knew. A launch that goes with docs at
    40% is sometimes the right call, and the useful thing is that somebody
    chose it with the number in front of them rather than nobody noticing.
    
    Keep the no-go decisions. The launches you delayed and why are the most
    useful history a launch function has, and they are the ones that never
    get written down.
    
    Then report across launches: how many by tier per quarter, which
    workstream is most often the one at risk, average slip by tier, and the
    proportion that went with exceptions. If the same workstream is late
    every time, that is a resourcing answer rather than a nagging problem.

    Worth knowing. Recording no-go decisions is the part everyone skips. A launch function with no record of what it delayed relearns the same lesson every quarter.

  5. Connect it to real systems

    The step that turns a working prototype into something with your data in it.

    Now connect it to the systems we actually run, so it works on real data
    rather than the rows you seeded.
    
    Anything in angle brackets is a placeholder. Swap it for whatever we use
    instead, and have the app name the connection it wants rather than assume
    a vendor, so changing my mind later is a config change and not a rewrite.
    
    <Jira>. Read the epic behind the launch, so the product workstream's
    readiness is the real state of the work rather than a typed percentage.
    
    <Slack>. Give each launch a channel, and post the readiness summary before
    the go or no-go rather than asking seven people.
    
    <Notion>. Pull the launch brief, positioning and messaging, so the tracker
    links to them rather than duplicating them.
    
    <Salesforce>. Read which accounts asked for this, which is what turns a
    launch email into a list of calls worth making.
    
    <Google Calendar>. Hold the launch date and the go or no-go, so the date
    lives in one place and moves in one place.
    
    <Zendesk>. Confirm support macros and help centre articles exist, which is
    the support workstream's exit criterion rather than a promise.
    
    <Google Drive>. Track the enablement deck and one-pager as artefacts, so
    'the briefing is delivered' has something attached to it.
    
    <Amplitude>. Read adoption after launch, which is the only way to know
    whether a tier one was worth being a tier one.
    
    Only write where I have said to write. Everything else is read only.
    
    Do not write a key, a token or a connection string anywhere in the code,
    and do not ask me to paste one. Tell me which connections you need and I
    will create each as an authentication in my Helix workspace. Reference
    them by alias.

    Worth knowing. Every name in angle brackets is a placeholder for whatever you run. Helix holds the credential as a workspace authentication, so the app references an alias and never the secret itself.

  6. Ship it

    The last step of every build: a URL, and the right people on it.

    Deploy my app.

    Worth knowing. Your assistant runs helix deploy underneath and the app comes back as a URL. Unreleased features are in here by name, so set Access Control before sharing.

What it connects to

A launch touches every function, so the tracker reads readiness from where each function already works.

  • Jira

    Read the epic behind the launch, so the product workstream's readiness is the real state of the work rather than a typed percentage.

  • Slack

    Give each launch a channel, and post the readiness summary before the go or no-go rather than asking seven people.

  • Notion

    Pull the launch brief, positioning and messaging, so the tracker links to them rather than duplicating them.

  • Salesforce

    Read which accounts asked for this, which is what turns a launch email into a list of calls worth making.

  • Google Calendar

    Hold the launch date and the go or no-go, so the date lives in one place and moves in one place.

  • Zendesk

    Confirm support macros and help centre articles exist, which is the support workstream's exit criterion rather than a promise.

  • Google Drive

    Track the enablement deck and one-pager as artefacts, so 'the briefing is delivered' has something attached to it.

  • Amplitude

    Read adoption after launch, which is the only way to know whether a tier one was worth being a tier one.

Each line says whether the app reads, writes or both. Anything not described as writing should be read only.

Named systems are the ones most teams actually run, not a list of the only ones that work. Swap in whatever you use.

Each connection is an authentication in your Helix workspace, referenced by alias. The app names the connection it wants and never holds the credential, so nothing here ends up in your code and any of it can be rotated or revoked without a redeploy.

Running it for real

The build gets you a working tracker. It holds unreleased product plans and it is edited by seven functions, so it needs to be run properly.

AI Deployment

Get it to a URL people can open

One command takes the app from your assistant to a live address, so the people who need it get a link rather than instructions for running it locally.

App Security

Put your identity provider in front of it

Unannounced launches with dates are one of the more sensitive things a company holds. SSO plus scoped access is what keeps the roadmap inside the roadmap.

App Security

Connect the system of record with managed credentials

Reading epics from the issue tracker and writing status back needs real access. Granting it to the app rather than pasting a key into it means it can be rotated or revoked without a redeploy.

App Registry

Put a name on it

Every app carries a named owner and an entry IT can see, so the tool does not become nobody's problem when the person who built it changes role.

Cost Management

Know what it costs to run

Per-app spend visibility, with budgets and caps, so an internal tool cannot quietly become a line item nobody can explain.

Questions people ask

What is a product launch tracker?

One record per launch that sets a tier, splits the work into a workstream per function with named owners and separate readiness, holds checkable exit criteria, and records a dated go or no-go decision.

Why tier launches?

Because a tier three feature note and a tier one launch need different work. Treating everything as a major launch exhausts the company and people stop reading launch emails; treating nothing as one means the launch that mattered lands with support unaware.

Why readiness per workstream rather than one number?

Because "the launch is 78% ready" is an average that usually hides one workstream at zero. "Marketing is 60%" tells you who to call, which is the only thing a readiness number is for.

What makes an exit criterion good?

That it can be checked by somebody other than the person who owns it. "Docs are ready" is a feeling. "The three how-to pages are published and linked from the release note" is a test with an answer.

Why record no-go decisions?

Because the launches you delayed and why are the most useful history a launch function has, and they are the ones nobody writes down. Without them the same lesson gets relearned every quarter.

Can I build this without an engineering team?

Yes. The prompts here are written for Claude Code, Codex or Cursor and stage the build. The judgement calls are your tiers and your exit criteria, and getting the criteria checkable is worth more than anything the app does.

Last reviewed September 2026.

Build it, then run it properly

Helix is the governed runtime for AI-built apps. Deploy what you build, put SSO in front of it, connect it to your systems with managed credentials, and give it a named owner.