Why is my GitHub KB sync not working?
When a GitHub-to-Atender KB sync pipeline misbehaves, the cause is almost always one of five known gotchas: an article missed past the 100-item list limit, a duplicate category after a rename, embedding lag, translations that are waiting for the automatic sync, or an API key that leaked into a commit. Each has a quick fix below. This FAQ assumes the setup from Push articles from a GitHub repo.
Why did a push create a duplicate instead of updating the article?
The push script asks for 500 articles when building its slug lookup, but the list endpoint returns at most 100 per call. Once your KB crosses 100 articles, the list call misses entries, the script doesn’t find the existing slug, and it creates a new article instead of updating. Fix: paginate the list call in the push script so the slug lookup sees every article.
Why do I have two categories with almost the same name?
Categories upsert by name, not slug. If you rename a category in an article’s frontmatter without updating the existing articles, the script creates a duplicate category on the next push. Fix: keep category names stable in frontmatter, and use exactly the same spelling across all articles in a category.
The article is live in the help center — why doesn’t the AI use it yet?
Embeddings catch up in the background. A pushed article appears in the UI within seconds, but it appears in AI retrieval only after the background embedding job picks it up, and that job runs every 10 minutes. Wait for the next run and re-test; see also When do articles update for AI agents?.
Why are translations not updating after a push?
A push updates the source content first. Active translation languages are then picked up by the background automatic sync. If a translation does not update right away, verify that the language is Active in Settings → Knowledge → Markets & Languages, then wait for the scheduled sync to run.
I committed the API key. What now?
Rotate the key immediately — a key that has been in a commit is not a secret anymore, even after you delete the file. Generate a fresh key, update the ATENDER_API_KEY repository secret, and only ever inject the key via that secret.