# Broken links alert

> Request every URL your account advertises and report the ones that do not come back healthy.

A landing page that stops responding does not stop your ads. Google keeps serving them, you keep
paying for the clicks and the visitor lands on an error. This automation collects every URL your
account points at, requests each one and reports the ones that do not come back healthy.

It is a reporting automation. It never changes your account, so it is safe to activate on a daily
schedule and forget about.

## What it collects

Each run gathers URLs from three places, each of which you can turn off:

- **Ad URLs** are the final URLs and final mobile URLs on your ads.
- **Keyword URLs** are the final URLs set on individual keywords. A keyword URL overrides the ad
  URL, so a broken one is invisible if you only check ads.
- **Sitelink URLs** are the destinations behind your sitelink assets.

Every URL is requested once per run, no matter how many ads or keywords share it. By default only
enabled ads in enabled ad groups in enabled campaigns are collected, because a paused URL cannot
cost you a click.

## How a URL is judged

Flowboost requests the URL and follows redirects, up to five hops, to wherever they end. The status
code at the end of that chain is what gets compared against **Healthy HTTP codes**. Anything not on
that list is reported as broken, along with the campaign, ad group, ad, keyword or sitelink it came
from. **403** and **429** are the exception: they are listed separately and are not counted as broken.

Only `200` is healthy by default. A URL that answers `301` and then `200` is healthy, because the
code recorded is the one at the end of the redirect.

A run also reports when a request failed outright rather than returning a code, for example a domain
that no longer resolves or a server that never answered.

## Settings

**Filters** holds the three URL sources, whether paused entities are included, and **Ignored
domains**.

**Ignored domains** lists hosts that are never requested. Type a domain and press Enter to add it.
Matching includes subdomains, so `example.com` also skips `shop.example.com`. Use it to skip a host
entirely, including one that blocks the checker.

**Criteria** holds **Healthy HTTP codes**, picked from a dropdown. Most accounts never change it.

Selecting a code treats it as a working page. For every code except 403 and 429, leave it
unselected to hear about it. 403 and 429 are already kept out of the broken-link alert.

Three of the options are worth knowing about:

- **Redirect codes** (`301`, `302`, `303`, `307`, `308`) are best left unselected. A redirect that
  ends at a working page already reports as `200`, because the code recorded is the one at the end
  of the chain. A bare `3xx` reaches the report only when the redirect is broken: an empty
  `Location` header, or a chain longer than five hops. Selecting these codes hides exactly those
  failures.
- **`403 Forbidden`** and **`429 Too Many Requests`** usually mean the host blocked the checker
  (bot protection or a rate limit), not that the page is broken. They are not counted as broken and
  do not raise an alert. The run says how many URLs refused the checker. To stop requesting that
  host, add it under **Ignored domains**. Select 403 or 429 in **Healthy HTTP codes** only when
  those answers should count as a working page.
- **`404` is deliberately not offered.** There is no version of a missing page that is healthy.

## When it emails you

You get an alert on the run that finds at least one broken URL. While pages stay broken, Flowboost
does not email about it again for seven days, unless a run finds a URL that was not in the last
email or a URL that now returns a different error. If a run in between finds no broken URLs, the next
one emails you straight away. A host that answers 403 or 429 does not count as
broken and does not send this email.

## Reading a run

Select the status button in the automation's card or row (it shows the latest run status, for example **Finished**). The report shows how many URLs were checked, how many came back
unhealthy, and a row per problem URL with the entity it belongs to so you can find it in Google Ads.
When some URLs answered 403 or 429, the summary also counts how many could not be checked. Those
are not listed with the broken links.

A run also reports whether it finished. Very large accounts can hit the per run URL ceiling, in
which case the run reports what it managed to check rather than failing. If you see that regularly,
turn off a URL source you do not need so the remaining budget goes further.

## Suggested approach

Daily is the right cadence. The cost of a broken landing page is proportional to how long it stays
broken, and a daily run means you hear about it within a day.

Fix the alert before you widen the settings. A first run on an account that has never been checked
often turns up a long tail of old sitelinks pointing at pages that no longer exist. Clear those out,
then leave the automation running to catch the next one.
