Skip to main content
POST
Connect Integration
Connect an integration whose setup only needs an API key and/or a webhook signing secret: Polar, Paddle, Dodo Payments, Lemon Squeezy, Whop, RevenueCat, Superwall, Adapty, Creem, Chargebee, Clerk, PostHog, Segment, Affonso, Attio, or SparkLoop. Credentials are validated against the provider where possible, stored encrypted, and never returned by any endpoint. Payment providers queue their initial revenue backfill automatically, except RevenueCat, Superwall, and Adapty, which are webhook-only and return revenueSyncQueued: false; Affonso queues its affiliate backfill; PostHog and Segment can optionally import their event history. Attio returns an empty webhookUrl: Sequenzy registers its own Attio webhook when you save an Attio → Sequenzy mapping. SparkLoop registers its webhook in SparkLoop during connect, so there is nothing to paste; the returned webhookUrl is the address it registered, without the secret path segment it adds when you omit webhookSecret. For Lemon Squeezy, omit webhookSecret to create the signed webhook automatically, or supply it for manual setup. For other inbound providers except SparkLoop, configure the returned webhookUrl with the same secret you passed here. Calling this for an already-connected provider replaces its stored credentials; Lemon Squeezy managed reconnections rotate the secret. OAuth and app-install providers (Stripe, Shopify, Supabase, GitHub, WooCommerce, Meta) cannot be connected here: their flows need a browser, so they return a 400 pointing at the dashboard. Use Integration Catalog to discover each connectable provider’s exact fields via connectFields. Requires an API key with the integrations:manage scope.

Request

string
required
One of polar, paddle, dodo, lemon_squeezy, whop, revenuecat, superwall, adapty, creem, chargebee, clerk, posthog, segment, affonso, attio, sparkloop.
string
Signing secret of the webhook you create at the provider, pointed at the returned webhookUrl. Optional for Lemon Squeezy managed provisioning and not used by Attio; required for other providers. For Chargebee, pass the webhook’s basic-auth credentials as username:password. For RevenueCat, pass at least 16 characters: the value you set as the RevenueCat webhook’s authorization header, or its HMAC signing secret. For Superwall, pass the webhook’s signing secret, which starts with whsec_; it is the only credential Superwall needs. For Adapty, pass at least 16 characters: the value you set as the Adapty webhook’s authorization header value. Connect before you click Save in Adapty, because Adapty verifies the URL on Save. Lemon Squeezy manual secrets must be 16-40 characters. For Segment, the secret is your own choice and must be between 16 and 153 UTF-8 bytes. For SparkLoop, omit it: Sequenzy authenticates deliveries with a secret in the webhook URL it registers. To verify SparkLoop’s SparkLoop-Token header instead, pass the account’s webhook authentication token.
string
Provider API key. Required for polar, paddle, dodo, lemon_squeezy, whop, revenuecat, creem, chargebee, affonso, attio, and sparkloop. RevenueCat needs a secret REST API v2 key with Projects read and Customers read permissions. Attio uses the workspace access token from Settings → Developers. SparkLoop uses the API key from Settings → Integrations.
string
Provider account ID. Required for Paddle (seller ID), Dodo (business ID), Lemon Squeezy (numeric store ID), Whop (company ID, biz_...), Creem (store ID), and Chargebee (site name). Polar resolves it from the API key, and so does RevenueCat (its project ID) unless the key can access several projects; Clerk, Superwall, Adapty, PostHog, Segment, and Affonso derive it. For SparkLoop it is the publication ID (pub_...): optional when the SparkLoop account has one publication, required when it has several. Without it, the 400 response lists the choices in publications.
object
PostHog and Segment: { syncAllEvents?: boolean, eventAllowlist?: string[] }. PostHog defaults to syncing every non-internal event. New Segment connections sync track and identify calls but skip automatic page and screen calls unless those names are explicitly allowlisted. Attio: { listMap?: Record<string, string>, syncCompanyFromDomain?: boolean }, where listMap is Sequenzy list id → Attio list UUID or api slug (syncCompanyFromDomain defaults to true). Mapping can also be set after connect with Update Attio List Mapping without the access token. SparkLoop: { listIds?: string[] | null }, the lists new referrals join. Omit it to keep the current choice (the workspace default lists on a first connect), pass null to reset to the workspace default lists, or [] for none. Change it later with Update Integration.
object
PostHog and Segment only: imports event history after connecting. PostHog: { region: "us" | "eu", projectId: string, personalApiKey: string } - the personal API key needs query read access and the whole project archive is imported. Segment: { region: "us" | "eu", spaceId: string, profileApiToken: string } - Segment has no bulk event export and its Profile API serves at most the last 14 days of a profile’s events, so the import walks your existing contacts and reads each one’s recent Unify history by email; contacts without a Segment profile are skipped.

Response fields

object
The connected integration, in the same shape as List Integrations. Credentials are never included.
string
URL to configure in the provider’s webhook settings with the same secret. Empty for Attio, which registers its own webhook.
boolean
Payment providers only: whether the initial revenue backfill was queued.
string
Lemon Squeezy only: managed when Sequenzy installed the webhook, or manual when the caller supplied its signing secret.
boolean
Lemon Squeezy only: whether the API key and store are in test mode.
boolean
Affonso only: whether the affiliate backfill was queued.
object
SparkLoop only: { id, name } of the publication whose partner referrals this workspace receives.
object
PostHog and Segment only: {(requested, queued, error)} for the optional history import. The webhook connection succeeds even when queueing the import failed.

Responses