OpenConnect API

Integrate Experience Cloud with contact center platforms for seamless CRM automation

Replaces "Connect API" - Complete Integration Guide

Why OpenConnect is Critical for Oracle & Zendesk

OpenConnect enables Experience Cloud to integrate with various contact center platforms, including telephony, voice, ACD, routing, and contact center solutions, to facilitate CRM automation and seamless data transfer.

Key Challenges Addressed

OpenConnect solves common inefficiencies caused by operating multiple disparate systems in Oracle & Zendesk environments. By seamlessly connecting your CRM with contact center routing platforms and telephony voice channels, OpenConnect enhances workflow efficiency in several critical ways:

  • Eliminates manual data entry between systems
  • Provides real-time synchronization of customer interaction data
  • Enables automated workflow triggers based on telephony events
  • Creates unified agent experiences across platforms
  • Improves data accuracy and reduces human error
  • Accelerates response times with automated routing and data population
🔐 Authentication Required

All OpenConnect API requests require a valid API key (JWT token) for authentication. Generate your API key from the Configuration → API Keys section before proceeding with integration setup.

Building a Connection

Follow this comprehensive 6-step process to establish a working OpenConnect integration. Each step is critical to ensure proper authentication and data flow between your contact center platform and Experience Cloud.

1

Verify Platform Requirements

Ensure your contact center platform supports both Ingress and Egress API connections. This is essential for bidirectional data flow between systems.

Required Information: You'll need your JWT Key, CRM ID, and Event Name to complete the integration.

2

Generate API Key

Create a new OpenConnect API Key or use an existing one from your Experience Cloud account. Navigate to Configuration → API Keys to manage your keys.

Security Best Practice: Use domain allow-lists to restrict API key usage to authorized domains only.

3

Obtain CRM ID

For Oracle (Service Cloud/Fusion): Use your domain name as the CRM ID.

For Zendesk: Use the hostname from your Zendesk environment URL.
Example: From https://mycompany.zendesk.com/support, use mycompany

4

Get Event Name

Navigate to your PopFlow in Experience Cloud, select the appropriate CRM instance, and copy the exact event name (case and length sensitive) from the published PopFlow configuration.

Important: Event names must match exactly - they are case-sensitive and space-sensitive!

5

Configure Parameters

Set up the required query parameters (agentid, jwt, event) and optionally include custom interaction data to personalize workflows.

All parameter names are case-sensitive.

6

Test Your Integration

Use the testing sections below to validate your API calls using GET or POST methods. Start with simple test calls before implementing in production.

Note: OpenConnect has a 128 KB payload size limit per message.

Supported SendMessage Endpoints

OpenConnect provides two types of endpoints for different integration scenarios:

CTI (Computer Telephony Integration) Endpoints

Use CTI endpoints for telephony and contact center integrations:

Endpoint Response Format
https://connect.openmethodscloud.com/api/sendmessage/CTI Plain string: "Result:OK"
https://connect.openmethodscloud.com/api/sendmessage/v1/CTI JSON formatted:
{ "result": "Success", "message": "OK" }
https://connect.openmethodscloud.com/api/sendmessage/bc/CTI Browser-based: Opens new window, auto-closes on success

CRM (Customer Relationship Management) Endpoints

Use CRM endpoints for integrations with Zendesk, Oracle, and other CRM systems:

Endpoint Response Format
https://connect.openmethodscloud.com/api/sendmessage/CRM Plain string: "Result:OK"
https://connect.openmethodscloud.com/api/sendmessage/v1/CRM JSON formatted:
{ "result": "Success", "message": "OK" }
https://connect.openmethodscloud.com/api/sendmessage/bc/CRM Browser-based: Opens new window, auto-closes on success
💡 Recommendation

Use the /v1/CTI or /v1/CRM endpoints for modern integrations as they return structured JSON responses, making error handling and logging significantly easier.

âš ī¸ Key Differences

CTI: Requires agentid, jwt, and event
CRM: Requires agentid, jwt, crmId, and event

