Integrations
Connect the tools your team already uses, in a click.
Post to Slack, add a contact to HubSpot, append a row to Google Sheets or create a Linear issue. Connect a service once, with OAuth or an API key, and your workflows and server functions can use it. Credentials are kept in a vault and never reach the browser.
- Slacksend_channel_message connected
- HubSpotcreate-or-update-contact connected
- Google Sheetsinsert_row connected
- Twiliosend_sms step skipped
Credentials live in a vault on the server.
- About 200 services
- Chat, CRM, sheets, payments, messaging
- OAuth or API key
- Connected once per project
- Vaulted credentials
- Never sent to the browser
- Skipped, not broken
- Steps wait until you connect
How integrations work
Open Backend, Integrations, find the service and click Connect, with OAuth or an API key.
Add an integration step to a workflow with the call and its props, using {{field}} placeholders from the row. Slack, Twilio, Telegram and WhatsApp have a short form.
Apply and trigger it. The run log shows what the service answered. From code, use ctx.integrations.call.
{ "id": "slack-new-member",
"on": { "entity": "member", "event": "created" },
"do": [{ "action": "integration", "integration": "slack",
"call": "send_channel_message",
"props": { "channel": "C0123456789",
"text": "New sign-up: {{name}} ({{email}})" } }] }
// from a server function
await ctx.integrations.call("hubspot",
{ action: "create-or-update-contact", email: String(row.email) });
One catalogue, every workflow
Team chat
Slack, Microsoft Teams, Discord and Google Chat for alerts when something happens in your app.
CRM and sales
HubSpot, Salesforce and others kept in step with your app's records.
Sheets and docs
Google Sheets, Airtable and Notion for teams that live in spreadsheets.
Messages
Email, SMS, WhatsApp and Telegram from the same workflow that reacted to the change.
Payments and commerce
Stripe, Razorpay, Shopify and WooCommerce actions alongside app.pay.
Anything else
For a service outside the catalogue, a server function calls its API with a secret from the vault.
Post every new sign-up to Slack
The Slack tutorial connects Slack and posts every new member to a channel with one workflow step. The integrations catalogue lists every service and the actions a contract may use, with their props.
Works with
Integrations: common questions
How many integrations are there?
About 200, including Slack, Stripe, HubSpot, Google Sheets, Notion, Airtable, Twilio, WhatsApp and Telegram. The integrations catalogue lists each one and its actions.
Where are integration credentials stored?
In a credential vault on the server. They are used from workflows and server functions and never reach the browser.
What happens before I connect a service?
Your app still works. The integration step is skipped and the run log says so, until the owner connects the service.
Can I use a service that isn't in the catalogue?
Yes. Write a server function that calls its API with ctx.http.fetch and a key read from ctx.secrets.