How to time expansion offers

Build a timing table of trigger moments, success gates and cool-down rules, so every upsell or cross-sell reaches the customer when the need is obvious.

Start from the customer's calendar, not yours

Many teams make offers when they have a quota to hit. Customers do not care. They care about their own calendar: a renewal, a new hire, a budget round, a product launch.

So list those moments first. The signals that tell you something is changing are covered in How to identify expansion opportunities. This chapter takes the next step: deciding what to do and when once you see one.

Define five trigger moments

I would start with these five and write each one down with a clear rule:

  • Limit reached: usage hits 80 per cent of a plan limit, such as seats, projects or volume.
  • Team growth: a new colleague joins, or the customer asks for another login.
  • Outcome achieved: they hit the result they bought you for.
  • Renewal window: 90 days before the renewal date, not 10.
  • Budget cycle: the start of their quarter or financial year.

Each trigger needs a data source. Usage lives in your product or billing tool, for example Stripe Billing or Chargebee. Renewal dates and contacts live in your CRM, such as HubSpot. Health and outcomes can be tracked in Planhat, Vitally or ChurnZero.

Match each trigger to one offer

Do not offer everything at every moment. Pair each trigger with the one offer that solves the need that moment shows:

  • Limit reached: the next plan, with the extra capacity.
  • Team growth: more seats or a team package.
  • Outcome achieved: the next outcome, often a cross-sell. See How to structure cross-sell offers.
  • Renewal window: a plan that fits where they are now, not where they started.
  • Budget cycle: a planned project with a start date.

Write this as a table with three columns: trigger, offer, first message. It fits on one page.

Add three gates before anything goes out

A trigger tells you the customer may be ready. A gate tells you whether you should ask. I would use three:

  1. Success gate: the account has reached the outcome they bought for. If not, fix that first, following You cannot expand an account you have not made successful first.
  2. Support gate: no open complaint or unresolved ticket.
  3. Billing gate: no overdue invoice or open dispute.

If any gate is closed, the offer waits. Pause the automation, tell the account owner, and fix the problem first.

Add a cool-down

Make at most one offer to an account in any 60 days. If they say no, wait for the next trigger. If they say "not now", ask when to come back and put that date in the CRM. Nothing makes a helpful suggestion feel like pressure faster than three emails in a fortnight.

Set an alert and an owner

Automate the detection, not the decision. When a trigger fires and the gates are open, create a task for the account owner and post a note in Slack, using Zapier or Make. The owner has five working days to send the first message.

For small accounts, the first message can be automated. For larger accounts, a person writes it. The conversation itself is covered in How to handle expansion conversations.

Common mistakes

  • Making offers during onboarding, before value has landed.
  • Waiting for the renewal to bring up expansion, when budgets are already set.
  • Offering to an account with an open complaint.
  • Sending several offers in a short period.
  • Automating the whole message for your largest accounts.

How you know it works

Track acceptance rate by trigger. After a quarter, you should see which triggers convert and which do not, and you should retire the weakest. The time from trigger to first message should be under five working days. Customers should rarely say that an offer came at a bad time. When they do, check which gate failed.