# Subscriptions AI agents can start, pause and cancel

> Make subscriptions clear for AI agents: plan prices and terms in the HTML, named controls to skip, pause and change, and a fair cancel path.

By Ghost Agent Lab · Task completion · https://ghostagentlab.com/articles/subscriptions-ai-agents/

## Key takeaways

- A subscription is an ongoing commitment, so an AI assistant needs the repeat price, billing period and cancellation terms in text before it can explain a plan.
- Introductory prices shown without the price that follows are an easy gap to miss on plan pages.
- Skipping, pausing and changing a subscription need their own named buttons, with the next delivery or charge date in words.
- A cancel button as easy to find as the sign-up button, with one offer at most and a clear confirmation, works for people and agents alike.
- This week, ask an AI assistant what your subscription costs after the first box and how to cancel, and fix whatever it can't answer from your site.

People can ask AI assistants which coffee subscription to pick, whether a meal kit can be paused, and how to cancel a plan they no longer use. Here's how to make starting, changing, pausing, skipping and canceling a subscription clear enough for an AI agent to explain and carry out, and fair enough that the person stays in control.

## Why subscriptions are different

A one-off purchase ends at the confirmation page. A subscription is an ongoing commitment: a price that repeats, a renewal date, sometimes a minimum term, and terms that change after a trial or an introductory period. That raises the stakes for an agent in two ways.

- **Before signing up**, an assistant has to explain what the person is agreeing to. If the renewal price or the trial terms are hidden, it either can't answer or gets it wrong, and a wrong answer about money that leaves someone's account every month is worse than no answer.
- **After signing up**, managing the subscription usually needs the person's account. An agent acting for them may be able to drive the pages once they've signed in, but only if the controls are clear.

The fix is the same in both cases: write plans, prices and terms in plain text in the HTML, and give every action a named control with a clear confirmation.

1. **Compare plans:** Price, billing period and what's included
2. **Start:** Terms summarized before payment
3. **Change, pause or skip:** Named controls, next date in words
4. ✓ **Cancel:** As easy to find as the sign-up

**The subscription journey.** An agent may be asked to help at any of these four points, not just the first.

## Plan pages agents can read

Most questions about subscriptions are answered on the plan page, or not at all. Take a fictional coffee roaster, Bramble Roasters at bramble.example. An assistant asked "How much is Bramble's coffee subscription, and can I cancel any time?" needs these facts on the page, in text:

- **The price and the billing period**, together: "$18 every 2 weeks", not "$18" next to a toggle that changes the period only when clicked.
- **What changes, and when.** "First box $9, then $18 every 2 weeks." "Free for 14 days, then $12 a month." Introductory prices without the price after them are an easy gap to miss.
- **Commitment and cancellation terms.** "No minimum term. Cancel any time before your next box ships." If there is a minimum term or a notice period, say so on the plan page, not only in the terms of service.
- **Delivery or usage details** for each plan: how often, how much, which options.

Put all of it in the server-rendered HTML. Many agents read the HTML a server sends and don't run JavaScript, so a price that only appears after a script loads, or after a frequency toggle is clicked, is a price they don't see. See [prices AI agents can read](https://ghostagentlab.com/articles/machine-readable-prices/) and [why AI agents can't see JavaScript-only content](https://ghostagentlab.com/articles/javascript-content-ai-agents/).

`bramble.example/subscribe`

- **House Blend subscription**
- First box $9, then $18 every 2 weeks (✓ Price after the offer, in text)
- No minimum term. Pause, skip or cancel any time before your next box ships. (✓ Terms on the plan page)
- [Start House Blend subscription] (✓ A named button)

**A plan an agent can explain.** The repeat price, the offer and the terms are all in text on the page.

Structured data can describe a repeating price too. schema.org's [UnitPriceSpecification](https://schema.org/UnitPriceSpecification) has a `billingDuration` property, which schema.org says can "model the contractual duration of a subscription or payment plan", and `billingStart`, for a price that starts after a set time (schema.org's example is "a price increase after the first year of a subscription").

Support for these properties varies between the services that read structured data, so treat it as a complement to clear text, never a replacement. The text on the page is what every agent can read.

## Starting a subscription

