Troubleshooting
Before working through the list, narrow the problem down. Almost every report falls into one of two halves: either the rules were never created, which is a sync problem, or the rules exist but the links do not render, which is a display problem.
The activity log tells you which half you are in. If the rule is listed there, the sync worked and the issue is downstream. If it is not listed, nothing downstream will help.
Links do not appear on the frontend
The rules exist in the log but pages show nothing. Check these four, in this order.
Cache. This is the answer most of the time. Links are injected through the the_content filter, and a cached page never runs the filter. Clear the plugin's own transients with Delete Transient Cache on the Sync tab, then clear your cache plugin (WP Super Cache, LiteSpeed, W3 Total Cache) and your CDN. The plugin's button only clears its own transients; it cannot touch another plugin's cache.
Post type selection. If Settings has only Pages selected and you are looking at a blog post, the post is not processed. Verify the selection matches where you are looking.
Exclusions. Check all four levels: is the keyword in the exclusion list, is the page excluded per-page, is the destination URL blacklisted, and is the containing tag in Exclude HTML Tags?
Self-linking. The plugin never links a page to itself. If the only matching destination is the page you are on, no link is created, and that is correct behaviour rather than a fault.
FETCH finds no items
Nothing to sync, so nothing downstream can work.
A supported SEO plugin must be active: Yoast SEO, Rank Math, All in One SEO or SEOPress. Auto Focus Keyword checks for one at runtime and has nowhere to write without it.
Then confirm there is published content in the post types you selected. On Automatic Internal Links, FETCH looks for content that has focus keywords, so a site where the keyword field is still empty everywhere returns nothing by design. That is the case covered by no focus keyword set.
Focus keywords are not appearing in the SEO plugin
Verify the SEO plugin is installed and activated, not merely present. If none of the four supported plugins is detected, there is no field to write into.
If you run more than one SEO plugin, you may be writing to one and reading the other. Settle on a single source of truth, as compatibility explains.
SYNC gets stuck
SYNC runs in batches over AJAX. If one batch fails, the progress bar freezes.
Do not close the page. Click STOP, then SYNC NOW again; the process resumes from where it stopped rather than starting over. If it freezes repeatedly at around the same point, the cause is usually server-side: check PHP memory limit and max execution time with your host.
SYNC is slow on a large site
On sites above roughly 1,000 items, a full sync takes minutes rather than seconds. That is expected, and batching is deliberate so the run stays inside typical PHP limits.
Pro adds background processing on a cron schedule, with configurable batch size and frequency, so the work happens without you holding a browser tab open. Smaller batches on a longer interval is the setting to reach for on constrained shared hosting.
Nothing happens on page builder content
Elementor, Divi, WPBakery and similar builders may store content outside post_content and emit it without passing through the_content. When that happens the plugin never sees the text, so no link can be created.
Confirm it quickly: create a plain Gutenberg or Classic post containing the same keyword and check whether links appear there. If they do, the builder is the variable, not the plugin. See themes, page builders and the render path.
The same applies to text stored in ACF fields, which is in postmeta and is never processed.
Links are created inside headings
By default h1, h2 and h3 are excluded. If links are appearing inside headings, the Exclude HTML Tags setting has most likely been cleared or overwritten. Restore the default values, one tag per line.
Add any other container you want protected, such as a blockquote or a call-to-action wrapper, to the same field.
Too many links on a page
Lower Max Links. The default is 3, and 2 to 3 is usually right even on long pages.
If the count still looks high, two sources are probably adding up: SYNC-generated rules and manual links for the same keyword. Check whether Global Override is enabled, because it applies one Max Links value to everything and will replace the per-link limits you set individually.
Links cross between languages
From version 2.0.8, the plugin filters these links out at render time when it can determine the language of both pages, which it does through the filter WPML provides. So the first thing to check is whether that filter is available on your stack.
If you are on WPML and still see the link, the check is fail-open: it allows a link whenever either side's language cannot be resolved. Confirm the destination is a real post the language plugin knows about, rather than a custom URL that resolves to nothing.
If you are on Polylang, the behaviour has not been tested and may differ.
If no language plugin supplies that signal, the check cannot run and the older behaviour applies. Delete the offending rules from the activity log, then add the shared words to the keyword exclusion list so they stop recurring.
The verification procedure and the full set of controls are in multilingual sites.
If none of this applies
Two facts worth remembering while you investigate. Nothing is written into your content, so no amount of experimenting damages your posts, and deactivating the plugin removes every generated link immediately. That makes it safe to disable, confirm the behaviour disappears, and re-enable.
Free users can ask on the WordPress.org support forums; Pro licences include direct support. See contact for what to include in a report.
Read next
- Requirements and compatibility — the known limitations
- Running sync — the log, the cache, the background engine
- Controlling what gets linked — the four levels of exclusion
- FAQ — the short answers