Five tools for your Shopify store in one app: Product Viewer, Catalog Check, Analytics, Inventory Health and Sales Map. No price tag.
A quick overview of all products and variants. Search and filter included.
Scans your catalogue for missing data, then lists every product and variant that needs fixing.
27 reports on what sells, who comes back, when orders arrive and what's sitting on the shelf.
Every product in stock, sorted by how well it sells. See what's dead, stale, slowing or selling, and what that stock is worth.
A map of the cities buying from you over the last 1 month, 6 months, 12 months and 24 months.
What the tools do, what Stackhall Basic stores, what happens when you uninstall, and why it costs nothing.
One Shopify app with five tools inside it: Product Viewer, Catalog Check, Analytics (27 reports), Inventory Health and Sales Map. It reads your store and tells you what is in it.
It is free permanently — not free for 30 days, not free up to a trial limit. There is no paid tier of Basic to upgrade to.
Shopify asks you to approve three read permissions — products, orders and customers — and then issues the app a short-lived token to read with.
Stackhall asks Shopify for a background export of your catalogue and your sales. Shopify builds it on its own schedule and hands back a file; the first one usually lands within a few minutes, and a very large catalogue takes longer. Shopify allows one export at a time per store, so the four exports (products, collections, orders, customers) queue up behind each other.
After that, the tools read the stored copy, which is why a report opens instantly instead of re-querying Shopify. The copy refreshes nightly, and the Analytics page has a Sync sales data button for when you would rather not wait.
Inside your Shopify admin, and nowhere else: Apps → Stackhall Basic. There is no separate dashboard, no Stackhall password and no account to create.
The app only answers a request that arrives from inside Shopify admin carrying Shopify's own signed session token. Open a Stackhall URL in a normal browser tab and you get nothing — there is no guest view of your data to find.
That is deliberate, and it is the useful kind of boring: one place to sign in means one place to revoke. Uninstalling in Shopify cuts off access completely, with no stray login left behind somewhere else.
Yes, and access follows Shopify's own staff permissions — anyone you have given app access to in Shopify admin can open it, and nobody else.
Stackhall keeps no user accounts of its own, so there are no seats to buy, no invitations to send and no ex-employee logins to remember to delete.
No. It installs no script tag, no theme app embed and no storefront code, so it cannot slow your pages down, change how they look, or affect SEO or checkout. Everything it does happens on its own pages inside the admin.
No. It asks for read permissions only and never requests write access to products, so Shopify itself would refuse a write even if the app tried.
Catalog Check tells you which products need fixing and links each row straight into Shopify admin — you make the edit there, where you can see what you are changing.
Install it on each store that needs it. Every store's data is kept separate, and the free limits apply per store rather than per merchant. There is no cross-store view — a report always describes the store whose admin you opened it from.
Every product and every variant in one searchable list — the view Shopify admin does not quite give you, because it lists products and makes you open each one to see its variants.
A scan of your product data for what is missing — the fields that quietly cost you search traffic, accessibility and shipping accuracy. Eight checks:
Every check is listed whether it passes or fails. A failing one expands into a table of the exact products, variants and images at fault, each linked into Shopify admin; image checks show a thumbnail so you can tell which picture to replace. Long lists are capped at 100 rows per check, and the badge still reports the true total.
It reports. It never edits.
Watch a Catalog Check scanAll 27 of them, in four groups. Nothing is held back for a paid plan, because there is no paid plan.
Every report is charted and tabled — the figures are in a table under each chart, so a report is still readable if the chart library is blocked, and still readable when printed.
A report that needs data you have not synced yet says so, rather than drawing a confident chart over a gap.
See a sample report from each groupIt answers one question: which stock is money sitting still.
Every variant you hold stock of is sorted by how recently it sold — Dead (never sold), Stale, Slowing, Selling — and each bucket carries what the stock in it is worth. Shopify's own sell-through report only covers variants that have sold at least once, so the products that have never moved are the ones missing from it.
Stock is valued at cost, from the cost per item you set in Shopify, not at retail — retail values it at money you never made. Where no cost is set it falls back to the retail price and the page says plainly which basis it used.
It will not claim a window it cannot see. A fresh install cannot know that something has not sold in a year, so it only shows aging windows your stored history actually covers, and never ages a product past its own age in your catalogue.
Try the Inventory Health demoA map of where your orders come from, over the last month, 6, 12 or 24 months.
Zoomed out it reads as continent-sized bubbles with a money total behind each; zoom in and they break into countries, then regions, then cities — and it stops there. A pin is a city, never an order: Stackhall stores no address finer than a city, and a lone pin on a village is a household rather than a market.
Every figure on the map is also in a table beneath it. Places are matched to coordinates using tables shipped inside the app, so no address of yours is ever sent to a geocoding service.
Open the Sales Map demoProducts and variants, collections, orders and order line items, and a shop profile: store name, plan, currency and timezone. Orders keep the country, province and city they shipped to, and nothing finer — no street, no postcode, no phone number, no coordinates.
For customers it stores aggregates only: an order count and a lifetime total against Shopify's own customer id. No names, no email addresses, no phone numbers, no addresses. The export does not even ask Shopify for those fields, so they cannot arrive by accident.
Read the Privacy PolicyShopify's standard order permission reaches back 60 days. Basic requests Shopify's extended order permission as well, which Shopify grants to an app on request with a written justification, so the permission screen you approve at install covers your full order history, not just the last 60 days.
The first sync then pulls as much of your history as Shopify will return — capped at the most recent 5,000 orders, after which the oldest are dropped as new ones arrive. If you installed before this permission was added, you'll see it the next time you open the app; until you approve it, the reports that depend on order history say what they can see instead of guessing.
In a managed Postgres database that is reachable only over a private network from the app's own server, with TLS required and a database firewall that admits that one server and nothing else. Traffic to the app is HTTPS end to end.
Shopify access tokens are never written to a log or rendered on a page, and the access tokens the app holds expire after an hour by design. Error monitoring is configured to not attach request headers, because a header can carry a live Shopify session token.
Everyone who can touch store data is named in the Privacy Policy, with what they do and where they are — not a vague line about sub-processors.
See the sub-processor listIt is deleted. Shopify sends a shop redaction notice 48 hours after an uninstall, and the handler deletes your store record — which takes the products, variants, images, collections, orders, line items and customer aggregates with it. That is well inside the 30 days the Privacy Policy commits to, and it happens on its own rather than when somebody remembers.
One caveat worth knowing: Stackhall apps share one copy of your store data. If you also have another Stackhall app installed, uninstalling Basic removes Basic's access and keeps the shared copy the other app is still using. Uninstall them all and everything goes.
Read the deletion commitmentShopify's three privacy webhooks are wired up and every delivery is recorded: a data request, a customer deletion request, and the shop redaction above. A deletion request removes that shopper's aggregate row on the spot; a data request is answered through you, within 30 days.
There is very little to report, which is the point — an order count and a lifetime total you can already see in Shopify admin, with no contact details attached.
Read the Data Protection AgreementOrders are what Analytics, Inventory Health and the Sales Map are made of. The customer permission is needed by two reports specifically — Customer lifetime value and Repeat purchase rate — and both read aggregates, never a contact detail.
Shopify classes order and customer data as protected customer data, which needs a separate approval on top of the permission. Until that approval is in place Shopify refuses those fields outright, and the affected reports say so rather than showing you a zero that looks like a fact.
$0. No trial, no credit card, no billing screen on install — Shopify never shows you a charge to approve, because the app has no charge configured to create.
1,000 products and 5,000 sales orders per store. Both are generous enough that most stores never meet them.
If a store is over a limit, the sync keeps the newest rows — your 1,000 most recently created products and 5,000 most recent orders — so the tools stay accurate about recent trading rather than failing outright. The page tells you when that is happening.
Nothing else is limited. Not the number of reports, not the number of scans, not the number of staff, not how often you sync.
See the planBasic is the free app in a suite. Stackhall Product, QA and CRM are paid apps, and they are what pays for this one. Having any of them also lifts the product and order limits above.
What that does not buy is your data. Stackhall does not sell, share or aggregate store data, and nothing in Basic is advertising space.
No. Free is what Basic is for — it is the app that proves the rest are worth paying for, and a bait-and-switch would undo that in a week.
Features arrive as paid apps alongside it, not as a paywall lowered over this one.
Email support and you get a person. Requests shape what gets built next — the free app is where that feedback comes from.
[email protected]Something not answered here? Email [email protected] and a person replies.