Skip to content

Move Team to per-member pricing with unlimited executions - #1806

Merged
RhysSullivan merged 2 commits into
mainfrom
seat-based-pricing
Aug 28, 2026
Merged

Move Team to per-member pricing with unlimited executions#1806
RhysSullivan merged 2 commits into
mainfrom
seat-based-pricing

Conversation

@RhysSullivan

@RhysSullivan RhysSullivan commented Aug 28, 2026

Copy link
Copy Markdown
Collaborator

What

New pricing for new customers. Existing subscribers stay on their current plan version and keep billing exactly as before.

Free Team Enterprise
Price $0 $15 / member / month custom
Members up to 3 unlimited, billed per seat unlimited
Executions 100k / month unlimited unlimited

How

  • autumn.config.ts: unarchive the members feature. Team drops the $150 flat price and the 250k execution allowance; it now bills $15 per member in arrears and has unlimited executions. Free gains a members item (included: 3) for visibility. Enterprise tracks seat usage but stays unpriced (set per contract at attach).
  • Autumn versions plans on update, so syncing this config creates new plan versions; current subscribers are untouched.
  • Seat reporting: AutumnService.setMemberSeats sets the members balance to an absolute usage. reportMemberSeats recounts active members from WorkOS (pending invites hold a seat for the gate but are not billed) and is forked after member removal, invitation acceptance, org creation, and on every login callback — the callback pass picks up joins the app never sees (SSO JIT, join by domain, dashboard edits). Orgs on plan versions without a members item are skipped, so legacy plans never error.
  • Copy: plans page, billing page tagline, and the marketing pricing cards now show the per-member price. The plans page price is hardcoded next to the feature copy because the per-seat price lives on the plan item, not the plan-level price the SDK surfaces.

Verification

  • apps/cloud: typecheck, lint, full unit suite (344 passing).
  • e2e, all on the Autumn emulator seeded from the new config:
    • member-seat-billing-sync (new): the creator seat lands on the members balance, a pending invite is gate-counted but not billed, and the removal-triggered recount reconciles — one adjustment event total.
    • billing-trial-checkout-stale (Team trial checkout), member-invite-seat-limit (free 3-seat gate), and the four billing-customer-provisioning scenarios all pass.
  • The seat-sync assertions needed balances.update in the Autumn emulator; added in emulate v0.14.1 and consumed here.

Notes

  • The member seat GATE is unchanged (free: 3, paid: unlimited) — no product behavior changes, pricing only.
  • After deploy, the config must be synced to Autumn via atmn for the new versions to exist.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Aug 28, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
executor-marketing 0d08a2c Commit Preview URL

Branch Preview URL
Aug 28 2026, 07:15 AM

@github-actions

github-actions Bot commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

Cloudflare preview

Torn down — the PR is closed.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Aug 28, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Updated (UTC)
✅ Deployment successful!
View logs
executor-cloud 0d08a2c Aug 28 2026, 07:17 AM

@pkg-pr-new

pkg-pr-new Bot commented Aug 28, 2026

Copy link
Copy Markdown

Open in StackBlitz

@executor-js/cli

npm i https://pkg.pr.new/@executor-js/cli@1806

@executor-js/config

npm i https://pkg.pr.new/@executor-js/config@1806

@executor-js/execution

npm i https://pkg.pr.new/@executor-js/execution@1806

@executor-js/sdk

npm i https://pkg.pr.new/@executor-js/sdk@1806

@executor-js/codemode-core

npm i https://pkg.pr.new/@executor-js/codemode-core@1806

@executor-js/runtime-quickjs

npm i https://pkg.pr.new/@executor-js/runtime-quickjs@1806

@executor-js/plugin-file-secrets

npm i https://pkg.pr.new/@executor-js/plugin-file-secrets@1806

@executor-js/plugin-graphql

npm i https://pkg.pr.new/@executor-js/plugin-graphql@1806

@executor-js/plugin-keychain

npm i https://pkg.pr.new/@executor-js/plugin-keychain@1806

@executor-js/plugin-mcp

npm i https://pkg.pr.new/@executor-js/plugin-mcp@1806

@executor-js/plugin-onepassword

npm i https://pkg.pr.new/@executor-js/plugin-onepassword@1806

@executor-js/plugin-openapi

npm i https://pkg.pr.new/@executor-js/plugin-openapi@1806

executor

npm i https://pkg.pr.new/executor@1806

commit: 0d08a2c

@RhysSullivan
RhysSullivan marked this pull request as ready for review August 28, 2026 07:21
@RhysSullivan
RhysSullivan merged commit 93817ed into main Aug 28, 2026
44 checks passed
This was referenced Aug 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant