> ## Documentation Index
> Fetch the complete documentation index at: https://docs.userintuition.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Stripe

> Connect your Stripe account to sync customers and customer cohorts into User Intuition as research participants.

The Stripe integration turns the customers in your Stripe account into a research panel. Once connected, your Stripe customers and customer-derived segments sync into User Intuition, where you can invite them to Studies and run Interviews against the same cohorts you already manage in Stripe.

<Note>
  This integration is delivered as a Stripe App that runs alongside your Stripe Dashboard. The app handles the sync; User Intuition handles the research.
</Note>

***

## What this integration does

<CardGroup cols={2}>
  <Card title="Sync customers as Participants">
    Every Stripe customer becomes a Participant record in User Intuition with their email, name, phone, and Stripe metadata, ready to be invited to a Study.
  </Card>

  <Card title="Sync customer cohorts as segments">
    Cohorts derived from your Stripe data — for example, all customers, active subscribers, or customers grouped by product — are imported as segments you can target.
  </Card>

  <Card title="Stay in sync over time">
    Webhook events from Stripe (customer created, customer updated, subscription changes) flow back to User Intuition so your panel stays current as your Stripe data changes.
  </Card>

  <Card title="Send Interview invites to a cohort">
    Pick any synced segment and launch a Study against it — invites go out to every Participant in the cohort in one action.
  </Card>
</CardGroup>

***

## Connecting Stripe

The Stripe app uses Stripe's OAuth flow to authorize User Intuition against your Stripe account. The connection is established once, after which sync runs automatically.

<Steps>
  <Step title="Open the integrations area">
    In User Intuition, navigate to the integrations area and choose **Stripe**.
  </Step>

  <Step title="Start the OAuth flow">
    Click the option to connect Stripe. You will be redirected to Stripe to authorize the User Intuition app against the Stripe account you choose.
  </Step>

  <Step title="Approve the requested access">
    Review the permissions Stripe shows you and approve. Stripe will issue an authorization code, which the User Intuition Stripe app exchanges for an access token.
  </Step>

  <Step title="Wait for the initial sync">
    On approval, you are redirected back to User Intuition. A background sync begins immediately — fetching your customers and cohorts and populating your panel.
  </Step>
</Steps>

<Note>
  You can also reach the connection flow from inside the Stripe Dashboard if you have the User Intuition app installed there. Either entry point produces the same result.
</Note>

***

## What gets synced

When you connect Stripe, the following data flows into User Intuition:

| Stripe object    | Becomes in User Intuition | Notes                                                                           |
| ---------------- | ------------------------- | ------------------------------------------------------------------------------- |
| Customer         | Participant               | Includes email, name, phone, currency, and Stripe metadata.                     |
| Subscription     | Participant data          | Subscription status and plan are attached to the customer's Participant record. |
| Customer cohorts | Segments                  | For example, "All Customers", "Active Subscribers", or per-product groupings.   |

Each synced Participant keeps a reference back to its Stripe customer ID, so updates from Stripe (created, updated, deleted) keep the User Intuition record aligned over time.

<Warning>
  User Intuition only sees customer data your Stripe account exposes through the authorized scope. Card numbers, payment methods, and other sensitive payment data are never synced.
</Warning>

***

## Required access

The User Intuition Stripe app requests read-write access to your Stripe account through Stripe Connect. In practice, the app uses this access to:

* List and read Stripe customers (for the initial backfill and ongoing sync).
* List and read subscriptions and the products they reference (to derive segments).
* Receive webhook events for `customer.created`, `customer.updated`, `customer.deleted`, `customer.subscription.created`, `customer.subscription.updated`, and `customer.subscription.deleted`.
* Receive `account.application.deauthorized` so the app can clean up if you disconnect.

If a permission is unavailable for your account, the corresponding sync step is skipped and a status message is recorded so you know what was missed.

***

## Sending an Interview to a Stripe cohort

Once your Stripe data is synced, any Stripe-derived segment can be used as the Participant pool for a Study.

