# Troubleshooting

> Common SEOFix problems by symptom, with the cause and the fix: stuck or failed audits, blocked pages, verification, Search Console, rechecks, API errors and email.

Source: https://seofix.ai/help/troubleshooting · Category: Troubleshooting · Updated: 2026-10-08

Find your symptom below. Each row gives the likely cause and what to do, with a link to the full article. If nothing here matches, email hello@seofix.ai with the audit or site ID.

## Audits

| Symptom | Cause | Fix |
| --- | --- | --- |
| Audit stays **Queued** | Crawlers run several audits at once; yours waits its turn. A queued audit can wait a while when crawlers are busy. | Wait. If its job is lost, SEOFix fails it after 10 minutes with `reaped: never started` and refunds the reserved credits. Then start it again. |
| Audit stays **Running** with no progress | The crawler stopped reporting progress. | After 15 minutes without progress SEOFix fails it with `reaped: stalled`. You pay only for pages crawled. Start a new audit. |
| Audit is **Running** but slow | Polite crawling: 2 requests per second by default, slower when your site slows down. A 10,000-page audit takes about 85 minutes at 2 req/s. | Verify the site to allow up to 10 req/s. See [Verify site ownership](https://seofix.ai/help/verifying-site-ownership.md). |
| Audit **Failed**, reason `reaped: never started` or `reaped: stalled` | See the two rows above. | Run the audit again. Credits for uncrawled pages are refunded automatically. |
| Audit **Failed**, reason starts with `dispatch_failed` | SEOFix could not hand the audit to a crawler. | Try again in a few minutes. The full reservation is refunded. |
| Audit **Failed**, reason starts with `setup_failed` | The audit could not start. | Check that the site is reachable from the public internet, then try again. |
| Audit **Failed**, reason `internal_error` | An error inside the crawler. | Try again. If it repeats, email hello@seofix.ai with the audit ID. |
| Audit **Cancelled** | Someone clicked **Cancel audit**, or an agent called `cancel_audit` / `DELETE /v1/crawls/{id}`. | Start a new one. Only pages already crawled are charged. |

Status values and their meaning: [Audit statuses](https://seofix.ai/help/audit-statuses.md).

## Few or no pages crawled

| Symptom | Cause | Fix |
| --- | --- | --- |
| Many pages reported as `BLOCKED_BY_FIREWALL` | A firewall or bot protection (Cloudflare, Akamai, DataDome, Sucuri) challenged the crawler. SEOFix backs off and stops crawling a section that keeps blocking it. | Verify the site, then let SEOFixBot through: **Connect Cloudflare**, or add the firewall rule by hand and click **Check my setup**. See [Blocked pages](https://seofix.ai/help/blocked-pages.md). |
| 0 or 1 page, `ROBOTS_BLOCKED` notice | Your robots.txt disallows the URL for SEOFixBot or `*`. SEOFix never fetches disallowed pages. | Allow `SEOFixBot` in robots.txt for the paths you want audited. |
| Only the start page | The start URL redirects to another host (for example a different domain). SEOFix follows redirects only within the site and keeps crawling the original host. | Add the site with the final address, the one that answers `200`. |
| Start page shows `FETCH_FAILED` | The host did not answer: DNS does not resolve, the connection failed or timed out. | Check the address and that the site is reachable from outside your network. |
| Pages found but no links followed | Links are read only from `200` responses with `Content-Type: text/html`. A start URL that returns JSON, a PDF, or an HTML page with the wrong content type has no links to follow. | Start from an HTML page and serve it as `text/html`. |
| Address refused with `invalid_url` | Only public `http`/`https` addresses can be audited. Private and local addresses are refused. | Use the public address of the site. |
| Audit stopped at 500 pages | The site is not verified (500-page limit), or you are on the Free plan. | Verify the site, and check your plan limits in [Plans and credits](https://seofix.ai/help/plans-and-credits.md). |

## Site verification

Run a check in the app from the site's page, **Verify ownership**. Agents: `verify_site` (MCP) or `POST /v1/sites/{id}/verify`. The exact values to publish: `get_verification` or `GET /v1/sites/{id}/verification`. A failed check answers `422 verification_failed`.

| Method | Common reasons it fails |
| --- | --- |
| Search Console | Search Console is not connected, or your Google account is not an owner or full user of a property that covers the site. |
| DNS TXT record | The record is not on the registrable domain (for `www.example.com`, it goes on `example.com`), the value is not exactly `seofix-verify=<your token>`, or DNS has not propagated yet. |
| Meta tag | The tag is not in the `<head>` of `https://<your-host>/`, the name is not `seofix-verification`, or the homepage is blocked or redirects elsewhere. |
| File | `https://<your-host>/.well-known/seofix-verify.txt` must answer `200` directly (no redirects), as `text/plain`, at most 1 KB, containing exactly `seofix-verify=<your token>`. |

SEOFix re-checks ownership every day. If the proof disappears, monitoring is paused and, when email alerts are on for the site, every team member gets an email. Verify again to resume. Full guide: [Verify site ownership](https://seofix.ai/help/verifying-site-ownership.md).

## Search Console

| Symptom | Cause | Fix |
| --- | --- | --- |
| Settings → Integrations shows **Access revoked** or **Needs reconnect**; API answers `409 google_revoked` | Access was revoked in your Google account, or the connection was removed. | Connect again with **Continue with Google Search Console**. |
| `429 google_quota_exhausted` | Google's Search Console quota for the property is used up for today. | Try again tomorrow. |
| `429 budget_exhausted` | Your plan's daily URL inspections for the property are used: 300 on Free, 2,000 on Starter and Growth. | Wait for the reset time in the response. |

See [Connect Google Search Console](https://seofix.ai/help/connect-google-search-console.md).

## Rechecks ("Verify fix")

| Error | Status | Cause | Fix |
| --- | --- | --- | --- |
| `site_not_verified` | 409 | Rechecks need a verified site. | Verify the site first. |
| `insufficient_credits` | 402 | A recheck costs 1 credit per URL, paid by the team owner. | Top up credits; see [Plans and credits](https://seofix.ai/help/plans-and-credits.md). |
| `recheck_rate_limited` | 429 | At most 30 rechecks per hour per team. | Wait for the `Retry-After` seconds. |
| `cannot_verify` | 422 | This issue type needs a full audit to confirm (for example link-graph or sitemap issues). | Run a new audit. |
| `invalid_urls` | 422 | The URLs are not on the site's host, or there are more than 200. | Send 1–200 URLs on the site. |

See [Verify a fix](https://seofix.ai/help/verify-fix.md).

## Home page preview

| Error | Cause | Fix |
| --- | --- | --- |
| "Too many previews from your network. Try again later." (`preview_rate_limited`) | At most 3 previews per hour from one network. | Wait, or sign up and use your free audit. |
| "This site was previewed recently. Try again later." (`preview_rate_limited`) | One preview per site per hour. | Wait, or sign up and use your free audit. |
| "Previews are busy right now. Try again in a minute." (`preview_busy`) | Too many previews are running. | Try again in a minute. |
| "Previews only run on the standard ports" | The URL has a port other than 80 or 443. | Remove the port, or sign up and add the site. |

## API and MCP errors

| Status | Code | Cause | Fix |
| --- | --- | --- | --- |
| 401 | `unauthenticated` | Missing, wrong or revoked API key. | Send `Authorization: Bearer <key>`. Create a new key in Settings → Agent & MCP, or run `npx seofix connect`. |
| 403 | `team_access_revoked` | The key's holder is no longer a member of the key's team. | Create a new key for a team you belong to. |
| 403 | `not_team_owner` | Billing calls need the team owner's key. | Use the owner's key, or have the owner buy in Settings. |
| 403 | `plan_limit_sites`, `plan_limit_members`, `plan_limit_monitoring` | The team's plan does not allow it. | Upgrade; see [Plans and credits](https://seofix.ai/help/plans-and-credits.md). |
| 402 | `insufficient_credits` | Balance below the audit's page limit. | Lower `max_pages` or top up. |
| 409 | `site_not_verified` | Monitoring, rechecks or audits above 500 pages need a verified site. | Verify the site. |
| 429 | `rate_limited` | More than 60 requests per minute with one key. | Wait for `Retry-After`, then retry. |

Full list: [Errors and rate limits](https://seofix.ai/help/errors-and-rate-limits.md). MCP setup: [MCP server](https://seofix.ai/help/mcp-server.md).

## Email not arriving

| Email | Check |
| --- | --- |
| Verification email | The link is valid for 24 hours. Resend from Settings → Profile → **Resend email** (3 times per 10 minutes). Check spam. |
| Team invitation | The owner must have a verified email. If sending failed, the owner saw "The invitation email could not be sent" and no invitation was saved; invite again. Links expire after 7 days. |
| Monitoring alerts | Sent only for sites with monitoring and email alerts on, for audits with new errors or a health drop of 5 points or more that finished in the last 3 days. Every team member receives them. |
| "Not enough credits" notice | Sent at most once per site per 24 hours, when a scheduled audit is skipped and email alerts are on. |

## Related

- [Audit statuses](https://seofix.ai/help/audit-statuses.md)
- [Blocked pages](https://seofix.ai/help/blocked-pages.md)
- [Errors and rate limits](https://seofix.ai/help/errors-and-rate-limits.md)
- [FAQ](https://seofix.ai/help/faq.md)
