Shopify integration
The Shopify integration is the smoothest way to get Zubby AI running. It’s an officially-listed Shopify app that authenticates via OAuth, reads your catalog via the Admin GraphQL API, and embeds the widget through a theme app extension — so there’s no code to paste anywhere.
Install the app
Two ways in: open the Zubby listing in the Shopify App Store, or start from Zubby Dashboard → Connect store → Shopify. Both routes end at the same OAuth approval screen.
Authenticate to Shopify
Approve the connection with the user that hasApps and channelspermission on the store you want to install on. Zubby can’t install on stores where you have staff-only access.Approve OAuth scopes
We requestread_products,read_orders,read_customers, andread_content, plus scoped write access (write_orders,write_products,write_order_edits,write_cart_transforms) that powers cart-rescue discounts and catalog write-back. Approve to continue.Land back in Zubby
You’re redirected to your Zubby dashboard with the store row already created. The status will read Syncing catalog.
Scopes explained
Each scope maps to one capability. If your security team needs to audit, here’s the breakdown:
| Scope | What it covers | Why we need it |
|---|---|---|
| read_products | Products, variants, collections, metafields (allowlist). | Build the searchable catalog the AI grounds answers in. |
| read_orders | Recent orders for shoppers in conversation. | “Where is my order?” lookups; abandoned-cart recovery. |
| read_customers | Customer email, name, marketing-consent state. | Identity stitching across sessions; suppression lists. |
| read_content | Online Store pages (Returns, Shipping, FAQ, etc.). | Knowledge-base seeding so the AI can quote policies. |
| write_orders / write_order_edits | Discount codes and order edits. | Apply cart-rescue discounts; opt-in order actions you enable. |
| write_products / write_cart_transforms | Product content and checkout cart transforms. | Catalog Improver write-back; bundle discounts at checkout. |
First catalog sync
Shopify runs the initial pull as a bulk operation. For small stores (under 5,000 SKUs) this completes in well under a minute. Larger stores can take up to twenty. Zubby streams progress in Dashboard → Catalog → Sync.
After the bulk import finishes, the background worker generates embeddings so the AI can retrieve products by meaning. Embedding progress shows as a second bar on the same screen.
Sync stuck on Embedding 0%
Webhooks
Zubby registers the following Shopify webhooks (API version 2025-10) on install. You don’t need to do anything — we handle the subscription handshake and HMAC verification on every inbound event.
products/create,products/update,products/deletecollections/create,collections/updateorders/create,orders/paid,orders/cancelled,orders/fulfilledcheckouts/create,checkouts/updatecustomers/data_request,customers/redact,shop/redact(GDPR)
Embed the widget
The fastest way to put Zubby on the storefront is the theme app embed. From your Shopify admin:
Open the theme editor
Online Store → Themes → Customizeon your live theme.Toggle the App embed
ClickApp embedsin the left rail. Find Zubby AI Chat and switch it on.Save the theme
Save and reload your storefront. The launcher should appear within a couple of seconds.
Full walkthrough including position tweaks and audience rules at Embed the widget on Shopify.
Manual snippet (Shopify 2.0 themes only, advanced)
If you want to embed without the theme app block — for example to gate the widget on a custom Liquid condition — paste this just before </body> in your theme’s theme.liquid:
<!-- Zubby AI -->
<script
src="https://cdn.zubbyai.com/widget/v1/loader.js"
data-store-id="{{ shop.permanent_domain }}"
data-widget-key="{{ block.settings.widget_key }}"
async
></script>Uninstalling
Uninstall from the Shopify Apps page. Zubby receives the app/uninstalled webhook, immediately revokes all tokens, and queues GDPR jobs to redact shopper data on the 30-day schedule. You can re-install later without losing historical analytics — workspace data is retained for 90 days before deletion.