Connections

Connections store credentials for external services. Configure once, use everywhere in your automations.


How Connections Work

Flow uses OpenAPI-based connectors. Each connector is generated from an OpenAPI specification, defining available operations, authentication, and data schemas.

Connector (from OpenAPI)      Connection (Your Instance)
┌─────────────────────────┐   ┌────────────────────────┐
│ Slack Connector         │   │ My Slack Connection    │
│ - Auth: OAuth 2.0       │ → │ - Token: xoxb-123...   │
│ - Operations: 50+       │   │ - Workspace: Acme Inc  │
│ - Category: COLLABORATION│   └────────────────────────┘
└─────────────────────────┘

A connector defines how to communicate with an app. A connection is your authenticated instance with credentials stored securely.


Connector Categories

Connectors are organized by category:

Category Examples
API Generic REST/HTTP APIs
DATABASE PostgreSQL, MySQL, SQL Server, MongoDB
STORAGE AWS S3, Azure Blob, Google Cloud Storage
MESSAGING SQS, SNS, Kafka, RabbitMQ
AI_PROVIDER OpenAI, Anthropic, Azure OpenAI, Bedrock
COLLABORATION Slack, Microsoft Teams, Discord
IDENTITY Auth0, Okta, Azure AD
CRM Salesforce, HubSpot, Pipedrive
OBSERVABILITY Datadog, New Relic, Prometheus
HUMAN_INTERACTION Twilio, SendGrid
SPEECH Twilio Voice, Azure Speech

Creating a Connection

Step 1: Navigate to Connections

  1. Go to Connections in the sidebar
  2. Click + New Connection

Step 2: Choose a Connector

Browse connectors by category or search by name. Each connector shows:

  • Available operations
  • Required authentication method
  • Category

Step 3: Authenticate

Configure authentication based on the connector type:

Method Instructions
OAuth 2.0 Click "Connect" and authorize in popup
API Key Paste your API key (stored encrypted)
Basic Auth Enter username and password
Bearer Token Paste your bearer token
AWS Signature Enter Access Key ID and Secret
Certificate Upload client certificate

Step 4: Test and Save

  1. Click Test Connection to verify connectivity
  2. Give your connection a descriptive name
  3. Click Save

Database Connections

For direct database access, create a DATABASE category connection:

Field Example
Host db.example.com
Port 5432
Database myapp_production
Username readonly_user
Password ******** (stored encrypted)
SSL Mode require

Database connections enable the DATABASE step type in automations for direct SQL queries.


Using Connections in Automations

CONNECTOR Step

Use the CONNECTOR step type to execute connector operations:

  1. Add a CONNECTOR step to your automation
  2. Select a connector (e.g., Slack)
  3. Choose a connection instance
  4. Select an operation (e.g., "Send Message")
  5. Configure parameters using expressions

Example: Send Slack Message

Step: CONNECTOR
  Connector: slack
  Connection: my-slack-connection
  Operation: postMessage
  Parameters:
    channel: "#general"
    text: "Order received from {{ input.customer_name }}"

DATABASE Step

Use the DATABASE step type for SQL queries:

Step: DATABASE
  Connection: production-db
  Operation: QUERY
  SQL: |
    SELECT * FROM orders 
    WHERE customer_id = {{ input.customer_id }}

Managing Connections

Connection Status

Status Meaning
Connected Working correctly
Expiring OAuth token expires soon
Disconnected Needs re-authentication
Error Configuration issue

Re-authenticate

If a connection becomes disconnected:

  1. Open the connection details
  2. Click Reconnect
  3. Complete the authentication flow

Delete a Connection

  1. Open the connection
  2. Click Delete
  3. Confirm deletion

Custom Connectors

Create connectors for any REST API using OpenAPI specifications.

Create from OpenAPI

  1. Go to Setup → Connectors
  2. Click + New Connector
  3. Upload or paste your OpenAPI spec (YAML or JSON)
  4. Configure authentication settings
  5. Flow generates operations from the spec

OpenAPI Requirements

Your OpenAPI spec should include:

openapi: 3.0.0
info:
  title: My API
  version: 1.0.0
servers:
  - url: https://api.example.com/v1
paths:
  /users:
    get:
      operationId: listUsers
      summary: List all users
      responses:
        '200':
          description: Success

Operations are extracted from paths with operationId values.


Secrets vs Connections

Feature Secrets Connections
Purpose Store single values Store complete auth configs
Usage {{ secrets.name }} Select in CONNECTOR step
Operations N/A Multiple operations available
Testing N/A Built-in test connection

Use Connections for APIs with multiple operations. Use Secrets for standalone tokens and keys used in expressions.


Best Practices


Troubleshooting

Connection Failed

  1. Check credentials — Are they correct and not expired?
  2. Check permissions — Does the token have required scopes?
  3. Check network — Can Flow reach the endpoint?
  4. Check rate limits — Did you hit API rate limits?
  5. Check IP allowlists — Is Flow's IP allowed?

OAuth Token Expired

OAuth tokens automatically refresh. If refresh fails:

  1. Open the connection
  2. Click Reconnect
  3. Re-authorize in the popup
  4. New token is stored

Database Connection Issues

  1. Verify host/port accessibility — Check firewall rules
  2. Test credentials directly — Use a database client
  3. Check SSL settings — Ensure SSL mode matches server config
  4. Verify database/schema exists — Check the database name