---
title: "Get integration"
method: GET
path: "/integrations/{id}"
tags: ["Integrations"]
---

# Get integration

`GET /integrations/{id}`

Inspects one connected integration - what the provider syncs, every event it emits, the tags each event applies through the company's sync rules, the sequences that trigger on those events, recent activity, and prioritized recommendations. Credentials are never returned. Requires the account:read, subscribers:read, and sequences:read scopes.

## Path parameters

- `id` string, required

## Response `200`

Integration detail returned

- IntegrationDetail
  - `success` boolean
  - `integration` object
    - `id` string
    - `provider` string
    - `name` string — Provider display name.
    - `category` 'payments' | 'ecommerce' | 'auth' | 'analytics' | 'ads' | 'affiliate' | 'cms' | 'developer', nullable — Provider category, or null for a provider with no catalog entry.
    - `providerAccountId` string — Provider-side account identifier, such as a Shopify shop domain or Stripe acct_ ID.
    - `isActive` boolean
    - `syncEnabled` boolean
    - `syncStatus` string, nullable
    - `lastSyncAt` string, date-time, nullable
    - `lastSyncError` string, nullable
    - `totalCustomersSynced` integer
    - `totalEventsSynced` integer
    - `connectedAt` string, date-time
    - `disconnectedAt` string, date-time, nullable
    - `details` object — Allowlisted non-secret metadata. Never contains credentials.
    - `lastSyncSkipped` IntegrationSyncSkipSummary — Summary of records a store import could not bring in normally. A store with real order history often carries a few addresses on domains that have since been shut down; those are reported here instead of failing the whole import.
      - `total` integer — Every affected record, including any beyond the stored sample.
      - `suppressed` integer — Imported, but the address cannot receive email, so the profile is stored as bounced and sends stay suppressed. Order history still attaches to it.
      - `skipped` integer — Not imported at all.
      - `truncated` boolean — True when more records were affected than `records` holds.
      - `records` object[] — Sample of the affected records, up to 50.
        - `email` string, nullable
        - `outcome` 'suppressed' | 'skipped'
        - `reasonCode` string
        - `reason` string
  - `capabilities` IntegrationProviderCapability — What an integration provider does, independent of whether it is connected.
    - `provider` string
    - `name` string
    - `category` 'payments' | 'ecommerce' | 'auth' | 'analytics' | 'ads' | 'affiliate' | 'cms' | 'developer'
    - `availability` 'available' | 'beta' | 'coming_soon' — A coming_soon provider appears in the dashboard picker but has no webhook handler yet, so it emits nothing.
    - `summary` string
    - `connectMethod` 'oauth' | 'api_key' | 'app_install' | 'plugin' | 'webhook'
    - `syncs` string[] — What the integration keeps in sync. Empty when it only pushes events as they happen.
    - `emits` object[] — Every event the provider can produce. Empty when it never triggers automations.
      - `event` string — Event name a sequence triggers on.
      - `when` string — The real-world moment that produces this event.
    - `writesAttributes` object[]
      - `key` string
      - `description` string
    - `actions` string[]
    - `connectFields` object[] — Fields POST /integrations/connect accepts for this provider. Present exactly when actions includes connect.
      - `key` 'apiKey' | 'webhookSecret' | 'providerAccountId' | 'settings' | 'historyImport'
      - `required` boolean
      - `secret` boolean — True when the value is a credential and must be handled as a secret.
      - `description` string
    - `notes` string[] — Caveats worth knowing before building on the provider.
  - `events` IntegrationEventWiring[]
    - `event` string
    - `when` string
    - `addsTags` string[]
    - `removesTags` string[]
    - `rules` object[] — Every matching sync rule, kept separate so conditional effects remain accurate.
      - `addsTags` string[]
      - `removesTags` string[]
      - `conditions` object, nullable
    - `observedByAccount` boolean — Whether the account has received this event name from any source. Not integration-specific.
    - `accountLastSeenAt` string, date-time, nullable — When the account last received the event name from any source.
    - `ruleSource` 'custom' | 'default' | 'none' — Where the matching sync rule came from. "none" means no rule touches this event, so it changes no tags.
    - `listeners` object[] — Sequences that trigger on this event.
      - `sequenceId` string
      - `name` string
      - `effectiveStatus` string
      - `acceptsNewEnrollments` boolean
      - `effectiveStatusSummary` string
  - `unusedEvents` string[] — Events the provider emits that no sequence triggers on.
  - `accountNeverReceivedEvents` string[] — Provider event names the account has never received from any source. Not integration-specific.
  - `activity` object
    - `windowHours` integer
    - `total` integer
    - `processed` integer
    - `failed` integer
    - `skipped` integer
    - `stalled` integer — Events queued more than 15 minutes without completing.
    - `lastActivityAt` string, date-time, nullable
    - `recentFailures` object[]
      - `action` string
      - `eventType` string, nullable
      - `email` string, nullable
      - `error` string, nullable
      - `createdAt` string, date-time
  - `pixel` object, nullable — Shopify only: live storefront tracking pixel state, read from the store on every call. Null for providers without a pixel. Same shape as the pixel endpoint, plus healthy and dependentEvents.
    - `installed` boolean
    - `id` string, nullable
    - `endpoint` string, nullable
    - `endpointCurrent` boolean
    - `configurationCurrent` boolean
    - `healthy` boolean
    - `error` string, nullable
    - `dependentEvents` string[]
  - `recommendations` object[]
    - `code` string
    - `severity` 'error' | 'warning' | 'info'
    - `message` string
    - `action` string
  - `availableActions` string[] — Actions callable right now given the integration's current state.

## Other responses

- `401` — Unauthorized
- `403` — Missing required API key scope (account:read, subscribers:read, and sequences:read are required)
- `404` — Integration not found

---

[API](https://skmtc.net/sequenzy/apis/sequenzy-api.md) · [All operations](https://skmtc.net/sequenzy/apis/sequenzy-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/sequenzy/sequenzy-api/versions/af1cf9620482/schema)
