Connectors
The connector framework is Nembl's system for integrating with external services. Connectors handle authentication, API communication, and data mapping so that workflows can interact with third-party tools without custom code.
Connector Framework Overview
Each connector encapsulates:
- Authentication -- OAuth 2.0, API key, or custom auth, managed through Nembl's credential storage.
- Actions -- predefined operations the connector can perform (e.g., "send message", "create issue").
- Triggers -- events from the external service that can start a workflow (e.g., "new issue created").
- Data mapping -- translation between the external service's data format and Nembl's workflow variables.
How Connectors Fit in the Platform
Workflow Phase
└── Connector Action
└── Connector (e.g., Slack)
└── External API call
└── Response → next workflow phaseConnectors are invoked during workflow execution. When a phase reaches a connector action, Nembl calls the external API, processes the response, and passes the result to the next phase.
Installing Connectors
From the Connector Catalog
- Navigate to Settings > Connectors.
- Click Add Connector.
- Browse or search the connector catalog.
- Click Install on the connector you need.
- The connector appears in your installed list, ready for authentication.
Connector Categories
| Category | Connectors |
|---|---|
| Communication | Slack (3 actions), Microsoft Teams, Email (API-based via Resend/SendGrid) |
| Project Management | Jira, GitHub (3 actions), Linear |
| IT Operations | PagerDuty, OpsGenie (2 actions), ServiceNow (3 actions) |
| CRM & Sales | Salesforce (4 actions), HubSpot (3 actions), Chargebee (3 actions) |
| Documents & Signatures | DocuSign (2 actions) |
| General | Generic REST (any method), Outbound Webhook |
OAuth Flow
Most connectors use OAuth 2.0 for authentication, which provides scoped, revocable access without storing passwords.
Connecting via OAuth
- Open the installed connector from Settings > Connectors.
- Click Connect.
- You are redirected to the external service's authorization page (e.g., Slack's "Allow Access" screen).
- Authorize Nembl to access the required scopes.
- You are redirected back to Nembl with the connection confirmed.
OAuth Token Lifecycle
- Access tokens are short-lived (typically 1 hour) and refreshed automatically.
- Refresh tokens are stored securely as secrets in your company namespace.
- If a refresh token expires or is revoked, Nembl marks the connector as disconnected and prompts you to re-authorize.
Reconnecting
If a connector becomes disconnected:
- Navigate to Settings > Connectors.
- The disconnected connector shows a warning badge.
- Click Reconnect and complete the OAuth flow again.
Credential Management
API Key Connectors
For connectors that use API keys (PagerDuty, OpsGenie, Linear, Generic REST):
- Open the connector.
- In the Authentication section, click Set API Key.
- Enter the key or select an existing vault.
- Click Save.
Credential Storage
All credentials (OAuth tokens and API keys) are stored as Nembl Vaults under your company namespace, encrypted at rest:
nembl/{companyId}/connector-{connectorSlug}Credentials are encrypted at rest and in transit. They are never exposed in logs, audit trails, or API responses.
Rotating Credentials
- For API key connectors: generate a new key in the external service, update the secret in Nembl, verify the connection, then revoke the old key.
- For OAuth connectors: click Reconnect to generate new tokens. The old tokens are automatically revoked.
Using Connectors in Workflow Phases
Adding a Connector Action
- Open a workflow in the builder.
- Select or create a PROCESS phase.
- In the property panel, set Automation type to Connector call.
- Pick the connector and action from the catalog below.
- Fill in the required config fields. Any field value supports
{{variable}}interpolation from instance variables. - Optional: set Response variable to capture the API response for use in downstream phases.
Full Connector Catalog
Communication
| Service | Action | Auth | Config |
|---|---|---|---|
| Slack | Send Message | Webhook | webhookUrl, channel (opt), message |
| Slack | Incoming Webhook (Block Kit) | Webhook | webhookUrl, blocks (JSON) |
| Slack | Bot Message | OAuth 2.0 | channel, message |
| Microsoft Teams | Send Message | Webhook | webhookUrl, title, message (Adaptive Card) |
| Send Email | API key | apiUrl, apiKey, from, to, subject, body (HTML) |
Email connector targets a generic HTTP email API (Resend, SendGrid, etc.) — apiUrl points at the send endpoint.
Project Management
| Service | Action | Auth | Config |
|---|---|---|---|
| Jira | Create Issue | API key | baseUrl, email, apiToken, projectKey, issueType, summary, description (opt) |
| Linear | Create Issue | API key | apiKey, teamId, title, description (opt), priority (opt, 0–4) |
| GitHub | Create Issue | API key (PAT) | token, owner, repo, title, body (opt), labels (opt) |
| GitHub | Comment on PR | API key (PAT) | token, owner, repo, prNumber, body |
| GitHub | Create Issue (OAuth) | OAuth 2.0 | owner, repo, title, body (opt) |
IT Operations
| Service | Action | Auth | Config |
|---|---|---|---|
| PagerDuty | Trigger Incident | API key (routing) | routingKey, summary, severity, source (opt) |
| OpsGenie | Create Alert | API key | apiKey, message, description, priority (P1–P5), tags, entity, alias |
| OpsGenie | Close Alert | API key | apiKey, alias, note |
| ServiceNow | Create Incident | Basic | instanceUrl, username, password, shortDescription, description (opt), urgency, impact, assignmentGroup, callerId |
| ServiceNow | Create Change Request | Basic | instanceUrl, username, password, shortDescription, description, type, risk, impact, assignmentGroup |
| ServiceNow | Query CMDB | Basic | instanceUrl, username, password, query (sysparm_query), limit |
CRM & Sales
| Service | Action | Auth | Config |
|---|---|---|---|
| Salesforce | Create Lead | OAuth 2.0 | firstName, lastName, company, email, phone, status |
| Salesforce | Create Opportunity | OAuth 2.0 | name, stageName, amount, closeDate, accountId |
| Salesforce | SOQL Query | OAuth 2.0 | soqlQuery |
| Salesforce | Update Record | OAuth 2.0 | objectType, recordId, fields (JSON) |
| HubSpot | Create Contact | API key | accessToken, email, firstName, lastName, phone, company |
| HubSpot | Create Deal | API key | accessToken, dealName, amount, dealStage, pipeline, closeDate |
| HubSpot | Search Objects | API key | accessToken, objectType (contacts/deals/companies/tickets), filterProperty, filterOperator (EQ/NEQ/GT/LT/CONTAINS), filterValue, limit |
| Chargebee | Get Subscription | API key | apiUrl, apiKey, customerId, product (nembl/flagforge), responseVariable |
| Chargebee | Create Checkout | API key | apiUrl, apiKey, product, planId, responseVariable |
| Chargebee | Customer Portal | API key | apiUrl, apiKey, customerId, responseVariable |
Documents & Signatures
| Service | Action | Auth | Config |
|---|---|---|---|
| DocuSign | Send Envelope | OAuth 2.0 | accountId, baseUrl, templateId, signerEmail, signerName |
| DocuSign | Get Envelope Status | OAuth 2.0 | accountId, baseUrl, envelopeId |
General-Purpose
| Service | Action | Auth | Config |
|---|---|---|---|
| REST API | Generic Call | API key / none | url, method (GET/POST/PUT/PATCH/DELETE), headers (JSON), body (JSON), authHeader, responseVariable |
| Webhook | Send Payload | Webhook | url, payload (JSON, supports {{variables}}) |
Use REST API when you need a one-off call to a service Nembl doesn't have a dedicated connector for. Use Webhook for fire-and-forget notifications to inbound webhook URLs (e.g. custom Slack-compatible endpoints, third-party automation platforms).
Response Handling
Connector actions return data that can be used in later workflow phases:
Phase: "Create GitHub Issue"
Action: GitHub → Create Issue
Inputs:
repo: "devopspolis/nembl"
title: "{{ request.title }}"
body: "{{ request.fields.description }}"
Outputs:
githubIssueUrl → {{ connectorResponse.html_url }}
githubIssueNumber → {{ connectorResponse.number }}
Phase: "Notify Team"
Action: Slack → Send Message
Inputs:
channel: "#engineering"
message: "Created issue {{ githubIssueUrl }}"Error Handling
When a connector action fails (e.g., external API returns an error):
- The workflow phase is marked as failed.
- The error details are logged in the workflow execution history.
- If the phase has a retry configuration, Nembl retries the action automatically.
- If retries are exhausted, the workflow follows the configured error path (if defined) or pauses for manual intervention.
Building Custom Integrations
For services without a dedicated connector, use the Generic REST API connector.
Configuring a Custom Connector
- Install the Generic REST API connector.
- Set the base URL, authentication method, and default headers.
- In workflow phases, configure the HTTP method, path, headers, and body for each action.
Advanced: Custom Request Transformations
For complex integrations, use workflow data phases to transform data before and after connector calls:
Phase 1: "Prepare Payload" (Data Transform)
→ Format request data into the external API's expected structure
Phase 2: "Call External API" (Generic REST Connector)
→ POST the transformed data
Phase 3: "Process Response" (Data Transform)
→ Extract and format the response for use in the workflowMonitoring Connector Health
Connection Status
From Settings > Connectors, each connector shows its current status:
| Status | Meaning |
|---|---|
| Connected | Authenticated and operational |
| Disconnected | Authentication expired or revoked; needs reconnection |
| Error | Recent API calls are failing; check the external service |
Execution History
View connector action results from the workflow execution history:
- Which connector and action were called
- Request sent to the external API
- Response received
- Success or failure status
- Error details if failed
Best Practices
- Use dedicated service accounts. In the external service, create a service account specifically for Nembl rather than using a personal account.
- Grant minimal scopes. When authorizing OAuth connectors, review the requested scopes and ensure they match what your workflows need.
- Test connector actions. Before deploying a workflow with connector actions, test the phase individually to verify the integration works.
- Handle failures gracefully. Configure error paths in your workflow so that connector failures do not block the entire process.
- Monitor for disconnections. OAuth tokens can expire or be revoked by the external service. Check connector status weekly.
- Use the Generic REST connector as a last resort. Dedicated connectors handle pagination, rate limiting, and error handling automatically.