<Steps>
  <Step title="Pick a segment">
    Open the Participants area of User Intuition. Synced Stripe segments appear alongside any other imported sources. Each segment shows a count of Participants it contains.
  </Step>

  <Step title="Attach the segment to a Study">
    Choose the Study you want to run, and select the Stripe segment as its Participant source.
  </Step>

  <Step title="Send Interview invites">
    Trigger the invite action. User Intuition creates an Interview invite for every Participant in the segment that has an email address. Participants without an email are skipped automatically.
  </Step>
</Steps>

<Note>
  Re-running an invite for a segment is safe — Participants who already have an outstanding invite for the same Study are not invited a second time.
</Note>

***

## Connection status

You can check the state of your Stripe connection at any time. The integration tracks where it is in the lifecycle:

| Status            | Meaning                                                                     |
| ----------------- | --------------------------------------------------------------------------- |
| `pending`         | The account is connected but the first sync has not yet started.            |
| `syncing`         | The Stripe app is fetching customers and cohorts in the background.         |
| `segments_synced` | Cohorts have been imported; customer sync is still in progress.             |
| `complete`        | The initial backfill finished. Ongoing updates flow in via Stripe webhooks. |

The total number of imported Participants is also surfaced so you can confirm the sync brought in what you expect.

***

## Updates and ongoing sync

After the initial backfill, the integration is event-driven. Whenever a relevant change happens in Stripe, the Stripe app receives the webhook, validates its signature, and forwards a normalized update to User Intuition:

<Tabs>
  <Tab title="Customer changes">
    A `customer.created` or `customer.updated` event from Stripe upserts the matching Participant in User Intuition. A `customer.deleted` event is logged and the Participant is marked accordingly.
  </Tab>

  <Tab title="Subscription changes">
    Subscription create, update, and delete events update the subscription status and plan stored on the customer's Participant record, so segments based on subscription state stay accurate.
  </Tab>

  <Tab title="Disconnects">
    If the Stripe app is uninstalled from the Stripe side, an `account.application.deauthorized` event triggers cleanup of the stored access token and marks the account as disconnected.
  </Tab>
</Tabs>

***

## Disconnecting

You can end the integration from either side:

* **From User Intuition** — open the Stripe integration in the integrations area and choose to disconnect. The stored access token is removed and no further events are processed.
* **From the Stripe Dashboard** — uninstall or revoke the User Intuition app. Stripe will send an `account.application.deauthorized` event, and User Intuition will clear the stored credentials.

Disconnecting stops new data from flowing in. Participants and segments already imported into User Intuition remain available for any Study they are attached to.

<Warning>
  Reconnecting after a disconnect re-runs the initial sync. Existing Participants are matched on their Stripe customer ID and updated rather than duplicated.
</Warning>

***

## Troubleshooting

<CardGroup cols={2}>
  <Card title="No customers appearing">
    If the connection succeeds but no Participants show up, check the connection status. A status of `syncing` means the backfill is still in progress; very large customer lists are paginated and processed in batches.
  </Card>

  <Card title="Stale data in segments">
    Segments are refreshed as Stripe webhook events arrive. If a recent change in Stripe is not reflected, confirm the Stripe app is still installed and that webhook delivery is healthy in the Stripe Dashboard.
  </Card>

  <Card title="Customers without email">
    Stripe customers that lack an email address are still synced, but they cannot be sent Interview invites. Add an email to the customer in Stripe and the next sync will fill it in.
  </Card>

  <Card title="Reconnecting under a different account">
    Disconnect the existing Stripe account first, then start the OAuth flow again with the new account. Mixing customers from two Stripe accounts in the same connection is not supported.
  </Card>
</CardGroup>

***

## Next steps

<CardGroup cols={2}>
  <Card title="Create a Study" icon="plus" href="/creating-a-study/overview">
    Build the Study you want to run against your Stripe customers
  </Card>

  <Card title="HubSpot integration" icon="plug" href="/integrations/hubspot">
    Sync Participants from HubSpot using the same pattern
  </Card>
</CardGroup>
