Fetchply Docs
Integrations and channels

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 quick setup

The first time you open the app, a five-step setup walks you through the essentials. Each step saves when you select Save & continue.

  1. Meet your assistant. Name it, pick the language it answers in, and choose a response style. The style fills in the AI instructions, which you can edit freely.
  2. Make it look like your brand. Choose a Color scheme, a Chat icon (shown next to replies), a Launcher icon (the chat button on your store; select See more to browse every icon), and an optional Launcher label such as "Chat with us".
  3. Teach it your store policies. Select Import policies from Shopify to fill in returns, shipping, and contact details from your store, then check each tab. If you would rather type them yourself, select Write them myself instead. You can skip this step and come back later.
  4. Collect contact details. Turn on lead capture to show a short form in the chat. Choose what it asks for (name, email, phone), when it appears, and whether visitors can skip it. A sentence under the options shows what visitors will see. This step is optional too.
  5. Turn on chat in your store. Select Turn on chat in theme editor, switch on Fetchply Chat, and save your theme. When you come back to the setup tab it checks again on its own and shows Chat is live on your store. If it has not updated yet, select I turned it on. Check again.

Select Finish setup on the last step to go to your home page. Anything you skipped stays on your home checklist, and you can pick it up from there. Select Finish later at any time to leave the setup early.

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. Select Retest under the fixed answer to ask the same question again and 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.
  • Retest — appears after you fix an answer. It asks the same question again in one click so you can check the assistant now uses your wording. It is greyed out while another answer is still arriving.
  • 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.

Training data: edit and retry

Under Training data you can correct what your assistant learned without deleting and re-adding it:

  • Edit an instant answer. On the Instant answers tab, select Edit next to an answer, change the question or the answer, and select Save. Images and audio attached to the answer stay as they are. To change those, open the answer in Fetchply with Open in Fetchply.
  • Edit a text snippet. On the Sources tab, select Edit on a Text row. The dialog loads the saved text; change the title or the text and select Save. The row shows Processing while your assistant re-learns it, then Ready.
  • Retry a page that failed. A Page URL row with the Error badge has a Retry button. Select it to read the page again. The row shows Processing until it finishes.

Training data troubleshooting

  • The edit dialog stays open after I select Save. The save did not go through, and a message at the bottom of the screen says why. Your changes are still in the dialog, so fix the problem and select Save again.
  • "Text snippet is too short." A snippet needs at least a few words. Add more text, or remove the snippet if you no longer need it.
  • "Training data exceeds your plan limit." The edited snippet would take you over the training size your plan includes. Shorten it, remove other sources, or upgrade under Plan & billing.
  • "A training job is already in progress." Your assistant is still learning other content, and only one learning run happens at a time. Wait for the rows marked Processing to finish, then select Retry again.
  • A page keeps failing after Retry. The page may be private, behind a login, or blocking automated readers. Open it in a private browser window to check it loads for everyone, or copy its text into a text snippet instead.
  • "Couldn't load this snippet." The saved text could not be read just now. Close the dialog and select Edit again in a moment.

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 buttons next to the search box narrow the list further:

  • All sources — show only people who left a lead (Has a lead), chatted with your assistant (Has a conversation), or ordered in chat (Has an order). A person can match more than one: a shopper who ordered and also filled in your lead form appears under both.
  • All channels — show only people who used one channel, such as your online store, WhatsApp, or Instagram.
  • Last active — choose an Active from and an Active until date to show only people whose most recent activity falls in that period. Both dates are optional: set only Active from for everyone active since that day, or only Active until for everyone active up to that day. Both days are included in full. The button shows the dates you picked; select Clear dates to go back to every date.

The sort button 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 every search, filter, date, 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 filtered by Last active, the file is named after those dates, 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 sources and All channels, clear the Last active dates, or switch to the All tab. Export is also greyed out while the Last active dates are the wrong way round.
  • "The start date must be on or before the end date." The Active until date is earlier than Active from, so nobody could match. The list keeps showing the last results until you 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.
  • Fewer people than expected match my dates. Last active 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 select Clear 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 Last active, the source and channel filters, or the tabs 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-4567 matches 555 123 4567).
  • The country code is optional (555 123 4567 matches +1 555 123 4567).
  • A local number with a leading 0 matches the same number saved with a country code (0300 1234567 matches +92 300 1234567), and a 00 international 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.

