Connections — ERP, CRM & email

Give CoPilot a named door into your business systems, so chat can look up items, check stock, create records or send a report by email.

What a connection is

A connection is a base URL plus a credential, saved under a name like ERP. Once it exists, anyone in your organization can use it from chat in any CAD system:

Look up item 1000 in the ERP
Email the DFM report to quality@yourcompany.com using the Email connection
List my connections

The credential is encrypted at rest and the call is executed on the server — the secret never reaches a user's PC and is never shown again after saving.

Setting one up

An organization admin opens Org portal → Connections (sign in), picks a provider from Start from an example, replaces the <placeholders> with the company's values, and pastes the secret. The config is a small JSON object:

ERP examples

Microsoft Dynamics 365 Business Central

Register an app in Microsoft Entra ID with a client secret, grant it the Business Central API permission (Application type, admin-consented), then register that app inside Business Central admin and assign its permission sets.

{
  "baseUrl": "https://api.businesscentral.dynamics.com/v2.0/<tenant-id>/Production/api/v2.0",
  "authKind": "oauthClientCredentials",
  "tokenUrl": "https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token",
  "clientId": "<entra-app-client-id>",
  "scope": "https://api.businesscentral.dynamics.com/.default"
}

Secret: the Entra app's client secret. First test from chat: “call the ERP connection: GET companies”.

SAP S/4HANA Cloud

Create a Communication User and a Communication Arrangement for the API you need (for example SAP_COM_0008 for Business Partner).

{
  "baseUrl": "https://<host>-api.s4hana.cloud.sap/sap/opu/odata/sap",
  "authKind": "basic",
  "basicUser": "<communication-user>"
}

Secret: the communication user's password. Test: GET API_BUSINESS_PARTNER/A_BusinessPartner?$top=5&$format=json.

ERPNext / Frappe

Generate an API key and secret on the user's page (Settings → My Settings → API Access).

{
  "baseUrl": "https://<your-site>/api/resource",
  "authKind": "apiKeyHeader",
  "headerName": "Authorization"
}

Secret: the literal text token <api-key>:<api-secret> — including the word “token”. Test: GET Item?limit_page_length=5.

CRM examples

Salesforce

Create a Connected App with OAuth enabled, turn on the Client Credentials flow, and assign a run-as integration user on the app's policies page.

{
  "baseUrl": "https://<my-domain>.my.salesforce.com/services/data/v61.0",
  "authKind": "oauthClientCredentials",
  "tokenUrl": "https://<my-domain>.my.salesforce.com/services/oauth2/token",
  "clientId": "<connected-app-consumer-key>"
}

Secret: the connected app's consumer secret. Test: GET query?q=SELECT+Name+FROM+Account+LIMIT+5.

HubSpot

Create a private app (Settings → Integrations → Private Apps) with the CRM scopes you need.

{ "baseUrl": "https://api.hubapi.com", "authKind": "bearer" }

Secret: the private app access token (pat-…). Test: GET crm/v3/objects/companies?limit=5.

Email examples

For email connections, add a "sender" key with the from-address — chat then sends mail without asking who it is from, and can attach local files (Word reports, screenshots, CSV exports) to the message:

Create a Word report of the stress results with an isometric image inside, and email it to quality@yourcompany.com with the report attached

Microsoft 365 (Graph)

Register an Entra app with the Mail.Send application permission, admin-consented.

{
  "baseUrl": "https://graph.microsoft.com/v1.0",
  "authKind": "oauthClientCredentials",
  "tokenUrl": "https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token",
  "clientId": "<entra-app-client-id>",
  "scope": "https://graph.microsoft.com/.default",
  "sender": "<sender-address>"
}

Secret: the Entra app's client secret. The sender must be an Exchange Online mailbox in the same tenant.

SendGrid

Create an API key with Mail Send permission and verify your sender domain first.

{ "baseUrl": "https://api.sendgrid.com/v3", "authKind": "bearer", "sender": "<verified-sender>" }

Secret: the SG.… API key. Sending is a POST mail/send.

Postmark

{
  "baseUrl": "https://api.postmarkapp.com",
  "authKind": "apiKeyHeader",
  "headerName": "X-Postmark-Server-Token",
  "sender": "<verified-sender>"
}

Secret: the server API token; the from-address must be a verified sender signature. Sending is a POST email.

Any other REST API

The Generic REST template covers anything that authenticates with a static key or token — internal services, PLM systems, ticketing tools. If the API speaks JSON over HTTPS with bearer, basic, header-key or client-credentials auth, it can be a connection.

Good to know