Notes
A Shopify AI shopping assistant built from products.json: how it answers, what it costs, and the theme.liquid setup while the app is in review
Every Shopify store already publishes its catalogue at a public URL: yourstore.myshopify.com/products.json. ARLing Asistent, an AI shopping assistant, reads exactly that feed and answers customer questions from it. The Shopify App Store listing is still in preparation, so today the widget goes on a store by hand, one script tag in theme.liquid. This note covers what products.json contains, how a feed-grounded assistant answers and what it refuses, the setup that works today, what the approved app changes, the privacy and DPA position, and an honest comparison with Shopify Inbox and Gorgias.
01
What products.json actually is
Every Shopify store, on any plan, serves a public product list at /products.json, both on the myshopify.com domain and on a connected custom domain. It is not a setting anyone switches on: theme sections and apps already rely on it to read the catalogue client-side, so it has been reachable by default since before most stores existed. A real one shows the shape directly: each entry carries id, title, handle, body_html (the description), vendor, product_type, tags, images, and a variants array with price, compare_at_price, sku, option values and a boolean available flag per variant. There is no raw inventory count, no cost price, and nothing about a customer or an order: it is the same marketing-facing data a shopper's browser already sees on the storefront, just as JSON instead of HTML.
One practical detail: without a ?limit= parameter the endpoint returns a short first page, not the whole catalogue, and 250 is the largest page it hands back at once. ARLing Asistent fetches exactly the URL given, once, so add ?limit=250 to the feed URL for any catalogue bigger than a couple dozen products; anything past the first 250, or past 5,000 products total, stays invisible until pagination support is added.
Can it be turned off? Not cleanly. Shopify has no dedicated setting for it, since themes and installed apps already depend on it. Password-protecting the whole store from Online Store > Preferences hides pages from visitors and search engines, but is not documented as blocking this endpoint, and several store owners report it still answering on a password-protected store. In practice: it is already public on essentially every Shopify store, and blocking just that path needs a developer-built proxy, not a setting.
02
How a feed-grounded assistant answers, and what it refuses
Once a store's feed is ingested, each product is split and turned into a vector embedding. A shopper's question is embedded the same way, the 8 closest matching products are retrieved, and a language model answers using only those products and the store's contact e-mail, never outside knowledge. The reply is capped at 120 words, links to at most 3 real products with real prices, and is answered in whichever of Slovak, Czech, English or German the shopper's message is written in.
What it refuses: it cannot look up a specific order, since order data never reaches it, only the public catalogue. It cannot confirm stock at the exact second someone asks, since the feed refreshes once a day, so an item that just sold out can still show as available until the next refresh. A returns or shipping question gets the same answer as anything outside the catalogue: a pointer to the store's contact e-mail, since the assistant has no order history and no separate policy text, only the catalogue and that address.
03
Setup today, without the app
Start a trial at arling.sk/asistent: paste your store's feed URL (https://your-store.myshopify.com/products.json?limit=250) and your e-mail. It is free up to 100 conversations a month, no card, and the same page runs the assistant live on your own catalogue while it indexes. When indexing finishes, the page shows your tenant id and the ready-made script tag with a copy button, so you can paste it straight into theme.liquid. Since 6 September the feed is read with pagination, so a full catalogue is indexed without adding ?limit=250 by hand.
With that id, go to the Shopify admin, Online Store > Themes > Edit code, open theme.liquid, and add this just before </body>:
<script src="https://arling-asistent.arling.workers.dev/widget.js"
data-tenant="TENANT_ID"
data-lang="auto"
data-position="right"
defer></script>
data-lang="auto" follows each shopper's own browser language, and data-position takes right or left for which corner the bubble sits in. To remove the assistant, delete that script tag from theme.liquid and save: it stops appearing on the next page load, no other cleanup needed. The same underlying assistant already runs against a real store's public feed at the live demo on allbirds.com's products.json, ARLing's own demo tenant reading public data, not a partnership with that store.
04
What changes once the Shopify app is approved
The app itself, a Cloudflare Worker for OAuth, billing and the mandatory compliance webhooks, plus a theme app extension replacing the script tag with an app embed block, is built and tested against mocks, but nothing is deployed: the owner has a Shopify Partners account but has not yet created the app entry, a manual step nobody else can take for them. Once it exists and clears review, installing becomes one click from the Shopify App Store: an OAuth consent screen, an embedded admin page inside Shopify, and a toggle in the theme editor's App embeds panel instead of hand-editing theme.liquid.
Billing moves inside Shopify too, and the currency changes with it: the same three tiers become Free at 0 USD, Starter at 19 USD a month and Pro at 39 USD a month, charged through Shopify instead of a Stripe invoice in euros. One gap: choosing a paid plan there creates the Shopify subscription correctly, but does not yet raise the assistant's own conversation quota automatically, since no API for that exists yet; an upgrade needs a manual step behind the scenes to take effect.
05
Privacy: no conversation storage, and a DPA
The content of a conversation, the shopper's question and the assistant's reply, is never written to a database. What is kept is a daily aggregate counter per store: how many conversations happened and how many product links were clicked, used only to enforce the monthly plan quota. Setting up a trial sends the store's feed URL, its domain and the e-mail entered in the form, once; no customer or order data is ever read or sent, since the assistant's only inputs are the public catalogue and that one contact address.
ARLing s. r. o. acts as a data processor for the messages a store's shoppers send, under a GDPR Article 28 agreement. The template is published as a Slovak-language DPA on GitHub, with an English translation available on request at andrej@arling.sk. The assistant runs on Cloudflare Workers AI, and Cloudflare does not publicly guarantee EU-only processing for that service, so the agreement relies on Standard Contractual Clauses and Cloudflare's EU Cloud Code of Conduct certification rather than a technical location guarantee.
06
How it compares: Shopify Inbox and Gorgias
Shopify's own Inbox app is free: its App Store listing states "Pricing: Free" with no paid tier (apps.shopify.com/inbox). It reads a store's products, orders and customer data through the Shopify Admin, offers an AI-powered storefront assistant with product recommendations, and can personalise replies using purchase history for shoppers signed in with Shop. That is a wider scope than ARLing Asistent, which by design never touches order or customer data, only the public catalogue; the tradeoff is that Inbox is free and native, so a store that wants order-aware replies already has a strong free option.
Gorgias is a full helpdesk with an AI layer. Its pricing page describes the AI Agent as included "on every plan, pay only when it resolves a conversation," with helpdesk plans scaling "from 50 to 5,000 tickets a month, never priced per agent" (gorgias.com/pricing); the exact dollar figures sit behind an interactive calculator this note could not read reliably, so none are repeated here. That per-resolution model is a different shape from ARLing Asistent's flat 19 or 39 EUR (soon USD through Shopify) for a fixed conversation volume: Gorgias charges by how often its AI closes something out, Asistent charges by how many conversations happen at all, resolved or not.
Frequently asked questions
Is my store's products.json feed public by default?
Yes. Every Shopify store serves a public catalogue at yourstore.myshopify.com/products.json (and the same path on a connected domain), listing title, description, price, variant options and images for published products. It contains no customer data, no order data and no cost price.
Can I turn products.json off?
Not cleanly. Shopify has no setting that disables /products.json on its own, since many themes and apps read it directly. Password-protecting the whole store under Online Store > Preferences hides pages from visitors and search engines, but store owners report the feed still answering even then, so it is not a reliable way to block it either.
Does the assistant store what shoppers type?
No. The conversation content, the question and the answer, is never written to a database. Only daily aggregate counters (conversations, product-link clicks) are kept per store, used to enforce the monthly plan quota.
How do I add the assistant before the Shopify app is approved?
Create a free trial at arling.sk/asistent with your store's products.json URL and your e-mail, then add the widget's script tag to theme.liquid just before </body>, using the tenant id from that trial. Removing it later is one deletion: take the script tag back out and save.
What changes once the Shopify app is approved?
Installing from the Shopify App Store with no code, an embedded settings page instead of a theme edit, a theme app embed toggle instead of a manual script tag, and billing handled inside Shopify at 19 USD or 39 USD a month instead of Stripe invoicing in euros.
Sources
- ARLing Asistent: source code, worker and readme (GitHub)
- ARLing Asistent for Shopify: app source and status (GitHub)
- ARLing Asistent: trial form and live playground
- Shopify App Store: Shopify Inbox listing and pricing
- Gorgias: pricing page, AI Agent and helpdesk plans
- Shopify Help Center: restricting access to an online store