Sync providers

A sync provider is a third-party service that Sequin can sync data with. Sequin currently supports the following sync providers:

  • airtable
  • auth0
  • hubspot
  • github
  • linear
  • marketo
  • netsuite
  • quickbooks
  • salesforce
  • sendgrid
  • servicenow
  • shopify
  • stripe
  • workday

We’re adding new providers all the time. If you don’t see the provider you’re looking for, please send us a note.

Credential properties

A credential is how Sequin authenticates with a sync provider. Each provider uses a different type of credential kind. For example, Sequin can authenticate with Stripe using either an API key or an OAuth token. To account for these differences, the properties field of the credential object is polymorphic and can take on different shapes depending on the provider. Here are the different kinds of credential objects:

Airtable credential properties

OAuth2
{
  // ...rest of the credential object
  properties: {
    kind: "airtable_oauth2";
    airtable_uid: string;
    refresh_token: string;
    scope: string;
  }
}
kind
string
required

The credential kind. Always set to airtable_oauth2.

refresh_token
string
required

The refresh token used to authenticate with the Airtable API.

scope
string
required

A string of the scopes the credential has access to.

Example

{
  // ...rest of the credential object
  "properties": {
    "airtable_uid": "usrziLeD23j9AJ1",
    "kind": "airtable_oauth2",
    "refresh_token": "***********",
    "scope": "data.records:read data.records:write data.recordComments:read data.recordComments:write schema.bases:read schema.bases:write webhook:manage"
  }
}

CheckoutChamp credential properties

{
  // ...rest of the credential object
  properties: {
    login_id: string;
    kind: "checkout_champ_password";
    password: string;
  }
}
login_id
string
required

The unique login ID used to authenticate with the CheckoutChamp API.

kind
string
required

The credential kind. Always set to checkout_champ_password.

password
string
required

The password associated with the login ID for authentication.

Example

{
  // ...rest of the credential object
  "properties": {
    "login_id": "user123",
    "kind": "checkout_champ_password",
    "password": "password123"
  }
}

GitHub credential properties

App
{
  // ...rest of the credential object
  properties: {
    kind: "github_app";
    account_type: string; // "User" or "Organization"
    account_login: string;
    installation_id: integer;
  }
}
kind
string
required

The credential kind. Always set to github_app.

account_login
string
required

The name of the account the credential is associated with.

account_type
string
required

The acount type. Can be either User or Organization.

installation_id
int
required

The installation ID of the GitHub app.

Example

{
  // ... rest of the credential object
  "properties": {
    "kind": "github_app",
    "account_type": "User",
    "account_login": "paul-atreides",
    "installation_id": "47232440"
  }
}

HubSpot credential properties

OAuth2
{
  // ...rest of the credential object
  properties: {
    kind: "hubspot_oauth2";
    hub_domain: string;
    hub_id: integer;
    refresh_token: string;
    scopes: string[];
  }
}
kind
string
required

The credential kind. Always set to hubspot_oauth2.

hub_domain
string
required

The domain associated to the HubSpot account.

hub_id
int
required

The id of the HubSpot account.

refresh_token
array
required

The refresh token used to authenticate with the HubSpot API.

scopes
array
required

An array of strings representing the scopes the credential has access to.

{
  // ... rest of the credential object
  "properties": {
    "hub_domain": "arrakis.io",
    "hub_id": 21902692,
    "kind": "hubspot_oauth2",
    "refresh_token": "***********",
    "scopes": [
      "oauth",
      "tickets",
      "e-commerce",
      "sales-email-read",
      "crm.lists.read",
      "crm.objects.contacts.read"
      // ... rest of the scopes
    ]
  }
}

Linear credential properties

OAuth2
{
  // ...rest of the credential object
  properties: {
    kind: "linear_oauth2";
    access_token: string;
    scope: string;
    expires_in_s: integer;
    linear_org_id: string;
    linear_org_name: string;
  }
}
kind
string
required

The credential kind. Always set to linear_oauth2.

access_token
string
required

The access token used to authenticate with the Linear API.

scope
string
required

A string of the scopes the credential has access to.

linear_org_id
string
required

The ID of the Linear organization associated with the credential.

linear_org_name
string
required

The name of the Linear organization associated with the credential.

Example

{
  // ...rest of the credential object
  "properties": {
    "kind": "linear_oauth2",
    "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "scope": "read write issues:create",
    "linear_org_id": "abc123",
    "linear_org_name": "Arrakis Inc."
  }
}

Salesforce credential properties

OAuth2
{
  // ...rest of the credential object
  properties: {
    kind: "salesforce_oauth2";
    instance_url: string;
    refresh_token: string;
    scope: string;
    sfid: string;
  }
}
kind
string
required

The credential kind. Always set to salesforce_oauth2.

instance_url
string
required

The domain associated to the Salesforce account.

refresh_token
array
required

The refresh token used to authenticate with the Salesforce API.

scope
string
required

A string of the scopes the credential has access to.

sfid
array
required

The Salesforce ID of the account.

Example

{
  // rest of the credential object
  "properties": {
    "instance_url": "https://arrakis.my.salesforce.com",
    "kind": "salesforce_oauth2",
    "refresh_token": "***********",
    "scope": "api refresh_token",
    "sfid": "arrakis"
  }
}

Shopify credential properties

{
  // ...rest of the credential object
  properties: {
    kind: "shopify_oauth2";
    access_token: string;
    shop: string;
  }
}
kind
string
required

The credential kind. Always set to shopify_oauth2.

access_token
string
required

The access token used to authenticate with the Shopify API.

Must be an offline access token.

shop
string
required

The shop URL that the credential is associated with.

Example

{
  // ...rest of the credential object
  "properties": {
    "kind": "shopify_oauth2",
    "access_token": "shpca_ef73c3...",
    "shop": "shop-001.myshopify.com"
  }
}

Stripe credential properties

Stripe provices two different kinds of credentials: API keys and OAuth tokens.

{
  // ...rest of the credential object
  properties: {
    kind: string; // "stripe_oauth2" or "stripe_key"
    account_id: string; // either the primary account_id or the account_id of a connected account
    name: string;
    secret: string; // the OAuth2 refresh token or the Stripe secret API key
    test: boolean;
  }
}
kind
string
required

The credential kind. Always set to one of stripe_oauth2 or stripe_key.

name
string
required

The domain associated to the Salesforce account.

secret
array
required

Either the refresh_token or the secret_key used to authenticate with the Salesforce API.

test
boolean
required

Whether the credential is for a test account or not.

Example

{
  // ...rest of the credential object
  "properties": {
    "kind": "stripe_oauth2",
    "name": "Arrakis [TEST]",
    "secret": "*********",
    "test": true
  }
}

Rate limits

The rate limit object configures how many requests Sequin can make to a sync provider with a given credential in a given time period. It contains the following fields:

RateLimit
{
  allowed_requests: number;
  interval: number;
  max_concurrent_requests: number;
}
allowed_requests
int

The number of requests Sequin can make to the provider in the given time period.

interval
int

The time period in miliseconds.

max_concurrent_requests
int

The maximum number of requests Sequin can make to the provider at the same time.

Health

The health object contains information about the current status of a component part of your Sequin sync. For instance, a sync will have an overall health, but you’ll also be able to check the health of related objects including the credential, OAuth app, consumer, and target. The health object contains the following fields:

Health
{
  status: string;
}
status
string

The status of the component. Can be one of healthy, customer_intervention, or sequin_intervention.