Sohay → KB Settings → Dashboard shows a count against each sync state. Most of them are transient. One is not.
| State | Meaning | Do anything? |
|---|---|---|
| Synced | Indexed and searchable | No |
| Syncing | In progress right now | No — wait |
| Pending | Queued, not processed yet | No — wait |
| Outdated | Changed since last indexed | Usually no — a sync is queued |
| Error | The last attempt failed | Yes |
Pending or Outdated that will not clear
Both should resolve within a minute or two. If they sit there:
Check background tasks are running. Syncs are queued and run out of band, so they depend on your site processing scheduled work. On a site with very little traffic, or one where WP-Cron has been disabled without a replacement system cron, queued jobs simply never run.
That is the usual cause of a queue that never drains, and it affects far more than Sohay — anything scheduled on the site will be stuck too.
Check auto-sync is on. If it was switched off under KB Settings, edits queue nothing. Turn it back on, then press Sync All Articles once to catch up.
Error
An article in Error state will not retry itself. Common causes, roughly in order:
No OpenAI key. Indexing runs on OpenAI whichever provider answers your chats. On a Gemini site with no OpenAI key saved, every sync fails. This is the most common cause by some distance.
The key is rejected. Revoked, mistyped, or carrying whitespace from a copy-paste. Sohay → Diagnostics will show the provider’s own error.
No credit on the provider account. A key that authenticates fine still fails every request if the account has no balance.
The article is empty after processing. Markup, scripts, embeds, and media are stripped before indexing. An article that is entirely a screenshot or a video has no text to index. The fix is to add real text — see Article length and how content is processed.
A transient provider outage. If Diagnostics shows a burst of failures at one timestamp and nothing since, retrying is all that is needed.
Retrying
Once you have fixed the cause, press Sync All Articles on the Dashboard. Articles already synced are cheap to reconcile, so a full pass is the simple way to clear a mixed state.
If deleting an article left something behind
Sohay reconciles orphaned remote data on a daily job, so an article deleted while auto-sync was off gets cleaned up without you doing anything. There is also a Delete KB data from OpenAI button under KB Settings for starting the index over from scratch — it removes everything remotely, and you re-sync afterwards.
That button is destructive and irreversible on the remote side. It is the right tool for a genuinely corrupted index and the wrong one for a single stuck article.
Where to go next
Syncing articles to the AI index for how the normal path works, and Reading the Diagnostics screen and the log for the underlying errors.