Why didn't my alert fire?
A four-step diagnosis for a missing alert or report: is it set up, was it due, did the background job run, and did delivery succeed.
Last updated 2026-09-10
Summary#
An alert has four chances to go missing: it was never set up the way you think, nothing was actually due, the background job did not run, or the delivery failed. Work through them in that order, because each one rules out the ones after it. Most missing alerts are settled in the first two steps, and you can check both yourself in under a minute.
Symptoms#
- A competitor page visibly changed but nothing appeared in the notifications feed.
- A keyword dropped several positions and no rank alert arrived.
- No email arrived from a scheduled report, or the report never ran.
- The Competitor Monitor card reads
Watchtower alert channels/Not configured — changes detected but no alerts sent. - The Rank Alerts screen promises a Slack ping and none arrives.
- A scheduled social post is still marked
Scheduledwell after its time. - The notifications feed reads
All caught up — no new alerts.on an account that has monitoring set up. - An AI visibility drop alert never emailed, even though the chart shows a fall.
- A monitored URL shows a last-scan time from days ago.
Diagnosis#
Step 1 — Is it set up the way you think?#
The most common cause is not a fault. It is that the alert you expected has no delivery channel attached, or a preference is switched off.
Start with the two switches. Dashboard → Account & Team → Account → Preferences carries four notification switches. Two of them silence in-app items, and two gate the only two automation emails that exist.
| Switch | Off means |
|---|---|
| Competitor Alerts | Competitor changes are removed from the bell panel and the Alerts Hub. They are still recorded |
| SEO Score Alerts | Rank drops are removed from the feed, and AI Visibility drop emails stop |
| Email Notifications | Scheduled report emails and AI Visibility drop emails stop |
| Weekly Digest | Nothing. No weekly digest is sent today |
Then check the delivery channel on the item itself. This is where expectations most often outrun the setup.
| You expected | It is delivered when | Where that is configured |
|---|---|---|
| A competitor change in the app | Always, if Competitor Alerts is on | Nothing to configure |
| A competitor change by Slack, webhook or email | A channel is stored on that monitored URL | Not configurable from the dashboard today. The card on the Competitor Monitor screen says so: Not configured — changes detected but no alerts sent |
| A rank drop in the app | Always, if SEO Score Alerts is on | Nothing to configure |
| A rank drop by Slack, webhook or email | A channel is stored on that alert | The Rank Alerts form collects a keyword, a domain and a drop threshold only. It does not collect channels |
| A scheduled report email | The schedule has a recipient address and Email Notifications is on | The Email Report To field when you create the schedule. A schedule with it blank shows in-app only in the schedule list |
| An AI Visibility drop email | Both Email Notifications and SEO Score Alerts are on | The alert row in AI Tracking Settings → Alerts |
Important: Competitor changes and rank drops always land in the notifications feed. If you have been waiting on an email or a Slack message for either of those, stop waiting and check the feed. See Notifications and alerts hub and Every notification you can receive.
Finally, confirm the item exists at all. Open the tool and look:
- Competitor Monitor — is the URL in the Monitored URLs tab?
- Rank Alerts — is the keyword in Tracked Keywords?
- Scheduled Reports — is the schedule in Your Active Schedules?
- Social Dashboard — is the post in Scheduled posts? The card is hidden entirely when the queue is empty.
- AI Tracking Settings → Alerts — is the alert listed, with the threshold you expect?
Step 2 — Was there anything due, and anything to report?#
An alert that correctly decided nothing had happened looks identical to one that never ran.
The first check never alerts. Every monitor stores a baseline before it can compare anything.
| Automation | Why the first pass is silent |
|---|---|
| Competitor Monitor | The first check captures the page as it is. There is no earlier snapshot to compare it against |
| Rank Alerts | The first check records the current position. A drop needs a previous position |
| AI visibility drop alert | Needs a previous measured value |
The threshold may not have been crossed.
| Automation | Fires only when |
|---|---|
| Rank Alerts | The position got worse by at least the alert's drop threshold, 5 by default, or the keyword was in the top 10 and no longer ranks |
| AI visibility alert | The visibility percentage fell by at least the threshold, 15 points by default, since the previous measurement |
| Competitor Monitor, external channels | The change was graded at or above the severity gate on that URL |
A keyword that moved from #4 to #7 with a threshold of 5 is working correctly and will not alert.
The interval may not have elapsed. Check the elapsed time against the real cadence, which is on Automation limits and frequency. The short version: monitored URLs every 6 hours, rank alerts every 24 hours, AI visibility about every 22 hours, scheduled reports weekly, social posts at their set time.
The item may not be in the current rotation. AI visibility measures the five most recently used brands per pass. Track more than five and the least recently used stop being measured until you run a tool on them again.
Step 3 — Did the background job run?#
Every automation records when it last touched an item, and the app shows those timestamps. This is the fastest evidence that the machinery is alive.
| Where to look | What it shows | Healthy looks like |
|---|---|---|
| Competitor Monitor, the LAST SCAN figure | Time since the most recent check across your URLs | Under 6 hours |
| Competitor Monitor, Monitored URLs tab | Each URL's own last check | Each under its interval |
| Rank Alerts, Tracked Keywords | Last check per keyword | Under 24 hours |
| Scheduled Reports, the Next run column | When each schedule is next due | A time in the future |
| Social Dashboard, Scheduled posts | Badges reading Scheduled, Sending…, Posted, Failed | Anything past its time is no longer Scheduled |
| AI visibility trend chart | One point per measured day | A point for most recent days |
If one item is stale and the rest are current, the scheduler is fine and the problem is with that item. A URL that returns an error is still stamped as checked so it does not block the queue, so a URL that consistently reports no changes may be failing to load. Open it in a browser: a page behind a login, a bot challenge or geo-blocking cannot be read.
If everything is stale at once, the background scheduler is not reaching the platform. Nothing you can change on your side will fix that, and nothing you set up will be lost — the jobs pick up all outstanding work as soon as they run again. Contact support with a screenshot of the stale timestamps. See Contacting support.
Note: Volume is not usually the cause. Each pass takes the longest-waiting items first, and the scheduler runs several times an hour, so a large set of monitored URLs is processed in rotation rather than dropped.
Step 4 — Did delivery succeed?#
Only two automation emails reach a customer today: scheduled report ready and AI Visibility drop. If you are diagnosing a missing email that is not one of those two, go back to Step 1 — it is not a delivery problem.
| Check | Detail |
|---|---|
| The recipient address | Scheduled report emails go to the address on the schedule, not to your account address. A typo sends the email somewhere real and silent |
| Spam and quarantine | Automation email arrives from a metricvaultai.com sender. Corporate filters commonly hold it the first time |
| Both switches | The AI Visibility drop email needs Email Notifications and SEO Score Alerts on at once |
| The 24-hour cooldown | An AI Visibility alert emails at most once a day per alert. A second fall the same day is not emailed |
| Platform email configuration | If email sending is not configured on the platform, alerts are skipped silently rather than reported as errors. Everything else, including the in-app feed, keeps working |
For a scheduled report specifically, see My scheduled report never arrived.
For a scheduled social post that reads Failed, the queue does not show which channel refused it. Press Publish on the same text to get the per-channel result immediately, which names the real cause, usually an expired connection. See Scheduled social posts.
Resolution#
Work down the list and stop when the answer appears.
- Open the notifications feed first.
Track & Report → Notifications & Alerts Hub, filter set to All. If the alert is there, this was never a detection problem, only a delivery expectation. See Notifications and alerts hub. - Turn the two feed switches back on.
Account → Preferences. Competitor Alerts and SEO Score Alerts each silence a whole class of item. - Confirm the item exists in its own tool, and that its threshold and severity gate are what you expected.
- Give it one full cycle. Six hours for a monitored URL, 24 hours for a keyword, about a day for AI visibility. New items need two cycles, because the first stores a baseline.
- Check the last-run timestamps listed in Step 3. One stale item points at that item; everything stale points at the scheduler.
- Test the source page. Open the monitored URL in a private browser window. If it needs a login or shows a challenge page, it cannot be monitored.
- Add a recipient address to a schedule that only shows
in-app only, and confirm Email Notifications is on. - Reconnect a social channel whose posts fail, then use Publish once to confirm it works before scheduling more.
- Re-run by hand to prove the pipeline. Competitor Monitor and Rank Alerts both have an immediate check; running one confirms detection independently of the schedule.
- Contact support with the tool name, the item, the timestamps you read in Step 3 and what you expected. See Contacting support.
Warning: Do not delete and re-create a monitored URL or a rank alert to "reset" it. Re-creating starts the baseline again, which guarantees another silent first cycle and discards the history that makes the trend readable.
Quick reference by symptom#
| Symptom | Most likely cause | Where to confirm |
|---|---|---|
| Competitor change visible on the page, nothing in the feed | Fewer than 6 hours since the last check, or this was the first check | Monitored URLs tab, last-check column |
| Competitor change in the feed, no email or Slack message | No channel is stored on the URL, and the dashboard has no form for one | The Not configured card on the Competitor Monitor screen |
| Rank dropped, no alert | The drop was smaller than the threshold | The alert's drop threshold |
| Rank drop in the feed, no Slack ping | Rank alerts created in the app store no channels | Every notification you can receive |
| Scheduled report never ran | It was created less than a week ago, or the account is on Free | The Next run column; Free cannot create schedules |
| Scheduled report ready, no email | No recipient address on the schedule, or Email Notifications is off | The schedule row reads in-app only |
| AI visibility fell, no email | Below threshold, within the 24-hour cooldown, or one of the two switches is off | The alert row and Account preferences |
| AI visibility not measured for days | The brand is outside the five most recently used | Run the tool on that brand |
Social post still Scheduled past its time | Under about fifteen minutes is normal; longer is not | The queue badge |
Social post reads Failed | Every selected channel refused it, usually an expired connection | Press Publish on the same text |
Feed reads All caught up — no alerts here. | A filter pill is active | Select All |
| Nothing has run at all, across every tool | The background scheduler is not reaching the platform | Contact support |
Prevention#
- Decide where each alert should land before you create it. Competitor changes and rank drops land in the app. Scheduled reports can email a named recipient. AI visibility drops email you. Anything else is not a delivery path that exists today.
- Put a recipient address on every schedule you actually want emailed. A blank field is the single most common reason a report "never arrived".
- Leave the notification switches on unless you are deliberately quieting something, and note what you switched off. A switch flipped six months ago is invisible when you are debugging today.
- Set thresholds to the movement you care about, not the smallest movement you can detect. A threshold of 3 positions on a volatile keyword produces daily noise, and noise gets muted, and muted alerts get missed.
- Keep the tracked brand set at five or fewer if you want each one measured every day.
- Check the connected channels on the Social Dashboard before scheduling a batch. An expired connection only announces itself after a post has already failed.
- Read the last-scan figures occasionally. They are the cheapest health check in the product, and they make a real outage obvious within a day rather than a fortnight.
- Do not look for the Webhooks or No-Code Automation screens. Neither is built and neither is in the menu any more. For webhooks that do fire today, see Webhooks.
See also
Was this article helpful?
Thanks — feedback noted for the docs team.