Shopify's review came back with two items: a listing link to our own pricing page, and a screencast that didn't show the Google Analytics import working. What each meant, what we changed, and the bugs we found while proving the fixes.
We submitted SellRank to the Shopify App Store on 25 September 2026 and wrote up the checklist we used. On 9 October the review page in the Partner Dashboard came back with two items marked Action needed. We fixed both, resubmitted on 14 October, and SellRank was approved and published that evening.
This is what the two items were, what we changed, and the three bugs we found while recording the proof. None of it is unusual, which is why it is worth writing down.
How feedback and resubmission work
Each flagged item on the review page names the requirement, quotes the reviewer, and gives you two choices: show the resolved state, or ask a question. Showing the resolved state needs a proof of resolution, which is a URL. When every item is marked resolved, the page says Ready to resubmit, and Submit fixes on the app's App Store review page sends it back to the reviewer.
We used unlisted YouTube videos as proof: one recording of the billing flow for the first item, and the full screencast for the second.
1. Requirement 1.2.2: a pricing link that left Shopify
Requirement 1.2.2 says an app with charges must implement Shopify App Pricing or the Billing API correctly, so that a merchant can accept, decline, and be asked to approve charges again after a reinstall. The reviewer's note was specific: the pricing link on our listing led to a page with our plans, and choosing a plan there asked for a name and email. Plans, they wrote, should go through Shopify pricing.
The app itself was already billing through Shopify App Pricing. The problem was the listing's optional field for a URL with more pricing information. We had pointed it at the pricing section of our own website, where each plan had a button that opened a contact form. To us that was a way to ask a question. To a reviewer it read as a second way to buy a plan, outside Shopify.
We cleared the URL from the listing. On the website, the plan buttons and forms are gone, and the pricing section now only describes the plans, with a note that they are chosen and billed inside Shopify after install.
- Follow every path from your listing to a plan. If any of them ends somewhere a plan can be chosen or paid for outside Shopify, expect this item.
- A website can describe your pricing. Nothing on it should look like a place to buy a plan.
2. Approval on install, and again on reinstall
With Shopify App Pricing, Shopify hosts the plan selection page. We changed SellRank to send any store without a plan straight to that page when the app opens, so a new install chooses a plan, Free included, before anything else. Leaving the page without choosing charges nothing, and the page comes back the next time the app opens.
Reinstall was harder than it looked. Shopify cancels an app's subscription when the app is uninstalled, so a reinstall has to ask for approval again. Our first version decided by asking Shopify whether the store had a subscription. In the first minutes after a reinstall, that answer could still describe the subscription that had just been cancelled, and Shopify's own plan page said it expired a week later. So SellRank opened on its free preview instead of the plan page.
Now SellRank records the uninstall itself and requires a fresh approval, whatever the lookup says. Only a plan chosen on Shopify's page clears it.
The billing recording caught one more thing. Right after a plan was approved, the home page could still show the free preview until the next load, because two parts of the page loaded at the same moment and one read the plan before the other had saved it. The home page now records the approved plan before it reads it.
3. Record the proof on the right development store
Our first attempt at the billing video used a development store from a different Partner organization. Its plan page offered only the Free plan, and listed the paid plans under Unavailable on dev stores. Shopify's documentation explains why: on a dev store in the same Partner organization as your app, you can select any App Pricing plan at no charge, while on a dev store from another organization you can select free plans, or plans the developer has configured as free to test.
We created a fresh development store inside our own organization and recorded the whole flow on it: the listing's pricing details with the URL field empty, the website's pricing section, install opening the plan page, accepting a plan, changing it, uninstalling, and reinstalling to the plan page again.
4. Requirement 4.5.3: show the Google Analytics import working
Requirement 4.5.3 asks for a screencast that demonstrates onboarding and the features described in the listing, in English or with English subtitles. Our first screencast mentioned SellRank's Google Analytics 4 import but never showed it working, and the reviewer asked for the full functionality, with the Google Analytics section shown live.
Showing it live meant real data, and the property connected to our development store had no ecommerce events at all. SellRank matches each Google Analytics item ID to a product in the store, so the events had to come from that store's own products. We added a web data stream for the dev store, a custom pixel under Customer events that sends view_item and add_to_cart with the product ID as the item ID, and browsed a few products. The events appeared in Google Analytics the same day.
The new screencast adds those steps to the full walkthrough: granting SellRank's service account Viewer access in Google Analytics, copying the property ID, connecting and importing, the imported totals, a smart sort ranked by add-to-carts from that history, publishing it, and checking the order in Shopify admin.
5. The bug review didn't catch
While preparing the screencast, we noticed SellRank's own storefront pixel had never stored a single visit. Its endpoint came from a server setting typed in by hand, and that setting held a placeholder address. Every view and add-to-cart went to an address that didn't exist. The app itself worked, because Shopify opens it from the app's configuration, not from that setting, so nothing looked wrong.
We found it by reading the pixel configuration the storefront publishes. SellRank now stamps the pixel with the address Shopify actually serves the app from, repairs it whenever that drifts, and App health names the address if the pixel is ever sending somewhere else.
What we would tell anyone resubmitting
- 1Read each item's quote twice. The reviewer usually tells you exactly where they clicked.
- 2Fix the cause, then record the proof on a store where the whole flow can run, including paid plans.
- 3Record install, decline, accept, change plan, uninstall and reinstall in one take. It shows the requirement, and it finds your bugs.
- 4For a screencast item, show every feature your listing claims, working with real data.
- 5Update the listing fields that changed, such as the screencast URL and testing instructions, before you click Submit fixes.
