Integrations
Connect Integration
Connect an API-key or webhook-secret integration
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.