For a parcel on its way, the assistant also says where it is right now, such as in transit, out for delivery, or delivered, with the time and place of the latest update. See Live shipment updates below for where those updates come from.

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, and describes the others by date and items so the shopper can ask about an earlier purchase. These answers never show order numbers, because an order number plus the checkout email is what unlocks an order's full details. This is the same on every channel. See Order lookup by email below for what these email-only answers include.

Live shipment updates

When a shopper asks where their parcel is, the assistant uses the newest shipment updates it can find, in this order:

  1. Shopify's own shipment updates. Shopify records these for shipping labels bought in Shopify, for carriers Shopify tracks automatically, and for tracking apps that send their updates back to your Shopify orders. The assistant shares the latest status, such as in transit, delayed, out for delivery, or delivered, along with when and where it happened.
  2. The courier's tracking page. When Shopify has no update for the parcel, or its newest update is more than a day old, the assistant checks the tracking link on the order for something newer. It prefers the courier's own tracking page over links from tracking apps or aggregators, and it works with any courier link on the order, not a fixed list of carriers. If that page is unavailable or too slow, it tries another tracking link on the order.
  3. The order itself. If neither has anything new, the shopper still gets the status from Shopify, the tracking link, and the delivery estimate.

Parcels that are already delivered are not checked again, so those answers come back faster. There is nothing to set up, and it works on every channel where order lookup works.

Points worth knowing:

  • Many local and regional couriers do not send updates to Shopify. For those, Shopify only keeps the tracking number and link, so the assistant reads the courier's tracking page instead. If you use a tracking app that can sync shipment updates to your Shopify orders, turn that option on in the app and the assistant uses those updates too.
  • An update is only as new as the courier's last scan. If the courier has not scanned the parcel for a while, the latest update can be a few days old. The assistant says when it happened instead of presenting it as new.
  • Email-only lookups include each update's status, place, and time, but not the courier's own notes, because those can name the person who received the parcel.
  • A few couriers' tracking pages are never checked. For these couriers, the assistant answers from Shopify's own shipment updates and always shares the tracking link, so shoppers can open the courier's page themselves. This applies on every channel.

Shipment update troubleshooting

  • The assistant only says the parcel shipped, with no live status. Your courier does not send updates to Shopify and its tracking page could not be read. If you use a tracking app, check that it syncs shipment updates to your Shopify orders. The shopper still gets the tracking link to check the courier's site directly.
  • The reply mentions an update from a few days ago. That is the most recent scan the courier reported. When Shopify's newest update is more than a day old, the assistant also checks the courier's tracking page for anything newer, so an older update usually means the courier has not scanned the parcel since, or its tracking page could not be read.
  • The assistant never mentions anything from one courier's tracking page. Some couriers' pages are not checked. For those, the answer uses Shopify's own shipment updates and the tracking link. To give shoppers live status for that courier in chat, use a tracking app that syncs shipment updates to your Shopify orders.
  • A delivered parcel's answer has no update from the courier's page. That is expected. Once a parcel is confirmed delivered, the assistant confirms the delivery date instead of checking the courier's page again. The tracking link is still shared.

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.
  • Each parcel shows its own latest update. When Shopify has shipment updates for a parcel, the answer includes that parcel's newest one.
  • Only one courier 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, and only when Shopify has no recent update for it. 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 describes the others by date and items. Because an email alone is weaker proof of ownership, these answers never include order numbers, street addresses, the customer name, order notes, or personal details found on a tracking page or in a courier's notes; 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 from their order confirmation 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 #1001 or SO-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.key form, such as custom.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. When Shopify already has a recent update for the parcel, the assistant answers from that and does not open the courier's page. Otherwise, some tracking pages block automated checks or respond too slowly. Either way the assistant shares the best tracking link so the shopper can open the live page directly. See Live shipment updates above.

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.
  • An email-only answer does not include the order number. That is intentional. The order number plus the checkout email unlocks an order's full details, including the delivery address, so it is never shown to someone who only gave an email. The shopper can find the number in their order confirmation email.
  • 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.key under 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.

Catalog and product search settings

