# Merchandising board for products people view but never buy

> 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.

- Workflow type: app
- Services: Google Analytics, Shopify, Google Sheets
- Categories: Marketing, Operations
- Published: 2026-08-22

## What it does

- Lists your whole store catalog with photo, price, status, vendor and product type, and puts the real shopping funnel beside each one: views, add to carts, purchases and revenue over the last 28 days.
- Sorts by the thing you 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.
- Hides products below a view threshold you control, and puts any product whose analytics ID no longer lines up with your store into a visible not matched tab so you catch a drifting product feed.
- Gives every row a Diagnose button that sends a background assistant to compare the product against others of its type, read its own description and photos, and write back a plain verdict, then log it with the date so you can check next month whether the fix worked.

## What you'll need

- An online store you can connect, with permission to read your catalog and update variant prices
- A Google Analytics account with ecommerce tracking running on that store, so product views, add to carts and purchases are being recorded
- A Google account and a spreadsheet you want to use as the dated decision log
- Product IDs in your analytics that line up with your store's products or SKUs. The board tells you when they stop lining up

## Prompt

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.

## How to customize

- Change the date window and the minimum view threshold at the top of the board, so tiny numbers stop producing nonsense rates
- Change the default sort, or filter the board down to one product type or one vendor when you are working a specific category
- Point the decision log at a different spreadsheet or tab, and adjust what the diagnosis is asked to weigh up before it picks a verdict

## FAQ

### Do I need to build a report in Google Analytics first?

No. The board reads your analytics property directly and does the ranking and the rate maths for you. You never have to build an Exploration or a custom report, and you do not need to know your property ID because the app finds the properties your login can reach.

### Why is a product missing from the main list?

Either it is below the minimum view threshold, which you can lower at the top of the board, or its analytics ID did not match anything in your catalog. Everything in the second group appears in the not matched tab, which is usually the first sign your product feed IDs have drifted.

### Can it change my prices without asking?

No. Price changes only happen when you open a product, type a new price on a specific variant, and confirm the change on a screen that shows you the old price and the new one side by side. Nothing is edited in the background.

### What does the Diagnose button actually do?

It runs a background assistant on that one product. It compares the product's funnel against the median for its product type, checks whether the traffic arriving is coming from a mismatched source or campaign, reads the product's own description and images, then writes a plain recommendation into the app: price problem, copy problem, imagery problem or traffic quality problem.

### Does this work for a small store with modest traffic?

Yes, though the rates get noisy at low volume, which is exactly why the view threshold exists. Set it to whatever number of views you trust, widen the date window, and the board will only rank products with enough traffic to say something real.

Use this prompt in General Input: https://www.generalinput.com/prompts/merchandising-board-for-products-people-view-but-never-buy