How to migrate or import your integrations into Unified.to

Updated:


October 25, 2024

app.unified.to_connections_import_typedropbox.png

This guide explains how to import your existing integrations into Unified.to, effectively creating new connections using your existing customer credentials. A connection is a secure link between your application and your customer's third-party account.

While connections are typically created through an auth flow where users grant access through the provider's authorization page, you can also create connections by importing existing credentials that your customers have already provided to you.

Vendor-specific guides. Moving from another unified API? Each guide maps that vendor's authorization, API calls, pagination, webhooks and passthrough to Unified.to:

When to use import (vs Unified OAuth)

Use POST /unified/connection (import) only when you already hold end-user credentials—for example migrating from another platform, or completing OAuth on your own callback (BYO redirect) and then creating the Unified connection.

  • Do not paste your app client_id / client_secret into Import Connections. Those are workspace activation credentials (Activate Integration), not per-connection end-user tokens.
  • For new end-user connects where Unified can host the OAuth callback, prefer Authorize new connection or the embedded auth component.

Before you begin

This guide assumes you have:

  • A Unified.to account.
  • Existing customer credentials for the integrations you want to import.
  • Basic understanding of REST APIs, authentication flows, and connections.

Understand the authentication types

Before importing your integrations, you need to determine which authentication type each integration uses. Unified.to supports two main authentication flows:

API token authentication

  • Simple token: Requires a single token or key.
  • Multi-field token: Requires multiple credentials (e.g. API key + domain).

OAuth 2 authentication

  • Requires client credentials (client ID and secret).
  • Requires access tokens and optional refresh tokens.
  • May include additional user information e.g. emails, names.

Check instructions for the integration you want to import

The Unified.to Core API contains information that will help you determine what you need to successfully import your integrations.

  1. Make a GET request to the /unified/integration endpoint to get information about the integration you want to import, passing in the categories and/or names of the integrations you are interested in.
  2. Check the following fields in the response:
    • token_names: Lists required credential fields for API token authentication.
    • token_instructions: Provides guidance on where to find these credentials.

For example:

const baseUrl = 'https://api.unified.to/unified/integration';
const params = new URLSearchParams({
  categories: ['ats', 'crm'].join(',')
});
const url = `${baseUrl}?${params}`;

