Before you start
A Shopify custom app with the right scopes
A Shopify custom app with the right scopes
Knowledge sync authorizes via OAuth using a custom app’s Client ID and Client Secret. Required scopes per stream:
If the custom app you use for the store connection already has these scopes, reuse it. Otherwise add them, or create a second custom app just for knowledge sync.
| Stream | Required scope |
|---|---|
| Pages | read_online_store_pages |
| Articles | read_content |
| Products | read_products |
Owner or admin in OpenCX
Owner or admin in OpenCX
Required to add data sources in AI Training → Data Sources.
Set up the sync
Open Data Sources
Go to AI Training → Data Sources.
Add a Shopify source
Click Add source → Shopify. You’ll see a Redirect URL — copy it and paste it into your Shopify custom app’s Allowed redirection URL list.
Enter your custom app credentials
| Field | Example | Where to get it |
|---|---|---|
| Shop domain | your-store.myshopify.com | Your store’s *.myshopify.com domain. |
| Client ID | — | From the Shopify custom app’s API credentials page. |
| Client Secret | — | Same page. |
Select streams
Pick which streams to sync. Pages is on by default; Articles and Products are opt-in. You can change the selection later — a re-auth is triggered to update scopes if you add a stream that needs a new one.
Authorize via OAuth
Click Connect with Shopify. A popup opens asking you to approve the scopes. Approve. When the popup closes, the source row shows Active.
Verify in AI Instructions
Open AI Training → AI Instructions. Synced content appears under Shopify, grouped by stream. Pages and products include source URLs back to your storefront; articles don’t carry a URL in the sync (Shopify’s blog-article URLs require the blog handle, which isn’t in the Airbyte data).
Visibility rules
Pages and articles — by published_at
Pages and articles — by published_at
published_atset → public (AI can cite in customer replies)published_atnull → internal (agent-facing surfaces only)
Products — by status
Products — by status
status === 'active'→ public- Any other status (draft, archived) → internal
Limits
| Value | |
|---|---|
| Streams synced | pages (default), articles (opt-in), products (opt-in) |
| Sync mode | incremental_append per stream |
| Sync cadence | Airbyte polling — typically every few hours |
| Credential type | OAuth 2.0 via custom app (Client ID + Client Secret + shop) |
| Multi-store | One Shopify store per connection |
| Product URLs | Present via handle + shop domain |
| Article URLs | Not available in sync (blog handle missing) |
| Draft / inactive content | Synced as internal |
Related Documentation
Shopify overview
Knowledge vs. AI Actions.
Troubleshooting
Scope errors, missing streams, URLs.
Shopify integration
Admin API, order lookup, metadata.
AI Actions
Real-time tools against your store.