Microsoft Teams Alerts

Microsoft Teams alerts post a card to a Teams channel of your choosing when a product runs out of stock at a location, and one more card when stock comes back. They are switched off until someone on your account adds a Teams destination, and they are included on the plan you are already on. There is no add-on to buy.

Teams alerts are available on Shared and Dedicated instances alike, exactly as Slack is. What decides is where your instance actually runs, not the plan name. If we are moving your instance between tiers, alerts keep running on the shared fleet until the move and resume on the new server once the move is complete; the daily check may not run on the days the move is in progress.

The short version#

  • Stock-outs only. A card is posted when a product that has a minimum level set at a location drops to zero quantity on hand there. Nothing else is posted. A product that is below its minimum but not at zero, and a lot that is close to expiring, are never posted to Teams. Those stay in the daily stock alert email. If a product has no minimum level at that location, it is never checked, however low it gets.
  • From the same daily check as the email. We take one picture of your stock each day, in your instance's timezone, and cards are posted from that picture. This is not real time: a product that runs out at noon is not posted until the next daily check sees it.
  • One card per product and location, then one "stock returned" card. If the product is still at zero the next day, nothing more is posted. When the next daily check sees stock again, we post a single Stock returned card for it. If the same product runs out again later, that is a new card.
  • At most 50 new stock-outs per destination per day. If more products than that run out on one day, we post 50 and then one extra card saying how many more there are, with the true total.
  • It must be a Workflows webhook created in Teams. The old Office 365 connector webhooks on webhook.office.com were retired by Microsoft in May 2026, and we refuse one with a message that says so. Other hosts are refused too, so the URL has to be the one Teams itself gave you.
  • Anyone on your account can add, change or remove a destination, and can send a test. A test pages nobody: it posts one short card marked [TEST].

Setting it up in Teams#

  1. Open the channel that should receive the alerts.
  2. Choose Workflows.
  3. Add the template "Post to a channel when a webhook request is received", pointing it at that channel.

Teams then shows you a webhook URL. That URL is the whole secret: anyone holding it can post to that channel, so treat it like a password.

The channel is chosen in Teams when the workflow is created, not in Lift. To post to a different channel, create another workflow there and paste its URL.

If you are following an older guide that tells you to add an Incoming Webhook connector, stop. Microsoft retired those connector webhooks (the ones on webhook.office.com) in May 2026. A URL of that shape is refused when you save it, with a message pointing you back here.

Adding the destination#

  1. Go to Integrations in the portal sidebar, then the Destinations tab.
  2. Open Microsoft Teams and add a Teams destination.
  3. Give it a name you will recognise, like "Warehouse channel".
  4. Paste the webhook URL from your Teams workflow.
  5. Save.

The webhook URL is entered once and never shown again. We store it encrypted, and there is no way to read it back, not in the portal and not through support. After saving, the panel shows only the host. To change the URL, open the destination with Edit and paste a new one; to keep it, leave the field blank.

You can have up to 5 Teams destinations on an instance, each with its own webhook, and every stock-out goes to all of them. Teams, Slack and PagerDuty destinations can sit side by side on the same instance; the Destinations page lists them all together.

Anyone on your account can open this panel and change these settings. They can add a destination, change its URL, switch it off, remove it, and send a test. It is a shared team surface, not an owner-only control. Our support team can see your destinations (the name and the host, never the URL) but can never change them.

Sending a test#

Once a destination is saved, its edit dialog has a test button, and the card on the Destinations page has one too. The test posts one short card marked [TEST] to the channel, saying that stock alerts for your instance are connected and that nothing is out of stock. It does not page anyone, because a Teams channel is not an on-call rotation, so there is nothing to put in a maintenance window first.

Tests are rate-limited: one test per destination every 5 minutes. Pressing the button again inside that window sends nothing and tells you so. That is not a sign that the URL is wrong.

What a card looks like#

The headline is "Out of stock: product at location". The card carries the product and its code, the location, the quantity on hand (zero), the minimum level you set, the date of the check that found it, and your instance's name with a link to it. A footer line reads "one message per product and location; a 'stock returned' message follows when the next daily check sees stock."

If the daily cap is reached, the extra card is headed "N more products out of stock at your instance" and names the real numbers, pointing you at the daily email and your instance's reorder report for the full list.

When stock comes back, the card is headed "Stock returned: product at location" and says the out-of-stock alert for it is closed.

When the cards stop#

There is nothing to close in Teams. The only follow-up we ever post is the Stock returned card, when the next daily check sees a quantity above zero for that product at that location. Every other reason we stop tracking a stock-out is silent: nothing is posted, and the channel simply stops hearing about that product.

  • The product is no longer tracked. The minimum level was removed, or the product or location is gone.
  • We could not check for three days running. If your instance has had no usable daily check for three consecutive days, because it was suspended, being rebuilt, or the data could not be read, we stop tracking the stock-out rather than hold it open with nothing behind it.
  • You changed or removed the destination. See the next section.
  • Your instance was suspended or closed.

Replacing the webhook URL or removing the destination#

Replacing the URL posts nothing to the old webhook and nothing to the new one to confirm the change: cards go to the new webhook from the next daily check. Leaving the field blank keeps the URL you already saved.

Removing the destination stops every card to that channel from the next daily check, and nothing is posted to say so. Unlike PagerDuty, nothing is closed anywhere when you change or remove a Teams destination, because there is nothing to close in a channel.

When Teams stops accepting our requests#

If Teams refuses a card, because the workflow was deleted or turned off or the channel was removed, and it happens three times in a row, we switch the destination off and stop sending to it. The panel says so. A Teams outage or a rate limit does not count: those are retried and never switch anything off.

To switch it back on, check that the workflow still exists in Teams, then open the destination with Edit and save its URL again. Pasting the same URL is enough.

What is not included#

  • Below-minimum and nearing-expiry are not posted. They are in the daily stock alert email only. Teams is for the one thing that stops work: a product at zero.
  • No daily or weekly digest to Teams. A weekly summary is still being built, is not available yet, and we give no date for it.
  • Orders and shipments are not posted to Teams. Those are webhook events, delivered to an endpoint you own, not to a channel.
  • Not a webhook event. Stock-outs are not available through the webhooks API; this is a notification channel of its own.
  • Stock alerts is the daily email, which is where below-minimum and expiring stock are reported.
  • Slack alerts covers the same stock-outs in a Slack channel.
  • PagerDuty alerts covers the same stock-outs as incidents on your on-call service.
  • Integrations overview lists what is available today and what is coming.