Files
cfw-autumn/apps/docs/mintlify/documentation/getting-started/deploy.mdx
Ayush Rodrigues cdcbe3f5fd Rework customer filters: URL-first architecture with per-org-per-env localStorage persistence
Consolidate useCustomersQueryStates + usePersistedFilters into a single useCustomerFilters hook.
URL params take priority over localStorage, filters persist per org+env, and queries are gated
behind isInitialized to prevent flashes of unfiltered data on navigation.

Made-with: Cursor
2026-03-27 09:42:44 +00:00

115 lines
3.4 KiB
Plaintext

---
title: "Deploy to production"
description: "A checklist to go live with confidence"
---
Once you've tested your integration in sandbox, follow this checklist to go live with real payments.
<Steps>
<Step>
### Connect your live Stripe account
In the Autumn dashboard, open the **Deploy to Production** dialog from the sidebar.
Connect your live Stripe account via OAuth — this links Autumn to your real Stripe environment.
<Note>
Your sandbox uses a shared Stripe test account by default. Production requires your own Stripe account.
</Note>
</Step>
<Step>
### Push your plans to production
If you're using the [CLI](/cli/getting-started), push your config to the production environment:
```bash
bunx atmn push -p
```
Alternatively, the Deploy dialog in the dashboard can copy your sandbox plans to production for you.
</Step>
<Step>
### Swap your API key
Replace your sandbox secret key with a live one. Create a production key from [Developer Settings](https://app.useautumn.com/production/dev?tab=api_keys), and update your environment variable:
```bash .env
AUTUMN_SECRET_KEY=am_sk_live_...
```
Double check that:
- Your **server-side** code uses the live secret key (`am_sk_live_*`)
- If you're using a publishable key client-side, it's the live one (`am_pk_live_*`)
<Tip>
The key prefix determines the environment automatically — `_test_` routes to sandbox, `_live_` routes to production. There's no separate "environment" config to flip.
</Tip>
</Step>
<Step>
### Verify fail-open behavior
Autumn's SDK is **fail-open by default** — if Autumn is unreachable, `check`, `track`, and customer fetches return safe dummy responses instead of throwing errors. This means Autumn can never take your app down.
You should verify this before going live. The easiest way is to point the SDK at a non-existent URL and exercise your app's core flows:
<CodeGroup>
```typescript TypeScript
const autumn = new Autumn({
secretKey: process.env.AUTUMN_SECRET_KEY,
serverURL: "https://localhost:9999", // simulate outage
});
```
```python Python
autumn = Autumn(
secret_key=os.environ["AUTUMN_SECRET_KEY"],
server_url="https://localhost:9999", # simulate outage
)
```
</CodeGroup>
With this in place:
1. Trigger actions that call `check` — they should return `allowed: true`
2. Trigger actions that call `track` — they should not crash
3. Confirm your core user flows work as normal
4. Remove the `serverURL` override when done
<Warning>
While the SDK gracefully handles outages for read-path calls, write operations like `attach` (which initiate checkout or subscription changes) will still fail when Autumn is unreachable.
</Warning>
</Step>
<Step>
### Set up webhooks (if applicable)
If you're listening for Autumn [webhook events](/documentation/webhooks) (e.g. `customer.products.updated`), make sure your production webhook endpoint is configured in the dashboard. Verify you can receive a test event.
</Step>
<Step>
### Monitor your first users
After deploying, keep an eye on the [Customers](https://app.useautumn.com/production/customers) page in the Autumn dashboard. Verify that:
- New customers are created correctly
- Subscriptions are attached as expected
- Usage is being tracked
- Invoices are generated in Stripe
</Step>
</Steps>
---
Once you've completed this checklist, you're live. Your sandbox environment remains available for testing new plans and pricing changes before pushing them to production.