When Product search is enabled, shoppers can ask about products and the assistant suggests items directly in the chat with interactive cards and links.

  • Hide product prices. Off by default. Available in the embedded app under Settings → Agent status (and under Integrations → Shopify in the Fetchply dashboard). When enabled, product cards, carousels, and chat replies conceal product prices and discount tags. This is ideal for wholesale stores, B2B merchants, or businesses offering custom quotes.
  • Collection filters. Restrict recommendations to specific Shopify collection handles (such as summer-sale or new-arrivals). Leave empty to include all published collections.

Catalog troubleshooting

  • Product cards still show prices after turning on Hide product prices. Ensure you saved your changes in the settings bar or clicked Save settings. New product suggestions and opened cards immediately conceal prices and discount percentages once saved.
  • WhatsApp, Instagram, or other messaging channels show no product cards. That is expected. Interactive card carousels appear in the website widget; other messaging apps provide product titles, descriptions, availability, and direct links without cards.

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 rates you set up in Shopify, so it quotes what checkout will charge rather than repeating whatever an old shipping page said.

This works whichever way your shipping is set up in Shopify: with shipping profiles and zones under Settings → Shipping and delivery, or with Shopify's newer market-based shipping, where you add shipping options to each market under Markets. The assistant checks which one your store uses each time it refreshes, so nothing changes for you when Shopify moves your store to market-based shipping.

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.
  • Check stock in each warehouse every time it looks up shipping for specific items, so "why is my shipping so high?" is answered with where each item is actually in stock, and "is it in the UK warehouse?" gets a real answer. It checks the exact size and colour the shopper picked: the ones in their cart in the website chat, or the ones they named. If they ask about a different size, it checks that size instead.
  • Tell a shopper when an item is not stocked in their country but can still be shipped to them from another warehouse.
  • Give the one rate that applies to the shopper's parcel when your rates depend on weight. It adds up the weight of their items, so it says "£25 for these items" instead of listing every weight band. When the items are close to the edge of a band, it gives both possible rates, because checkout may add the weight of the box.
  • Apply your free-shipping threshold when the shopper's cart is in your store's currency. When their cart shows another currency, it leaves the threshold to checkout instead of converting the amount.
  • Suggest other sizes or colours that are in the shopper's country. When the size they picked is only in a warehouse abroad, it names up to three other sizes or colours of the same product that are in a warehouse in their country, closest match first, so they can get the cheaper local delivery.

Answers lead with the reason for the charge and are said plainly and confidently, for example: "Both items ship from our UK warehouse because neither is in stock in the UAE, so the UK's international rate applies." The assistant does not apologise for a correct charge.

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 work like this: if your store uses market-based shipping and you set a delivery time on a rate, the assistant gives that time as an estimate for that rate. Otherwise delivery times come from the timeframes you set under Store policies, so those need to be right for "how long will it take" to be answered well.

Stores using market-based shipping

With market-based shipping, each market has its own shipping options, and a rate can apply to only some products (a collection) or only when the order ships from certain locations. The assistant follows the same rules checkout does:

  • The most specific market wins. If you have a GCC market and a UAE market inside it, a shopper in the UAE gets the UAE market's rates. A shopper in Kuwait, which only the GCC market covers, gets the GCC rates.
  • Markets without their own shipping use their parent's. If a market has no shipping options of its own, the assistant uses the shipping of the market it sits inside, just as checkout does.
  • State or province markets. If you sell to parts of a country through separate state or province markets, the assistant asks the shopper which state or province the order is going to before quoting a price.
  • Several possible rates. When more than one rate could apply, for example a different price depending on which warehouse ships the item, the assistant lists each one with its condition. For mixed carts it does not add prices together, because checkout decides the final total.
  • Only markets for online shoppers. Markets for business customers, retail locations, or sales channels are not used to answer shoppers in the chat.

The assistant needs permission to read your markets. See Give permission below.

How warehouse answers avoid guessing

Whenever the assistant checks shipping for specific items, it is given each warehouse's country alongside its quantity, a total for the shopper's own country, and a total for the warehouses whose shipping rates reach the shopper. It uses the first total to answer "is this in stock where I am" and the second to answer "can you send it to me". For example, a size held only in your UAE warehouse can still be offered to a shopper in Kuwait if your UAE warehouse ships there.

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.

Stores that ship from more than one warehouse