CTI endpoints are typically used for telephony events like "On Ring", "On Answer", "On Hold", "On End".
CRM endpoints require an additional crmId parameter to identify the CRM instance.

Request Parameters

CTI (Telephony) Connection Parameters

For CTI integrations, include these required parameters:

agentid Required

The CTI login user name (case-sensitive). This is the agent's login username in your telephony system.

jwt Required

Your API key from Experience Cloud. Generate this in Security → API Keys.

event Required

PopFlow event name (case-sensitive). Common telephony events: On Ring, On Answer, On Hold, On End.

CRM Connection Parameters

For CRM integrations (Zendesk, Oracle, etc.), include these required parameters:

agentid Required

The CRM login user name (case-sensitive). This is the agent's username in your CRM system.

jwt Required

Your API key from Experience Cloud. Generate this in Security → API Keys.

crmId Required for CRM

Your CRM instance name. For Oracle, use your domain. For Zendesk, use the hostname from your Zendesk URL (e.g., "mycompany" from mycompany.zendesk.com).

event Required

The exact PopFlow event name (case and space sensitive) from your published PopFlow configuration in Experience Cloud.

Optional Context Data

Pass additional custom data elements in your requests to personalize workflows. This can include interaction data, customer information, routing data, or ACD-specific fields.

// Examples of optional context data
"customerTier": "Platinum",
"orderId": "ORD-12345",
"callType": "Support",
"previousInteractions": 5,
"accountValue": 25000
âš ī¸ Payload Size Limitation

OpenConnect limits the payload size to 128 KB per message due to variable-length encoding. Keep your data payloads within this limit to avoid request failures.

Sending JWT for Authentication

Recommended: Authorization Header (Bearer Token)

It is strongly recommended to include your JWT in the Authorization header using the Bearer token scheme. This approach ensures secure and standardized transmission of authentication credentials.

Authorization: Bearer <your_jwt_token>

Fallback: Query Parameter or Request Body

In scenarios where it's not technically feasible to include the JWT in the header (such as certain browser-based requests or limited client environments), the token may be passed as a fallback:

For GET Requests

Include the token as a query parameter:

?agentid=<agent_id>&jwt=<your_jwt_token>&event=<event_name>

For POST Requests

Include the token in the request body as a JSON field:

{
  "agentid": "<agent_id>",
  "jwt": "<your_jwt_token>",
  "crmid": "<crm_id>",
  "event": "<event_name>"
}

Example API Calls

POST Request (Recommended)

POST requests provide better security and flexibility for passing complex data structures. Set the Content-Type header to application/json.

POST https://connect.openmethodscloud.com/api/sendmessage/CRM
Content-Type: application/json
Authorization: Bearer <your_jwt_token>

{
  "agentid": "john.doe",
  "crmid": "mycompany",
  "event": "CustomerOnboarding",
  "customerId": "CUST-12345",
  "customerTier": "Premium",
  "source": "InboundCall"
}

JavaScript / Node.js Example

const axios = require('axios');

async function triggerOpenConnect() {
  try {
    const response = await axios.post(
      'https://connect.openmethodscloud.com/api/sendmessage/v1/CTI',
      {
        agentid: 'john.doe',
        crmid: 'mycompany',
        event: 'CustomerOnboarding',
        customerId: 'CUST-12345',
        tier: 'Premium'
      },
      {
        headers: {
          'Content-Type': 'application/json',
          'Authorization': `Bearer ${process.env.OPENCONNECT_JWT}`
        }
      }
    );
    
    console.log('Success:', response.data);
  } catch (error) {
    console.error('Error:', error.response?.data || error.message);
  }
}

triggerOpenConnect();

Python Example

import requests
import os

def trigger_openconnect():
    url = 'https://connect.openmethodscloud.com/api/sendmessage/v1/CTI'
    headers = {
        'Content-Type': 'application/json',
        'Authorization': f'Bearer {os.environ["OPENCONNECT_JWT"]}'
    }
    payload = {
        'agentid': 'john.doe',
        'crmid': 'mycompany',
        'event': 'CustomerOnboarding',
        'customerId': 'CUST-12345',
        'tier': 'Premium'
    }
    
    try:
        response = requests.post(url, json=payload, headers=headers)
        response.raise_for_status()
        print('Success:', response.json())
    except requests.exceptions.RequestException as error:
        print('Error:', error)

