Connectors let your automations respond to events from external systems and send notifications to connected services. A company installs a connector once; all automations that require it can use it.
Available connectors
| Connector | Slug | Capabilities |
|---|---|---|
| Salesforce | salesforce |
Record events, data sync, create/update records |
| HubSpot | hubspot |
Deal and contact events, create contacts, create deals |
| Google Workspace | google |
Gmail, Drive, Calendar events, send email |
| QuickBooks | quickbooks |
Invoice and payment events, create/send invoices |
| Xero | xero |
Invoice and accounting events, create/send invoices |
| DocuSign | docusign |
Envelope status events, send envelopes |
| Slack | slack |
Post messages to channels |
| Procore | procore |
RFI, submittal, change order, daily log events, create RFIs |
| Microsoft 365 | microsoft |
Teams messages, mail and file notifications |
Declaring connector requirements
If your plugin requires one or more connectors, declare them in plugin.json:
{
"requirements": {
"connectors": ["procore", "docusign"]
}
}
When a company tries to install your plugin, CableKnit checks that all required connectors are configured. If any are missing, the company is prompted to connect them before installation completes.
Querying connector data in chat
When a company connects a service, the AI can query it live during chat using the built-in fetch_briefing tool. No plugin configuration is needed — declaring the connector requirement in plugin.json is enough.
The AI calls fetch_briefing with the connection name, a time period, and optional resource filters. For example, a user might ask “What deals closed this week?” and the AI will query HubSpot via the company’s active connector.
For more targeted or structured queries, plugins can define connector-type data tools that map parameters to specific connector resources and filters.
Using connectors in automations
Event triggers
Use the event trigger type to start a run when a connector event arrives:
{
"trigger_type": "event",
"trigger_config": {
"event_type": "ConnectorEvent",
"channel": "envelopes",
"conditions": [
{ "field": "payload.status", "operator": "eq", "value": "completed" }
]
}
}
The full event payload is available as case_context.trigger_data.
Slack notifications
Send messages to the company’s Slack workspace from any step:
{
"type": "notify_slack",
"channel": "#operations",
"message": "New RFI received: "
}
If the company hasn’t connected Slack, this action is skipped silently rather than failing the run.
Microsoft Teams notifications
Send channel posts or direct messages via Microsoft Teams:
{
"type": "notify_teams",
"user_email": "",
"message": "You have a pending decision in CableKnit: "
}
Connector event channels
DocuSign
| Channel | Events | Trigger conditions |
|---|---|---|
envelopes |
Envelope status changes | payload.status: completed, declined, voided |
Example — trigger when a contract is signed:
{
"trigger_type": "event",
"trigger_config": {
"event_type": "ConnectorEvent",
"channel": "envelopes",
"conditions": [
{ "field": "payload.status", "operator": "eq", "value": "completed" }
]
}
}
Procore
| Channel | Events | Trigger conditions |
|---|---|---|
events |
RFI, Submittal, ChangeOrder, DailyLog | payload.resource_name, payload.event_type: create, update |
Example — trigger when an RFI is created:
{
"trigger_type": "event",
"trigger_config": {
"event_type": "ConnectorEvent",
"channel": "events",
"conditions": [
{ "field": "payload.resource_name", "operator": "eq", "value": "RFI" },
{ "field": "payload.event_type", "operator": "eq", "value": "create" }
]
}
}
Slack
| Channel | Events |
|---|---|
events |
Workspace events, message events |
Microsoft 365
| Channel | Events |
|---|---|
notifications |
Mail, file, Teams notifications |
Google Workspace
| Channel | Events |
|---|---|
gmail |
Incoming email events |
drive |
File change events |
Salesforce / HubSpot
| Channel | Events |
|---|---|
streaming |
Record change events via Salesforce Streaming API / HubSpot webhooks |
Building connector-optional automations
Design your automations to degrade gracefully when a connector isn’t available. Use notify_slack and notify_teams freely — both are skipped silently if the connector isn’t configured. For event-triggered automations, the trigger simply won’t fire if the connector isn’t connected.
For core workflow logic that absolutely requires a connector, declare it as a requirement in plugin.json so the company is prompted to connect it at install time.
Requesting a new connector
Need a connector that isn’t available yet? Submit a request through the Developer Portal. Tell us the service, link to its API docs, describe the auth type and the tools/capabilities you’d need. We use these requests to prioritize which connectors to build next.