In Shopify, one shipping profile can have several groups of locations, each with its own shipping zones and rates. For example, your UK warehouse might charge £5.99 to the UK (free over £80) while your UAE warehouse charges £35 by DHL to the same address. The assistant reads each group's rates separately and always says which warehouse a rate belongs to, so a shopper hears the rate for the items they are actually buying.

  • Answers for the size or colour asked about. When a shopper names a size or another option, the assistant checks which warehouse holds that exact variant and gives that warehouse's rates. Expect answers like "size 56 is only in our UAE warehouse, so the £35 DHL rate applies".
  • Stock in more than one warehouse. When the variant is in stock in several warehouses that ship to the shopper, the assistant gives each option and says checkout decides which one sends it. Shopify chooses the warehouse at checkout from your stock and your own fulfilment settings, which the assistant cannot see.
  • The rate shown at checkout. When a shopper names the rate their checkout shows (for example "INTL DHL"), or sends a screenshot of it, the assistant matches it to the warehouse that charges it and explains the charge from there. A checkout line called just "Shipping" means Shopify combined rates from several warehouses, so the assistant gives the rates per warehouse instead.
  • Baskets from several warehouses. Items that ship from the same group of locations share one charge. Items from different groups or shipping profiles are charged separately. The assistant does not add rates up itself, because checkout shows the exact total.
  • Only warehouses that send online orders. A location you have deactivated in Shopify, or one that does not fulfil online orders, is never given as the place an item ships from.

The products the assistant checks

Before it answers about shipping or stock, the assistant checks each product against your store. If it has the wrong product, it searches your catalog and checks again with the product it finds, so it never answers for something you do not sell. A product link, or the product page the shopper is on, works too, including product addresses written in other alphabets.

A product that is a draft or archived in Shopify is described as not available to buy online, and no shipping or stock is quoted for it.

It confirms the items before explaining a shipping charge

Shipping depends on which items are in the order, because each warehouse has its own rates. So when a shopper has a problem with shipping for an order, such as "why is my shipping so high?" or "is this in stock to ship to me?", the assistant first checks which items they mean:

  1. It lists the items it thinks they mean: the shopper's cart (in the website chat, or the cart list a shopper brings to WhatsApp from your website chat), the items named in their message, or the products already discussed. If it has none of these, it asks which items and sizes are in their order.
  2. It asks the shopper to confirm the list, or to correct it. It does this even when the shopper already named their items, so nothing is explained for the wrong order.
  3. Once they confirm, it checks shipping and stock for exactly those items, then explains the charge and where the items ship from.

Expect one extra message before the answer. A shopper who opens WhatsApp from your website chat with only their cart list, and no question yet, is simply asked how the assistant can help. A general question that does not involve an order, such as "do you ship to Dubai?" or "how much is shipping to the UK?", is answered straight away with your rates for that country.

The assistant also never converts money between currencies. Your shipping rates are quoted in the currency you set them in, and a shopper who sees prices in their own currency at checkout is told that checkout shows the exact converted amount.

On WhatsApp, Instagram, and Messenger, the assistant also remembers which products it showed earlier in the conversation and what it found when it checked. "The black one" or "both in 56" then means the right products, and a later answer agrees with an earlier one. It checks your store again before repeating a price or a stock level.

Turn it on or off

Live shipping answers are on for every connected store once the permission below is approved. There is no switch for them in the app yet. If you want them turned off, for example because another app handles all of your shipping, contact us and we will turn them off for your store.

Give permission

Reading shipping rates, warehouse locations, stock, and (for market-based shipping) your markets needs extra permission from Shopify. The first time you open the app after a new permission is added, Shopify asks you to approve the update. Until you approve it, everything else keeps working normally and only shipping answers are unavailable.

If you connected your store with your own custom app instead of installing Fetchply from the Shopify App Store, Shopify does not prompt you. Add the read_markets permission (shown in Shopify as access to markets) to your custom app's Admin API access, alongside the shipping, locations, and inventory permissions, then save your credentials in Fetchply again.

The exact checkout price

With one more permission, read access to draft orders, the assistant asks Shopify for the price checkout charges for the shopper's exact items before it answers. Shopify works that price out itself, including weight-based rates, free-shipping thresholds, live courier quotes and automatic shipping discounts. The assistant then says it plainly, for example: "Shipping for these two items to Dubai is AED 127.00, because both ship from our UK warehouse."