trigger_openconnect()

cURL Example

curl -X POST https://connect.openmethodscloud.com/api/sendmessage/v1/CTI \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -d '{
    "agentid": "john.doe",
    "crmid": "mycompany",
    "event": "CustomerOnboarding",
    "customerId": "CUST-12345",
    "tier": "Premium"
  }'

Troubleshooting

Experience Not Triggered?

If your PopFlow experience isn't launching, check these common issues:

  1. Event Name Mismatch
    Ensure the event name is typed correctly with exact case and length (including spaces). Event names are case-sensitive and must match exactly what's configured in Experience Cloud.
  2. Unpublished PopFlow
    Double-check that the PopFlow you're trying to trigger is published to the event being called in your API request.
  3. Profile Mismatch (Oracle Service Cloud)
    If using Service Cloud CRM, ensure the published profile matches the CRM user's profile. Mismatched profiles will prevent the experience from launching.
  4. Invalid or Expired API Key
    Verify your JWT token is valid and hasn't expired. Regenerate if necessary from the API Keys section.
  5. Domain Restrictions
    If you've configured domain allow-lists on your API key, ensure requests are coming from authorized domains.

Error Messages & Status Codes

Status Code Error Message Description & Resolution
401 Unauthorized Invalid or missing JWT token. Verify your API key is correct and properly formatted in the Authorization header or request body.
400 Bad Request Invalid request data. Check that all required parameters are present and correctly formatted. Ensure JSON is valid and payload is under 128 KB.
404 Not Found Event name not found or PopFlow not published. Verify the event exists and is published in Experience Cloud.
500 Server Error Internal server error. If this persists, contact OpenMethods support with request details and timestamps.
âš ī¸ Common Error Response

Both 401 and 400 errors return the message: "Invalid token or data error". Check the HTTP status code to determine which issue you're encountering.

Supported Contact Center Platforms

OpenConnect has been tested and verified with the following contact center platforms. Each platform has specific integration guides available in the Experience Cloud knowledge base.

8x8
✓ Supported
Amazon Connect
✓ Supported
Cisco UCCE
✓ Supported
Cisco UCCX
✓ Supported
Cisco WebEx CC
✓ Supported
Five9
✓ Supported
Genesys PureCloud
✓ Supported
Genesys PureConnect
✓ Supported
Genesys PureEngage
✓ Supported
InContact Central
✓ Supported
InContact Hub
✓ Supported
TalkDesk
✓ Supported
Twilio Flex
✓ In Progress
✓ Supported
â„šī¸ Platform-Specific Guides

For detailed integration instructions specific to your contact center platform, please refer to the platform-specific guides in the Experience Cloud knowledge base.

Zoom Contact Center — View the complete Zoom Contact Center User Guide →

Best Practices

Security

  • Always use Authorization header with Bearer token scheme instead of including JWT in query parameters or request body
  • Never expose your API key in client-side code or commit it to version control systems
  • Store API keys in secure environment variables or secrets management systems
  • Configure domain allow-lists on your API keys to restrict usage to authorized domains only
  • Rotate API keys periodically (recommended every 90 days) for enhanced security
  • Use separate API keys for development, staging, and production environments
  • Monitor API key usage logs for suspicious activity

Performance & Reliability

  • Implement retry logic with exponential backoff for failed requests (max 3 retries recommended)
  • Set appropriate timeout values (recommended: 10-30 seconds for API calls)
  • Use the /v1/CTI endpoint for structured JSON responses and better error handling
  • Cache API responses when appropriate to reduce redundant calls
  • Monitor API response times and set up alerts for degraded performance
  • Use asynchronous/non-blocking requests in high-volume scenarios
  • Keep payload sizes well under the 128 KB limit - aim for < 64 KB for optimal performance

