DEV Community

Cover image for Sidekick, or any other Shopify AI agent: they all read the same catalog
Arvio
Arvio

Posted on Originally published at arvio.a.xyz

Sidekick, or any other Shopify AI agent: they all read the same catalog

This is a repost. Originally published on the Arvio blog: https://arvio.a.xyz/blog/shopify-ai-agent-vs-sidekick. The canonical URL points back there.

Published September 2, 2026 by Adot Technologies Inc, the team behind Arvio. Catalog figures were read on September 1, 2026 from endpoints any browser can fetch; every Sidekick limitation quoted comes from Shopify's own help center, read the same day. Method and sample below.

What this post is and isn't. It is not a feature-by-feature scorecard of Sidekick against a named competitor — we didn't run agents against each other, and we won't pretend we did. It's about the thing that sits underneath every one of those comparisons: the product data each agent has to read. There's a section at the end on when Sidekick is the right answer, and one on what we did not test.

Before you pick between Shopify's Sidekick and a third-party AI agent, look at what any of them would have to read. It is two clicks inside the admin you already have open, and it will tell you more than any comparison table you will read on the subject, ours included.

One click: which products have no type. Open Products and click the Product type column header once. It sorts ascending, and empty sorts before everything, so the products that no agent can group by category are the ones now sitting at the top of your list.

The Shopify Products list sorted by the Product type column, arrow pointing up. Every row visible — Large Round Cutting/Charcuterie Board, TCHON Bamboo Salad Bowl, Macrame Toddler Swing and eleven more — has an empty Product type cell

That is the same work list a terminal command would print, except each row is a link you can click straight into. If you don't see a Product type column, the column icon to the right of the search bar turns it on.

A second click: all four fields on one screen, editable. Tick the checkbox at the top left of the list. A Bulk edit button appears in the action bar above the rows.

The same Products list with every row checked. An action bar has appeared reading

In the bulk editor, Columns adds Description, Product media, Tags and Product type. That is every field in the check below, side by side, and you can type into any of them right there:

The Shopify bulk editor with columns Product title, Description, Product media, Tags, Product category and Product type. Several rows have an empty Description, several have no tags, and most have no Product type

The blank cells are the whole answer. A row with no description, no media, no tags and no product type is a product that any agent — Sidekick or otherwise — has almost nothing to go on.

Two honest limits. The bulk editor works on the products you selected, so a large catalog is a few pages of this rather than one screen. And it shows you the blanks, it doesn't count them. If you want your own percentage to compare against the 42.1% below, that part is still one command:

