Merchandising board for products people view but never buy

By General Input

Rank your catalog by view to cart and cart to purchase rate, so the products getting real traffic and losing the sale sit at the top of the screen.

Integrations

  • Google Analytics
  • Shopify
  • Google Sheets

Type

App

Categories

  • Marketing
  • Operations

I run an online store and I want a merchandising board that shows me which products people look at but do not buy. Build me an app I open when I want to find and fix conversion problems in my catalog.

The main screen is a single ranked table of my catalog. Pull the catalog from Shopify with List Products and show each product's featured image, title, price, status, vendor and product type. Next to each product show the real on-site funnel from Google Analytics using Run Report (GA4) over a 28 day window, querying the item dimensions and metrics: itemId and itemName as dimensions, and itemsViewed, itemsAddedToCart, itemsPurchased and itemRevenue as metrics. Resolve the GA4 property with List Account Summaries rather than asking me to paste a property ID or hardcoding one. From those numbers compute a view to cart rate (add to carts divided by views) and a cart to purchase rate (purchases divided by add to carts), and show both as percentages beside the raw counts and the revenue.

The default sort is the one I actually care about: most viewed with the worst purchase rate first, so the top of the screen is a ranked list of merchandising problems rather than a catalog dump. Let me re-sort by any column, and let me filter to a single product type or vendor. Two controls sit at the top of the board and both must be adjustable by me: the date window (default 28 days, with shorter and longer options) and a minimum view threshold. Products below the view threshold are filtered out by default, because tiny numbers produce nonsense conversion rates, and I want to be able to raise or lower that threshold and see the board update. Always show which date window the numbers cover, and how many products are currently hidden by the threshold.

Match the GA4 item ID to the Shopify product ID or to a variant SKU. Matching will not be perfect, and that is important information rather than something to hide: put every GA4 item that failed to match a product, and every product that got no GA4 rows at all, into a visible "Not matched" tab with its item ID, name and view count, so I can see when my product feed IDs are drifting. Show the matched and unmatched counts on the tab itself.

Clicking any row opens a detail panel for that product. It shows where the traffic to that product is coming from (run a second GA4 report scoped to that item, broken out by traffic source, channel group and campaign), the landing pages people arrive on, and a week over week trend of views, add to carts and purchases across the selected window so I can see whether it is getting worse. Below that, list the product's variants pulled with Shopify List Variants, showing SKU, price and inventory. I can change a variant price right there using Update Variant, but only behind an explicit confirmation step that shows the old price and the new price side by side and makes me confirm before anything is written to the store.

Every row also has a "Diagnose this product" button that kicks off a background agent for that single product. The agent should: compare the product's funnel rates against the median rates for other products of the same product type on the board; check whether the traffic reaching it is coming from a mismatched source or campaign (for example paid traffic from a campaign whose intent does not match the product, or a landing page sending the wrong audience); and read the product's own description body and images by fetching the full product from Shopify. It then picks one primary verdict from four options, price problem, copy problem, imagery problem or traffic quality problem, and writes a short plain-language recommendation explaining why, with the numbers it relied on.

The agent's output has to land in two places. First, store it in the app and show it on the product's row and in its detail panel with the date it was written, so the board gradually fills up with verdicts and I can see which products have already been diagnosed. Second, append it to a Google Sheets decision log with Append Values, one row per diagnosis, including the date, product title, SKU, product type, views, view to cart rate, cart to purchase rate, revenue, the verdict and the recommendation text. That dated log is the point: next month I want to look back and see whether the fix actually worked. Show the diagnosis running in the background so I can keep working the board while it thinks, and let me re-run a diagnosis later to get a fresh dated entry.

A note on writes: Google Analytics is read only here, so the only two things this app ever writes are the Shopify variant price change and the row appended to the Google Sheets log. Keep the price change behind its confirmation step, and make the log append visible in the app so I can tell it succeeded.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageLet support send one-off Loops emails without an engineerStop cold emails to anyone with a live deal in PipedriveiMessage campaign console with pre-flight checks and delivery boardLinkedIn Ads budget pacing dashboard for every client accountFront desk appointment confirmation board for the next 3 daysGive your team Looker numbers without buying more seatsBuild audience segments from product usage and push to LoopsTurn the people who engage with your posts into Pipedrive leads