Error Handling

  • Always check HTTP status codes before processing responses
  • Log failed requests with full context (timestamp, parameters, error message) for debugging
  • Implement graceful degradation - don't let OpenConnect failures break critical user workflows
  • Validate all request parameters before sending to catch errors early
  • Handle both network errors and API errors appropriately
  • Provide meaningful error messages to users when integrations fail

Testing & Validation

  • Test with sample data in a non-production environment before going live
  • Verify event names match exactly (case and space sensitive) in all environments
  • Test with various payload sizes to ensure you stay within the 128 KB limit
  • Validate that all required PopFlows are published before deploying
  • Test error scenarios (invalid tokens, missing parameters, timeout conditions)
  • Document your integration configuration for future reference

Contributing to This Documentation

This documentation must stay in sync with the OpenConnect user interface and API behaviour. Follow these guidelines when making pull requests that touch OpenConnect functionality.

Check for Interface Changes

Every pull request that modifies the OpenConnect UI or API surface should be reviewed for documentation impact. Before merging, ask yourself:

  • Does the PR add, rename, or remove a connection type card (e.g. "Generic CTI Integration", "CRM Connection", "Zoom Contact Center")?
  • Are new feature-flag-gated elements introduced that change what the user sees?
  • Have endpoint URLs, request parameters, or response formats changed?
  • Has the error-handling behaviour or status-code mapping been updated?
  • Are there new or updated "Coming Soon" badges, tooltips, or labels?

If the answer to any of the above is yes, update the relevant section of this document in the same PR so the docs and code ship together.

Keeping Documentation & Implementation in Sync

  • Same PR, same review — Documentation changes should travel with the code they describe. Reviewers should verify that doc updates match the implementation.
  • Section mapping — The major sections of this page correspond directly to areas of the codebase:
    • Supported Contact Center Platforms → platform grid in open-connect-v2.component.html
    • Supported SendMessage Endpoints → API endpoint configuration
    • Request Parameters → parameter types used in API calls
  • Feature flags — When a feature is behind a flag, document it as "Coming Soon" here and note the flag name in a code comment so the docs can be promoted to "Supported" once the flag is removed. (Example: Zoom Contact Center was promoted from "Coming Soon" to "Supported" when the apps.ZoomIntegration feature was enabled.)
  • Terminology consistency — Use the exact display labels from the UI (e.g. "Generic CTI Integration", not "CTI Connection"). When a label is renamed in the app, update this document to match.

Screenshots & Visual Assets

When a PR changes the visual appearance of the OpenConnect page (new cards, updated labels, badge changes, layout shifts), updated screenshots may be required.

  • Capture from E2E test recordings — Run the relevant end-to-end tests in headed mode and extract screenshots from the test video recordings, as we have done in past documentation updates.
  • Prompt for a test run — If you are unable to capture screenshots yourself, flag the PR and ask a team member (or the reviewer) to run the E2E suite so screenshots can be taken from the resulting video artefacts.
  • Store screenshots in docs/images/ and reference them with a relative path. Use descriptive filenames (e.g. openconnect-zoom-coming-soon.png).
  • Include alt-text on every <img> tag for accessibility.
💡 Quick Checklist for PR Authors
  1. Review the diff for any user-facing text or UI changes.
  2. Search this doc for affected terms (Ctrl+F is your friend).
  3. Update or add the relevant section(s).
  4. If the change is visual, run E2E tests and attach / update screenshots.
  5. Mention the doc update in the PR description so reviewers can verify.

Need Help?

If you encounter issues or have questions about OpenConnect, consult these resources:

  • API Keys Documentation - Review the complete guide to generating and managing API keys in Experience Cloud
  • Platform-Specific Integration Guides - Access detailed setup instructions for your specific contact center platform
  • Experience Cloud Knowledge Base - Search for troubleshooting articles and integration examples
  • Account Administrator - Contact your organization's Experience Cloud administrator for environment-specific configuration
  • OpenMethods Support - Submit a support ticket for technical assistance with integration issues
📧 Support Ticket Tips

When contacting support, include: your CRM type (Oracle/Zendesk), event name, sample API request, error messages received, and approximate timestamp of failed requests. This helps support teams diagnose issues faster.