GuidesIntegrations

Integrations

Connect third-party services like HubSpot, Slack, and Google Sheets to your Envelope apps. Integrations let your apps read and write data from external platforms using OAuth, with no API keys or custom auth code needed.

Integrations connect in one of two ways. Some, like Google Sheets, are connected once by you as the app owner; your users never see a Google sign-in or know a spreadsheet exists. Others, like HubSpot and Slack, are connected by each user of the app with their own account.

Getting started

  1. Enable Integrations: In the builder, go to the Configure tab and toggle on Integrations.
  2. Connect a service: Click Connect next to the integration you want.
  3. Authorize: A popup will open asking you to sign in and grant access to your account.
  4. Build: Use the integration methods in your app code via envelope.integrations.<provider>.<method>().

The Integrations panel in the Configure tab, listing HubSpot, Slack, and Google Sheets with Connect buttons

Available integrations

CRM platform for managing contacts, companies, deals, and pipelines.

What you can do:

  • List, create, update, and delete contacts
  • Manage companies and deals
  • View deal pipelines and stages
  • Search across contacts, companies, and deals

Setup:

  1. Toggle on Integrations in the Configure tab.
  2. Click "Connect" next to HubSpot.
  3. Sign in to your HubSpot account and authorize Envelope.

Using integrations in your app

When you describe your app to the AI builder, mention which integrations you want to use. The AI will generate the connection screen and API calls automatically.

Example prompts:

  • "Build a CRM dashboard that lists my HubSpot contacts and lets me create new ones"
  • "Create a team notification app that sends Slack messages when I submit a form"
  • "Make a mood tracker that saves each entry to Google Sheets"

Workflows

Integrations are also available as workflow nodes. You can automate actions like:

  • Create a HubSpot contact when a form is submitted
  • Send a Slack notification when a workflow completes
  • Search HubSpot deals and send results to Slack

In the workflow editor, drag an Integration node from the palette and configure the provider, method, and parameters.

Signed webhooks

When a workflow uses a webhook trigger and contains an Integration node (e.g., HubSpot or Slack), Envelope requires the incoming request to be HMAC-signed. This prevents anyone who discovers the webhook URL from impersonating the app owner against third-party services.

How it works:

  1. When you create a webhook workflow with an Integration node, Envelope generates a signing secret (visible in the workflow editor)
  2. The sender must include an X-Envelope-Signature header with every request
  3. Header format: t=<unix_timestamp>,v1=<hex_signature>
  4. Signature: HMAC-SHA256(secret, "<timestamp>.<request_body>")
  5. Requests older than 5 minutes are rejected

Example (Node.js):

const crypto = require('crypto');

const secret = 'your-webhook-secret';
const timestamp = Math.floor(Date.now() / 1000);
const body = JSON.stringify({ email: 'jane@example.com' });
const signature = crypto
  .createHmac('sha256', secret)
  .update(`${timestamp}.${body}`)
  .digest('hex');

fetch('https://envelope.build/api/workflow/webhook/your-slug', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-Envelope-Signature': `t=${timestamp},v1=${signature}`,
  },
  body,
});

Note: Workflows that don't use Integration nodes (pure data transforms, AI prompts, etc.) do not require signing; unsigned POST requests continue to work.


Troubleshooting

"Integrations is not enabled for this app"

Cause: The Integrations module isn't toggled on.

Fix: Go to the Configure tab in the builder and toggle on Integrations.

HubSpot contact is created but fields are empty

Cause: The properties aren't being passed correctly in the API call.

Fix: Make sure the createContact call uses this exact format:

envelope.integrations.hubspot.createContact({
  data: {
    properties: {
      email: "jane@example.com",
      firstname: "Jane",
      lastname: "Doe",
      company: "Acme Corp"
    }
  }
})
Slack message not appearing in the channel

Cause: The Envelope bot hasn't been invited to the channel.

Fix: In Slack, go to the channel and type:

/invite @Envelope

Or click the channel name → Integrations tab → Add an App → select your Envelope app.

"redirect_uri did not match any configured URIs"

Cause: The OAuth callback URL doesn't match what's registered with the provider.

Fix: This is a platform configuration issue. Contact support if you see this error.

"not_connected" error when calling an integration method

Cause: The user hasn't connected their account for this integration yet.

Fix: Your app should check connection status on load and show a "Connect" button:

const connected = await envelope.integrations.hubspot.isConnected();
if (!connected) {
  // Show a connect button that calls:
  await envelope.integrations.hubspot.connect();
}
Connection popup opens but nothing happens after authorizing

Cause: The popup may have been blocked by the browser, or the callback URL isn't configured correctly.

Fix:

  1. Make sure your browser allows popups from the Envelope domain
  2. Try again; the popup should redirect back automatically after authorization
Integration calls timing out

Cause: The external API may be slow or rate-limited.

Fix: Integration calls have a 30-second timeout. If you're making many calls in sequence, add small delays between them or use pagination with smaller page sizes.

Next steps