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"
  }
}

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
      ]
  },
}

Salesforce Credential Payload

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"
  }
}

Stripe Credential Payload

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.