This permission is read only. Nothing is created in your store: no draft order, no cart, and nothing your customers or your team can see. The assistant sends Shopify only the items and the destination's country, state, city and postcode, never the shopper's name or street.

  • Installed from the Shopify App Store: Shopify asks you to approve the update the next time you open the app.
  • Your own custom app: add the read_draft_orders permission (shown in Shopify as read access to draft orders) to its Admin API access, then save your credentials in Fetchply again.

Until you approve it, the assistant keeps working out the price from your shipping settings, as described above. It also uses that method when the items ship from more than one warehouse, or when it does not know exactly which items and how many the shopper is buying.

It can also mention local pickup and local delivery, if your store offers them for the shopper's items and address.

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 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 settings directly. If it names a zone, market, or warehouse you did not expect, check your Shopify admin. With shipping profiles, a product assigned to its own profile uses that profile's rates, not your general ones. With market-based shipping, check the shopper's market under Markets: a market inside another market uses its own rates first, and a rate limited to a collection only applies to products in that collection.
  • Shopify moved my store to market-based shipping and answers stopped. Open the app in Shopify admin and approve the permission update so the assistant can read your markets. Until then it tells shoppers that checkout shows the exact cost.
  • It asks shoppers for their state or province. Your store has separate state or province markets in that country, so the price depends on where in the country the order goes. This is expected.
  • It says it cannot confirm shipping for a country I serve. This happens when two separate markets both include that country and neither sits inside the other, or when a market has no shipping options of its own because another shipping app provides the rates. Put the country in one market (or nest one market inside the other), and the assistant can answer. It also happens when a shopper names their state or province in a way the assistant does not recognise; it then asks again or points to checkout rather than guessing.
  • It says you do not ship to a country in one of my markets. Check that shipping is turned on for that market under Markets, and that the market is active. A market with shipping turned off has no delivery at checkout either.
  • 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 (or, with market-based shipping, the market) 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. Also check which warehouse holds the size they ordered: a size stocked only in another country ships at that warehouse's rate. Tell us if you see this, so we can look at the conversation with you.
  • It quotes a rate from a different warehouse than I expected. Check where that size is stocked: open the product in Shopify, select the variant, and look at its quantity at each location. The assistant gives the rate of the warehouse that holds the size. Then check which group of locations that warehouse belongs to under Settings → Shipping and delivery.
  • It lists two warehouses and says checkout decides. The size is in stock in more than one warehouse that ships to the shopper. Shopify picks one at checkout using your fulfilment settings, which the assistant cannot see, so this is the accurate answer.
  • It says it cannot tell which warehouse sends a size. The product does not track quantity in Shopify, or it keeps selling when out of stock, so no stock count shows where it is. Turn on Track quantity for the product if you want answers per warehouse.
  • It says a product is not available to buy online. The product is a draft or archived in Shopify. Set its status to Active if you sell it.
  • The price it gives is different from checkout. Check that you approved the draft orders permission (see The exact checkout price). Without it, the price is worked out from your shipping settings, which cannot see courier quotes or shipping apps that change rates at checkout. Also check whether the shopper changed their cart or address after asking.
  • It does not give one exact price for an order from two warehouses. This is expected. When items ship from different warehouses, it explains the rate of each warehouse, and checkout shows the total.
  • It lists several weight-based rates instead of one. The products have no weight in Shopify, or the parcel is close to the edge of a weight band. Open each product, select the variant, and enter its weight under Shipping. Then the assistant can give the one rate that applies.
  • It suggests other sizes the shopper did not ask for. The size they picked is not in stock in a warehouse in their country, so it names sizes or colours of the same product that are, for the cheaper local delivery. It suggests at most three, and only in that case.
  • A warehouse shows 0 for an item while Shopify shows a negative number. The item sold more than you had there, so none is on hand. The assistant counts it as 0 and never subtracts it from another warehouse's stock.
  • A shopper with a very large cart. The assistant checks up to 50 different products in one go. For anything beyond that, it tells the shopper checkout shows the shipping.
  • It asks shoppers to confirm their items before explaining shipping. This is expected for questions about an order or a charge they saw at checkout. It lists the items and waits for a reply, then answers. It asks once per conversation, so later questions about the same order are answered straight away. A shopper who comes back a few hours later is asked again, because their cart may have changed.
  • It explained shipping for the wrong items. The shopper confirmed a list that did not match their checkout, for example because they changed their cart after confirming. Ask the shopper to list what is in their checkout, and the assistant checks again for those items.
  • It searched for a product before answering about shipping. It could not find the product it was about to check, so it looked it up first. This is expected, and it stops the assistant answering for the wrong item.
  • A location I deactivated is still mentioned. Shipping settings are re-read periodically, so a change can take a short while to appear. Ask again after a few minutes.
  • A shopper's checkout shows one line called "Shipping". Shopify combines rates from different warehouses into one line. The assistant explains the rate of each warehouse, and checkout shows the total for the basket.

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. Select Choose template and pick an approved template from your WhatsApp templates. It needs exactly two numbered values: {{1}} is filled with the shopper's first name and {{2}} with the checkout link. Templates that do not fit are greyed out with the reason. Create template opens the template composer, where the Abandoned cart reminder example already fits. 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.
  • WhatsApp opt-outs are honoured. A shopper who replied STOP, tapped the opt-out button on one of your WhatsApp messages, or turned off your marketing messages in WhatsApp gets no more WhatsApp reminders. They get the email reminder instead when they accepted email marketing.
  • 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 must be chosen in the recovery settings and saved, and the shopper needs a phone number with text-marketing consent. A shopper who opted out of your WhatsApp messages is also emailed instead. Otherwise the reminder falls back to email.
  • I cannot create the cart reminder template. Cart reminders are marketing messages, so creating one needs permission to manage WhatsApp campaign templates. Ask an owner to create it, or to give you that permission, then choose it here.
  • WhatsApp reminders stopped after a template change. The chosen template must still be approved on your WhatsApp Business account, with exactly two numbered values. If it was deleted or renamed, the recovery settings say it is not on your account and WhatsApp → Templates lists it under a notice; choose an approved one and save. New reminders then 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

  • "Give your assistant a name to continue." The first step needs an assistant name before you can move on. Type one and select Save & continue.
  • The import from Shopify found nothing. Your store may not have published policies yet. The policy tabs open anyway so you can fill them in by hand, or skip the step and add them later under Policies.
  • The policy import button disappeared. After a successful import the tabs replace the button so you do not overwrite your edits. To import again later, use Policies from the home page.
  • "Check again" still says chat is not on. Make sure you switched on Fetchply Chat under App embeds on your published theme and saved it, then wait a moment and select I turned it on. Check again. You can also finish the setup and turn it on later from the home page.
  • The preview does not change when I edit. The chat preview on the Look & feel step updates as you change colors, icons, and the assistant name, even before you save. If it looks stuck, wait a moment for it to finish loading, or reload the app page. Nothing is saved until you select Save & continue.
  • The preview's message box says "Getting things ready". Your assistant is still learning your pages. Your colors and icons already show, and the message box unlocks on its own when learning finishes, so you can keep going with setup. Try your assistant from Playground afterwards.
  • "Couldn't finish setup." The app could not record that setup is finished, usually because of a brief network hiccup. You stay on the same step with your changes still on screen. Select Finish setup (or Finish later) again. Steps you already saved with Save & continue stay saved.
  • I can't continue on the lead capture step. If lead capture is on, choose at least one detail to ask for, or turn lead capture off.
  • Lead capture was set up differently in my Fetchply dashboard. Saving this step keeps your form's title, wording, and any extra questions. It only updates when the form appears, which of name, email, and phone it asks for, and whether visitors can skip. To change the wording and field labels too, use Extras → Lead capture after setup.
  • A step could not be saved. A message appears at the bottom of the screen and nothing is lost. Your answers stay on the page, so select Save & continue again.
  • 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. Fetchply never copies your policies on its own, so you can review them before your assistant uses them. Select Import policies from Shopify on the policies step of setup, or open Store policies later, then check each tab and save. Your assistant can still read the policy pages published on your store in the meantime.
  • 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. Everything else is one click away in the full Fetchply dashboard with Open in Fetchply; see Opening your Fetchply dashboard from Shopify below.

