# Troubleshooting

## A generated URL shows another page or a 404

- Is the group **Published**? Draft groups answer no URL.
- Has its data been loaded? Rank serves only rows it has cached, so reload
  the group after creating it and after every change to a source (see
  [Data sources](/docs/rank/page-groups/data-sources.md#loading-and-refreshing-the-data)).
  The **Data** view shows what is cached.
- Is the slug in the data? A URL whose slug is not a row goes on to whatever
  WordPress serves there, usually its 404
  ([How a request is answered](/docs/rank/page-groups/url-patterns.md#how-a-request-is-answered)).
  A row whose slug an earlier row already has is skipped, and **Reload data**
  says how many were.
- Are pretty permalinks on? With **Settings > Permalinks** set to Plain,
  WordPress ignores rewrite rules.
- Was the pattern just changed? The rules are rebuilt on the next request;
  `wp sleek rank flush-rewrites` rebuilds them at once.

## Reload data reports an error

`A data source could not be reloaded:` is followed by the source's own
message, such as an HTTP status or a JSON error. The sources before the
failing one are already reloaded and the failing one keeps its previous rows;
fix the named source and reload again.

`JSON path not found` means a REST API source's **JSON path** does not exist
in the response. `JSON file path is missing or outside the theme` means a
JSON file source's path does not resolve to a file inside the active theme.

## A Google Sheets or Notion source loads nothing

Check the credential first: saving it on the
[Settings](/docs/rank/settings.md) page, or
`wp sleek rank settings set --validate`, verifies it with the provider alone,
which separates a wrong key from a sheet that is empty or not shared. A sheet
must be shared as **Anyone with the link**; a Notion database must be shared
with the integration.

## A reload times out

A request to a URL, a sheet, Notion or an API may take 30 seconds by default.
A large file over a slow connection is the common cause; set a larger
`timeout` in the source's configuration through WP-CLI or REST (see
[Data sources](/docs/rank/page-groups/data-sources.md#configuring-sources-from-wp-cli-or-rest)).
A timed-out reload keeps the previous rows rather than storing part of the
data.

## Rank's routes refuse a request from outside wp-admin

`This endpoint is only accessible from the admin area.` Rank's REST routes
answer only requests sent from the WordPress administration. Use WP-CLI for
scripts and deployments.

## Generated pages are missing from the sitemap

The group must be published with **Include generated pages in sitemaps** on,
and its data must be loaded. Rank uses the first active supported SEO plugin
even when that plugin's sitemap is switched off; see
[Sitemap](/docs/rank/sitemap.md).

## A mapping changes nothing

The row must have the field, and the target must match. Selector mappings
support only `.class`, `#id` and a tag name, and change only the first match;
see [Mappings](/docs/rank/page-groups/mappings.md).
