Skip to content

Other services

Add a feature that sends email with Resend, posts to Discord, messages people from your Telegram bot, or reads and adds records in Airtable or Notion. Your app calls each service through a connection to your own account.

You need an account at the service.

What each service does

Each service offers your app a fixed set of actions:

Service What your app can do
Resend Send an email from an address on a domain that you verified in Resend.
Airtable Read records in a table, optionally only the ones that a view shows or a formula matches, and add records. Each read returns up to 100 records. Your app can’t change or delete records.
Notion Read rows in a database that you shared with your integration, and add rows. Each read returns up to 100 rows. Your app can’t change or delete rows.
Discord Post a message to the channel that your webhook belongs to.
Telegram Send a message from your bot to a person, a group, or a channel.

Connect the service

Each service connects with one value that you paste:

Service What you enter Where to find it
Resend API key, which starts with re_. Create one with sending access on Resend’s API Keys page.
Airtable Personal access token, which starts with pat. Create one on Airtable’s personal access tokens page with the scopes data.records:read, data.records:write, and schema.bases:read, and give it access to each base that your app uses.
Notion Internal integration secret, which starts with ntn_, or secret_ for an older integration. Create an integration on Notion’s integrations page. Then share each database that your app uses with it, from the database’s ⋯ › Connections.
Discord Webhook URL. In Discord, go to Server Settings › Integrations › Webhooks › New Webhook › Copy Webhook URL. Create the webhook on a text channel: Discord refuses a webhook on a forum channel.
Telegram Bot token. Use the token that @BotFather gave you when you created the bot. To see it again, open @BotFather › /mybots › your bot › API Token.

To connect the service:

  1. Open Project Settings › Connections.
  2. Find the service, and turn on its switch.
  3. Paste the value into the dialog, and click Connect. If the dialog first lists the service from your other apps, choose the row that starts with Paste, under Or connect another.

The service checks the value before FlutterFlow saves it, and FlutterFlow never shows it again. To reuse a connection from another app, see Connect a service.

Recipients and access

Your app’s calls run on your account, so each feature sets who receives every email or message, and which base, table, or database it uses. People who use your app can’t send to, or read from, anything that the feature doesn’t allow: at most, they choose from the recipients or tables that you name.

In your request, name the recipient address and sender, the Discord channel (which the webhook sets), the Telegram chat, or the Airtable base and table or the Notion database.

Only people who are signed in to your app can make it send an email, post a message, or add a record or a row.

What to ask

In your request, tell the agent what the feature does, what triggers it, and where it sends or saves. Here’s an example request for each service.

Resend

Example request

“When a signed-in person submits the feedback form, email their message to me at hello@example.com from support@example.com through Resend.”

The sender address must be on a domain that you verified in Resend.

Airtable

Example request

“Show the records from the Vendors table in my Airtable base on a new Vendors screen. When a signed-in person adds a vendor, add a record to that table.”

The token works only with the bases that you gave it access to when you created it.

Notion

Example request

“Show the rows of my Budget goals database in Notion on the Goals screen, and add a row when a signed-in person saves a new goal.”

Your app can’t read or write people, relations, files, or formula properties. A row’s value for one of these comes back empty.

Discord

Example request

“When a signed-in person adds a transaction over 500, post the payee and the amount to my Discord channel.”

Mentions in a message, such as @everyone, show in the channel but don’t notify anyone.

Telegram

Example request

“I just sent my Telegram bot a message. Find that chat, and send me a message there when a monthly budget goes over its limit.”

Your bot can message a person only after they start a chat with it. It can message a group after you add it to the group, and a channel after you make it an administrator there.

To find a chat, the agent reads the chats that messaged or added your bot in the last 24 hours. Before you ask, send your bot a message, or add it to the group or channel.

Agent questions

If the service isn’t connected, the agent asks you to connect it in a card labeled Connect above the message box, with a button such as Connect Resend. Connect the service there, or ask an owner to connect it. See Connect a service.

Review

After the agent finishes, read the turn’s Summary and review its Changes. Check the affected screens in Screens, and try the change in Preview. If the change uses records or sign-in, test it with the thread’s own data in Data.

After you push a backend change, check the result in Backend.

Calls from the preview are real: testing sends real emails and messages, and adds real records and rows. While you test, send to your own address, chat, or a test channel. See How connections work.

Push

After you test the feature, push the changes to your app.

Next steps

Troubleshooting

  • The service refuses your key, token, or webhook URL: see A service refuses your key.
  • Airtable or Notion can’t find a base, table, or database: give your Airtable token access to the base, or share the Notion database with your integration from the database’s ⋯ › Connections.
  • Resend refuses to send: check that the sender address is on a domain that you verified in Resend.
  • Your Telegram bot can’t message someone: the person must start a chat with your bot first. For a group, add the bot to it, and for a channel, make the bot an administrator.
  • The agent can’t find your Telegram chat: send your bot a message, and then ask again. The agent can’t find chats this way while your bot has a webhook set.
  • Discord stops accepting messages: the webhook was deleted or its URL was reset. Create a new webhook in the channel, and connect Discord again with its URL.
  • Your app shows a message about the service: see Messages shown in your app.