Analytics in the embedded app counts days in your store's time zone, the one set in Shopify under Settings → General, so its daily totals line up with your Shopify reports. The Fetchply dashboard uses the time zone of the device you are viewing it on, so the two can differ slightly around midnight.

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:

  • Lead capture — the contact form your assistant shows in chat, described below.
  • 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, signed in on a browser where you have signed in to Fetchply before; 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.

Lead capture

Open Extras → Lead capture to change your chat's contact form at any time, not only during setup. The page has three groups:

  • Contact form — the same choices as the setup step: turn the form on or off, choose what it asks for (name, email, phone), when it appears, and whether visitors can skip it.
  • Form text — the Title and Description visitors read on the form, the Button text, and the Message after they submit.
  • Field labels — rename each field, for example "Work email" instead of "Email", and choose with Visitors must fill this in which ones are required.

Select Save in the bar at the top of the page to apply your changes, or Discard to undo them. Everyone who fills in the form appears in Contacts as a Lead. Changes made here and in the Fetchply dashboard apply to the same form; see Lead capture.

Lead capture troubleshooting

  • Save is greyed out. A required box is empty: the Title, Button text, Message after they submit, or a field label. The empty box says "This can't be empty." Also check that the form asks for at least one detail.
  • I can't make the only field optional. A form with one field always requires it, otherwise a visitor could send it empty. Add a second field, then make one of them optional.
  • The page lists extra questions I can't edit. Questions you added in the Fetchply dashboard, such as "Company", are kept when you save here. Edit or remove them in Fetchply with Open in Fetchply at the top of the page.
  • "Couldn't save the lead form." Your changes are still on the page. Wait a moment and select Save again.

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. On a browser where you have signed in to Fetchply before, 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. See Opening your Fetchply dashboard from Shopify below.

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.

