Skip to main content
IoTFlows - Return to homepage

Command Palette

Search for a command to run...

View as Markdown

Send alerts to Slack, Teams, or Discord

Post IoTFlows alerts into the channel your team already watches.

An integration is a named destination your organization creates once and reuses on any machine. Each one holds a webhook URL, an address the chat platform gives you that posts a message into one channel when something sends to it. IoTFlows does not sign in to Slack, Teams or Discord: you generate the URL there, paste it here, and IoTFlows posts to it.

Prerequisites. Owner or Administrator, see Roles and permissions. Every other role sees Integrations in the navigation dimmed and unclickable, with the tooltip You must be an Organization Owner or Administrator to access Integrations. You also need permission to create a webhook in the chat platform itself, which is a separate permission held by that platform.

How chat integrations work

Open Integrations in the navigation, at /integrations. The page lists every integration the organization has, sorted by name, each card carrying the platform's icon, the name, who created it and when, and an Enabled or Disabled chip.

One integration is one destination channel, not one machine. Create Production line alerts once, then attach it to the Machine Down rule on all twelve presses. Attaching is per event type and per machine, and it is done in the machine's own notification settings rather than here, see Attach the integration to an event rule.

Send alerts to the channel the shift already reads, not to a new #alerts channel. A dedicated alerts channel is muted within a week. You do not need one integration per machine, and you do not need an integration at all if email and push already reach the right people, see Overview: alerts and integrations.

The Integrations page at full width, headed Integrations over Connect IoTFlows with the tools your team already uses, with a blue round plus button at the top right, a Search integrations field below it, and three integration cards. Each card shows a platform icon, a name, a created-on line with the author's avatar, and a status chip. The third card's chip reads DisabledThe Integrations page. Non-admins see the nav item dimmed and unclickable.

Click the blue + button at the top right to open New Integration. The first step is Choose a platform, one tile per platform under an Alerts heading. Choosing a tile opens the setup step, which carries that platform's instructions inline. The three sections below mirror them so you can read them before you start.

Create a Microsoft Teams integration

Teams has no plain incoming webhook any more. The URL comes from a Power Automate workflow attached to the channel.

  1. In Teams, open the channel where you want messages posted.
  2. Click the channel's ⋯ menu, then choose Workflows.
  3. Select Send webhook alerts to a channel. Use Send webhook alerts to a chat instead if you want messages in a 1:1 or group chat.
  4. Sign in to both Teams and Power Automate when prompted, then click Next.
  5. Confirm the team and channel, then click Add workflow.
  6. Copy the generated workflow URL and paste it into Webhook URL in IoTFlows.

You need to be a team member with permission to create Workflows in the channel. If Workflows is missing from the ⋯ menu, ask a team owner to grant access or to create the workflow and send you the URL.

The New Integration modal on its second step, headed Connect Microsoft Teams, showing a blue Admin permission may be required note, six numbered setup steps ending in copying the generated workflow URL, an Official docs link at the top right of the panel, and the Webhook URL field below itThe in-product Microsoft Teams setup instructions.

Create a Discord integration

  1. In Discord, find the channel that should receive messages.
  2. Hover the channel name and click the Edit Channel gear icon, or right-click the channel and choose Edit Channel.
  3. In the sidebar, choose Integrations.
  4. Click Webhooks, then New Webhook.
  5. Rename the webhook or set an avatar if you want. The channel is already set to this one.
  6. Click Copy Webhook URL and paste it into Webhook URL in IoTFlows.

You need the Manage Webhooks permission in that channel, which is usually granted to admins or to specific roles. If Integrations does not appear in Edit Channel, you do not have it: ask a server admin to add the webhook or to grant your role access.

Discord rate-limits each webhook to 30 messages per minute. A single integration attached to a hundred machines can pass that during a plant-wide outage, and the messages over the limit are dropped by Discord rather than queued.

The New Integration modal on its second step, headed Connect Discord, with six numbered setup steps from Edit Channel through Copy Webhook URL and a closing italic tip reading that the URL should be kept private and that Discord rate-limits to 30 messages per minute per webhookThe Discord setup instructions, including its 30-messages-per-minute webhook limit.

Create a Slack integration

Slack issues incoming webhooks from an app, so you create a small app in your workspace first.

  1. Go to https://api.slack.com/apps and click Create New App, then From scratch.
  2. Name the app, pick your workspace, then click Create App.
  3. In the sidebar, open Incoming Webhooks and toggle Activate Incoming Webhooks to On.
  4. Click Add New Webhook to Workspace.
  5. Select the channel that should receive messages, then click Allow.
  6. Copy the new webhook URL, which starts with https://hooks.slack.com/services/, and paste it into Webhook URL in IoTFlows.

For a private channel, join the channel before step 5. Slack does not list a channel you are not in, so the authorization screen looks as though the channel does not exist.

Your workspace may restrict who can install apps. An approval-required message after Create App means a workspace admin has to approve the request before you can activate the webhook.

The New Integration modal on its second step, headed Connect Slack, with six numbered setup steps from Create New App through copying a URL beginning https://hooks.slack.com/services/, and a closing italic tip reading that private channels must be joined first or Slack will not list them during authorizationThe Slack setup instructions. For a private channel, join it before authorizing.

Platforms

