Webhooks & Real-time Sync

Publish content; your chatbot knows it. Daily auto-sync is on for every plan — webhooks make it instant.

Auto-sync: the default

Every crawled site re-syncs every 24 hours, on every plan — no Enterprise gate. The sync diffs your content by hash: unchanged pages are skipped, changed pages are re-embedded, removed pages are deleted from the knowledge base. Only the delta is processed, so a daily sync of a large site costs almost nothing and never re-uploads what didn't change.

The sync webhook — instant updates

When 24 hours is too slow — a price change, a corrected policy, breaking product news — ping the sync endpoint the moment you publish and that page is re-crawled immediately:

POST https://askorac.com/api/webhook/sync
Authorization: Bearer <project_api_key>
Content-Type: application/json

{
  "project_id": "your_project_id",
  "url": "https://yoursite.com/blog/new-post",
  "action": "update"   // or "delete"
}

update fetches, re-chunks, and re-embeds the URL; delete removes its content from the knowledge base. Your project API key and ID are under Settings.

WordPress

Use any webhook plugin (WP Webhooks and similar) with a "post published/updated" trigger pointed at the endpoint above, sending the post's permalink as url. Publish a post, and Orac answers questions about it seconds later.

Shopify

Admin → Settings → Notifications → Webhooks: create product/update and product/delete webhooks to the endpoint, mapping the product URL. Inventory notes, new descriptions, and delisted products stay in step with your storefront.

Webflow

Project Settings → Integrations → Webhooks: add a "Collection Item Changed" webhook to the endpoint. CMS-driven sites get the same publish-to-knowledge immediacy as WordPress.

Sync history & monitoring

Every sync — scheduled or webhook-triggered — is logged with pages added, updated, and removed, visible per project in the dashboard. If a source page starts failing (moved, blocked, deleted), you see it there rather than discovering it when a visitor gets a stale answer.