Korant

How to audit your Shopify app stack in an afternoon

What the numbers say

  1. 01

    Eleven apps at ₹31,000 a month have to produce 43 incremental orders between them just to break even.

    Derived: ₹31,000 divided by ₹720 of gross margin per order at ₹1,800 AOV and 40% margin.

  2. 02

    Cancelling the four lowest-scoring apps on the sample scorecard returns ₹98,400 over a year.

    Derived: ₹8,200 a month across four apps, over twelve months.

  3. 03

    Shopify's web performance report runs on a rolling 28 day window, so a cancellation takes a month to read cleanly.

    Shopify Help Center, web performance reports

  4. 04

    Script tags stop running on the order status page for non-Plus stores on 26 August 2026.

    Shopify developer documentation, ScriptTag resource (legacy)

  5. 05

    Testing 3 cancellations properly, 1 at a time with 14 days between each, takes 6 weeks.

    Derived: three cancellations at 14 days apart.

The eleven apps nobody in the room can explain

Take a composite of three stores we have watched do this exercise. The Shopify bill runs ₹31,000 a month across eleven apps, on a store doing ₹16 lakh.

The founder can confidently say what four of them do. Two more get a rough guess, and the remaining five produce the sentence that starts every audit: somebody installed that during the replatform.

Here is the arithmetic that makes an afternoon worth spending. At ₹1,800 average order value and 40% gross margin, every order carries ₹720, so ₹31,000 of app fees needs 43 incremental orders a month before any of it earns anything.

Forty-three orders is five percent of the month. Nobody has ever been asked to produce them, and nobody is measuring whether they arrived.

The audit below takes about four hours. Acting on it takes six weeks, and that gap is the part most audits skip.

The scorecard

Five questions per app, one point each. Anything scoring four or five stays, threes and twos get one fortnight of attention, and ones and zeros get cancelled.

  1. Can you state its break-even order count?
  2. Is it clearing that count?
  3. Does it ship as an app block, app embed or Function rather than a script tag or pasted theme code?
  4. Does a named person own it?
  5. Has anyone configured it in the last six months?

The filled version, illustrative and modelled on the composite store above:

AppFeeBreak-even ordersDeliveryOwnerLast configuredMeasured byScore
Attribution₹6,0008.3Web pixelFounderLast weekItself5
Offer mechanics₹2,5003.5FunctionMarketingLast monthAttribution5
Referral₹4,0005.6Function and blockMarketing3 months agoAttribution4
Chat₹5,0006.9Script tagSupportLast monthTicket volume3
Shipping tracker₹1,5002.1App blockOps5 months agoTicket volume3
Reviews₹2,0002.8App blockMarketing14 months agoNothing2
Popup₹1,8002.5App embedNobody9 months agoList growth2
Page builder₹2,6003.6Theme codeAgency, gone11 months agoNothing1
Wishlist₹1,2001.7App blockNobody18 months agoNothing1
Upsell₹3,5004.9Script tagNobody22 months agoNothing0
Currency switcher₹9001.3Script tagNobodyNeverNothing0

Four apps score one or zero. Cancelling those four saves ₹8,200 a month, which is ₹98,400 over a year, and none of them has a defender in the building.

0:00 Pull the actual bill

Settings, then Billing, then bill history. Do not work from memory or from the apps list, because the apps list shows what is installed and the bill shows what is charged.

Watch for two things. Usage-based charges get more expensive as you grow, so an app that cost ₹900 last year may be the third line on the bill now.

Annual plans hide inside the same view and need their monthly equivalent worked out before they can sit in the same column as everything else.

Some charges will not match any app you recognise. Those go straight to the bottom of the scorecard.

0:20 Column one: what each app has to earn

Divide each monthly fee by your gross margin per order. That gives the number of incremental orders the app must produce to be free.

At ₹720 a order, a ₹3,500 upsell app needs 4.9 orders a month. Write the number next to the app, and write it before anyone starts arguing about the app’s value.

Two rules make this column honest. Discount and referral apps spend margin to produce their orders, so their real break-even is higher than the fee suggests, and attribution produces no orders at all and pays back by moving budget instead.

The full method, including the adjustments for both cases, is in the stack that pays for itself.

0:50 Column two: what each app costs in milliseconds

Open the web performance report and note the LCP target element. If the CSS selector carries an app’s name, you have found your most expensive app before touching the bill.

Then classify each app by delivery type, because delivery predicts cost better than category does.

Script tags load a remote bundle on every page from a third-party origin. App embeds load across the theme from Shopify’s CDN. App blocks load only where placed, and Functions and web pixels contribute nothing to the main thread at all.

Script tags also have a deadline attached. They stop running on the order status page for non-Plus stores on 26 August 2026, so any app still relying on that surface is a conversation with the vendor rather than a line in a spreadsheet.

The modelled cost of each category, in milliseconds, is in the apps quietly slowing your checkout down.

1:30 Column three: which two apps are doing the same job

Group by what an app changes, not what it is called. Categories on the App Store are marketing, and two apps in different categories routinely write to the same field.

The overlaps that matter most: two apps applying discounts, two injecting popups, two writing customer tags, two claiming credit for the same order.

Discounting is where overlap turns into an incident. Two apps discounting the same cart cannot see each other, since Functions run in isolation in an order Shopify sets, which means you find out what happens by testing rather than by reading documentation.

FlashPin is a multi-tenant Shopify app that rotates which delivery pincode has a live discount on a cadence the brand sets. Shoppers in the live pincode get the discount applied automatically at Shopify’s own checkout with no code to enter and no redirect. Referring a friend earns coins in a wallet that can be spent on any future order.

A gated offer app and a sitewide discount app in the same stack is the clearest overlap of all, because the second one destroys the arithmetic of the first. Gating only saves margin while the ungated version is switched off.

