AI chat for Shopify stores
Option names, theme behaviour and a discount code you forgot to expire decide whether this works. On most stores the model is the part nobody ends up touching.
A visitor is halfway down the product page for a jacket and types four words: got this in medium? Two things can happen next. One is a sentence: yes, medium is in stock. The other is that the medium variant is sitting in their cart with this week's active code applied and the cart open in front of them, before they scroll away. Everything standing between those two outcomes is plumbing. What your Shopify OAuth scope covers. What your product options are named. What your theme does when something asks it to open the cart. Whether the code the assistant just quoted still exists. Nearly every one of those failures sits in your product data rather than in the assistant reading it, which is both a relief and an irritation: none of it requires cleverness, and none of it can be done by anybody but you.
What the Shopify connection actually buys you
Starly connects to Shopify over OAuth with read access to discounts and orders. Stated precisely, that buys two things. The assistant can see the discounts that are live in your store at that moment, so when it names a code the code exists, and it can apply that code to the cart it just built on your storefront. And you, the owner, can see order data on your side of the product while you read transcripts, so when a conversation goes badly you can check what the person went on to do.
Now the part vendors usually let you assume. Read access on orders does not give your customers a self-serve where-is-my-order lookup. A visitor who types an order number into the chat will not get a tracking status back. No amount of prompt writing changes that, because the lookup is not in the product. Read-only cuts the other way too: the assistant does not edit products, cancel orders, issue refunds or change prices. Everything in that category has to reach a person, which is what the handoff is for. Write your handoff message on the assumption that post-purchase questions will use it.
Variant disambiguation is the real work
"Do you have this in medium" looks like a stock question. Against a product with twelve variants, three colors by four sizes, it is a matching problem. The assistant has to decide which of those twelve rows the visitor means before it can say anything true about availability, and long before it can put anything in a cart. It makes that decision from your option names and option values, because that is the only description of the product's shape that exists in the imported catalog.
This fails in specific, common ways. If your options are called Option 1 and Option 2 because that is what a CSV import left behind, there is nothing to match against: the assistant can see the value M but not that M is a size. If sizes read M on one product, Medium on another and 38 on a third, each product is handled fine on its own and any question spanning your range is handled badly. If your color is Midnight and the customer says navy, the match fails on a word neither of you thought was ambiguous.
The fixes are boring and they are yours, not the assistant's. Name options what they are: Size, Color, Length, Material. Use one size vocabulary within a category. If you sell colors under names nobody would type, write the translation into a knowledge card once. Midnight is the dark navy, Bone is the off-white. That single card will do more for accuracy than any change to the model.
Clean option names also buy you fewer turns. When the assistant can tell size from color, it asks one clarifying question and then acts. When it cannot, it either asks a vague question the visitor has to interpret, or it picks a row and states something about stock that may be about the wrong variant. Every extra turn between the question and the cart is a place the visitor leaves.
Two pieces of Shopify structure behave differently from how owners expect. Collections and tags are merchandising devices rather than product facts, so a shopper who asks what is in your Gifts Under 50 edit is asking about something the product rows do not describe. If a grouping matters to customers, say what belongs in it in a card rather than assuming the catalog carries it. The second is stock, which is not one flag. A product with continue-selling-when-out-of-stock enabled is orderable at zero inventory, which is correct for made-to-order and quietly wrong for everything else. Decide which of your products that setting applies to and write the delivery consequence down beside it, because otherwise the assistant will confirm availability for something you have not made yet, in exactly the confident tone you would use for something on the shelf.
Adding it to the real storefront cart
When the conversation is happening in the widget on your storefront, the assistant adds the chosen variant to the real Shopify cart for that browser session, then asks your theme to open it. Not a quote, not a parallel cart, not a link to the product page. The same cart your Add to cart button fills, which is why the discount and the checkout behave normally from there.
The second half of that sentence is the part to test. Asking the theme to open the cart is a request, and themes answer it differently. A stock theme opens its drawer. A heavily customized theme may have replaced the drawer with something that ignores the request, so the item lands in the cart and nothing visibly happens: the customer is told it is in their cart and sees no cart. A third-party app that overrides your cart drawer produces the same result. A headless storefront running its own front end may ignore both the add and the open, because the storefront the customer is looking at is not the one being asked. None of that shows up on a clean demo store, which is exactly why you should not test it on one.
Before launch, run four steps on your live theme, on a phone as well as a desktop. Ask for a specific variant. Watch whether the cart count increments. Watch whether the cart opens. Then go to checkout and confirm the right variant is in there at the right price. If only the third step fails, you have a theme problem rather than an assistant problem, and it goes to whoever maintains your theme. If the fourth step fails, stop and fix it before a customer sees the widget at all.
Off the storefront, there is no cart to add to
When the same conversation happens on your own WhatsApp number or through a shareable test link, there is no browser session on your store to add anything to. The assistant returns a cart permalink instead.
That link opens your storefront with the chosen variant already in the cart, and the customer carries on from there. It is a real close and it is a slower one. They have to tap out of the conversation, wait for your store to load, and may be doing it on a device that is not the one holding their saved payment details. The gap between the answer and the loaded store is dead time you do not control, and it is the point where people put the phone down.
Two practical consequences. Judge the two mechanisms separately: the on-site cart and the permalink close at different rates, and averaging them tells you nothing about either. And check the permalink on your own phone before launch, because it lands on the same theme as everything else. The message around the link matters too. A bare URL gives the customer no reason to tap it; a sentence that says what will happen when they do gives them one.
Promotions, and the code that exists but does not apply
Because the connection reads your live discounts, the assistant quotes codes that are actually running. That removes the most embarrassing failure, an assistant confidently offering WELCOME10 six months after you deleted it, but it does not remove the ugly one.
A code can exist and still not apply. It is scoped to a collection this item is not in. It needs a minimum order value the cart has not reached. It is limited to first-time customers, or to one use per customer, or it does not combine with the automatic discount already sitting on the order. Shopify resolves all of that at checkout, not in the chat, so the assistant can know a code exists without knowing it will work for this particular cart and this particular person.
The right behavior is to name the condition and stop. "SPRING15 is running on outerwear, over $80" is a useful sentence. "That should work" is not, and it is the sentence that produces the support ticket. Write each active promotion's real conditions into a knowledge card, in the same terms the discount is configured in, and let the assistant say plainly when it is unsure and offer a person instead of guessing.
One housekeeping point. Anything active is readable, so assume any active code can end up in a conversation. If you left a code running for one partner or one campaign, scope it properly in Shopify or expire it before you switch the widget on.
Catalog hygiene is a launch task, not a later task
The assistant reads your product data out loud to strangers. Whatever is wrong in it stops being an internal annoyance the moment you go live. That makes a catalog pass part of installation rather than something to get to in month two.
- Product titles a customer would actually type. Somebody searching for a rain jacket will not find "RJ-02 Shell (SS24)".
- Option names that describe the option, such as Size, Color and Material, with consistent values inside each category.
- Descriptions that contain the facts people ask for: fabric, fit, dimensions, care. An empty description gives the assistant nothing to answer from.
- Products published but out of stock, which the assistant will keep offering until you unpublish them or write down in a card how you want them handled.
- Wording your customers use. The assistant replies in the customer's own language, but it still matches questions against the titles and option values sitting in your catalog.
None of that is AI work. It is the same catalog work that improves your on-site search and your product pages, which is why it is worth doing even if you decide against chat entirely. If you only have one hour before launch, spend it renaming options and fixing the titles of your twenty best sellers.
Two Shopify stores this does nothing for
The first is the store whose inbox is mostly order chasing. There is no customer-facing order lookup here, so those messages keep landing on you. Whether that alone should stop you buying is a question for the readiness checklist rather than this page. What belongs here, and appears on no other page because it is Shopify's own machinery rather than a chat decision, is that the fix already shipped with your store and most merchants have it switched half on.
Shopify already covers most of that traffic if you let it. Order confirmation and shipping confirmation emails go out on their own, the shipping email carries the tracking number and link once you add tracking to the fulfillment, and those emails link to the order status page where a customer can see the state of their own order without asking anybody. If your notifications are switched off, unedited, or landing in spam, fixing them will do more for that queue this month than any chat product will.
The second is the store with five products and one option each. Variant matching buys you nothing there, because there is nothing to disambiguate, and a well-written block of answers on the product page handles the same questions for nothing per month. Every mechanism on this page is plumbing for a catalog large enough that a customer cannot hold it in their head; below that size the decision is a volume question, not a Shopify one, and it is taken on the readiness page.
What is left, and it is most stores, is the question that happens before the order exists. Which size, will it fit, what is it made of, does this come in navy, do you ship to my country, is there a code running. Those are the ones where the answer can end in a cart, which is the only reason any of this plumbing is worth laying.
The order to do this in
Fix the catalog first, because everything downstream reads it. Connect Shopify second, and check that the discounts the assistant can see are the ones you think are running. Test the cart on your live theme third, on a real phone, all the way to checkout. Write the promotion conditions and the color-name translations into knowledge cards fourth. Then read transcripts for the first week and fix the cards behind the answers that came out wrong. The model is the last thing to worry about, and on most stores it is the thing nobody ends up needing to change.
Common questions
Can customers check their order status through the Shopify connection?
No. The Shopify OAuth connection has read access to discounts and orders, but that exists so the assistant can quote and apply real discount codes and so you can see order data as the store owner. There is no self-serve order lookup for customers, so where-is-my-order messages still reach you or your team. Shopify's own confirmation and shipping emails, and the order status page they link to, already cover most of that traffic.
Will it add to the cart on a custom or headless Shopify theme?
It adds the chosen variant to the real Shopify cart for that browser session and then asks your theme to open the cart. Stock themes open their drawer. Heavily customized themes sometimes ignore the open request, so the item is in the cart but nothing visibly happens, and a headless storefront running its own front end may ignore the whole thing. Test it on your live theme before launch: ask for a specific variant, watch the cart count, then go to checkout and confirm the right variant is there.
What happens on WhatsApp, where there is no cart to add to?
There is no browser session on your store, so the assistant returns a cart permalink instead. Opening that link loads your storefront with the chosen variant already in the cart. It closes the same sale more slowly, because the customer has to leave the conversation and wait for the store to load, sometimes on a different device from the one holding their saved payment details. Expect a different conversion rate from the on-site cart.
Can the assistant invent a discount code?
It quotes codes from your store's real active discounts, so it will not offer one you deleted. It can still name a code that Shopify then refuses at checkout, because scope rules are resolved at checkout: collection limits, minimum order values, first-time-customer restrictions, one-use-per-customer, and no stacking with an automatic discount. Write each promotion's real conditions into a knowledge card so the assistant states the condition rather than promising the code will work.
Do my variant and option names really matter that much?
Yes, more than anything about the model. The assistant decides which variant a customer means using your option names and values. Options called Option 1 and Option 2 give it nothing to match a size question against, and sizes that read M on one product and Medium on another make any cross-product question unreliable. Renaming options to Size, Color and Material, and making values consistent inside each category, is the highest-value hour of setup on most Shopify stores.