Authorization Type

Carbon uses OAuth 2.0 to connect to Intercom workspaces.

Authorization Flow

Functionality

The integrations/oauth_url and integrations/connect endpoints sync articles by default, but tickets and conversations can also be optionally synced.

To customize the sync behavior, use the file_sync_config parameter:

"file_sync_config": {
  "auto_synced_source_types": ["TICKET"],
  "sync_attachments": true
}
  • auto_synced_source_types: An array specifying the types of items to sync. Valid values are “ARTICLE” (default), “TICKET”, and “CONVERSATION”. To sync articles, conversations, and tickets, include all values in the array.
  • sync_attachments: A boolean indicating whether to sync attachments from ticket comments. Set to true to enable attachment syncing.

Additional Endpoints

The following endpoints can be used with Intercom to list and sync items:

  • integrations/items/sync: Sync items from Intercom
  • integrations/items/list: List items from Intercom
  • integrations/files/sync: Sync files from Intercom

Articles

Carbon can sync Published articles from multiple Intercom workspaces. Note that Draft articles will not be synced.

Tickets

Carbon can sync tickets and their associated file attachments. The following ticket information is available as tags for filtering:

{
  "ticket_type": "Support Request",
  "ticket_status": "resolved",
  "ticket_category": "Customer",
  "ticket_submitter": "example.user@projectmap.com",
  "ticket_assigned_team": "Technical",
  "ticket_assigned_admin": "swapnil@carbon.ai"
}

Use these tags to filter and organize synced tickets based on their properties.

Conversations

Carbon can sync conversations and their associated file attachments. The following conversation information is available as tags for filtering:

{
  "conversation_status": "open",
  "conversation_priority": "not_priority",
  "conversation_submitter": "example.user@projectmap.com",
  "conversation_assigned_team": "Support",
  "conversation_assigned_admin": "swapnil+int2@carbon.ai"
}

Use these tags to filter and organize synced tickets based on their properties.

Configuration

Custom OAuth Credentials

Custom OAuth credentials is only required for customers who enable white labeling.
  1. After you create or log into your Intercom Developer account, click New App to create your own app.

  1. Under the Authentication tab, click Edit -> Use OAuth -> Add redirect URL and then enter https://api.carbon.ai/integrations/intercom. You can also use a custom CNAME record pointing to https://api.carbon.ai but the domain path must still be /integrations/intercom.

  1. Under the Authentication tab, click Edit to add permissions:

    • To sync user articles only, add these scopes:

      • Read one admin
      • Read and List Articles
    • To sync tickets, add these scopes:

      • Read and list users and companies
      • Read tickets
  • To sync tickets, add these scopes:
    • Read conversations

You can remove access to the other permissions.

  1. Under the Basic Info tab, share the Client ID and Client secret with us via Slack.

  1. Under the Basic Info tab, add an App icon and App name.

  1. Click Test and publish -> Submit for review and fill in the details require to publish your app. After your app is approved, then we can enable the white labeling.

Synchronization

Syncs for articles are triggered when end-users add or remove pages via the Intercom OAuth flow. You can use the resync_file API endpoint to programmatically resync specific Intercom files.

To sync Intercom articles or tickets on a 24-hour schedule (more frequent schedules available upon request), you can use the /update_users endpoint. This endpoint allows organizations to customize syncing settings according to their requirements, with the option to enable syncing for all data sources using the string ‘ALL’. It’s important to note that each request supports up to 100 customer IDs.

Here’s an example illustrating how to automatically enable syncing for updated Intercom content for specified users:

{
    "customer_ids": ["team@carbon.ai", "sam@openai.com"],
    "auto_sync_enabled_sources": ["INTERCOM"]
}