Connector Interface Contract
Each connector exposes an API that the App Connect server communicates with. Each endpoint or interface corresponds to a specific capability within App Connect, and is responsible for fulfilling that capability within the context of the CRM being connected to.
Not all interfaces are required. The tables below indicate which are core requirements and which are optional or feature-specific.
Authentication
These interfaces manage the connection lifecycle between App Connect and the target CRM.
| Interface | Description |
|---|---|
getAuthType |
Returns the auth method used by this connector (oauth or apiKey). |
getOauthInfo |
Returns OAuth credentials and token endpoint details needed to initiate the OAuth flow. |
getBasicAuth |
Returns credentials for Basic Auth. Used only by connectors with apiKey auth type. |
getUserInfo |
Fetches and returns the authenticated user's profile from the CRM after login. |
refreshUserInfo |
Refreshes CRM-side information for an already connected user. |
unAuthorize |
Logs a user out of the CRM, invalidates credentials, and cleans up any stored session data. |
Call logging
These interfaces handle the creation and management of call log records in the CRM.
| Interface | Description |
|---|---|
findContact |
Finds one or more contacts in the CRM by phone number. Powers call-pop and call logging. |
findContactWithName |
Finds one or more contacts by name. Used when a user searches for a contact manually. |
createContact |
Creates a placeholder contact when no matching contact is found for a phone number. |
createCallLog |
Creates a new call log record in the CRM associated with a contact. |
updateCallLog |
Updates an existing call log record, e.g. to add notes after a call ends. |
getCallLog |
Fetches the current state of a call log from the CRM, in case the user edited it directly. |
getLogFormatType |
Returns the preferred format for composing call log detail content. |
upsertCallDisposition |
Creates or updates the call disposition associated with a log entry. |
SMS logging
These interfaces handle the creation and management of SMS conversation records in the CRM.
| Interface | Description |
|---|---|
createMessageLog |
Creates a new SMS conversation log record in the CRM. |
updateMessageLog |
Updates an existing SMS message log, e.g. to append new messages. |
Server-side logging
These interfaces support App Connect's server-side logging service, which logs calls automatically without user interaction.
| Interface | Description |
|---|---|
getLicenseStatus |
Returns the license status for a given CRM user, used to gate server-side logging access. |
getUserList |
Returns the list of CRM users for admin-managed user mapping in server-side logging. |
Appointments
These interfaces power App Connect's built-in appointment scheduling panel. Implement them if the target CRM supports calendar or appointment management.
| Interface | Description |
|---|---|
listAppointments |
Retrieves upcoming appointments from the CRM for display in the appointments panel. |
createAppointment |
Creates a new appointment in the CRM. |
updateAppointment |
Updates an existing appointment in the CRM. |
refreshAppointment |
Fetches the latest state of a single appointment. |
cancelAppointment |
Cancels or deletes an appointment in the CRM. |
confirmAppointment |
Marks an appointment as confirmed (implement only if the CRM supports this status). |
Lifecycle hooks
Lifecycle hooks allow connectors to intercept and customize key framework operations. Unlike standard interfaces, lifecycle hooks are optional and connector-specific — implement only the ones your CRM requires.
| Hook | Description |
|---|---|
authValidation |
Validates session tokens before each request. Refresh the session if expired. |
checkAndRefreshAccessToken |
Checks whether the OAuth access token is expired and refreshes it if necessary. |
getOverridingOAuthOption |
Overrides token-exchange request parameters for CRMs with non-standard OAuth flows. |
getServerLoggingSettings |
Retrieves the server-side logging configuration for the current user's organization. |
updateServerLoggingSettings |
Persists updated server-side logging settings for the current user's organization. |
postSaveUserInfo |
Called after a user authenticates; use it for CRM-specific post-login setup. |
Connector shapes
App Connect supports three connector shapes:
| Shape | Where it is defined | When to use it |
|---|---|---|
| Code connector | A JavaScript module registered with connectorRegistry.registerConnector() |
Use when the CRM needs custom logic, multiple API calls, database work, or connector-specific behavior. |
| Interface-only connector | Individual functions registered with connectorRegistry.registerConnectorInterface() |
Use when a platform is assembled from separately registered methods. Registered interface functions are composed over the base connector without mutating it. |
| Proxy connector | Declarative proxyConfig stored in the Developer Console |
Use when REST calls and response mappings are enough. If no platform connector is registered and the proxy connector exists, the registry falls back to proxy mode. |
Common runtime inputs
Most interface methods receive one object argument. The exact fields vary by flow, but these are common across most interfaces:
| Field | Meaning |
|---|---|
user |
Persisted App Connect user model for the connected CRM user. Includes id, platform, hostname, accessToken, refreshToken, tokenExpiry, timezoneName, timezoneOffset, rcAccountId, platformAdditionalInfo, and userSettings when available. |
authHeader |
Authorization header already prepared by core. OAuth connectors receive Bearer <accessToken> after refresh. API-key connectors receive Basic <value returned by getBasicAuth()>. |
proxyConfig |
Proxy connector configuration when the user connected through proxy mode. Code connectors can ignore it unless they deliberately support proxy-backed behavior. |
Return messages
Most interfaces may return an optional returnMessage to surface feedback in the App Connect UI:
return {
returnMessage: {
message: 'Call logged.',
messageType: 'success',
ttl: 3000
}
};
Use success, warning, or error for messageType. Some older connectors use danger; prefer error for new connector code.