// Make the request
fetch(url, {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${YOUR_API_KEY}`,
    'Accept': 'application/json'
  }
})
.then(response => {
  if (!response.ok) {
    throw new Error(`HTTP error! status: ${response.status}`);
  }
  return response.json();
})
.then(integrations => {
  // Loop through each integration and log its auth details
  integrations.forEach(integration => {
    console.log(`\n=== ${integration.name} ===`);
    
    // Log token information if it exists
    if (integration.token_names && integration.token_names.length > 0) {
      console.log('Required credentials:', integration.token_names);
      console.log('How to find credentials:');
      integration.token_instructions?.forEach((instruction, index) => {
        console.log(`${index + 1}. ${instruction}`);
      });
    } else {
      console.log('No token credentials required (likely uses OAuth)');
    }
  });
})
.catch(error => {
  console.error('Error fetching integrations:', error);
});

/* Example output:

=== ActiveCampaign ===
Required credentials: ["API Key", "Domain"]
How to find credentials:
1. Your API key can be found in your account on the Settings page under the "Developer" tab...
2. Your API URL can be found in your account on the My Settings page under the "Developer" tab...

=== HubSpot ===
No token credentials required (likely uses OAuth)

*/

API reference: Get all integrations.

Import an API token integration

For single-token integrations, construct your connection object:

{
  "integration_type": NAME_OF_INTEGRATION,
  "permissions": [PERMISSIONS],
  "categories": [CATEGORIES],
  "environment": "Production", // or any other non-sandbox environment
  "auth": {
    "token": "your_customer_token"
  }
}

For multi-field token integrations, use the other_auth_info array:

{
  "integration_type": NAME_OF_INTEGRATION,
  "permissions": [PERMISSIONS],
  "categories": [CATEGORIES],
  "environment": "Production", //  or any other non-sandbox environment
  "auth": {
    "token": "your_customer_token"
    "other_auth_info": [
      "first_credential",
      "second_credential"
    ]
  }
}

Important: The order of credentials in other_auth_info must match the order of the token_names from the integration instructions (see above).

Import an OAuth 2.0 integration

  1. Construct your connection object with the OAuth credentials:
{
  "integration_type": "NAME_OF_INTEGRATION",
  "permissions": ["PERMISSIONS"],
  "categories": ["CATEGORIES"],
  "environment": "Production",
  "auth": {
    "access_token": "customer_access_token",
    "refresh_token": "customer_refresh_token",
    "expires_in": 3599,
    "api_url": "https://company.example.com",
    "emails": ["user@example.com"],
    "name": "User Name"
  }
}
  1. Choose the redirect / callback model that matches your product:

Notes:

  • Set expiry_date to the token's expiration date (if known) or today's date.
  • Include the authenticating user's email and name if available.
  • Unified-hosted OAuth: set the provider redirect URI to https://api.unified.to/oauth/code.
  • BYO / Marketplace callback: keep your own callback URL when the provider requires your app to own install (and often uninstall) on a single URL. Exchange the code on your server, then import the resulting tokens into Unified. Handle uninstall on your callback and call DELETE /unified/connection/{id}.

Dual-auth integrations and company hosts

Some integrations support both OAuth and API-token auth, and/or return a per-tenant API host in the token response (commonly copied onto auth.api_url). For OAuth imports:

  • Include access_token / refresh_token (and expires_in when known).
  • If the token response includes a company/instance URL, set auth.api_url to that value. Only send fields on the Unified connection auth schema (e.g. api_url) — vendor-only field names may be rejected by validation.
  • Activate the integration in Unified with the same OAuth app client_id / client_secret that issued the tokens, so refresh works.
  • Omit other_auth_info on OAuth imports (see warning below).

⚠️ Dual-auth integrations (integrations that support both OAuth and API-token auth): do not include other_auth_info on an OAuth import. If other_auth_info is present, Unified uses API-token mode instead of Bearer, which can return 401 even when your OAuth tokens are valid. Use other_auth_info only for API-token imports (values in token_names order).

Create the connection

Make a POST request to create the connection. Example using curl:

curl -X POST "<https://api.unified.to/unified/connection>" \\
  -H "Authorization: Bearer YOUR_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{
    "integration_type": "your_integration_type",
    "permissions": ["required_permissions"],
    "categories": ["integration_category"],
    "auth": {
      // Your auth object here
    }
  }'

API reference: Create a connection

Test the imported connection

After creating the connection:

  1. Note the connection ID from the response.
  2. Make a test API call using the new connection ID to verify it works.
  3. If the call fails, check the error message and verify your auth credentials.

Best practices when importing a connection

  • Always include relevant permissions for the minimum set of data access you require.
  • Use a non-sandbox environment.
  • Store the connection ID securely for future API calls.
  • Consider adding external_xref to link the connection to your customer's ID.
  • Never mix OAuth tokens with other_auth_info on the same connection for dual-auth integrations.
  • If the provider returns a company/instance URL in the token response, include it as api_url on import.

See also

Share
All guidesCreate connectionAccounting Account Type Hierarchy in UnifiedAdvertising Report Metrics by IntegrationAmazon S3: Required IAM PermissionsATS to Vector DB: How to Power Talent Intelligence with Real-Time DataBuilding AI applications with Unified and LangbaseConcur & Concur (Company) — Connection GuideConfigure Greenhouse Native Candidate WebhooksConfigure Salesforce Meetings and Notes for UnifiedConnect Amazon Seller Central to Unified.toConnecting BambooHR via OAuth 2Connecting Google Workspace Integrations with a Service AccountCorrect WelcomeKit Scopes for Jungle IntegrationCreating Ads using the Unified Ads APICreating Walmart Items via UnifiedEnd-Users, Integrations, and ConnectionsEnriching Unified Objects with Custom MetadataEnterprise-managed authorization (EMA) with a static keyEnterprise-managed authorization (EMA) with a workspace secretEnterprise-managed authorization (EMA) with Microsoft Entra IDExtended observability — pushing API logs to ClickHouseExtended observability — pushing API logs to Grafana / LokiExtended Observability - Pushing API Logs to your Datadog InstanceFacebook Messenger Webhook SetupFireflies Integration GuideGetting started with WorkableHandling Delegated vs. Application Scopes in Microsoft IntegrationsHiBob & Unified: connection and time off guideHow long are logs retainedHow to access employees and usersHow to add API support for the Create Activity in CrelateHow to Associate a Connection ID with Your End-UserHow to build a Candidate Assessment product withHow to build a candidate sourcing or job board app with Unified.toHow to build a Discord support bot with Unified.to and LangbaseHow to Build a Fintech Application with Unified's Payments APIHow to Build an E-Commerce Product Integration with UnifiedHow to build an invoicing system with Unified.toHow to build Enterprise Search using RAGHow to configure Bullhorn Redirect URI for creating a connectionHow to configure webhooks in HubSpotHow to configure webhooks in Thrive LearningHow to configure webhooks in Toast for UnifiedHow to Connect Anthropic to Real-Time SaaS Data with Unified.to MCP ServerHow to Connect Cohere to Real-Time SaaS Data with Unified.to MCP ServerHow to Connect Google Gemini to Real-Time SaaS Data with Unified.to MCP ServerHow to connect HiBob (Bob) to Unified with OAuth 2.0How to Connect LLMs to Real-Time SaaS Data with Unified.to MCP ServerHow to Connect OpenAI to Real-Time SaaS Data with Unified.to MCP ServerHow to Connect Zoom and Zoom PhoneHow to create a Connection In Microsoft TeamsHow to create a token-based connection in HighlevelHow to Create a Unified.to Connection to HighLevelHow to Create a Xero Connection in Unified.toHow to create and configure webhooksHow to create Connection with HubspotHow to customize portal URLs for Stripe and GoCardlessHow to filter webhook eventsHow-to Get a Private Support Channel for Your Unified IntegrationHow to get help fromHow to get your 8x8 Connect API Key, Account ID and SMS Subaccount ID (optional): Step-by-step guideHow to get your ADP Workforce Now Oauth2 client ID, Oauth2 client secret, Oauth2 PEM certificate and Oauth2 private key: Step-by-step guideHow to get your Amazon S3 AWS Region, AWS S3 Key and AWS S3 Secret: Step-by-step guideHow to get your Ashby API Key: Step-by-step guideHow to get your Brex API token: Step-by-step guideHow to get your Bullhorn OAuth2 Client ID, OAuth2 Client Secret, API Username and API Password: Step-by-step guideHow to get your Ceridian Dayforce Username, Password and Client Namespace: Step-by-step guideHow to get your Crelate API key: Step-by-step guideHow to get your Dashlane API Key: Step-by-step guideHow to get your Deel Access Token: Step-by-step guideHow to get your Dialpad API Key: Step-by-step guideHow to get your Discord OAuth 2 credentials and bot tokenHow to get your ELMO client ID and client secret: Step-by-step guideHow to get your Gainsight Client ID, Client Secret and Gainsight API Domain: Step-by-step guideHow to get your Greenhouse API Key and Job board token: Step-by-step guideHow to get your Helpscout API Key: Step-by-step guideHow to get your HiBob Service User ID and Service User Token: Step-by-step guideHow to get your HighLevel API Key and Location ID: Step-by-step guideHow to get your HubSpot developer key and OAuth 2 credentials (Legacy Apps)How to get your Humaans API Key: Step-by-step guideHow to get your iCIMS API Username, API Password and Customer ID: Step-by-step guideHow to get your JobDiva Client ID, Username/email and Password: Step-by-step guideHow to get your Jobvite API Key, API Key Secret and Email: Step-by-step guideHow to get your Lever API Key: Step-by-step guideHow to get your Loxo Agency slug, API Key and Agency ID: Step-by-step guideHow to get your Microsoft Active Directory / Entra ID Client ID, Client Secret and Tenant ID: Step-by-step guideHow to get your Microsoft Azure AD OAuth 2 credentialsHow to get your OAuth 2 credentials for GmailHow to get your OAuth 2 credentials for Microsoft Dynamics 365How to get your OAuth 2 credentials in PipeDriveHow to get your OpenAI API Key: Step-by-step guideHow to get your Paycom SID/Username and Token/Password: Step-by-step guideHow to get your PCRecruiter Username, Password, Database ID, App Key and App ID: Step-by-step guideHow to get your SAP SuccessFactors (OpenID Connect) Username, Password, Client ID, Client Secret, Dependency Name, IAS Host and API URL: Step-by-step guideHow to get your SAP SuccessFactors Username, Company ID, Password and API URL: Step-by-step guideHow to get your Shopify Admin API access token and Store ID: Step-by-step guideHow to get your Wayfair Client ID, Client Secret and Vendor Encrypted Key: Step-by-step guideHow to get your Workable API Token and Subdomain: Step-by-step guideHow to get your yotpo APP Key / Store ID and Secret Key: Step-by-step guideHow to Handle Attachments in Invoice, Bill and Credit MemoHow to obtain your GitHub OAuth2 credentialsHow to Power Claude with Live Customer Data Using Unified MCPHow to receive assessment orders from an ATS with Unified.toHow to register a Google developer app and get OAuth 2 credentialsHow to register a Salesforce developer app and get OAuth 2 credentialsHow to register a Slack developer account and get OAuth 2 credentialsHow to Register a Workday Developer App and Get OAUTH2 CredentialsHow to Register a Workday Developer App and Get OAUTH2/ SOAP CredentialsHow to Register a ZendeskSell Developer App and Get OAUTH2 CredentialsHow to Register a Zoho Developer App and Get OAUTH2 CredentialsHow to Register an ADP Developer App and Get OAUTH2 CredentialsHow to Register an Atlassian Developer App and Get OAUTH2 CredentialsHow to Register your Facebook OAuth2 ApplicationHow to Register your Google Ads OAuth2 ApplicationHow to Register your MetaAds OAuth2 applicationHow To Request & Write Raw Integration DataHow to Retrieve Microsoft Dynamics 365 Business Central CredentialsHow to set up a custom API URL with a CNAMEHow to Set Up a Google Meet Meeting Bot with UnifiedHow to set up a HiBob marketplace installHow to Set Up a Microsoft Teams Bot with UnifiedHow to Set Up a Microsoft Teams Meeting Bot with UnifiedHow to Set Up a Webex Meeting Bot with UnifiedHow to Set Up a Zoom Meeting Bot with UnifiedHow to set up and configure NotionHow to set up Google Business Profile API access and get OAuth 2 credentialsHow to Set Up LinkedIn Webhooks with UnifiedHow to set up native webhooks for QuickBooks Online with UnifiedHow to set up Slack webhooks using event subscriptionsHow to set up Telegram (bot) with Unified.toHow to set up your scopes in HubSpotHow to setup a Freshbooks developer appHow to setup a TikTok Shop applicationHow to Setup AWS Assume Role for AWS Secret ManagerHow to setup Oracle JD EdwardsHow to Setup Quickbooks DesktopHow to setup Sage 100 with Unified.toHow to test webhooks in the Synthetic Data (Sandbox) environmentHow to troubleshoot unhealthy connectionsHow to troubleshoot unhealthy webhooksHow to use SCIM with the Unified APIHow to use the Passthrough APIHow to Use Unified.to's Generative AI API with OpenAI and ClaudeHow to use User Provisioning and Verification with UnifiedHow virtual webhook retry and recovery worksIntegration set-up guide for LeverManaging custom validation rules in SalesforceNetSuite Authentication Setup for UnifiedNotice of Deprecation of Fields and Objects (Nov 2025)Oracle HCM / Taleo OAuth Credentials GuideRetrieval-Augmented Generation (RAG)SalesForce (External Client Apps) on Multiple OrganizationsSAML Single-Sign-OnScaling MCP Tools with Anthropic's (& OpenAI's) Defer LoadingSet Environments for your Unified.to WorkspaceSetting up a Slack Bot Connection with Unified.toSetting up OAuth 2 Credentials for Greenhouse's APIsTrello Connection Guide in UnifiedUnderstanding OAuth2 Authorization flowsUnderstanding Response Time Headers in the Unified APIUnified Assessment API: Embed Assessments Inside ATS PlatformsUnified's MCP ServerUnified MCP Server with LangChain and LangGraphUnlock real-time data with virtual webhooksUse Unified to sign in your users into your applicationVincere OAuth Setup Guide for UnifiedWorkable: Creating candidates and attaching them to jobsWorkday vs Workday Legacy — Why Unified.to Supports BothWorking with hierarchical tree data in Storage, Messaging, and KMS APIs
Are we missing anything? Let us know
Was this page helpful?