Systematically validates all URLs across ads, keywords, and sitelinks by making HTTP requests and checking for error responses. Uses labels to track progress across runs, enabling large accounts to be checked in chunks without re-testing already-verified URLs.
Link Checker fetches the final and mobile URLs of your ads, keywords, and campaign sitelinks and flags any that return an unexpected HTTP code (or whose page contains a failure string). Broken URLs are logged, emailed, and appended to an auto-created Google Sheet. A tracking label records which entities have been checked, so large accounts complete across multiple runs; once a full pass finishes the label is cleared and the next run starts fresh. It only adds/removes its own label — it never changes your ads.
| Variable | Default |
|---|---|
CHECK_ADS | true |
CHECK_KEYWORDS | true |
CHECK_SITELINKS | true |
INCLUDE_PAUSED | false |
VALID_CODES | "200" |
FAILURE_STRINGS | "" |
EMAIL_ADDRESS | "" |
SPREADSHEET_URL | "" |
LABEL_NAME | "LinkChecker_Checked" |
THROTTLE_SECONDS | 0 |
TIMEOUT_BUFFER_SECONDS | 120 |
BROKEN [404] https://example.com/old-page (Ad: Summer Sale) BROKEN [failure string: Out of stock] https://example.com/sku/123 (Keyword: running shoes) === Link Checker: 2 broken URL(s) this run === Emailed report to you@example.com All URLs checked — tracking label cleared; next run starts a fresh cycle.
The only write to your account is its own tracking label; URLs are never modified. ValueTrack parameters ({ifmobile:...}, {keyword}, etc.) are stripped before fetching. The failure-string check downloads each page, so it is slower — leave FAILURE_STRINGS blank to check HTTP codes only. Run the script (not preview) at least once so it can create the label.