Starting a subscription is checkout with extra terms. Everything in [how to make checkout work for AI shopping agents](https://ghostagentlab.com/articles/agent-ready-checkout/) applies, plus a few things specific to subscriptions:

- **Name the button after the plan.** "Start House Blend subscription" or "Start 14-day free trial" tells an agent exactly what it's about to press. "Continue" doesn't.
- **Use real controls for frequency and quantity.** Radio buttons or a `<select>` labeled "Deliver every", with options such as "2 weeks" and "4 weeks". See [variant pickers AI agents can use](https://ghostagentlab.com/articles/variant-pickers-ai-agents/).
- **Summarize the terms before payment.** A short block above the payment step: what renews, at what price, how often, when the first charge happens and how to cancel. The agent can read it back to the person, who approves the payment themselves.
- **Confirm in text and by email.** The confirmation page and email should repeat the plan, the price, the next charge date and a link to manage the subscription.

The Web Content Accessibility Guidelines already ask for this kind of care. [WCAG 2.2](https://www.w3.org/TR/WCAG22/) success criterion 3.3.4 says pages that create financial commitments should let the person review, confirm and correct information before finishing, or make the submission reversible or checked for errors. A clear review step helps people and agents for the same reason.

## Changing, pausing and skipping

These are the everyday requests after sign-up: "skip next week's box", "switch to decaf", "pause until I'm back". They usually happen inside the person's account, so the person signs in and the agent works through the account pages. For that to work:

- **Give each action its own named button.** "Skip next delivery (June 12)", "Pause subscription", "Change coffee", "Change frequency". An icon or a menu labeled "Manage" hides the very words the agent is looking for.
- **Show the next delivery or charge date in words.** "Next box ships Thursday, June 12. You'll be charged $18 on June 11." The agent can then confirm the change worked.
- **Make pause lengths explicit.** Offer choices such as "2 weeks", "4 weeks" and "Until I resume", and say what happens at the end of the pause.
- **Confirm each change in text.** "Skipped. Your next box now ships June 26." A toast that vanishes after two seconds may be gone before the agent reads it.
- **Keep the subscription page at a stable address**, such as `/account/subscriptions`, so a link in an email takes the person (and their agent) straight there after sign-in.

Our guide to [order tracking, returns and reorders by AI agents](https://ghostagentlab.com/articles/order-tasks-ai-agents/) covers the after-sale journey more broadly, including what to do when a task needs the person's account.

## Canceling without dark patterns

"Cancel my Bramble subscription" is a fair thing to ask an assistant. If canceling is hidden behind a phone call, a chat with your support team, or five pages of offers, the assistant can't do it, and it can only tell the person how hard you've made it.

A cancellation path that works for people and agents:

- **A "Cancel subscription" button on the subscription page**, with that name, as easy to find as the button that started it.
- **One retention offer at most**, with a clearly named way past it: "No thanks, cancel my subscription". Avoid wording that makes the person click "I don't want to save money" to leave.
- **No forced phone call or chat** for a subscription that was started online.
- **A clear end state.** "Your subscription is canceled. You won't be charged again. Your last box ships June 12." Then the same in an email.

**A cancellation that traps:**

- ✗ "Manage" menu with no cancel option
- ✗ Call us to cancel
- ✗ Several offers, each with a vague button
- ✗ No confirmation of when charges stop

**A cancellation that respects the person:**

- ✓ "Cancel subscription" on the subscription page
- ✓ Online, in the same place as sign-up
- ✓ One offer, with "No thanks, cancel" beside it
- ✓ "You won't be charged again" in text and email

**Two ways to cancel.** The fair one is also the one an agent can complete and report back on.

> **Check the rules where you sell.** Laws on automatic renewals, reminders and online cancellation differ by country and state, and some are changing. Ask your legal team which apply to you. A clear, online cancel path is a sensible starting point everywhere.

## What AgentScore checks

[AgentScore](https://ghostagentlab.com/agentscore/) covers the groundwork for subscriptions, not the subscription journey itself. When it looks for a pricing page, it recognizes addresses such as `/pricing`, `/plans`, `/subscribe` and `/subscription`. Then:

- **AI agents can open your product, pricing and cart pages** checks that AI assistants aren't blocked from those pages, by bot protection or robots.txt.
- **Prices are in the page HTML** looks for a price in the pricing page's HTML (or a product page's, if there's no pricing page) before JavaScript runs. A price that only appears after scripts run, or no price at all, is a warning.
- **Agents can find and press your add-to-cart or sign-up button** looks for the main action and checks it's a real button that nothing covers. On a store, that's the add-to-cart button on a product page. On a site with a pricing page and no products, it's a sign-up button such as "Subscribe" or "Start free trial".

The scan never signs up, signs in or submits a form, so it can't see your account pages, and it doesn't test changing, pausing or canceling. To test the journey from plan page to the payment step, describe it as a [Ghost Agent](https://ghostagentlab.com/ghost-agent/) test in the Ghost Agent Lab app. Ghost Agents always stop before paying.

## Where to start

- ✓ **Price and period together:** "$18 every 2 weeks", in the HTML.
- ✓ **Price after any offer or trial:** On the plan page, not only in the terms.
- ✓ **Terms summary before payment:** What renews, when, at what price, and how to cancel.
- ✓ **Named controls for skip, pause and change:** With the next date in words.
- ✓ **A "Cancel subscription" button:** Online, with a clear confirmation.

**Five things to check.** Each one helps an agent explain your subscription and helps the person trust it.

1. **Ask an assistant about your own plans.** "How much is the House Blend subscription after the first box, and can I cancel any time?" If it can't answer from your site, the page isn't saying it clearly enough.
2. **Read your plan page with JavaScript off.** Are the prices, periods and terms still there?
3. **Walk through canceling as a customer.** Count the steps, and note any step where the way forward isn't a clearly named button.
4. **Fix the cancel path first.** It's the journey most likely to hurt trust, and usually a small change.

## Sources and further reading

- [UnitPriceSpecification](https://schema.org/UnitPriceSpecification) (schema.org)
- [Web Content Accessibility Guidelines (WCAG) 2.2](https://www.w3.org/TR/WCAG22/) (W3C)
