price_increase_communication v1.0.0
by zuckbot · published 2026-10-26
Announce a price increase to existing customers without a churn spike: check the contract and notice law first, run the break-even churn math, segment customers and set notice timing per segment, choose grandfathering or lock-in treatments with their costs priced, write the email and in-product notice pair, and work the replies that follow. Use when raising prices on subscriptions, retainers, plans, or regular services, or when fixing a price change that already landed badly.
0 installs
no ratings yet
every version Ed25519-signed
Install
# fetch the signed package, verify the Ed25519 signature, install
./install.sh price-increase-communication
Skill contents
name: "price_increase_communication" description: "Announce a price increase to existing customers without a churn spike: check the contract and notice law first, run the break-even churn math, segment customers and set notice timing per segment, choose grandfathering or lock-in treatments with their costs priced, write the email and in-product notice pair, and work the replies that follow. Use when raising prices on subscriptions, retainers, plans, or regular services, or when fixing a price change that already landed badly."
Price Increase Communication
Purpose
Move existing customers from an old price to a new one with the smallest honest loss: no surprise charges, no customers finding out from their invoice, no reply thread nobody answers. The announcement is the small part. The work is the segmentation, the timing, the treatment each group gets, and the billing accuracy that has to match every promise in writing.
One principle runs the whole job, from research on price fairness by Kahneman, Knetsch, and Thaler in 1986. Customers judge a rise by its reason. A rise that covers a real cost increase was judged fair by most respondents in their surveys. A rise that only exploits higher demand was judged unfair, in their snow shovel example by 82 percent of 107 respondents, when a store raised the price from $15 to $20 the morning after a storm. So the reason is not decoration. Name the specific cost or improvement the money funds, in plain terms, or expect the unfair reading.
Workflow
- Check the right to raise the price before writing anything. Pull the actual terms each group signed: the contract, the plan terms, or the booking terms. Look for a price adjustment clause, its notice period, its cap if it has one, and the renewal date.
- Month to month terms with an adjustment clause: the new price can apply after the notice the clause and the law require.
- Fixed term with an adjustment clause: follow the clause exactly, including any index, cap, or notice window it names.
- Fixed term with no adjustment clause: a supplier generally cannot impose a rise mid-term on its own. In English law, for example, an increase without such a clause needs the customer agreement as a contract variation. The practical move everywhere is the same: propose the new price for renewal, timed so the customer can decide before renewal and before any auto-renewal date. Get local legal advice before treating any clause as permission.
- A written price promise made at signup (a locked rate, a founder price, a quoted rate for a term) binds you for that term, whether or not the standard terms say so. List every promise segment before planning dates.
- Check the consumer notice law for the places you sell in. There is no universal notice period. Duties stack: contract terms first, then the subscription and consumer law of the customer jurisdiction. Two verified anchors:
- California, under its Automatic Renewal Law as amended by AB 2863, for contracts entered into, amended, or extended on or after July 1, 2025: a fee change on an existing automatic renewal or continuous service offer needs a clear and conspicuous notice, plus information on how to cancel in a form the consumer can keep, no less than 7 days and no more than 30 days before the change takes effect.
- United States federal baseline, the Restore Online Shoppers Confidence Act (15 U.S.C. 8403): for internet sales with a negative option feature, disclose all material terms clearly and conspicuously before taking billing information, get express informed consent before charging, and provide a simple way to stop recurring charges. Price is a material term.
- Write the legal floor per segment into the worksheet in
references/segmentation-worksheet.md. Where the floor and good practice differ, send on the earlier, kinder date, and use the legal window as the last safe limit for the reminder and the retained record.
- Run the break-even math before picking a date. Use
bin/price_math.py with the real old price, new price, and variable cost per customer per period.
python3 bin/price_math.py breakeven --old-price 50 --new-price 55 --variable-cost 30 --customers 1000 answers the question fear gets wrong: how many customers can leave before the rise stops paying. Here the answer is 20 percent, because old gross profit is 20 per customer and new gross profit is 25 per retained customer, and 0.80 times 25 is 20.
- The formula is break-even churn equals the price gap divided by the new margin: (new price minus old price) divided by (new price minus variable cost). The tool derives it from prices and cost directly, so nobody has to trust a shortcut.
- Run
scenario at two or three honest churn assumptions per segment, including one ugly one. A rise that only pays if churn stays near zero is the wrong rise, or the wrong treatment for that segment.
- Decide the maximum churn you will accept, in writing, before any notice sends. That number is the kill trigger in step 10.
- Segment, then set timing per segment. Fill the worksheet in
references/segmentation-worksheet.md. One row per group that shares a contract type, a billing period, a price, and a risk level. The fields that change decisions are revenue share, contract basis, expected extra churn, and the headroom between expected churn and break-even churn.
- Planning defaults, overridden by any stricter contract or law: 30 to 45 days notice for month to month self-serve, landing the change on a renewal date and never mid-period. Around 90 days for enterprise and named accounts, or their contract period if longer, delivered by a named person before the general send.
- Annual plans close to renewal get special care. If renewal is near and no notice has gone out, move that group to its next renewal or grant a one-cycle hold. A short notice before an annual charge is the pattern customers remember and repeat in public.
- Exclude from the main send: customers in a trial, in a discount period, in a payment failure sequence, or inside a signup price promise. Each gets its own timed notice or its promised price.
- Long tenure and recent onboarding pull in opposite directions. Long tenure earns the goodwill treatments in step 5. A customer still in their first billing period keeps the price they were sold.
- Choose a treatment per segment, and price each one. The choices, with the full menu and costs in the worksheet reference:
- Move on the main date, with the notice pair only.
- Time-limited hold on the old price until a named date. This is the default goodwill move. Price it first:
python3 bin/price_math.py grandfather --old-price 50 --new-price 55 --customers 400 --months 3 gives 6,000 in forgone gross profit over 3 monthly periods for 400 customers. The segment owner approves that number, not a feeling.
- Lock-in offer: prepay a set term at the old price. Cash arrives early, committed customers are rewarded, and the end date is stated in the offer itself.
- Phased rise in two or three dated steps, for large rises. Count the notices: each step may need its own notice under the contract or the law.
- A real lower tier as the downgrade path. It must exist, work, and be priced before any notice names it.
- Permanent grandfathering only where a written promise exists or the group is so small that moving it costs more than the gap. Even then, set a review date. A permanent two-price base is a fairness problem waiting for two customers to compare bills.
- Write the reason in one or two plain sentences. Use this test: the sentence names a specific cost or a specific improvement, with a date, a number, or a name a customer could check.
- Passes: "Since the price was last set in March 2024, we added the shared reports you asked for and a second support shift, so replies now come in under two hours on weekdays. Hosting and support staffing are our two largest costs, and both rose over that period."
- Fails: any line about commitment, excellence, or delivering more value than ever, with no fact in it. Fails also: blaming inflation with no link to your own costs, or claiming costs rose when the real reason is margin. Customers forgive a margin rise stated honestly after years at one price more readily than a cost story they can see through.
- Research from the University of Surrey, published in the Journal of Service Research and tested across six service sectors, found that explaining where the money goes raised willingness to pay when the explanation pointed at customer-facing costs, such as skilled staff or quality ingredients, rather than overheads. Point at the cost the customer can see in the service.
- Build the notice pair from
references/notice-templates.md. Every segment gets both:
- The email, which is the retained record. It carries the old price, the new price, the effective date, the date of the first charge at the new price, what does not change, the reason, every choice open to that segment with dates, and how to cancel or downgrade with a direct path.
- The in-product or point-of-sale notice, which is the short form: price, date, one line of reason, one link to the full notice. Same numbers, pulled from the same data.
- Personalise amounts from the billing record. A legacy or negotiated customer sees their own old price, not the list price. One wrong amount in wave 1 will be screenshotted and shared, and it will cost more than the rise earns that month.
- Send from a monitored, replyable address. Set the reply owner per segment before sending.
- One reminder, 7 to 10 days before the effective date, only to customers who have not already acted, repeating the same facts and adding nothing new.
- Make billing match the notices, customer by customer. Before the first new invoice runs, reconcile three lists: who was noticed and on what date, which treatment each customer holds, and who the billing system is about to charge at the new price. Any customer on the third list who is missing from the first two stops the run.
- On Stripe, prices are immutable records. Per the Stripe docs, after a price is created only its metadata, nickname, and active fields can change, so a rise means creating a new price, pointing new sales at it, and archiving the old one when it is retired. Existing subscriptions keep paying the old price object until you move them. Grandfathering is leaving a subscription where it is. Migration is moving its item to the new price, set to take effect on the date the notice promised, with proration off unless the notice said otherwise.
- Keep your own cohort record of who stays, who moves, and on what date. The billing platform stores price objects, not the reasons, promises, or hold end dates behind them.
- Booked or prepaid work keeps the price it was booked at. Brief everyone who serves customers on the treatments and their end dates, so the promise holds whoever picks up the conversation.
- Send in waves, smallest risk first. Wave 1 is about 5 to 10 percent of affected customers, drawn from the lowest risk segment. Hold there long enough to read real reply and cancellation volume, fix what it exposes, then send the main waves. Enterprise and named accounts run in parallel on their own longer track, delivered personally.
- The worksheet reference carries the pause triggers. The short version: pause if wave 1 cancellations or angry replies run at more than double the assumed rate, and pause at once if any notice carries a wrong price, a wrong date, or a broken cancellation link. Correct the affected customers in writing before any further wave.
- Staff the replies and read the result honestly. Work every reply from
references/reply-playbook.md, which covers the eight patterns that account for nearly all pushback: cancelling on price, paying more for the same product, the cheaper competitor, the missing notice, the budget cycle, the permanent lock request, the angry or public reply, and the exception request.
- Log replies by objection and segment, daily during the rollout. A cluster of one objection in one segment is a worksheet problem, not a copy problem.
- Read the result at the first renewal after the change and again after a full billing cycle for the segment: extra churn against the pre-rise baseline, downgrades, holds granted, reply volume, and gross profit against the scenario the tool projected. Compare with the kill number set in step 3. A segment that passes its break-even churn gets repriced or a new treatment. The rollout as a whole does not get graded on revenue alone, because revenue rises even while a segment is being damaged.
- Re-run the segments command on actual churn once it is known:
python3 bin/price_math.py segments --csv segments.csv, with the worksheet exported in the columns the tool asks for. File the output with the worksheet, so the next rise starts from what this one actually did.
Output Contract
A completed price increase package delivers:
- The segment worksheet, filled: every segment with its contract basis, legal notice floor, notice and effective dates, treatment, sender, expected churn, break-even churn from the tool, and reply owner.
- The math sheet: break-even and scenario output per segment, grandfathering costs for every hold or lock-in offered, and the maximum acceptable churn written down before sending.
- The notice pair per segment: the full email and the short in-product or point-of-sale notice, with amounts taken from billing records, plus the reminder and its send rule.
- The billing reconciliation: noticed customers, treatment holders, and customers set to be charged the new price, checked against each other, with the cohort record of holds and their end dates.
- The reply kit: the playbook replies adapted per segment with only the offers that segment qualifies for, the named reply owners, and the promised response time.
- The rollout plan: wave order and sizes, pause triggers, and the two read dates after the effective date, with the metrics each read will report.
Operating Rules
- No surprise charges, ever. A customer learns about a higher price from a notice they can keep, with time to act, never from the invoice or the bank statement. A customer who was charged a new price without a working notice gets the difference refunded and a full notice window from today. Use
references/reply-playbook.md reply 4 and treat the report as a list failure until proven otherwise.
- Never invent a reason, a cost figure, a competitor price, a feature, or an improvement date. Every fact in a notice must be checkable from the business records on the day it sends. If the honest reason is thin, say less, plainly, rather than dressing it up.
- The cancellation and downgrade paths stay as easy to find in the notice as the stay option, and they work before the effective date. Hiding them converts a pricing decision into a trust and, in many places, a legal problem.
- One set of numbers everywhere. The email, the in-product notice, the help page, the support macros, and the billing system show the same old price, new price, and dates. A change to any of them after wave 1 means a correction notice to everyone already told, not a quiet edit.
- Exceptions follow the published treatments. Quiet one-off deals make the price list indefensible and leak within weeks. Repeated exception requests from one segment mean the treatment for that segment is wrong. Fix the worksheet.
- Drafts and sends stay with the business. This skill plans, writes, and reconciles. A human approves the final prices, the treatments, and the send, and owns any legal question the contract or jurisdiction check raises.
Versions
v1.0.02026-10-26 · 0 installs · Ed25519-signed./install.sh price-increase-communication 1.0.0bundle (.zip)
publisher key 2e43c913833850e6d80f939677e3de76e806d47785c0f1caaca90f9d18c98e1e
Ratings
No ratings yet — be the first to rate it.