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

# List Integration Capabilities

> Describe what each integration provider syncs, emits, and supports

Describe what Sequenzy's integration providers do, whether or not they are connected. Use this to decide what to connect, to compare providers, or to check that an event a sequence needs actually exists for a given provider.

Coverage differs sharply between providers. Only Shopify has storefront browse tracking, and only Stripe and Chargebee cover the full trial lifecycle - so check here rather than assuming a provider emits an event.

## Request

<ParamField query="provider" type="string">
  Return only this provider, such as `stripe` or `shopify`. Returns 404 for an
  unknown provider.
</ParamField>

<ParamField query="category" type="string">
  Filter by category: `payments`, `ecommerce`, `auth`, `analytics`, `ads`,
  `affiliate`, `cms`, or `developer`.
</ParamField>

```bash theme={null}
curl "https://api.sequenzy.com/api/v1/integrations/catalog?provider=stripe" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

## Response fields

<ResponseField name="availability" type="string">
  `available`, `beta`, or `coming_soon`. A `coming_soon` provider appears in the
  dashboard picker but has no webhook handler yet, so it emits nothing.
</ResponseField>

<ResponseField name="connectMethod" type="string">
  How the provider is connected: `oauth`, `api_key`, `app_install`, `plugin`, or
  `webhook`. OAuth and app installs always need a person in the dashboard.
</ResponseField>

<ResponseField name="syncs" type="string[]">
  What the integration keeps in sync, such as `customers`, `orders`, or
  `products`. Empty when the provider only pushes events as they happen.
</ResponseField>

<ResponseField name="emits" type="object[]">
  Every event the provider can produce. Each entry has `event` (the name a
  sequence triggers on) and `when` (the real-world moment that produces it). An
  empty array means the provider never triggers automations.
</ResponseField>

<ResponseField name="writesAttributes" type="object[]">
  Subscriber attributes the provider writes, each with a `key` and
  `description`. Use these in segment filters.
</ResponseField>

<ResponseField name="actions" type="string[]">
  Actions supported on a connected integration: `enable_sync`, `disable_sync`,
  `sync_now`, or `sync_products`.
</ResponseField>

<ResponseField name="notes" type="string[]">
  Caveats worth knowing before building on the provider, such as which events it
  does not emit.
</ResponseField>

## Responses

<ResponseExample>
  ```json 200 theme={null}
  {
    "success": true,
    "providers": [
      {
        "provider": "stripe",
        "name": "Stripe",
        "category": "payments",
        "availability": "available",
        "summary": "Syncs Stripe customers, subscriptions, and products, and turns billing webhooks into subscriber events, tags, and revenue attributes.",
        "connectMethod": "oauth",
        "syncs": ["customers", "subscriptions", "products", "revenue"],
        "emits": [
          {
            "event": "saas.purchase",
            "when": "a customer completes a purchase or starts a paid subscription"
          },
          {
            "event": "saas.payment_failed",
            "when": "a payment attempt fails (card declined, expired, insufficient funds)"
          }
        ],
        "writesAttributes": [
          {
            "key": "stripeCustomerId",
            "description": "The customer's stripe customer ID, copied on every sync."
          },
          {
            "key": "mrr",
            "description": "Monthly recurring revenue for the customer, as a number."
          }
        ],
        "actions": ["enable_sync", "disable_sync", "sync_now", "sync_products"],
        "notes": [
          "The only payment provider with full trial lifecycle coverage plus upgrade/downgrade detection."
        ]
      }
    ]
  }
  ```

  ```json 401 theme={null}
  {
    "success": false,
    "error": "Unauthorized"
  }
  ```

  ```json 404 theme={null}
  {
    "success": false,
    "error": "Integration provider not found"
  }
  ```
</ResponseExample>
