Shopify app development

Shopify apps that feel built into the admin.

Public apps for the Shopify App Store and custom apps for one store: embedded admin screens, checkout and theme extensions, Shopify Functions, webhooks and billing, built on the current API version.

Shopify Partner and maker of TackQuote, our own Shopify app.

  • EmbeddedApp Bridge and Polaris UI.
  • GraphQLAdmin API, pinned versions.
  • Plus-awareCheckout and Functions.
  • Review-readyListing and checks done.
Surface

Illustrative screens with sample data. Not Shopify’s actual interface.

Where apps plug in

Five layers of Shopify, one app

Pick a layer. Most apps we build use three or four of them together.

Plain English

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.

Our view, after maintaining TackQuote
Sample: Admin API versions
  1. 2025-07
  2. 2026-01
  3. 2026-04
  4. 2026-07
  5. 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.

Under the hood

The calls behind a good app

Three real patterns from Shopify app work: request on the left, what comes back on the right.

App Store review

Pass review the first time

The checks we run before Shopify does. Tap a check to see how the score moves.

Common mistakes

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.

Rejected

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.

Rejected

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.

Rejected

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.

Rejected

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.

Rejected

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.

Delayed

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.

Delayed

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.

Built by us

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.

TackQuote featureRequest a quote button
Shopify surfaceTheme app extensionApp block merchants place in the theme editor.
TackQuote featureBranded buyer portal
Shopify surfaceCustomer accountsBuyers review, comment, accept and sign.
TackQuote featureAccepted quote becomes an order
Shopify surfaceDraft Order APINegotiated prices carried into a Shopify draft order.
TackQuote featureFollow-ups and hand-offs
Shopify surfaceShopify FlowAutomations triggered from quote events.

See TackQuote

Worked example

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.

Illustrative brief

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

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

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

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

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

Risks

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
What happensFields you relied on change or disappear. Usually nothing crashes; numbers just quietly go wrong.
How we handle itA pinned version, a quarterly upgrade on the care plan, and tests that run against the new version first.
HighShopify changes a platform rule, toggle
What happensThe checkout.liquid retirement is the obvious example. Whole approaches stop being allowed with a deadline attached.
How we handle itWe track Shopify’s changelog and tell you what a change means for your app and when it takes effect.
MediumRate limits during big syncs, toggle
What happensImporting 20,000 products one call at a time hits GraphQL cost limits and stalls.
How we handle itBulk operations for large reads and writes, queues with back-off for everything else.
MediumWebhooks arrive late, twice or not at all, toggle
What happensShopify retries failed deliveries, but ordering isn’t guaranteed and duplicates happen.
How we handle itIdempotent handlers keyed on the event ID, plus a scheduled reconciliation job.
MediumA feature turns out to need Plus, toggle
What happensDesigned on a Plus dev store, launched on a Basic store, and the checkout step is missing.
How we handle itWe confirm your plan in discovery and design for the surfaces you actually have.
LowStorefront slows down, toggle
What happensA heavy app embed adds script weight to every page and nudges Core Web Vitals the wrong way.
How we handle itSmall, deferred scripts and a before-and-after speed check. Our speed team reviews anything storefront-facing.
Pricing

Budgets for Shopify apps

Typical ranges. Your fixed quote follows the free audit.

Focused

Custom app

from $9,0004–6 weeks

  • One store or group
  • Admin screen and webhooks
  • ERP or tool connection
Scope a custom app
Most chosen

Public app

from $28,0008–12 weeks

  • Embedded admin and billing
  • Theme or checkout extensions
  • App Store listing and review
Plan a public app
Ongoing

App care

from $1,200per month

  • Quarterly API upgrades
  • Review and policy changes
  • Small features and fixes
Ask about care
Questions

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.
See all questions
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.

We save what you type here so we can follow up if you get interrupted.
One file, up to 10 MB: PDF, Word, Excel, CSV, text, PNG or JPG.

An engineer replies within one business day.

What happens next

  1. An engineer replies Within one business day, by email.
  2. A free 30-minute audit On a call with an engineer.
  3. A fixed quote It follows the audit. Nothing is billed before you agree it.
All app development