curl -s 'https://your-store.com/products.json?limit=250' \
| jq '{flagged: [.products[]
        | select((.product_type // "") == ""
              or (.tags | length) == 0
              or (.images | length) == 0
              or ((.body_html // "") | length) <= 20)] | length,
       total: (.products | length)}'
Enter fullscreen mode Exit fullscreen mode

Add &page=2, &page=3 until the response comes back empty, and sum both numbers before you divide.

flagged ÷ total is the same measure as the 42.1% in the table below — a product counts as flagged if any one of four fields is missing: description of 20 characters or fewer, no image, no tags, or no product_type. Those are the same four columns you just put side by side in the bulk editor.

That 20 counts characters of body_html with markup included, so an empty <p></p> has already spent 7 of them — which is why a description can look present in the bulk editor and still count as missing here. Note also that tags arrives from this endpoint as an array, not the comma-separated string you get from exports.

The short version

  • Shopify's own documentation says Sidekick can't talk to your customers. Where a comparison puts a customer-facing chat widget in the other column, that one line closes it.
  • Whichever agent you end up with, it reads the same object: your product records.
  • Across 20,659 products in 39 public storefronts, the layer a shopper sees was mostly filled in (2.7% had an empty description, 0.3% had no image) — though 18.8% of descriptions were under 120 characters and 28.4% under 400 — and the layer only a machine reads was not (36.5% had no product_type, 19.8% had no tags).
  • That gap is not spread evenly. 15 of the 39 stores accounted for 87.7% of it.

Every agent in this comparison reads the same catalogue

Which makes the catalogue the thing worth working on. Arvio reads your live products, ranks the gaps, and drafts each fill against your real data — with your approval on every one.

See Arvio on the Shopify App Store →

What Shopify publishes about Sidekick's limits

The list under "Limitations for using Sidekick", in full, from the Getting started with Sidekick page, read on September 1, 2026:

Sidekick can't talk to your customers or handle customer support conversations on your behalf.

Sidekick can't share private information or data from other Shopify merchants with you.

Sidekick can't make changes to your store without your approval, and will only present options
for you to review and approve.

Sidekick can't make edits to images within a store theme or your product list.

Sidekick isn't currently available when you use the Shopify admin in a mobile browser. To use
Sidekick on a phone or tablet, start a chat in the Shopify app.

Two more, from the help and guidance page and the set-up page respectively:

You must manually save any changes that Sidekick applies to themes.

Sidekick on Apple Watch can answer questions, but can't make changes to your store or navigate
the admin.

They all follow from one architectural choice: Sidekick is an admin-side agent that proposes and waits.

The fourth line is the one that gets misquoted. It restricts editing images, in themes and in the product list. On editing products, the main Sidekick page says, also verbatim:

You can ask Sidekick to handle tasks such as analyzing data, managing orders, or editing
products.

And the first line is what settles most of the comparisons you'll find: a support bot and Sidekick answer different questions, and they never touch the same surface.

The premise underneath both columns

Sidekick, a third-party agent, and you at 11pm are all reading the same object. Not the storefront, not the theme — the product records.

If product_type is empty on a third of your products, then "group everything by category and tell me what's underpriced" is a guess for every one of those products, no matter who is doing the guessing. The agent doesn't announce that. It answers about the part of your catalog that happens to be legible and stays quiet about the rest.

So we went and measured how legible a real catalog is.

20,659 products, 39 storefronts

Sample. 39 live Shopify storefronts, read on September 1, 2026, taken at random from a public list of stores whose owners had posted their own URL on the Shopify Community's Store Feedback board. Everything here came from endpoints any browser can fetch.

The funnel, with the losses named. 230 candidate stores on that list, a random draw of 60, of which 41 returned a catalog we could read. Of those 41: zero hit our pagination limit on this run, zero had fewer than 10 products, and two returned no products at all and were dropped. That leaves 39 stores, 20,659 products. The truncation rule that would bias against large catalogs excluded nobody here.

Whether it looks like you. Stores that ask for feedback skew newer and smaller. The median catalog here is 130 products.

We build Arvio, an AI store operator for Shopify. The command at the top runs without us. Point it at any store and check the claim.

Field, as returned by /products.json Share of all 20,659 Median store's share Products
Description empty 2.7% 0.0% 552
Description ≤ 20 characters 2.7% 0.0% 567
Description ≤ 120 characters 18.8% 0.1% 3,890
Description ≤ 400 characters 28.4% 6.2% 5,865
No title 0.0% 0.0% 0
No image 0.3% 0.0% 57
No tags 19.8% 7.7% 4,096
No product_type 36.5% 9.1% 7,539
No vendor 0.0% 0.0% 0
Missing at least one of: description ≤ 20 characters, no image, no tags, no product_type 42.1% 58.5% 8,700

All four description buckets are in that table on purpose. Those lengths count body_html characters including markup, so any single one of them can be made to say what you want. The last row uses the ≤ 20 bucket, which is why it is the one the commands above reproduce.

The cliché about merchant catalogs is that nobody writes descriptions. In this sample they wrote them: descriptions were empty on 2.7% of products, and 99.7% had at least one image. What's missing is the other layer. product_type is one word, it's invisible to shoppers, and it was absent on 36.5% of everything we read. Vendor, the field nobody has to think about, was set on all 20,659. We can't tell from this endpoint whether merchants typed those vendor values or something upstream filled them in, so read that row as "present", not as "someone maintained it".

The average store is dirtier than the average product

Look at the last row again: 42.1% pooled, 58.5% for the median store. Pooled percentages are dominated by whoever has the most products — and size does not predict tidiness here. Across the 39 stores, catalog size and gap rate are essentially uncorrelated (Pearson r = −0.108), and two of the four largest catalogs in the sample are among the worst: one with 2,693 products has a gap on 99.7% of them, another with 2,411 on 90.8%. (Store names are withheld throughout — these merchants posted their storefronts asking for feedback, which isn't consent to be named in a vendor's post as an example of something done badly.) What separates the two groups is the typical store, not the total: the dirty group's median catalog is 67 products against 213 for the tidy group, while their means are the same order of magnitude (526 and 659).

We moved the cut between "small" and "large" five times to check that this holds rather than falling out of one convenient split. Median share of products with at least one gap, small group versus large group: 71.8% vs 7.7% at a 100-product cut, 66.7% vs 6.6% at 200, 65.9% vs 11.7% at 300, 62.5% vs 16.2% at 500, 60.5% vs 14.8% at 1,000. Same direction every time: the small end is where the gaps sit.

The distribution isn't a spread either. It's two piles. 19 of the 39 stores had a gap on fewer than 25% of their products. 15 had a gap on more than 90%. Only 5 landed in between. Those 15 stores hold 7,633 of the 8,700 flagged products — 87.7% of the problem in under half the stores.

Which means the sample-wide 42.1% is almost certainly not your number. You are in one of the two piles, and the two commands at the top of this page tell you which in under a minute.

What the commands printed Where that puts you What it changes
Gaps on under 25% of products 19 of our 39 stores The structured layer exists. Anything you ask by type or tag will land on most of the catalog and silently skip the stragglers, so the job is finding those by hand
Gaps on 25% to 90% 5 of our 39 The shape that produces confident, partly wrong answers: the fields are present often enough to look reliable
Gaps on over 90% 15 of our 39 There is no structured layer yet. Titles and descriptions are all anything has to work from, yours or Shopify's

What this reading doesn't show

The frame is a convenience frame: merchants who posted their own store URL asking for feedback. It is not a random sample of Shopify. And "missing description" means this public endpoint returned nothing for that product — your theme may well print copy that lives somewhere else, which a shopper would see. One endpoint, one day.

Fill order, if you're in the 90%-plus pile

What you'd ask any agent to do The field it has to read Empty in our 39 stores
"Group everything by category, show me the gaps" product_type 36.5%
"Mark down everything tagged summer" tags 19.8%
"Rewrite the descriptions that are too thin to rank" body_html 18.8% under 120 characters
"Filter to one brand" vendor 0.0%

product_type first. Biggest hole, one word per product, and it's the field that turns a flat list into something anything can slice. Tags second. Descriptions last, because that is the one where the writing actually has to be good, and it's the one you can hand off.

None of this is news to you. You already know the type field should be filled. The reason it isn't is that it's one more row of typing per product — 130 of them at the median store in this sample — that nobody will ever thank you for, and it competes with shipping today's orders.

Knowing your fill order does not fill anything

Somebody still opens each product and types. Arvio is the version where you review instead of type: it drafts against your live catalogue and applies nothing you have not approved.

Install Arvio on the Shopify App Store →

Or hand the typing over

That last paragraph is the reason we built Arvio. This is it running against our own demo store, the same one in the screenshots at the top, which we read again on 2 September: 19 of its 68 products still carry no product type.

Arvio inside the Shopify admin, listing products with no product type next to the type it proposes for each and what that proposal was based on —

The third column is the part that matters: every suggestion says what it was read from, so the review is a scan rather than 19 decisions. Two products didn't fit any type the store already used, so it proposed new ones instead of forcing a wrong fit. Nothing is written until the button is pressed — see it on your own catalog.

Whether you fill the fields in the bulk editor, hand them to us, or hand them to something else entirely, that is the work. The agent you pick afterwards is the smaller decision.

When Sidekick is the one you want

If the work lives inside the admin and you want to do it conversationally with a checkpoint before anything changes, that is what Sidekick is built for, and it's reachable from any page of the admin already. Shopify's own examples of the quick questions it answers are scoped to one surface — "Sidekick on Apple Watch is designed for quick answers about your store, such as checking unfulfilled orders, today's sales, or low stock products" — so read them as the Watch list they are.

If you need something that replies to customers, you are shopping in a different category altogether. That's a support tool, and the quoted limitation above is Shopify saying so. And if you work from a phone browser rather than the Shopify app, check the mobile-browser line above before you plan around it.

FAQ

Does Sidekick edit products?

Shopify's help center lists "editing products" among the tasks you can ask it to handle. The separate limitation about edits covers images within a store theme or your product list.

Can Sidekick answer my customers?

No. Verbatim: "Sidekick can't talk to your customers or handle customer support conversations on your behalf."

What counts as "missing" in your numbers?

For the 42.1% row, for the bulk-editor columns above and for the command: the product is missing at least one of four things — a body_html of 20 characters or fewer, an empty image array, a zero-length tags array, or an empty product_type string. The other description rows in the table (≤ 120, ≤ 400) are shown separately and are not part of that 42.1%.

My store isn't in your sample. Does 42.1% apply to me?

Probably not, and that's the point of the two piles. Sort your own Product type column and see.

Does a third-party agent read fields that Sidekick can't?

We didn't test that, and nothing here claims it. What we measured is the state of the fields themselves, which is upstream of every agent on the shortlist.

Two clicks, or none

If you'd rather not click through the admin a page at a time, we run the same four checks across your whole storefront and hand back the list: arvio.a.xyz/free. It reads the same public endpoint the command above does.

And if you did sort that column and found several screens of blank cells, that is the actual comparison you were looking for. Whichever agent you pick, those blanks are what it reads.

Arvio: AI Store Operator — install it on the Shopify App Store. Whichever agent you use, it reads the catalogue this one works on.


Originally published at https://arvio.a.xyz/blog/shopify-ai-agent-vs-sidekick. More Shopify bulk-editing writeups are on the Arvio blog.

Top comments (0)