Shopify AI prompts for stock, product, and collection audits
Start here: copy-ready prompts and the data each needs
A useful Shopify AI prompt is a short audit request that names the rows you paste, the table you want back, and one action you can check in Shopify before you change a price, a purchase order, or a collection sort.
These prompts are for stock, product, and collection decisions. They are not Shopify Flow queries, and they are not a way to write or sell prompt packs. Flow automates store tasks. A prompt only interprets the numbers you supply.
ChatGPT, Claude, Gemini, and Shopify Sidekick can all run the same request. Shopify describes Sidekick as the AI-powered assistant in the Shopify admin that uses Shopify data to answer questions and complete tasks. For a spreadsheet-style audit, paste the rows anyway. A model that cannot see the export should say the field is missing, not invent a rate.
Pull a fixed window first. Last 28 or 30 days is enough for a weekly check. Label every column, include the currency, and keep one row per SKU or one row per collection. If a field is blank, write “missing” in that cell. Do not leave it empty, and do not let the model fill it with an estimate.
Do not ask the model to forecast a bestseller, raise average order value by a set percent, or build a retention plan from a handful of totals. Those answers look specific and are not checkable. The weekly store review in Shopify sales analysis is the right place for the full report routine. These prompts are discrete diagnostics you run after that export exists.
What to paste before any prompt
Use the same header on every prompt so the model cannot mix periods or currencies.
- Store: currency, primary market, and whether figures are gross or net of discounts.
- Window: exact start and end dates, not “recently.”
- Grain: one row per variant for stock, one row per product for conversion, one row per collection for exposure.
- Missing fields: if a field is blank, write “missing” in that cell. Tell the model to mark any conclusion that depends on a missing field as unverified, and not to estimate the blank value.
- Constraint: do not estimate a number that is not in the paste. Quote the row that supports each flag.
Shopify documents how to export products to CSV and how to export orders. Analytics reports can be exported where your plan includes them: open the report, set the date range, then use Export if that control is on the report. Shopify’s custom report data export guide covers the export steps for reports that support it. If a metric is not in the export, leave it out. Do not ask the model to “pull it from Shopify.”
Prompts to flag bestsellers at risk of selling out
Stock prompts should rank products that can miss sales before the next receipt, not products that merely have a low unit count. A slow SKU with 4 units left is not the same problem as a daily seller with 4 units and a 21-day supplier lead time.
1. Cover versus the next receipt
Evidence: variant, units available, units sold in the window, supplier lead time in days, incoming quantity, and expected arrival date. If no purchase order is open, write “no incoming order” in the incoming cells. If an order exists but the date is unknown, write “missing” for the arrival date. Do not leave those cells empty. Expected output: a ranked table of variants that run out before the next receipt. When an expected arrival date is present, the gap and estimated unmet demand use that date, not supplier lead time. When there is no incoming order, they use lead time. Rows with an open order and no arrival date stay unverified. Variants with zero units sold in the window are listed separately as having no observed sales velocity, with no days of cover. Next action: open the variant in Shopify and confirm available units, and the incoming date if one is listed, before you draft a purchase order.
You are auditing Shopify variants for sellout risk. Use only the rows I paste. If units sold in the window is 0, do not calculate days of cover and do not rank that variant for stockout risk. Put it in a list labeled “no observed sales velocity” and show units available only. For every other variant, daily sales = units sold / days in window. Days of cover = units available / daily sales. Cover end date = today + days of cover. Pick one shortfall date, then calculate the gap from that date only. If the row has an expected arrival date, the shortfall date is that arrival date. Do not use supplier lead time for the gap when an arrival date is present, even if the dates differ. If the row says no incoming order, the shortfall date is today + supplier lead time. If there is no incoming order and lead time is blank, put the variant in an “unverified” list and do not calculate a gap. If an incoming order exists, or incoming quantity is greater than 0, but the arrival date is missing, put the variant in the “unverified” list. Do not substitute supplier lead time for a missing arrival date. If the incoming cells say missing and you cannot tell whether an order exists, put the variant in the “unverified” list. Gap in days = shortfall date minus cover end date. Flag a variant only if the gap is greater than 0. Do not flag a variant just because lead time is longer than days of cover when an earlier arrival date covers the window. Estimated unmet demand = daily sales × gap in days, using that same gap. Do not estimate lead time or an arrival date. Do not invent a cover figure for zero-sales or unverified rows. Return a table of flagged variants sorted by gap in days, largest first: variant, units available, daily sales, days of cover, shortfall date used, whether that date came from an arrival date or from lead time, gap in days, estimated unmet demand, and the row values you used. Then name the variant with the largest gap in days, and separately name the variant with the largest estimated unmet demand if it is a different row. Do not treat the larger gap as the higher sales priority. Data: [paste rows].
If you are only checking the arithmetic, confirm the largest-gap variant in Shopify. If you can chase only one purchase, start with the largest estimated unmet demand, not the longest gap. If the paste has no usable shortfall date, ask for that date instead of drafting a purchase order.
2. Incoming stock that still misses the window
Evidence: the same stock rows plus purchase-order quantity and expected arrival. Expected output: variants where incoming units arrive after estimated cover ends. Show estimated unmet demand as daily sales times the late days, with no cap. Show the incoming quantity in its own column as the units that shipment will replenish after it arrives. Those two numbers answer different questions. Next action: ask the supplier for a revised date, or place a bridge order only if the late gap is real.
Using only these rows, skip any variant with units sold = 0. Label it “no observed sales velocity,” do not calculate days of cover, and do not rank it. For the rest, days of cover = available / (units sold / days in window). Find variants where expected arrival is later than today plus days of cover. Estimated unmet demand = daily sales × late days. Do not cap that figure at the incoming purchase-order quantity. Demand during the gap is not limited by how many units the late shipment contains. Return variant, cover end date, expected arrival, late days, estimated unmet demand, incoming quantity (units the late shipment will replenish after arrival), and whether that incoming quantity is enough to refill available stock once it lands. Do not treat incoming quantity as a limit on unmet demand. Do not recommend a purchase quantity. Mark any row with no arrival date as unverified. Name one variant to chase with the supplier today. Data: [paste rows].
3. Separate dead stock from a real stockout risk
Evidence: units available, units sold in 30 and 90 days, and last sale date. Expected output: two lists, not one. List A is sold recently and cover is short. List B is available units with no sales in 90 days. Next action: do not reorder anything on List B. Put one List B SKU on a markdown or bundle review instead.
Split these Shopify variants into two lists using only the paste. List A: units sold in the last 30 days > 0 and days of cover < 21. Days of cover = units available / (units sold in 30 days / 30). If units sold in 30 days is 0, do not calculate days of cover and do not put the variant on List A. List B: units available > 0 and units sold in 90 days = 0. Do not call List B a stockout risk, and do not rank it by days of cover. For List A, show the arithmetic. For List B, show available units and last sale date only. Recommend no purchase quantity for List B. Give one next action for each list. Data: [paste rows].
The 21-day cutoff in that prompt is an example operating threshold you set for the store, not an industry standard. Change it to your longest common lead time if 21 days is too short, and edit the number in the prompt before you paste rows.
Prompts to investigate high-traffic, low-conversion products
A product conversion problem is sessions with too few orders, on a product that already gets demand. Storewide conversion will hide it. The formula and the Shopify report path live in product conversion rate. These prompts assume you already have that rate, or the raw sessions and orders, in the paste. The rate’s denominator has to be those same sessions.
4. Rank products by estimated order gap vs. median
Evidence: product title, sessions, orders, and conversion rate for the same window. The conversion rate must equal orders divided by those sessions. Do not paste product page views in place of sessions, and do not paste a rate that uses product page views or any other denominator. Expected output: products above the example session cutoff you set, sorted by estimated order gap vs. median, not by the lowest rate alone and not by a session count. The figure compares each product with the store median. It does not show that those orders were missed or that they are recoverable. Next action: open the top product’s page and check price, photos, and variant availability before you change the page.
Audit these Shopify products for high traffic and weak conversion. Use only my rows. The only traffic metric is sessions. Conversion rate must equal orders / sessions, using that same sessions figure. If a row has product page views instead of sessions, or the pasted rate uses any other denominator, mark the row unverified and do not rank it. Do not convert one traffic metric into the other. Ignore products under 100 sessions. The 100-session cutoff is an example threshold I will edit for this store. It is not a statistical minimum. Compute the store median conversion rate only from products that clear that cutoff and whose rate is orders divided by sessions. Flag products below that median. Rank them by estimated order gap vs. median, not by sessions: sessions × (median conversion rate − product conversion rate). Use that same sessions figure in the formula and in the rate. That figure is a comparison with the median. It is not a count of missed, lost, or recoverable orders, and it is not a count of extra non-converting sessions. Label the column “estimated order gap vs. median.” Return product, sessions, orders, rate, median, estimated order gap vs. median, and the cells you used. Do not invent page-speed, review, or price causes. Do not treat the gap as sales you can recover by changing the page. End with one product to open in the admin today. Data: [paste rows with sessions, orders, and conversion rate as orders / sessions].
Edit the 100-session example in this prompt and in prompt 5 before you paste. Rank the estimated order gap vs. median column, not the lowest rate or the session count. Read that column as a comparison with the median, not as lost sales.
5. Check whether the leak is stock, not the page
Evidence: the conversion rows from prompt 4 (sessions, orders, and a conversion rate equal to orders divided by those sessions) plus available units and a sold-out flag for the same dates. Expected output: a split between products that were unavailable during the window and products that were in stock and still converted below the median. Next action: if the top row was unavailable, fix stock or hide the product from ads. Do not brief a page rewrite for a sold-out SKU.
Join these conversion rows to these stock rows on product or variant title. The conversion rate must be orders divided by the sessions column. If the rate uses product page views or any other denominator, mark the row unverified and do not put it in either table. If available units were 0 or the sold-out flag is true, label the row “stock,” not “page.” Only diagnose a page issue when the product was available, sessions meet the example cutoff of 100 (edit this number for the store; it is not a statistical minimum), and conversion is below the median of in-stock products that clear the same cutoff and use sessions as the rate denominator. Return two tables. Do not suggest new ad copy for stock-labeled rows. Name one in-stock product to review on the storefront, and one stock-labeled product to remove from paid promotion. Data: [paste both tables, with conversion rate = orders / sessions].
6. Ask for a cause list you can verify
Evidence: the flagged product, its price, compare-at price if any, variant count, and whether the default variant is available. Optional: a short note you write after looking at the page, such as “hero image is a lifestyle crop” or “size guide is missing.” Expected output: at most three hypotheses, each tied to a field you supplied, plus the admin screen that would confirm or kill it. Next action: test one hypothesis. Do not publish a new description because the model preferred different wording.
For this single in-stock Shopify product, list at most three reasons conversion could be low. You may only use the fields and the merchant note I paste. For each reason, name the Shopify admin or storefront check that confirms it, and the check that would disprove it. If the note does not support a reason, omit it. Do not rewrite the product description. End with one check I should run in the next 15 minutes. Data: [paste one product].
Baymard’s checkout research is often quoted for cart abandonment, and it does not diagnose a product page. Do not paste a generic abandonment statistic into this prompt and treat it as the cause. The cause has to be in your row or in a check you can finish the same day.
Prompts to find underexposed collection winners
A collection winner here is a product that already converts, with stock to sell, sitting below products that get the click and do not convert. The prompt cannot see your theme. You have to paste position, or state that position is unknown.
7. Winners below the first screen of a collection
Evidence: collection name, product, grid position if you counted it (otherwise write “missing”), product sessions, product conversion rate, units available, units sold in the same window, and the window length in days. Expected output: winners that clear the cutoffs in the prompt, split into counted positions of 9 or worse and “position unknown.” Next action: move one product into the top 4 only if its position is a counted number of 9 or worse. If every candidate is position unknown, count the live grid first and do not sort yet.
Find underexposed products in this Shopify collection. Use only my rows. The session column must be product sessions (sessions on that product). Do not use collection sessions for the cutoff. If product sessions are missing, mark the row unverified and do not treat it as a winner. To score days of cover you need units available, units sold in the window, and days in the window. If any of those three fields is missing, do not calculate days of cover, mark the row unverified for cover, and do not treat it as a winner. If units sold in the window is 0, do not calculate days of cover. Label that row “no observed sales velocity” and do not treat it as a winner. For every other row, days of cover = units available / (units sold in the window / days in the window). Do not accept a pasted cover figure you cannot recompute from those three fields. A winner must have conversion above the collection median, at least 50 product sessions, and days of cover of at least 14 using that formula. Apply the 50-session cutoff to product sessions only. Underexposed means grid position is 9 or worse. Treat 50 product sessions, 14 days of cover, and position 9 as example thresholds I can edit for this store. They are not statistical minimums and not Shopify rules. If position is blank, put the product in “position unknown” and do not tell me to move it. Return product, position, product sessions, conversion, median, units available, units sold, days in the window, days of cover, and the cells used. Recommend one product to move into the top 4 only when that product has a counted grid position of 9 or worse. Name the weaker product it should swap with only if that product is also in the paste and its position is a counted number. If no qualified product has a verified position, do not recommend a move. Ask me to count positions on the live collection page first. Data: [paste rows with product sessions, units available, units sold in the window, and days in the window].
Position 9 is a stand-in for below a typical first screen, not a Shopify rule. If your desktop grid shows more than 8 products before the fold, edit that number, and edit the 50-session and 14-day examples to the bar you will actually feature. Prompt 8 uses the same 50-session example. If positions are blank, use the prompt to build a candidate list, then count the live collection before you move a card.
8. Products that hurt the collection they sit in
Evidence: the same collection table, including product sessions for each product. Expected output: products in positions 1 to 8 with conversion below the collection median and at least the example product-session cutoff in the prompt, ranked by estimated order gap vs. median. The ranking compares each product with the collection median. It does not show lost or recoverable orders. Next action: review one of those products for a demotion, or a swap with the winner from the previous prompt, only after you confirm the rows. Do not delete it from the catalog because a grid slot is weak, and do not treat the gap as sales a move will recover.
Using this collection paste, list products in grid positions 1 to 8 whose conversion is below the collection median and whose product sessions are at least 50. Apply that cutoff to product sessions, not collection sessions. If product sessions are missing, return “cannot audit exposure” instead of using collection sessions. Treat 50 product sessions and positions 1 to 8 as example thresholds I can edit, not a statistical minimum or a Shopify rule. Rank them by estimated order gap vs. median: product sessions × (median conversion rate − product conversion rate). Label that column “estimated order gap vs. median.” It is a comparison with the collection median, not a count of missed, lost, or recoverable orders, and not a count of wasted sessions. Do not recommend deletion. Recommend one product to review for demotion, name the product that would replace it only if that product is flagged as a winner in the paste, and quote both rows. State that the gap is a comparison, not proof the move recovers orders. If position is missing, return “cannot audit exposure” instead of guessing the sort. Data: [paste rows with a product sessions column].
9. Collection sort versus what the numbers support
Evidence: the collection’s current sort setting (manual, best-selling, or another Shopify sort you copied from the collection page) plus the product table. Expected output: a yes or no on whether the current sort can express the swap you want, and the Shopify control that changes it. Next action: if the sort is best-selling and the winner is new, switch that collection to manual before dragging the product. A prompt cannot drag the card for you.
I will paste one Shopify collection’s current sort setting and a product table. Tell me whether that sort setting will keep a manual position change. If the sort is not manual, say the change will be overwritten and name the setting I must switch before moving a product. Do not invent click-through rate. Base the recommended swap only on conversion, product sessions, and cover from the table. If units sold is 0, do not calculate days of cover for that row. Give one setting to change and one product to move. Data: [paste sort setting and rows].
Collection sort is a control on the collection page in Shopify admin, not a Search & Discovery setting. Shopify’s collection help describes changing a collection’s sort order there. Search & Discovery is a separate app for storefront search: it can boost, bury, or hide products in search results. It does not set the collection sort. If another merchandising app is reordering the grid, write that in the paste so the model does not prescribe a drag-and-drop that will not stick.
Verify each answer and choose one next action
Treat every model answer as a draft ranking. It is done when you can point to the same figures in Shopify, and it is useless when you cannot.
- Recompute one flagged row by hand with the formula in that prompt. Discard the ranking if the model filled a blank, used a date or denominator you did not paste, capped a figure the prompt said not to cap, renamed an order gap as wasted sessions, or labeled the estimated order gap vs. median as missed or lost orders.
- Open that record in Shopify. Confirm available units, the order count, and the collection position on the live collection page. Admin exports can lag a return or an inventory edit.
- Reject any recommendation that needs a field you did not paste, such as margin, ad spend, or review score.
- Pick one action: confirm a purchase quantity, pause promotion on a sold-out product, or move one collection card whose position you have already counted. If that position is unknown, count the live grid before you sort. Write the before value so the next window can show whether the change held.
- Run the same prompt next week on a fresh export. A one-week move in grid position is not a verdict. Look for the product staying in stock and the collection’s product mix, not a promised lift.
Keep a short rejection log of the blank field, substituted date, or mismatched denominator. That log stops the same bad prompt from wasting the next export.
What these prompts will not do
They will not see your store unless the tool is connected to it. A pasted prompt has no inventory feed. They will not replace a reorder formula, a conversion definition, or a weekly sales read. Link those jobs to the posts that own them instead of asking one chat to invent the math.
They also will not tell you which of ten leaks to work on first once the lists get long. That prioritization is a monitoring job. AI agents for ecommerce compares agent types that watch stock, conversion, and collections without a manual paste. Skymetrics sits in that category: it reads SKU sales, stock cover, product conversion, traffic, and collection results and ranks actions by revenue impact, so you are not rebuilding this prompt stack every Monday.
If you still want the manual path, start with prompt 1, prompt 4, and prompt 7. Those three cover the sellout, the estimated order gap vs. median, and the buried winner. Verify one row from each before you add the follow-up prompts.
Confirm the collection’s sort on the collection page in admin before you tell a model the grid is manual. Use Search & Discovery only when the question is storefront search, not collection order.