PlatformWebhook created inYou needRate limitGotcha
Microsoft TeamsThe channel's ⋯ menu, under Workflows, which runs on Power AutomatePermission to create Workflows in that channelNone stated in IoTFlowsPick Send webhook alerts to a channel, not the chat variant, unless you want a 1:1
DiscordEdit Channel → Integrations → WebhooksThe Manage Webhooks permission in that channel30 messages per minute, per webhookA missing Integrations item in Edit Channel means you lack the permission
SlackAn app at api.slack.com/apps, under Incoming WebhooksPermission to install apps in the workspace, which many workspaces gate behind admin approvalNone stated in IoTFlowsSlack will not list a private channel unless you joined it first

Every row shares one gotcha: the webhook URL is the only secret involved. Anyone holding it can post into that channel as your integration, so treat it the way you treat a password, and do not paste it into a ticket or a chat message.

Name the integration

The name field sits above the setup instructions, so you can fill it before or after you fetch the URL. Neither field has a default and Create Integration stays disabled until both carry a value.

  1. Type a name in Integration name. The placeholder reads e.g. Production line alerts.
  2. Paste the URL into Webhook URL, whose placeholder reads https://....
  3. Click Create Integration, or press Cmd+Enter on a Mac or Ctrl+Enter elsewhere.

Name the integration after the channel it posts to, not after the machines that use it: #line-2-floor survives a machine being sold, Press 4 alerts does not. The new integration appears at the top of the list and a toast reads Integration created.

A cropped detail of the New Integration modal showing two fields. Callout 1 marks the Integration name field holding Production line alerts, callout 2 marks the Webhook URL field below it holding a redacted https URL behind a link iconThe integration name and its webhook URL. Treat the URL as a secret.

Send a test event

Test before you attach the integration to anything. A wrong URL fails silently at alert time, and nobody notices for a week.

  1. Click the integration's card to expand it.
  2. Click Test integration. The button reads Sending... while it runs.
  3. A toast reads Test event sent. Now check the channel.

Test event sent means IoTFlows reached the URL, not that the message arrived. If the toast succeeds and nothing appears in the channel, the webhook was revoked at the platform end: the Teams workflow was turned off, the Discord webhook was deleted, or the Slack app was uninstalled. Create a new webhook there and paste the new URL in, see Rename or change the URL.

The Integrations page with one card expanded, showing its Name and Webhook URL fields, an Enabled toggle switched on, and an action row carrying Delete Webhook on the left and Test integration and Save changes on the right. A violet highlight marks Test integration, and a Test event sent toast sits over the header aboveSending a test event before you rely on it.

Attach the integration to an event rule

Creating an integration sends nothing on its own. Every message comes from an event rule on a machine that has this integration attached to it.

  1. Open the machine and click the bell in its header, labeled Event Notifications.
  2. Find the row for the event type, such as Machine Down.
  3. Click the cell in the Integrations column, on the right, under the Webhooks sub-label.
  4. Click the integration in the list. Search by name in Search integrations... if the list is long.

The cell writes immediately and confirms with Production line alerts connected, using the integration's name. Click it again to detach, which confirms with Production line alerts disconnected. An attached integration shows as an icon in the cell, up to three, then a +2 chip. Full rule detail is on Set alert rules for a machine.

The right end of the Event Notifications modal, showing the LOG, WORK ORDER and INTEGRATIONS column headers over the Machine Down warning row, whose Integrations cell now carries a Discord icon. The dropdown the cell opened lists three integrations with their platform icons above a Search integrations field, the first checked and marked with a violet highlight, the third tagged Disabled and dimmedAttaching an integration to an event rule, from the machine's notification settings.

A machine with no integrations in the organization shows No integrations yet in that dropdown, with a Create integration link back to this page.

Rename or change the URL

Both fields are editable on the card, and both save together.

  1. Click the card to expand it.
  2. Edit Name, Webhook URL, or both.
  3. Click Save changes. The button stays disabled until something changes.

A toast reads Integration updated. Changing the URL keeps every attachment: the rules pointing at this integration now post to the new channel, with nothing to redo on any machine. That makes an edit the right move when a channel is renamed or a webhook is rotated, and a new integration the wrong one.

Enable, disable or delete

The same expanded card carries an Enabled toggle, described as Allow this integration to receive events.

Disable rather than delete when you want the destination back. A disabled integration stays attached to every rule and stops posting, and it still appears in the per-event dropdown, dimmed and tagged Disabled, so a rule that looks configured sends nothing. Turn it back on and the same rules resume.

Delete when the channel is gone for good. Click Delete Webhook on the expanded card and confirm in Delete Integration, which warns that the action cannot be undone and that the webhook URL stops receiving events immediately. Deleting removes the integration from every rule that used it, and the rules themselves stay switched on with nothing in the Integrations column.

Quiet a noisy channel for a night by disabling the integration, not by deleting it. Deleting loses which machines were attached, and nothing records the list.

Errors

MessageCauseDo this
Failed to create integrationThe integration was not created. Nothing was savedCheck the URL is complete and starts with https://, then retry
Failed to update integrationA name, URL or enabled change did not save. The card keeps your typed valuesRetry, then collapse and reopen the card to see what actually saved
Failed to delete integrationThe integration is still thereRetry. Refresh the page before deciding it failed
Failed to send test eventIoTFlows could not reach the webhook URLConfirm the webhook still exists in the platform and that the URL is pasted whole
Failed to update integrationsAttaching or detaching on a machine's rule failed. The cell revertsRetry. Confirm the integration still exists on this page
Test event sent, but nothing in the channelThe URL is valid in shape and revoked at the platform endCreate a new webhook in Teams, Discord or Slack and paste the new URL in

A generic Something went wrong or An error occurred means the request failed and the change was not saved. Retry it, and if it keeps failing see Troubleshoot alerts you did not receive.

See also