Tab Automation can send a Slack, Discord, or ntfy message when **Send Alert** runs. Put that step after **Wait Until** if the page may change later, or in **If / Else** if you only need a check at that moment.

Chrome must stay open. This is not a monitor that keeps checking after you quit Chrome. Chrome sends the message from this computer. Nothing relays through Tab Automation servers.

## When a webhook should fire

A webhook fires only when the runner reaches a moment that has **Webhook** on and a destination selected. The check and the message are separate steps.

- Use [Wait / Delay](/steps/wait-delay) **Until** when the loaded page may change later and the automation should poll until it does.
- Use [If / Else](/steps/if-else) when the next steps depend on the page **right now**, at that step.
- Use [Send Alert](/steps/send-alert) only where a message should go out.

If / Else does not keep watching. Wait Until polls every 250 milliseconds until the condition succeeds or the timeout ends. A timeout records a warning and the graph continues, so **Send Alert** after Until also runs after a timeout unless you turn on **Pause when this wait succeeds**.

The [auto refresh vs page monitor](/blog/auto-refresh-vs-page-monitor) guide is the longer split between a timer, a one-time check, and Until.

## Add a destination in Settings

1. Open the Tab Automation side panel.
2. Open **Settings** from the masthead gear.
3. Under **Webhooks**, click **Add a destination**.
4. Give it a name and paste an HTTPS URL. HTTP is allowed only on this computer (`localhost`, `127.0.0.1`, or `::1`).
5. Save. Destinations are a shared library on this computer.

Create the URL in the service you already use:

- Slack [incoming webhooks](https://api.slack.com/messaging/webhooks)
- Discord [webhooks](https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks)
- [ntfy](https://docs.ntfy.sh/) topic URLs on `ntfy.sh`

Tab Automation does not create a Slack app, sign you in, or send email or SMS. There is no Microsoft Teams adapter. Any other HTTPS URL is fine if that host accepts a JSON body from Chrome.

## Turn Webhook on at the moment

1. Add **Send Alert** where the run should notify — in If **Then** or **Else**, or after Wait Until.
2. Turn **Webhook** on. Add Step leaves desktop notification and sound on; you can leave those on or turn one off.
3. Pick one or more destinations. Optionally override the message on this step.
4. Click **Test** on **Webhook** only. That pill sends to the destinations on this step and does not use Chrome's OS notification permission.

[Repeat](/steps/repeat) **Each cycle** and **When it stops** can also send a webhook. Both stay off until you enable them. Each moment picks its own destinations.

Use `{{name}}` in the message to insert a [Values](/steps/values) name saved earlier in the graph. Settings **Test** interpolates against an empty map and warns when the template contains `{{name}}`.

Nothing posts until a destination is selected **and** Webhook is on for that moment.

## What the destination receives

Slack, Discord, and ntfy show the resolved message, the current page URL, and the event (notify, cycle, stop, or test). Chrome sends that from this computer. Delivery waits up to five seconds. A failed or timed-out send does not stop the automation.

Any other HTTPS URL receives the same facts as a JSON body. A self-hosted ntfy server is treated that way too.

Open [Activity](/steps/activity) for a redacted delivery line. The URL and secrets are not written in full.

## Desktop notification vs webhook

Desktop **Test** asks the operating system to show a Chrome banner. If that test is silent, follow [Chrome notifications not working](/blog/chrome-notifications-not-working). Allow Google Chrome in the OS. Website notification settings for a page are a different switch.

Webhook **Test** is a separate check. It does not use that OS permission.

## Limits to know before you start

- **Chrome must stay open.** Alarms do not fire after you quit Chrome. Running automations are rescheduled when Chrome starts again. There is no cloud check while the browser is closed.
- **Wait Until only polls during that step.** It is not a background watcher after the run ends.
- **There is no email or SMS.** Destinations are HTTPS webhooks you saved in Settings.
- **There is no clock-time start.** Repeat waits between cycles; it does not start at 9:00.
- **Some tabs cannot be automated.** Chrome UI pages, extension pages, and the Chrome Web Store are excluded.
- **Browser support is limited.** Desktop Chrome, Edge, Brave, and Opera can install the Chrome Web Store listing. Firefox, Safari, and mobile are not supported.

Automations and destinations stay in `chrome.storage.local` on this computer. Read the [privacy policy](/privacy) for permissions and data handling.
