Five layers of Shopify, one app
Pick a layer. Most apps we build use three or four of them together.
How an embedded Shopify app actually works
If you’re commissioning an app, it helps to know what’s under the bonnet, mostly so you can spot when a quote is skipping something important.
When a merchant opens your app, Shopify loads your screens inside its own admin. Technically it’s an iframe, but done properly nobody notices. App Bridge is the small library that makes this work: it lets your app open Shopify-style modals, show toasts, change the page title and move around the admin without a second login.
Logging in is handled with session tokens. Every time your app’s frontend talks to its backend, App Bridge hands over a short-lived signed token that proves which store and which staff member is asking. The backend checks the signature with your app’s secret. Nothing relies on cookies, and no passwords are stored anywhere. Shopify’s review team checks for this, and browsers that block third-party cookies would break the older approach anyway.
The screens themselves are built with Polaris, Shopify’s design system. We’d rather use Polaris than invent our own look. Merchants already know how its buttons, tables and banners behave, so there’s less to learn and fewer support emails.
Where the data comes from
Your app reads and writes store data through the Admin GraphQL API. Shopify publishes a new API version every quarter, named by date (like 2026-10), and supports each one for at least twelve months. Your app names the version it was built against. When that version is retired, Shopify serves the oldest one still supported instead, which is when quiet bugs appear. New public apps have to use GraphQL; the old REST Admin API is legacy.
Events arrive as webhooks: order paid, product updated, app uninstalled. App Store apps must also handle three privacy webhooks, for customer data requests, customer data deletion and shop data deletion. Skip those and review stops there.
Checkout and Functions
Checkout used to be edited with checkout.liquid and pasted scripts, which Shopify has retired. Checkout extensibility replaced it: checkout UI extensions add fields, banners and blocks in slots Shopify defines, and Shopify Functions run your own logic for discounts, delivery and payment options, and cart validation. Functions compile to WebAssembly and run on Shopify’s servers with tight time limits, so they’re fast but can’t call your API mid-checkout.
Two plan details matter here. Checkout UI extensions on the information, shipping and payment steps need Shopify Plus; the thank-you and order status pages are open to every plan. And a custom app that contains Functions only works on Plus stores, while a public app’s Functions work on any plan. We check this before anyone designs a screen.
About “Built for Shopify”
Built for Shopify is a status Shopify gives to App Store apps that meet extra criteria: fast admin performance, low storefront speed impact, a properly embedded Polaris-style interface, and a minimum number of installs and reviews. We design public apps with those criteria in mind from the start. Whether an app earns the status is up to Shopify.
Most broken Shopify apps we see were written against an API version nobody has looked at since.
- 2025-07
- 2026-01
- 2026-04
- 2026-07
- 2026-10
Illustrative. Pin a version (lime), plan the upgrade before it drops off the supported list (striped). A quarterly check keeps you two or three versions clear of retirement.
The calls behind a good app
Three real patterns from Shopify app work: request on the left, what comes back on the right.
Pass review the first time
The checks we run before Shopify does. Tap a check to see how the score moves.
Why Shopify apps fail App Store review
Shopify’s reviewers install your app on a test store and work through it like a fussy merchant would. These are the problems that send apps back most often, and what we do about each one before submitting.
Asking for scopes the app doesn’t use
An app that only shows order totals doesn’t need write access to customers. Reviewers notice, and protected customer data such as names and addresses needs a written reason in the Partner Dashboard before you can touch it at all.
Our fixWe list every scope against the feature that needs it. Anything without a feature gets cut.
Install flow that wanders off
After a merchant approves the install, they should land straight in your app inside the admin. Asking them to sign up on another site, enter an API key or confirm their email first is a common reason for a bounce.
Our fixShopify-managed install and token exchange, so the first screen is your app’s own welcome page.
Charging outside Shopify
App Store apps must bill through Shopify’s Billing API. A Stripe checkout inside the app won’t pass.
Our fixPlans set up as app subscriptions or usage charges from day one.
Missing privacy webhooks
All three compliance webhooks must be registered and answer correctly, even if you store no customer data.
Our fixHandlers written and tested before any feature work starts.
Editing theme files on install
Injecting code into a merchant’s theme leaves a mess behind after uninstall. Theme app extensions exist for exactly this.
Our fixApp blocks and app embeds only. Uninstall leaves the theme untouched.
No way for the reviewer to test
If a feature only works once your ERP is connected, the reviewer can’t see it. They’ll ask, and your app goes to the back of the queue while you reply.
Our fixA demo mode with sample data, a short screencast and clear testing notes in the submission.
Listing that doesn’t match the app
Screenshots of features that aren’t built yet, real customer names visible in a screenshot, or claims like “the best” or “#1”. All of these get flagged.
Our fixScreenshots from the review build itself, with sample data, and plain descriptions of what it does.
TackQuote, mapped to the Shopify APIs it uses
Our own B2B quoting app is the best brief we can show you. Every feature sits on a standard Shopify surface.
A wholesale brief, and the order we’d build it in
An illustrative scenario, not a client. It’s a mix of requests we hear often from Shopify Plus stores that sell to trade buyers as well as consumers.
Homewares store, Shopify Plus, about 40 trade accounts
Trade buyers phone in orders. Staff key them in by hand, then copy the purchase order number into the ERP the next morning. The owner asks for “an app” to fix it.
- Trade buyers must enter a PO number at checkout
- No card payment for approved trade accounts
- Minimum order of 12 units per product line
- PO number visible on the order page and in the ERP
Switch on what Shopify already does
Shopify’s own B2B features on Plus cover company accounts, catalogs and payment terms. We set those up first.
Why firstSome of this brief needs no custom code, and it’s cheaper to find that out on day one.
PO number field in checkout
A checkout UI extension adds the field for B2B buyers and saves it on the order.
SurfaceCheckout UI extension, Plus-only step. Fine here, the store is on Plus.
Enforce the 12-unit minimum
A cart and checkout validation Function blocks the order with a clear message if a line is under 12.
SurfaceShopify Function. Runs inside checkout, so it can’t be skipped.
Send the order and PO to the ERP
An orders webhook triggers a small backend job. A nightly check catches anything the webhook missed.
SurfaceWebhooks plus Admin GraphQL. See our ERP integration work.
Show the PO where staff look
An admin block on the order page shows the PO number and ERP sync status.
SurfaceAdmin UI extension. No need to open the app at all.
What can go wrong with a Shopify app, and how we handle it
Every app carries some risk because it lives on someone else’s platform. Better to talk about it before you sign than after a Monday morning outage.
HighAn API version is retired under you, toggle
HighShopify changes a platform rule, toggle
MediumRate limits during big syncs, toggle
MediumWebhooks arrive late, twice or not at all, toggle
MediumA feature turns out to need Plus, toggle
LowStorefront slows down, toggle
About Shopify apps
Anything else, ask on the audit call.
Ask an engineer
Not answered here? Ask on the free 30-minute audit call. An engineer replies within one business day.
Quick facts
- Based in Delhi, India Working across time zones, with written weekly updates.
- Fixed quote first Nothing is billed before you agree it.
- You own it The code, workflows and accounts are yours.
- Stores and ERPs Shopify, BigCommerce, WooCommerce and Adobe Commerce, with NetSuite, SAP Business One, Odoo and Dynamics 365.
Public app or custom app: which do we need?
A public app is listed on the Shopify App Store for any merchant and must pass Shopify’s review. A custom app is installed on your store or your group of stores only, with no listing. If the job is specific to your business, a custom app is faster and cheaper.
Can an app change Shopify checkout?
Through checkout UI extensions and Shopify Functions, yes: extra fields, banners, delivery and payment customisations, discounts and validation. Some of these surfaces need Shopify Plus; we check your plan before we design.
Which APIs do you use?
The REST Management API for catalogue, orders and customers, the GraphQL Storefront API for buyer-facing data, and webhooks for events such as orders being created or products changing.
Do you handle App Store review?
Yes. We prepare the listing, screenshots, privacy and data-protection answers, run the review checklist ourselves first, submit, and fix anything the reviewers raise.
Have you built a Shopify app before?
Yes. TackQuote, our B2B quoting app for Shopify, is built and run by Intelligize Digital.
How often do Shopify apps need updating?
At least once or twice a year for the API alone. Shopify releases a new Admin API version every quarter and supports each one for at least 12 months, so an app that’s never touched will eventually run on a version it wasn’t built for. Our care plan schedules the upgrade before that happens.
Do we need Shopify Plus for a custom app?
Not for most custom apps. You need Plus if the custom app uses Shopify Functions, or if it adds checkout UI extensions to the information, shipping or payment steps. Admin screens, webhooks and theme app blocks work on any plan.
Can you move our old checkout.liquid customisations across?
Yes, by rebuilding them on checkout extensibility. Fields and banners become checkout UI extensions, discount and shipping rules become Functions, and tracking scripts move to web pixels. Some old hacks have no direct equivalent; we tell you which ones up front.
Will our app be Built for Shopify?
We design public apps to meet the Built for Shopify criteria on performance, design and integration. The status itself is awarded by Shopify and also depends on install and review numbers, so no agency can promise it.
What’s App Bridge, and do we need it?
App Bridge is Shopify’s library for embedded apps. It handles session tokens, navigation, modals and toasts inside the admin. Any embedded app, public or custom, should use it.
How long does App Store review take?
It varies with Shopify’s queue and how many changes reviewers ask for. Plan for a couple of weeks, sometimes more. A clean first submission, with testing notes and a screencast, is the best way to keep it short.
What should your
Shopify app do?
Tell us the job, who uses it and whether it should be listed. An engineer replies within one business day.
What happens next
- An engineer replies Within one business day, by email.
- A free 30-minute audit On a call with an engineer.
- A fixed quote It follows the audit. Nothing is billed before you agree it.