Opening your Fetchply dashboard from Shopify

The Fetchply dashboard has more tools than the Shopify app, such as the full Inbox, automations, campaigns, and team access. To get there from anywhere in the app, select Open in Fetchply at the top right of the page. It opens the matching dashboard page in a new tab: from Analytics you land on your dashboard Analytics, from Customize on the dashboard customizer, from Training data on your sources, and so on. Pages with no dashboard twin, such as Store policies and Plan & billing, do not show the button. It appears once your store is connected and your assistant exists.

Buttons such as Open inbox, Create a guided flow, and the options under Integrations open your Fetchply dashboard in a new tab the same way. On a browser where you have signed in to Fetchply before, you are signed in automatically and land on the page you clicked.

Account pages such as Team or API keys open from your agent's dashboard home. Open in Fetchply takes you to your agent first, and you continue from the dashboard menu.

The home page also has a Do more in your Fetchply dashboard box once your store is connected. It lists what the dashboard adds, such as replying to shoppers yourself in the Inbox, more channels, automations, and team access. Its Open Fetchply dashboard button opens your agent's dashboard home in a new tab, the same way as Open in Fetchply.

How you get signed in depends on your Fetchply account:

  • Your account was created when you installed the app, and you have never set a password or signed in with Google. Every button signs you in automatically. Anyone who can open the app in your Shopify admin, such as a staff member, opens the same account. To require everyone to sign in with their own login, set a password with Forgot password? on the Fetchply login page, or sign in once with Google using the same email. From then on, the next point applies.
  • Your account has a password or a Google login. The first time you use a browser, and after you sign out of Fetchply, the normal Fetchply login appears instead. Sign in with the Fetchply account your store is linked to, and you land on the same page. After that, the browser opens the dashboard without asking, as long as you use Fetchply in it at least once every 30 days. Other people who can open the app in your Shopify admin still need their own way in; invite them to your workspace, see Manage team members.

A button that has been on screen for a while still works. If its sign-in link is old, the new tab briefly opens your Shopify admin to get a fresh one, then continues to the dashboard. You must be logged in to Shopify in that browser.

