Overview
Stripe Subscriptions keeps a live picture of your recurring revenue inside Attio and lets your team start new subscriptions without leaving a person record. On connection it creates a dedicated subscriptions object in your workspace and populates it from Stripe, then keeps it current automatically as subscriptions are created, updated, and canceled.
Each synced subscription carries the detail revenue and customer success teams actually need: status, product, price, recurring amount and currency, billing interval, quantity, current period start and end, start date, trial end, and whether it is set to cancel at period end. Every subscription is linked to the matching person in your workspace by email, so a contact’s recurring relationship with you sits right alongside their other CRM data. Status is stored as a status attribute, so you can group and filter subscriptions by stage, and the recurring amount is stored as a currency attribute.
The app also works in the other direction. From any person record, an operator can start a Stripe subscription in a few clicks - choosing or creating the Stripe customer, picking a product and a recurring price, setting quantity and an optional trial - and the new subscription appears in Attio immediately.
Stripe Subscriptions is workspace-scoped. It uses your own Stripe key, requires no separate Stripe account, and never stores billing data outside of Stripe and the subscriptions records it maintains in your workspace. It suits B2B SaaS, subscription, and services teams that run customer relationships in Attio and bill recurring revenue through Stripe.
How it works
Stripe Subscriptions has two directions: it syncs subscriptions from Stripe into the subscriptions object, and it creates subscriptions in Stripe from a person record.
When you connect, the app validates your Stripe key, creates a subscriptions object (and a subscriber relationship to the people object), and registers a Stripe webhook on your behalf. From then on, customer.subscription.created, customer.subscription.updated, and customer.subscription.deleted events flow in automatically and upsert the matching record - matched by Stripe subscription id, so re-syncing never creates duplicates. A manual sync pulls every existing subscription on demand from the settings panel or from a record action, which is useful right after install or to reconcile any missed webhook.
Each subscription is linked to a person by the Stripe customer’s email. If no matching person exists, the subscription is still synced and left unlinked; you can optionally have the app create the missing person and link it. Canceled and incomplete-expired subscriptions can be synced or skipped, depending on whether you want the object to hold your full history or only live subscriptions.
To start a subscription from Attio, an operator opens a person record and triggers the create-subscription action. The app finds the person’s Stripe customer by email (or creates one inline), lists your Stripe products and their recurring prices, and collects a quantity and optional trial. It then creates the subscription in Stripe and mirrors it straight into the subscriptions object.
All Stripe and Attio calls happen in server modules, never from the dialog. Incoming webhooks are verified against the Stripe signing secret before processing. Errors are surfaced as toasts and logged so they appear at the correct severity in the developer portal logs.
Configure
Stripe Subscriptions authenticates with a workspace connection holding a Stripe key. Follow these steps to install and configure the app.
- Install Stripe Subscriptions into the workspace where you track recurring revenue.
- Create a Stripe key in your Stripe dashboard at Developers → API keys. You can use a secret key, or a restricted key scoped to the resources the app touches. A restricted key needs write access to Customers, Products, Prices, and Subscriptions (to create subscriptions from a person record), read access to Subscriptions (to sync and validate), and read/write access to Webhook endpoints (so the app can register and remove its sync webhook).
- Open the Stripe Subscriptions app in your workspace settings and paste the key into the connection field. The key is stored as a workspace connection and is only read by the app’s server code. On connect, the app validates the key, sets up the subscriptions object, and registers the webhook.
- In the app’s settings panel, choose your sync options. “Auto-create missing people” creates and links a person when a subscription’s customer email has no match (off by default). “Sync canceled subscriptions” includes canceled and incomplete-expired subscriptions (on by default). Use “Sync all now” to backfill, and “Re-verify schema” to recreate the subscriptions object if it was edited or deleted.
- Open any person record to find the Create Stripe Subscription action in the record action menu, and confirm the subscriptions object is populating.
To uninstall, remove the app from the workspace’s installed apps page; the app deletes its Stripe webhook during removal. Revoking the Stripe key in the Stripe dashboard immediately disables every call the app can make.