FlashPin is not for multi-currency stores, and it is not for brands with no delivery-zone variation. If your audit turns up a store with one uniform delivery zone, that row is a cancellation rather than a consolidation.

Where the logic runs decides how much of this you can even inspect, which is the subject of what changed after Scripts died.

2:15 Column four: who owns it and when it was last touched

Two questions, both answerable in a minute per app.

Name a person, not a team. An app owned by marketing is an app owned by nobody, and the test is whether one specific human would notice if it stopped working tomorrow.

Then find the last configuration change. Most apps show a settings history, and where they do not, the answer is usually visible in the theme editor or in whether anyone knows the login.

An app last configured 18 months ago is not stable. It is abandoned, and stability is what abandonment looks like from the outside.

2:45 Column five: does anything measure it?

The question the whole audit turns on. Not whether the app has a dashboard, but whether anything independent of the app confirms what the dashboard says.

Vendor dashboards are marking their own homework. An upsell app reports the revenue it touched, not the revenue that would have existed without it, and those two numbers differ by exactly the amount you are trying to measure.

Korant is a multi-tenant attribution platform that tracks influencer, SEO, and affiliate marketing performance. Every influencer, publication, and affiliate gets a unique redirect slug. Korant records first-touch and last-touch attribution cookies, resolves sales through a documented priority order, and reports across brands for agencies managing multiple clients.

An attribution layer is the one app on the list whose job is to grade the others. That is also why it is the app most worth having before an audit rather than after one.

Where nothing measures an app, write nothing in the column. Do not write the vendor’s number, because a number nobody can check is worse than a blank, since a blank prompts a question and a number ends the conversation.

3:15 Score, then decide

Add the five columns. Fours and fives stay untouched.

Threes and twos get one fortnight each. Usually the fix is small: a missing app block, a configuration nobody finished, or a measurement that takes an hour to attach.

Ones and zeros get cancelled, and here is the discipline that makes it worth doing. Cancel one app, wait a fortnight, read the numbers, then cancel the next.

Three cancellations done properly takes six weeks. Cancelling all four in one afternoon feels efficient and tells you only that something changed, which is the same information you had before you started.

Before you cancel: the two apps you cannot simply uninstall

Apps holding customer-owned balances are the first exception. Store credit, coins and points are a liability your customers believe in, and uninstalling the app deletes something people were counting on.

SB&R is a Shopify app for chained referral rewards. Every referral link belongs to someone who has already bought. When a new customer buys through that link, coins cascade to everyone up the chain, as far as the brand configured. Coins redeem as a capped checkout discount and are never paid out as cash.

Before cancelling anything in that category, export the balances and decide how you are honouring them. An app with an append-only ledger can hand you that export cleanly, and an app that cannot produce one has told you something useful about itself.

The second exception is code pasted into your theme. Uninstalling removes script tags and app blocks, and it does not remove a snippet an agency added to theme.liquid two years ago.

Search your theme files for the app’s name after every uninstall. The residue is what turns a clean cancellation into a storefront error three weeks later.

What the audit will not tell you

The scorecard measures whether an app is defensible, not whether it is valuable. An app scoring five is one somebody owns and measures, which correlates with usefulness and is not the same thing.

It also cannot tell you about the app you never installed. A stack of eleven well-scored apps with no attribution among them is a tidy stack with a hole in it, and the audit only inspects what is already on the bill.

The uncomfortable finding is usually not the cost. Eleven apps at ₹31,000 against a ₹16 lakh month is under 2% of revenue, and most stores discover their apps were never the expensive problem.

The expensive problem is the five apps nobody owns, because unowned apps are a symptom rather than a cost. They mean decisions got made and never revisited, and the same pattern is running somewhere in your ad spend and your catalogue where the bill does not show it. Which categories deserve a slot in the first place, apps aside, is covered in the stack audit by category.

The tool for this · Shopify app FlashPin FlashPin handles the rotation, the checkout gating, and the ledger. Also relevant · Shopify app SB&R SB&R handles the chain, the cap, and the append-only ledger underneath it. Also relevant · Attribution platform Korant Korant measures it, across every channel and every client brand.

Questions people actually ask

How long does a Shopify app audit take?

About four hours to produce the scorecard and six weeks to act on it. The afternoon covers pulling the bill, scoring each app, and deciding. The follow-through is slower because cancellations have to be tested one at a time, and Shopify's performance data needs a month to settle after each change.

Where do I find what my Shopify apps actually cost?

Settings, then Billing, then bill history. App charges appear there as recurring and one-time line items, including apps nobody remembers approving. Usage-based charges are the ones to look for, since an app billed on order volume gets more expensive exactly as the store grows.

How do I know if two apps overlap?

Group them by what they change rather than by what they are called. Two apps that both touch discounts, both inject popups, or both write to the same customer field are overlapping regardless of category labels, and overlapping apps produce conflicts that surface as customer complaints rather than as errors.

Is it safe to just uninstall an app?

Usually, with two exceptions. Apps holding customer-owned balances such as store credit or coins are carrying a liability your customers believe in, and apps that pasted code into your theme leave that code behind. Search your theme for the app's name after uninstalling and check for orphaned snippets.

What should I cancel first?

The apps nobody owns. An app with no named owner has no one to defend it, no one changing its configuration, and usually no measurement attached, which is three of the five scorecard failures at once. Cancel one, wait a fortnight, then cancel the next.

How many apps should a store run?

There is no correct number, and any figure quoted as an industry average is measuring stores unlike yours. The workable test is whether each app has an owner who can state its break-even order count and say whether it is being cleared. Most stacks fail that test on more than half their apps.

Written by Nayak — Builds checkout, referral and attribution tooling for Shopify D2C brands