Dashboard sign-in troubleshooting

  • The login page appears every time. Your browser may be clearing cookies when it closes, or blocking cookies for fetchply.com. Allow cookies for fetchply.com, sign in once, and try again.
  • The new tab shows Shopify admin for a moment. The button's sign-in link was old, so a fresh one is being fetched. It continues to the dashboard on its own. If Shopify asks you to log in, do so and select the button again.
  • I don't see Open in Fetchply. Your store is not connected yet, or the page has no dashboard twin. Finish the setup steps on the home screen, or use Open in Fetchply from another page.
  • The dashboard opens a page you cannot access, or the login page appears although you are signed in. You are signed in to a different Fetchply account in that browser. Fetchply never switches accounts for you. Sign out, then select the button again, or sign in with the account your store is linked to.
  • A staff member sees the Fetchply login page. Your account has a password or Google login, so each person needs their own. Invite them to your workspace so they get one.
  • I don't know the password for my store's Fetchply account. If the app created your account, it uses your store's contact email. Select Forgot password? on the login page and enter that email to set one.

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. Top-up replies you have bought are added to the same total, and the line under the meter says how many of them are left. The panel shows the same numbers as this store's card on the Fetchply Billing page. 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.

Customer privacy requests

Shoppers can ask your store, through Shopify, for a copy of their personal data or for it to be erased. Shopify passes these requests to Fetchply automatically, so there is nothing to set up.

  • Data requests. Fetchply emails a file to the email address of the Fetchply account connected to your store, once per request. The file lists what Fetchply holds about that shopper: contact details they shared, their website and WhatsApp conversations, order lookups, cash-on-delivery confirmations, and abandoned checkouts. The email itself names no personal details. Send the file to the shopper to complete the request, and share it with no one else.
  • Erasure requests. Fetchply deletes the lead details the shopper left and removes everything that identifies them, such as their name, email address, phone number, and location, from their website chats, order lookups, cash-on-delivery confirmations, and abandoned checkouts. Those conversations and order outcomes stay, so your reports keep their totals. The shopper's WhatsApp conversations are deleted completely, because a WhatsApp conversation is tied to their phone number. The shopper is recognised by the email address, phone number, or orders that Shopify includes with the request.
  • Interruptions. If Fetchply is briefly unavailable when Shopify sends a request, or when you uninstall the app, Shopify sends it again automatically, so nothing is skipped. If you reinstall the app before a delayed uninstall notice arrives, Fetchply recognises that the notice is out of date and keeps your new installation connected.

Privacy request troubleshooting

  • No data request email arrived. Check the spam folder of the email address on your Fetchply account. The email is sent even when Fetchply holds nothing about the shopper; in that case the file confirms there is no data.
  • The file says there is no data, but the shopper chatted with you. Website chats are matched by the email address or phone number the shopper gave in the chat, and WhatsApp chats by the phone number Shopify has for them. If they chatted from another number, or on the website without sharing either, those conversations cannot be linked to them.
  • A very long conversation history. The file holds up to 5,000 messages. When there are more, the email says so; contact support for the rest.
  • A shopper's details still show in a conversation after an erasure request. Messages are kept as the shopper wrote them, so details they typed into the chat stay, and a conversation linked to none of the email addresses, phone numbers, or orders in the request is not changed. If the conversation belongs to that shopper, delete it from Inbox.

On this page

Install and connectComplete the quick setupReview training dataEnable commerce capabilitiesPublish the storefront widgetTest as a shopperPlayground: test answers and fix themPlayground troubleshootingTraining data: edit and retryTraining data troubleshootingContacts: everyone who reached your assistantContacts troubleshootingHow product search worksProduct search troubleshootingHow order lookup worksLive shipment updatesShipment update troubleshootingOrders with many itemsOrders that arrive in more than one shipmentOlder ordersOrder lookup settingsHow delivery estimates workDelivery estimate troubleshootingOrder lookup troubleshootingCatalog and product search settingsCatalog troubleshootingHow shipping and warehouse answers workKeep the prices on your own pages up to dateStores using market-based shippingHow warehouse answers avoid guessingStores that ship from more than one warehouseThe products the assistant checksIt confirms the items before explaining a shipping chargeTurn it on or offGive permissionThe exact checkout priceTroubleshootingShopping cart in chatCart troubleshootingCash on delivery confirmationAbandoned cart recoveryCart recovery troubleshootingSetup troubleshootingExtrasLead captureLead capture troubleshootingIntegrationsOpening your Fetchply dashboard from ShopifyDashboard sign-in troubleshootingPlans and billing inside the appYour free trialUsage this cycleChoosing a planRunning out mid-monthPlans and billing troubleshootingCustomer privacy requestsPrivacy request troubleshooting