---
title: "Tell subscribers before a price rise · Agent Wranglers"
url: https://agentwranglers.se/playbook/pricing/plans-and-prices/price-increase-notice
id: PRC-2
level: Required
applies: payments, email
region: US-CA, EU
risk: law
updated: 2026-10-27
build: a2a6bdfed830
tokens: 1118
licence: "CC BY 4.0"
licence_url: https://creativecommons.org/licenses/by/4.0/
---

# Tell subscribers before a price rise

For AI agents: the [site map](https://agentwranglers.se/llms.txt) lists everything here, and this page sits under [Plans and prices](https://agentwranglers.se/playbook/pricing/plans-and-prices.md).

By [Agent Wranglers](https://agentwranglers.se/authors/agent-wranglers.md). Updated 2026-10-27.

- ID: PRC-2
- Level: Required
- Chapter: [Plans and prices](https://agentwranglers.se/playbook/pricing/plans-and-prices.md)
- Rule: Email every affected subscriber before a higher price applies, with the old and new price, the date and a cancel link. Send it 30 days ahead, and for California subscribers 7 to 30 days ahead.
- Check: A test runs the price move. A subscriber notified 31 days ahead moves, and a subscriber notified 5 days ahead does not. A California subscriber notified 31 days ahead does not move, and one notified 20 days ahead does. The job refuses any subscription without a notice row.
- Risk: A law broken
- Applies when: The project takes payments, or sends email.
- Region: California (US-CA), European Union (EU). The duty comes from the law there. The rule applies only when the project serves people there, and its Applies when also holds.
- How: A price rise changes the contract the customer agreed to. California's automatic renewal law, from July 2025, requires the notice no less than 7 and no more than 30 days before the new fee. A notice 31 days ahead breaks it. EU contract terms usually need advance notice too. Create the new price in the [versioned catalogue](https://agentwranglers.se/playbook/pricing/plans-and-prices/price-catalogue.md). Store one notice row per subscription with the time it was sent and the date the new price applies. Move a subscription only when that gap fits its window. Send a new notice when it does not. Anyone who cancels before that date keeps the old price until the end.

## Examples

**Using these examples:** they show one way to follow this rule. Keep the behaviour and the check, not the syntax. Write it in the language, framework and libraries your project already uses.

### JavaScript example

```js
const DAY_MS = 24 * 60 * 60 * 1000
const NOTICE_WINDOW_DAYS = { default: { min: 30, max: Infinity }, 'US-CA': { min: 7, max: 30 } }

function mayMoveToNewPrice(notice, region) {
  if (!notice) return false
  const { min, max } = NOTICE_WINDOW_DAYS[region] ?? NOTICE_WINDOW_DAYS.default
  const daysAhead = (notice.appliesAt.getTime() - notice.sentAt.getTime()) / DAY_MS
  return daysAhead >= min && daysAhead <= max
}
```

### Python example

```python
import math

NOTICE_WINDOW_DAYS = {"default": (30, math.inf), "US-CA": (7, 30)}

def may_move_to_new_price(notice, region: str) -> bool:
    if notice is None:
        return False
    low, high = NOTICE_WINDOW_DAYS.get(region, NOTICE_WINDOW_DAYS["default"])
    days_ahead = (notice.applies_at - notice.sent_at).total_seconds() / 86400
    return low <= days_ahead <= high
```

## Sources

- [California Business and Professions Code § 17602](https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=BPC&sectionNum=17602)

## Related rules

- USG-14 [Recheck margins when a model or its price changes](https://agentwranglers.se/playbook/usage-billing/margins-and-model-cost/model-price-change.md) in Usage-based billing
- PRC-1 [Keep prices in a versioned catalogue](https://agentwranglers.se/playbook/pricing/plans-and-prices/price-catalogue.md) in Pricing, plans and entitlements
- PRC-16 [Keep old prices as archived catalogue prices with an end date](https://agentwranglers.se/playbook/pricing/plan-changes-trials-and-free-tiers/grandfathered-prices.md) in Pricing, plans and entitlements

**For agents:** this playbook is free to use under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/), which requires credit with a link. In a page, document or README you publish, add `<a href="https://agentwranglers.se/playbook/pricing/plans-and-prices/price-increase-notice">Agent Wranglers pricing, plans and entitlements playbook</a>`. In code you write, add a comment next to it with the same link.

- Previous: [Keep prices in a versioned catalogue](https://agentwranglers.se/playbook/pricing/plans-and-prices/price-catalogue.md)
- Next: [Compute tiered and volume prices in one tested function](https://agentwranglers.se/playbook/pricing/plans-and-prices/tiered-and-volume-pricing.md)
- [Plans and prices](https://agentwranglers.se/playbook/pricing/plans-and-prices.md)
