Connect Shopify
Install the embedded Shopify app, train on catalog and policies, enable commerce tools, and publish the theme app embed.
The Shopify app is the recommended connection. It runs inside Shopify admin and links one store to a Fetchply agent.
Install and connect
Install Fetchply from Shopify, open the app, and select Connect your Fetchply account. Sign in or create an account, then approve the store connection. Setup opens right away; your pages, policies, and product catalog keep syncing in the background while you continue, so you never have to wait for a large store to finish importing.
Complete the setup guide
Review Store policies, add Instant answers, customize the chat, choose capabilities, and try the assistant. If imported policies have not appeared yet, use Import from Shopify on the policies step or check back in a few minutes.
Review training data
Under Training data, review your Sources, then Instant answers, Products, and Collections. Add only approved supplemental content.
Enable commerce capabilities
Open Settings and choose Product search and Order lookup. Product search uses current catalog data; order lookup confirms the shopper owns the order before showing it (see How order lookup works below).
Publish the storefront widget
Open Settings → Widget embed, select Open theme editor, enable Fetchply Chat under App embeds, and save the theme.
Test as a shopper
Open Playground and ask what your shoppers ask: search for a product, ask a policy question, and perform an order lookup with a test order. Try verifying once with the order's email and once with its phone number. Fix any answer that comes back wrong, then confirm activity in Inbox and Analytics.
Playground: test answers and fix them
Playground is where you check what your assistant actually says and correct it when it is wrong, without leaving Shopify admin. Answers come from your live assistant, so what you read there is what a shopper on your storefront gets.
Open Playground from the app menu, type a question (or select one of the suggested ones), and press Enter. Each answer shows how long it took and, when the answer came from your own content, which page or instant answer it was based on. Select a source to open it.
Under every answer you can:
- Looks right — mark the answer as good so you can keep track of what you have already checked.
- Fix this answer — open the answer in an editor, prefilled with your question and the assistant's reply. Rewrite it the way you want shoppers to read it and select Save instant answer. Use the formatting buttons above the box for bold, italic, headings, bullet and numbered lists, and links: select the words you want to change and select the button, or select the button first and type. Point at a button to see what it does. Ctrl + B, Ctrl + I, and Ctrl + K (Cmd on a Mac) do the same. Switch to the Preview tab to see the finished answer exactly as a shopper will see it, then switch back to Write to keep editing, so you never have to read formatting marks. From then on the assistant gives your wording for that question, on your storefront and every other channel you have connected. Ask the question again to confirm. Fixing the same question again updates the answer you already saved instead of adding a second one, so you can keep refining it without cluttering your training data.
- Start a new test — clear the conversation and begin a fresh test. Use this between topics so one test does not carry context into the next.
- Preview the widget — open the real chat widget in a window, to check how it looks (colors, launcher, welcome message) rather than what it says.
Use Fix this answer when the wording is wrong. When the assistant is missing information rather than phrasing it badly, add the material instead: Add training data for pages, files, and Q&A, Update store policies for shipping, returns, and warranty, and Change tone and style for how it speaks. All three are linked at the bottom of the Playground page.
Playground troubleshooting
- Playground says your assistant isn't ready. Your store is still connecting or the first training run has not finished. Return to the home screen, finish the setup steps, and try again in a few minutes.
- An answer never arrives, or you see "Something went wrong while answering". Reload the page and ask again. If it keeps happening, check that your store connection is still active on the home screen.
- "Too many test messages right now." You asked several questions in quick succession. Wait a moment and send the question again.
- The answer says the conversation was routed to a teammate. Your handoff rules moved this test conversation to a human, so the assistant stops replying in it. Select Start a new test to keep testing AI answers.
- A fix did not save. The error appears in the editor and your draft stays on screen, so you can select Save instant answer again. Nothing is lost if you close the window; you can reopen Fix this answer on the same reply. Saving again is always safe: it updates the same answer rather than creating a duplicate.
- "Your answer was saved, but it is not live yet." The answer is stored but still being made searchable. Select Save instant answer once more; if it keeps happening, wait a few minutes and check the answer under Training data.
- A fixed answer still comes back wrong. Instant answers are matched by meaning, so a very differently worded question can miss. Save the alternative wording as a second instant answer under Training data, or broaden the question you saved.
- Test conversations appear in your Inbox. That is intentional: they are saved and labelled as tests so you can review them later. They do not use your monthly message allowance, so you can test as much as you need: only extremely heavy use (more than 500 test messages in 30 days) starts counting again. If your allowance is already used up, the assistant cannot answer shoppers either, and the Playground reports the same limit.
Contacts: everyone who reached your assistant
Contacts is the directory of every person your assistant has met, built automatically from your chats, your lead form, and orders placed in chat. There is nothing to set up and nothing to maintain: new people appear as they arrive, and everything that belongs to the same person is merged into one row, so a shopper who chatted twice and later left their email is one contact, not three.
Each row shows the person's name, email, what they are to your store, the channel they used, their location when it is known, and how many conversations they have had.
The Type column answers "who is this to me?" and every contact is exactly one of three:
- Customer — they placed an order through your assistant.
- Lead — they gave you an email or phone number but have not ordered, either through your lead form or by sharing it in chat. These are the people worth following up with.
- Anonymous — they chatted and gave a name at most. There is nothing to contact them with.
Search, filters, tabs, and paging all sit in the same card as the table. Use the tabs to show one type at a time, or All for everyone. Search by name, email, or phone; the list narrows as you type. The All channels button next to the search box limits the list to people who used one channel, such as your online store, WhatsApp, or Instagram. The sort button beside it orders the list by newest or oldest activity, name, most conversations, or highest order value, with a tick against the ordering you are using. At the bottom of the card you can move between pages and choose whether to show 10, 25, or 50 people at a time.
Choose Export to download your contacts as a CSV file you can open in Excel, Numbers, or Google Sheets. A short dialog opens first and asks how much to take:
- Current page — only the people you can see right now, in the order they appear.
- All contacts — everyone matching the search, channel, and tab you are using.
Either way the dialog tells you how many contacts the file will hold, so you can check the number before you download. The file includes names, emails, phone numbers, locations, channels, conversation, lead and order counts, order value, and first and last activity dates.
When you choose All contacts you can also set a From and To date to include only people who were last active in that period. Both dates are optional:
- Leave both empty to export every date.
- Set only From for everyone active since that day.
- Set only To for everyone active up to that day.
Both days are included in full, so choosing the same day for both exports that single day. The file is named after the range you picked, so exports for different periods do not overwrite each other in your downloads folder.
Contacts troubleshooting
- Someone I chatted with is missing. Contacts only include people who gave a name, email, or phone number. A visitor who chatted without identifying themselves at all does not appear until they do.
- The same person appears twice. People are merged by email address first, then by phone number. If someone used two different email addresses, or one visit only left a name, there is no safe way to tell it is the same person, so the records stay separate.
- Someone with an email shows as Anonymous. The email has to be attached to that person's own conversation, lead, or order. An email address mentioned inside a chat message is not collected.
- A shopper who bought from my store shows as Lead. The Customer type counts orders placed through the assistant in chat. Orders a shopper placed at your normal Shopify checkout are not counted here.
- The Export button did nothing. Your browser may have blocked the download. Allow downloads from Shopify admin and select Export again. If a warning appears instead, wait a moment and try again.
- The Export button is greyed out. There is nothing to export yet, because no contacts match the filters you are using. Clear the search, choose All channels, or switch to the All tab.
- The Export button in the dialog will not work. The To date is earlier than the From date, and the dialog says so under the field. Pick an end date on or after the start date, or clear one of them.
- The file only has a handful of rows. The dialog was set to Current page, which exports just the people on screen. Choose All contacts for the whole list, or show more people per page first.
- I picked dates but they were ignored. Dates apply to All contacts only, so they disappear while Current page is selected. The page you are looking at is already the rows you asked for.
- The exported file is empty or smaller than expected. The date range only matches when someone was last active, not every time they were active. Someone who first wrote to you inside the range but has chatted since falls outside it. Widen the range or clear both dates to check.
- The file has 10,000 rows and I have more contacts. Exports are capped at 10,000 contacts, newest activity first. The dialog warns you before you download. Use the date range, channel, or tab filters to split a large list into several smaller exports.
- "Couldn't load your contacts." The page could not reach your contacts just now, usually a brief network hiccup. Select Retry, or reload the app page in Shopify admin.
- The page asks you to connect your store. Your store has not finished linking to a Fetchply account. Return to the home screen, finish the setup steps, and open Contacts again.
- A channel shows no one. The channel list covers every channel Fetchply supports, not only the ones you have connected. If you have not connected WhatsApp or Instagram, those choices are empty until you do. Select All channels to go back to the full list.
How product search works
When a shopper asks for products, the assistant searches your live catalog while writing its reply. Product recommendations work in the website chat, WhatsApp, Instagram, Messenger, Slack, and Discord. The website chat shows matching product cards below the answer; the other apps include the product names, prices, availability, and links directly in the reply. The products it names and any cards it shows always come from the same search, including on follow-up questions such as "do you have it in black?" or "anything cheaper?".
If nothing in the catalog matches, the assistant says so instead of guessing. If Product search is turned off in Settings, the assistant answers from its trained content only and does not show product cards.
Your Shopify store is always the assistant's product source. Fetchply's own Commerce catalog is not available for a Shopify-connected assistant, and if it had been switched on earlier, Shopify takes priority automatically so shoppers keep seeing live Shopify products.
Product search troubleshooting
- Product recommendations do not appear. Confirm Product search is enabled in Settings and the Shopify connection is active. If Shopify asks you to reconnect, finish reconnecting before testing again.
- A product appears on the website but the assistant cannot find it. Check that the product is available to the connected store catalog and matches any collection filter you set. Try the product's full name once to rule out an overly broad request.
- WhatsApp, Instagram, Messenger, Slack, or Discord shows no product cards. That is expected. Cards appear in the website chat; other apps put the current product details and links in the written reply.
- A price or stock status changed while the shopper was chatting. Ask again to run a fresh catalog search. Recommendations use the store's current result for each search and do not guess missing price or availability details.
How order lookup works
When a shopper asks about an order they placed — for example "where is my order" or "track #1001" — the assistant needs two things: the order number and one contact detail that matches the order. To protect privacy, it will not reveal an order from the number alone.
The shopper can confirm ownership with either the email address or the phone number used on the order — whichever they have handy. A single match is enough. Phone numbers are matched flexibly, so the shopper does not have to type it exactly the way the store saved it:
- Spaces, dashes, brackets, and dots are ignored (
+1 (555) 123-4567matches555 123 4567). - The country code is optional (
555 123 4567matches+1 555 123 4567). - A local number with a leading
0matches the same number saved with a country code (0300 1234567matches+92 300 1234567), and a00international prefix works in place of+.
Order numbers are matched just as flexibly. If your store adds a prefix or suffix to order numbers, the shopper can give just the number part: for a store whose orders are named SS#1453, typing 1453, #1453, or SS#1453 all find the same order. Spaces and dashes around the number are ignored.
The whole lookup happens as a natural conversation: there is no form to fill in. The shopper simply shares their details in the chat ("track order #1001, my email is [email protected]", or just their checkout email) and the assistant looks the order up and answers in plain language with the status, items, tracking link, and delivery estimate. If something is missing (for example the order number is there but no email or phone), the assistant asks for exactly what it still needs. This works the same everywhere your agent replies: the website chat, WhatsApp, Instagram, Messenger, Slack, and Discord.
When an order includes public tracking links, the assistant prefers the courier's own tracking page over links from tracking apps or aggregators. It checks that page for newer shipment updates such as in transit, delayed, out for delivery, or delivered, summarizes useful updates, and shares the direct courier link when one is available. This works with any courier link included in the order; it is not limited to a fixed list of carriers. If the preferred page is unavailable or takes too long to respond, the assistant tries another supplied tracking link and order lookup still continues with the details Shopify returned.
When a shopper shares only their checkout email, the assistant lists that email's most recent orders (up to five) regardless of whether they are in progress or delivered. If the shopper has multiple recent orders, the assistant highlights their most recent order first with its status, items, and tracking details, while mentioning the other recent order numbers so the shopper can easily ask about an earlier purchase. This is the same on every channel. See Order lookup by email below for what these email-only answers include.
Orders with many items
Answers cover every product on the order, not just the first few. The assistant also states how many products the order contains, and when a product was bought more than once it can give the total number of units as well — so "how many items did I order" gets the same number the shopper sees on their order confirmation.
Each item also carries the option the shopper chose (such as size or colour) and its item code, kept separate from the product name. An order with several lines of the same product therefore stays distinguishable: a shopper can ask which sizes they ordered and get a real answer instead of the same product name repeated.
Two limits are worth knowing:
- Orders with more than 50 different products are listed up to the first 50. The assistant says plainly that the list is partial, still gives the correct product count when it knows it, and offers to connect the shopper with your team for the rest. It never guesses at products it cannot see.
- When a shopper shares only their checkout email and several orders come back, the most recent order — the one described in detail — shows its full item list. The other orders in that answer may show a shortened list. Asking about one of them by its order number shows everything.
If the store is briefly unreachable while the assistant is loading a long item list, the answer still goes out with the items it already has and says the list is incomplete, rather than presenting a partial order as the whole order.
Orders that arrive in more than one shipment
When an order is sent in separate parcels — for example because the items are packed at two different warehouses, or because part of the order was dispatched earlier than the rest — the assistant treats each parcel on its own instead of describing the order as one delivery.
For an order like that, the answer covers, for every parcel:
- which items are inside it,
- its own status, such as shipped, in transit, delayed, out for delivery, or delivered,
- its own tracking number and tracking link, when the parcel has one,
- the date it was sent, and the date it was delivered or is expected.
The order counts as delivered only once every parcel has been delivered. Until then the assistant says clearly which parcel arrived and which one is still on the way, so a shopper is never told their whole order arrived while a second parcel is still travelling. Items that have not been packed into any parcel yet are listed separately as not shipped.
The same applies when only part of an order has been sent: the parcel that is on its way (or already delivered) is described on its own, and the items still waiting to be sent are named so the shopper knows exactly what is outstanding.
Points worth knowing:
- One parcel often has no tracking of its own. If a courier has not returned a number for it yet, the assistant says that parcel has no tracking yet rather than reusing another parcel's number.
- Only one tracking page is checked live. When several parcels have tracking links, the assistant checks the live page for the parcel that has not arrived yet, since that is the one shoppers ask about. The other parcels still get their own tracking link in the answer.
- A cancelled shipment is not counted. If a shipment was cancelled in your store, its items go back to being unshipped and the assistant does not present it as a parcel on the way. A shipment whose shipping label was cancelled is still shown, because its items remain marked as fulfilled — it is reported as needing attention rather than as delivered.
- Collected by the courier is not the same as received. A parcel the courier has picked up is described as on its way; only a parcel the customer collected, or one the courier marked delivered, counts as delivered.
- Very split orders. Orders sent in more than ten separate parcels are described up to the first ten, and the assistant says plainly that there are more rather than implying the list is complete.
- Delivery estimates. Each parcel carries its own estimate where one is known. An order-level estimate always refers to the parcels still on the way, never to the ones already delivered.
Older orders
Order lookup covers your full order history, so a shopper can ask about something they bought many months ago and still get a real answer.
Shopify protects older order data by default, and only opens it up once you approve it for an app. So the first time you open Fetchply in your Shopify admin after this change, Shopify shows you a short permission update to approve. Approving it is what makes older orders searchable. Nothing else changes: your settings, training data, and past conversations stay exactly as they are, and recent orders keep working normally the whole time.
If you connected your store with your own private Shopify app instead of installing Fetchply from the Shopify App Store, order lookup keeps working as it always has and you are not asked to approve anything. Wider order history is only available to the Fetchply app from the App Store.
Order lookup settings
Open your agent in the Fetchply dashboard and go to Integrations → Shopify. When Order lookup is on, an Order lookup section appears with optional tuning:
- Order lookup by email. On by default for new connections (stores connected earlier keep their saved choice). When enabled, a shopper who only has their checkout email can list their most recent orders (up to five) without an order number. If multiple orders exist, the assistant highlights their latest order first and references other recent order numbers for easy follow-up. Because an email alone is weaker proof of ownership, these answers never include street addresses, the customer name, order notes, or personal details found on a tracking page; the shopper still sees shipment updates, status, items, totals, tracking links, and delivery estimates. To see full details for an order, they can verify it the normal way with the order number plus a matching contact. Turn it off if you want every lookup to require an order number.
- Order number example. An example of your store's order numbers, such as
#1001orSO-12345. The assistant uses it to recognize order numbers written in chat (including custom prefixes) and mentions it when asking a shopper for their order number, so they know what to look for. - Custom order fields. A comma-separated list of Shopify order metafield keys in
namespace.keyform, such ascustom.gift_message. When set, the values of those fields are included in verified order answers, so the assistant can confirm things like gift messages or delivery preferences. Additional details a shopper filled in at checkout (cart attributes) are included automatically. Only add fields whose values are safe to show to the customer who placed the order. - Lookup instructions. Free-form guidance the assistant follows when sharing order status, for example "Always mention that orders ship from our EU warehouse."
All of these are optional; order lookup works without them.
If you installed Fetchply from the Shopify App Store, the same settings are also available inside the embedded app: open the app in your Shopify admin and go to Settings → Store settings. Changes save to the same place, so you can manage them from whichever surface you prefer.
How delivery estimates work
Once an order is verified, the assistant can answer "when will it arrive?" with an actual date instead of a shipping status. It combines three things:
- The live order stage from Shopify. Whether the order has shipped, and the ship date and carrier when it has.
- Your shipping policy. The delivery timeframes you set per shipping method under Store policies (for example "Standard shipping: 3-5 business days") and your processing time (for example "1-2 business days").
- Calendar math. Business days are counted automatically, skipping weekends, so a Saturday question gets a Monday-onward answer.
For an order that has not shipped yet, the estimate covers processing time plus delivery time from today. For a shipped order, delivery time is counted from the day it shipped. When the carrier reports its own estimated delivery date to Shopify, that date is used instead, and once the carrier marks the package delivered, the assistant confirms the delivery date rather than giving an estimate. The assistant always presents dates as estimates, never guarantees, and it never invents one: when no timeframe is configured for the order's shipping method, it shares the tracking link and status without a date. Cancelled and refunded orders never receive delivery estimates.
To get the best estimates:
- Fill in the delivery timeframe for each shipping method in Store policies, using a number or range of days such as "3-5 business days" or "1-2 weeks".
- Set your processing time so unshipped orders account for the time before handover to the courier.
- Name your shipping methods (or their carriers) the way they appear on orders, so the right timeframe is picked for each order.
Delivery estimate troubleshooting
- The assistant gives a status but no date. No delivery timeframe matched the order's shipping method. Add or rename the method in Store policies so it matches the shipping option shoppers select at checkout, and make sure its timeframe contains a number of days.
- The estimate looks too generous. Timeframes are read as business days. If your courier delivers on weekends, use a shorter day range to compensate.
- A shipped order shows no estimate. The estimate window has already passed, or the ship date is unknown. The assistant avoids promising a date in the past; the shopper still gets the tracking link for live status.
- The tracking link works, but its latest update is not in the reply. Some tracking pages block automated checks or respond too slowly. The assistant still shares the best supplied tracking link so the shopper can open the live page directly.
Order lookup troubleshooting
- "Those details do not match this order." The email or phone entered is not the one on the order. Ask the shopper to use the exact email or phone from their order confirmation.
- "I couldn't find a matching order." The order number was not found. Check for typos. The shopper can enter it with or without a leading
#, and if your store adds a prefix or suffix to order numbers, just the number part is enough. - The assistant keeps asking for details. It only has the order number, or only a contact detail. Both a valid order number and one matching contact are required (or just the checkout email, when email-only lookup is on).
- An older order is not found, but recent orders are. Your store has not approved the permission update that opens up older order history yet. Open Fetchply from your Shopify admin, approve the update Shopify shows you, then ask about the order again. See Older orders above.
- Order lookup does nothing. Confirm Order lookup is enabled in Settings and the store connection is active. If the store recently needed to reconnect, finish reconnecting and try again.
- A shopper gave only their email and was still asked for an order number. Order lookup by email is turned off for your store. Turn it on under Integrations → Shopify → Order lookup in the Fetchply dashboard, or under Settings → Store settings in the embedded Shopify app.
- A shopper was told part of the order is still coming, but your store shows it as fulfilled. An order marked fulfilled can still hold a parcel the courier has not delivered. The assistant confirms delivery per parcel, so it reports the undelivered one as on the way. Mark the shipment as delivered in your store, or add its tracking, and the next answer follows.
- A parcel shows no items in the answer. The store could not be reached for the parcel breakdown while the answer was being prepared. The assistant still reports each parcel's status and tracking and never merges them; asking again usually returns the item list.
- A shopper asked about a delivered order and it was not listed. Email-only answers in the website chat focus on active orders. The shopper can ask to see all of their orders, or verify the specific order with its order number plus their email or phone.
- An email-only lookup found nothing, but the order exists. The email must exactly match the checkout email on the order. Ask the shopper to use the email from their order confirmation, or to provide the order number instead.
- An email-only answer is missing the delivery address. That is intentional: addresses, names, and order notes are never shown for email-only lookups. The shopper can verify with the order number plus their email or phone to get full details.
- The assistant says it can only see part of an order. The order has more than 50 different products, or the item list could not be fully loaded before the answer went out. This is deliberate honesty rather than an error: the shopper is told the list is partial instead of being given a count that is too low. Share the remaining items with them directly.
- A shopper was given a lower item count than their order confirmation shows. Check whether they are counting units rather than products: an order with 3 products bought twice each is 3 products and 6 units, and the assistant can state either. If the numbers still disagree, ask them to verify the order with its order number plus their email or phone, which loads the complete item list.
- A custom order field does not appear in answers. Check the key is spelled exactly as
namespace.keyunder Custom order fields, and that the order actually has a value for it. Fields only appear on orders where they are filled in. - "I could not check the order right now. Please try again in a few minutes." The store was briefly unreachable or busy when the assistant tried to look up the order. The assistant automatically waits and retries a busy store during the same request, so this message appears only when the store is still unavailable after those attempts. It is temporary — ask the shopper to try again shortly. If it keeps happening, check that the store connection is active and reconnect if prompted.
How shipping and warehouse answers work
When a shopper asks what delivery costs, whether you ship to their country, or where an item ships from, the assistant checks your live shipping settings while it writes the reply. It reads the same shipping zones and rates you set up in Shopify, so it quotes what checkout will charge rather than repeating whatever an old shipping page said.
This matters most when a shipping price looks surprising. If some of your products ship from a different country than the rest, the correct rate for a shopper can be much higher than your usual domestic rate. Because the assistant can see which warehouse the items ship from, it explains the charge — "these ship from our UAE warehouse, so the UK rate is the international one" — instead of treating a correct price as a mistake.
The assistant will also:
- Tell a shopper plainly when you do not deliver to their country, rather than guessing a price.
- Say that shipping is worked out at checkout when your rates come from a live courier quote, because no fixed price exists until then.
- Mention when a rate only applies to part of a country, if your zones are set up by region.
- Report stock per location when you ask it to, so "is it in the UK warehouse?" gets a real answer.
It never states or disputes a shipping price from memory or from page text, and it never tells a shopper your store is broken or offers them a refund or discount to make up for a price. If it cannot check, it says checkout shows the exact cost for their address and offers to pass the question to you.
Keep the prices on your own pages up to date
The assistant is required to check your live store settings before it gives any shipping price, and to treat a figure printed on one of your pages as out of date. Your live settings are what it should quote.
It is worth keeping those pages correct anyway, for two reasons. Shoppers read them directly, and a page that contradicts checkout causes exactly the complaint the assistant is trying to avoid. If you have changed your rates recently, check that your shipping page and your shipping policy both still match what checkout charges.
Delivery times are different: they come from the timeframes you set under Store policies, not from your live shipping settings, so those need to be right for "how long will it take" to be answered well.
How warehouse answers avoid guessing
When you ask about stock, the assistant is given each warehouse's country alongside its quantity, and a single total for the shopper's own country. It uses that total to answer "is this in stock where I am".
It is never allowed to work out a warehouse's country from its name. A location called "Peacock UK" or "UAE Warehouse" is a label you typed, and a name is not proof of a location, so the assistant only states a country when your Shopify location has one recorded.
Because of this, give every location a full address in Shopify, including its country. A location with no country recorded still reports its quantity, but the assistant will say it cannot confirm which country holds the item rather than assuming one from the name.
Turn it on or off
This is on by default. To change it, open Settings and switch Shipping and delivery answers. With it off, the assistant stops answering shipping questions from your store settings and points shoppers to checkout instead.
Give permission
Reading shipping rates, warehouse locations, and stock needs extra permission from Shopify. The first time you open the app after this feature is added, Shopify asks you to approve the update. Until you approve it, everything else keeps working normally and only shipping answers are unavailable.
Troubleshooting
- "Checkout shows the exact shipping cost for your address." The assistant could not read your shipping settings, so it deliberately avoided guessing. Open the app in Shopify admin and approve the permission update if you have not yet. If you already have, wait a minute and ask again — a store that is briefly busy recovers on its own.
- The assistant will not give a shipping price. Check that Shipping and delivery answers is switched on in Settings, and that you have approved the permission update. If your rates come from a live courier service, there is no fixed price to quote and the assistant will correctly say it is calculated at checkout.
- The price it quotes is not what I expected. The assistant reads your shipping zones directly. If it names a zone or a warehouse you did not expect, check Settings → Shipping and delivery in your Shopify admin: a product assigned to its own shipping profile uses that profile's rates, not your general ones.
- A rate I just changed is not reflected yet. Shipping settings are re-read periodically rather than the instant you save them, so a change can take a short while to appear. Ask again after a few minutes.
- It says you do not ship somewhere you do. A zone with no active rate counts as no delivery. In Shopify, open the zone and confirm at least one rate is turned on.
- Stock per location is missing. Stock answers need the inventory permission and only work for products where Shopify is tracking quantity. A product with tracking turned off has no count to report.
- It says it cannot confirm which country has the stock. The warehouse holding the item has no country recorded in Shopify. Open Settings → Locations, add a full address including the country, and ask again. The assistant deliberately will not guess the country from the location's name.
- It quoted an old price that appears on one of my pages. The assistant is required to read your live settings first, so this should not happen. Report the conversation to us, and in the meantime correct the figure on the page so the two agree.
- A shopper was quoted less than checkout charged them. Check whether the zone covering their country is set up by region in your Shopify admin. If their address falls outside the regions the zone lists, checkout uses a different zone and a different price. Tell us if you see this, so we can look at the conversation with you.
Shopping cart in chat
When the chat runs on your Shopify storefront, shoppers can shop without leaving the conversation. The chat uses the same cart as the rest of your store, so anything added in chat also appears in your theme's cart and at checkout.
- Product answers appear as product cards. A product with a single choice shows Add to cart directly on the card, so adding it takes one tap.
- Follow-up questions stay on topic: when a shopper asks about a product that was just shown ("tell me more about the second one", "do you have it in size 42?"), the assistant keeps talking about that product instead of searching for something new. If it cannot tell which product the shopper means, it asks instead of guessing.
- Products with sizes, colors, or other options open See details: a product sheet with the photo, the price and availability of the selected option, simple option buttons, and a pinned Add to cart button. Sold-out options are crossed out.
- After adding an item, the shopper can continue chatting or go straight to View cart or Checkout.
- The Cart tab always shows the current cart. Shoppers can change quantities, remove items, and select Checkout, which opens your store's normal secure checkout.
- The assistant can see the shopper's current cart while chatting and answers cart questions in whatever language the shopper writes, such as "what's in my cart?" or "how much is my total?".
- The assistant never changes the cart itself. When a shopper asks it to add, change, or remove something, it shows the exact product card so the shopper can add it with one tap, or points them to the Cart tab to adjust quantities and remove items. It can also offer a one-tap shortcut to open the cart or go to checkout; nothing happens until the shopper taps it.
Cart troubleshooting
- The cart says it is unavailable. The cart works only when the chat is open on your connected Shopify storefront. Dashboard previews and chats embedded on other websites cannot access it; open your store website and try again.
- A subscription product cannot be added. Items that need a subscription or purchase terms require choices the chat cannot collect. The shopper is guided to the product page to finish adding them.
- An item could not be added. Its inventory may have just changed. The shopper can pick another option in the product sheet or try again.
- Discount codes, shipping, and taxes. The cart shows the subtotal and any discounts your store already applied. Discount codes are entered at checkout, and shipping and taxes are always calculated there.
Cash on delivery confirmation
If you sell cash on delivery, Fetchply can ask each shopper to confirm their order on WhatsApp before you ship it, and write their answer onto the Shopify order as a label. Once it is switched on, Analytics gains a COD Verifications tab showing how many orders were confirmed, cancelled, or still waiting, and the shipping cost you avoided. See Cash on delivery confirmation.
Abandoned cart recovery
Fetchply can automatically follow up when a shopper starts checkout, enters their contact details, and leaves without paying. The reminder includes what they left in the cart and a link that reopens their exact checkout, so finishing the purchase takes one tap.
Recovery is off by default. To turn it on, open your agent in the Fetchply dashboard, go to Integrations → Shopify, and enable Abandoned cart recovery. You can also choose:
- Wait time. How long after the checkout is abandoned before the reminder goes out (30 minutes to 24 hours; 2 hours by default). Waiting a little gives shoppers a chance to come back on their own.
- WhatsApp template. With WhatsApp Business connected, reminders are sent on WhatsApp when the shopper left a phone number and opted in to text marketing. Enter the name of a Meta-approved message template with two variables: the first is filled with the shopper's first name, the second with the checkout link. Without a template (or without WhatsApp), reminders are sent by email instead.
A few guarantees are built in:
- One reminder per checkout, ever. A shopper is never messaged twice about the same cart, no matter what.
- Consent is required. Email reminders go only to shoppers who accepted email marketing at checkout; WhatsApp reminders go only to shoppers who opted in to text marketing. Consent is re-checked right before sending, so a shopper who unsubscribes in the meantime is skipped. Shoppers without consent or contact details are skipped too.
- Every email has an unsubscribe link. A shopper who clicks it never receives another cart reminder email from your store, even for future abandoned carts.
- No backlog blasts. Only checkouts abandoned after you enable the feature (within the last 24 hours) get reminders. Turning the feature on never messages your historical abandoned carts.
- Recovered carts are counted. When a shopper completes their checkout after a reminder, the recovery is recorded, and the settings card shows reminders sent and checkouts recovered over the last 30 days.
Shopify can send its own abandoned checkout email. If you keep both on, shoppers may receive two reminders; consider turning off one of the two in your Shopify admin's checkout settings.
Cart recovery troubleshooting
- No reminders are going out. Check the feature is enabled and the store connection is active. Reminders only cover checkouts abandoned within the last 24 hours where the shopper entered contact details and consented to marketing; browsing without starting checkout leaves nothing to recover.
- A shopper with an abandoned cart got no reminder. They likely did not opt in to marketing at checkout, unsubscribed from cart reminders earlier, or abandoned before the feature was enabled. All of these are intentional.
- Reminders arrive by email even though WhatsApp is connected. A WhatsApp template name must be entered in the recovery settings, and the shopper needs a phone number with text-marketing consent. Otherwise the reminder falls back to email.
- WhatsApp reminders stopped after a template change. The template name and language must exactly match an approved template in your WhatsApp Business account, with two body variables. Fix the template and new reminders resume; a checkout whose send failed is not retried, so it will not be double-messaged later.
- Shoppers get two reminders. One is from Shopify's own abandoned checkout email. Turn off either Shopify's reminder or Fetchply's recovery so shoppers get exactly one.
Setup troubleshooting
- The app stays on "Setting up your assistant". Connecting normally takes only a few seconds. If the screen persists (for example after a network hiccup during install), reload the app page in Shopify admin; setup resumes automatically and the setup guide opens.
- The home page still says "Turn on chat" after you enabled the widget. The Embed app to your theme card reads the live state from your published theme, so it can take a moment or a page reload to show the green On badge after you save the theme editor. If it still shows Turn on chat, confirm you enabled Fetchply Chat under App embeds on your published theme (not a draft or preview theme) and saved — the card only reports the published theme, so enabling the chat on a draft or preview theme leaves it showing Turn on chat. The badge is informational only: if the chat already appears on your storefront, the widget is on regardless of what the card shows.
- The app says "Fetchply is temporarily unavailable". The app could not check your store's connection just now, usually because of a brief network hiccup. Your connection is not lost, and if your assistant is already set up it keeps answering shoppers on your storefront. The app retries automatically; if the message stays, select Try again or reload the app page in Shopify admin.
- Store policies look empty right after connecting. Policies import in the background and usually appear within a few minutes. You can also select Import from Shopify on the policies step to fill them in immediately.
- The app asks you to connect your Fetchply account even though your store is already connected. Home shows the three-step Get started card and Analytics shows "Setting up your assistant", while your assistant keeps answering shoppers on your storefront. This affected stores where store settings had been saved from the Fetchply dashboard after installing from the App Store. Saving settings no longer affects your store connection. If you still see it, reload the app page in Shopify admin; if the prompt stays, contact support with your store address and we will restore the link without any loss of training data, conversations, or plan usage.
- You cannot enter store credentials in the dashboard. When your store is connected through the Fetchply Shopify app, that app manages access for you and the dashboard will not accept manual credentials. To switch to your own custom app instead, remove the Shopify connection in the dashboard first.
Use the manual credentials connection only when the App Store install is unavailable or support directs you to it.
The embedded app also provides Playground, Inbox, Contacts, Customize, Training data, Store policies, Analytics, Extras, Integrations, Settings, and Plan & billing. Advanced controls open the full Fetchply dashboard.
The Settings page gathers the rest into tabs: Agent status (storefront availability, your avatar, product search and order lookup, and the Fetchply badge), Store settings, Email alerts, Widget embed (theme app embed instructions, chat button position, and manual install code), Cash on delivery, and Advanced (store policies, the Guided Flows builder, and the link into your full Fetchply settings).
Under Settings → Agent status you can also upload Your avatar: a profile photo shown next to your replies when you answer shoppers live in the chat widget. Use a square PNG, JPG, GIF, or WebP image up to 512 KB; it applies immediately and stays in sync with the avatar on your Fetchply account settings page.
The Fetchply badge switch controls the small credit under the message box in the chat widget. On your storefront it reads Powered by next to a 24-pixel Fetchply logo, with the name not spelled out, so it stays small enough to sit quietly in your theme; selecting it opens fetchply.com in a new tab. Paid plans can switch it off; on the free plan it stays on and the switch is disabled.
The Settings page also has a Test your assistant link next to the readiness badge, and the home screen has a Test and fix answers button. Both open Playground, described above, where you can ask questions with your current settings and training and correct any answer that is wrong. They appear once your store is connected and your assistant exists; if you do not see them, finish the setup steps on the home screen first.
Extras
Extras gathers the features that work alongside everyday chat, so they stay one click away without crowding the menu. Each box opens its own screen:
- Guided flows — step-by-step conversations that walk shoppers through tasks like order tracking, returns, product finders, and lead capture. The flow builder opens in your Fetchply dashboard in a new tab and signs you in automatically; see Guided flows. The same launcher stays under Settings → Advanced.
- COD verification — ask shoppers to confirm cash-on-delivery orders on WhatsApp before you ship them, and see how many were confirmed or cancelled. It opens the same screen as Settings → Cash on delivery; see Cash on delivery confirmation.
- Proactive chat — create, edit, pause, and delete the messages that nudge visitors on your storefront, with each one's shown and clicked counts; see Proactive messages.
- Functions — connect your own endpoints so your assistant can fetch live answers during a chat, such as order status or stock. It opens in your Fetchply dashboard in a new tab.
Proactive chat used to sit in the menu on its own and now lives here; the page and your saved campaigns are unchanged.
If a box opens a screen that asks you to connect your store first, return to the home screen, finish the setup steps, and try again. Guided flows and Functions need a connected, active store before their dashboard link works; if the link does not sign you in, the normal login appears and returns you to the same page afterwards.
Integrations
The Integrations menu gathers everything you can connect to your assistant, grouped in two sections. Channels covers the messaging apps your assistant can answer on: Instagram DMs, WhatsApp Business, Facebook Messenger, Slack, and Discord. Tools and automation covers Lead Capture, Functions, Webhooks, Automations, Guided Flows, Commerce, and Google Sheets. Choose one to open its setup page in your Fetchply dashboard in a new tab. You are signed in automatically, so you land ready to connect.
You need a connected, active store with an agent before these open. If you see a prompt to connect first, return to the home screen and finish setup, then try again. If the button does not sign you in, the normal login appears and returns you to the same page after you sign in.
For a custom theme or non-Shopify page, Settings → Widget embed includes a manual script, inline iframe, and data-fetchply-open or data-fetchply-message buttons.
Plans and billing inside the app
Open Plans & billing in the app to see what your store is using this cycle, compare plans, and change plan. Everything is billed by Shopify on your normal store invoice using the payment method Shopify already holds, so we never see your card details. You can change or cancel your plan at any time from this page.
Your free trial
Your store gets one 7-day free trial, and it applies to whichever paid plan you choose first — Starter, Pro, or Business. You are not charged during the trial, and Shopify always asks you to approve a charge before it starts.
The trial is offered once per store. If you have already used it, the buttons on this page say so and your next plan begins billing straight away, so there is no surprise on your invoice. Cancelling and choosing a plan again later does not start a second trial.
Usage this cycle
The Usage this cycle panel shows how many AI replies your agent has sent against your allowance, together with any top-up replies you have bought. Your cycle runs for one month from the date your store was connected or your plan started, not from the first of the calendar month, and the exact dates are shown above the meter.
When your usage is heading towards the limit, this panel tells you roughly how many days are left at your current pace and offers the next plan up. Replies you and your team send to shoppers yourselves are never counted and are unlimited on every plan, including Free.
Choosing a plan
Each plan card leads with the one thing it changes for you:
- Starter is about not running out. Many more AI replies each month, room for more agents and teammates, and a record of every change your team makes.
- Pro is about not maintaining it. Change a price or a product and your agent's answers update themselves, and the Fetchply badge comes off your chat widget.
- Business is about room to grow. An agent for each store, brand, or language, 20 teammates, and exports of any conversation or lead to a spreadsheet.
Switch the toggle to Yearly to see the once-a-year price and the exact amount you save compared with paying monthly. The Compare plans table below the cards lists every difference, and every channel — website chat, WhatsApp, Instagram, Slack, Shopify, and WooCommerce — is included on every plan, Free included.
Running out mid-month
If your AI replies run out before your cycle resets, your agent stops answering shoppers automatically but nothing breaks: your own live replies, lead capture, and conversation history keep working. You have two ways out. Buy a top-up pack from Top up this store for immediate extra replies that never expire, or move to a bigger plan, which raises your allowance right away.
Plans and billing troubleshooting
- The page says my plan is Free but I paid in Shopify. Your plan is re-read from Shopify every time this page loads. Refresh once; if it still disagrees after an hour, contact us and we will reconcile it.
- I approved a charge but nothing changed. Return to Plans & billing. Confirmation usually lands within a few seconds of Shopify sending you back. If it has not appeared after a few minutes, refresh — confirmations are retried automatically.
- I declined the charge by mistake. Nothing was billed and your plan is unchanged. Choose the plan again when you are ready.
- I was not offered a free trial. The trial is granted once per store. If this store has had a paid plan before, the trial has already been used and cannot be reissued.
- I want to move from monthly to yearly. Switch the toggle to Yearly and choose your current plan again. Shopify replaces the existing charge and applies its own proration rules.
- My plan says it will switch to Free. A cancellation is scheduled. You keep everything you are paying for until the end of the period you have already paid for, then move to Free with all your data, agents, and settings intact.
- A top-up pack has not arrived. Packs are confirmed a moment after you approve the charge in Shopify. Refresh the page; if the balance has not appeared within a few minutes, contact us with the date of the charge.
- My agent stopped answering and I am not sure why. Check the usage meter first. An exhausted allowance is the most common cause, and the panel says so plainly along with what to do next.