( /services/revenue-integrity )
Tracking & checkout integrity
- 01Assertions run daily
- 02Reconciliation weekly
- 03Differences get a queue
Carrtel Solutions is a Shopify Partner. We build stores on Shopify.
We prove your money paths work, every day
A store can take orders normally while a link in the middle of the chain is losing data. Nothing errors, nothing goes down, and the only symptom is a number that is quietly a little lower than it should be. We check the chain against itself every day and show you the differences.
- Eight links from ad click to payout, each one able to break alone
- Assertions with a known expected answer, not a status page
- A weekly receipt comparing the storefront to orders and payouts
- Every unexplained difference becomes a numbered exception
What is Shopify tracking and checkout integrity?
It is the practice of checking, every day, that the chain between an ad click and a settled payout is still intact end to end. A set of assertions runs against your live store and compares records that should agree — orders created against purchase events, orders against webhook deliveries, paid orders against payouts. A weekly receipt shows every difference, and anything unexplained becomes an exception with an owner. The free Store Integrity Scan reads your public storefront in about 90 seconds; the paid work starts at the $750 audit and needs access to your store.
Last updated: August 2026
What a money path is, link by link
Eight separate pieces of software have to agree for one order to be measured, delivered and banked correctly. They are owned by different vendors and none of them is watching the others.
- 01
Ad click
A visitor arrives carrying a click identifier — a gclid, an fbclid, a UTM set — and your consent banner decides which tags are allowed to run before the page finishes loading.
How it breaks
A redirect strips the identifier, or the consent gate blocks a tag and never releases it. The visit still happens. It just arrives anonymous, and anonymous traffic cannot be credited to the campaign that paid for it.
- 02
Analytics and pixel events
page_view, view_item and their platform equivalents fire from the theme and from every app that injects a tag into it.
How it breaks
A snippet is dropped during a theme edit, or one script throws before the rest of the chain runs. Events keep arriving from the pages that still work, so no dashboard is ever empty. It is simply short, and short looks like a slow week.
- 03
Add to cart
add_to_cart fires and the cart holds line items, properties, and any cart attributes your fulfilment or reporting depends on later.
How it breaks
A drawer cart adds the item over AJAX without firing the event. Sales continue exactly as before while the mid-funnel signal the ad platform learns from goes quiet.
- 04
Checkout
The customer crosses into checkout. Discount and shipping rules evaluate, and checkout-side pixels and extensions run inside Shopify’s environment rather than your theme’s.
How it breaks
Checkout runs code you cannot open in the theme editor. A customisation that used to apply stops applying, and there is no error in your theme to go and find, because the fault is not in your theme.
- 05
Order created
Shopify writes the order: line items, taxes, discounts, and whichever attribution properties survived the four links above.
How it breaks
This link almost never breaks, and that is the problem. The order exists, so everyone downstream assumes the rest of the chain ran. The order is the thing people check, and it is the last link that is reliably true.
- 06
Webhook delivered
orders/create and orders/paid are pushed to your ERP, 3PL, subscription tool, or middleware.
How it breaks
Delivery is at-least-once and unordered. A receiver that answers 200 and then throws internally loses the order in silence. A receiver that is down is retried on Shopify’s published schedule and then given up on. Nothing on the Shopify side looks wrong afterwards, because on the Shopify side nothing is.
- 07
Fulfilment
The warehouse acknowledges the order, ships it, writes a tracking number back, and the customer notification goes out.
How it breaks
The write-back fails, or lands against the wrong line on a split shipment. The parcel is genuinely moving; the order still reads unfulfilled; support absorbs the difference one ticket at a time and nobody adds the tickets up.
- 08
Payout and accounting
Payments settle, the payout lands, and the numbers are posted to your books.
How it breaks
Refunds, chargebacks, gift cards, multi-currency rounding and app-generated fees each land in a different column. Small permanent differences are indistinguishable from ordinary accounting noise, so they are reconciled away by hand, every month, forever.
Notice where the checking stops. The order is the link anyone can open in an admin, so it becomes the proxy for the other seven — and it is also the link that stays true while the ones around it break.
Six ways a store loses money without an error message
Each of these is a system doing exactly what it was told. That is why none of them shows up as a fault.
A pixel stops firing after a theme edit
What happens
Someone edits a section, reorders a block, or installs an app that injects its script above yours. A snippet goes missing, or one tag throws and the rest of the chain never executes.
Why you never see it
The ad platform still reports conversions, just fewer of them, and its optimiser treats that smaller number as the truth. It bids toward the audiences that happen to still be measured and away from the ones that are not. Your revenue can be flat for weeks while your acquisition quietly gets worse, and every dashboard involved reports success the whole time.
The check that catches it
Compare purchase events recorded for a day against orders created that day. A difference you cannot explain is a defect, not a rounding error.
A checkout customisation stops applying
What happens
Checkout logic used to live in places that have since been retired in favour of web pixels and checkout extensions. Migrations leave gaps: an upsell, a tracking call, a field capture that no longer runs.
Why you never see it
Checkout still completes and still takes money, which is the only outcome anyone watches. The customisation does not error — it is simply not there. Nothing in your theme can tell you, because the code is not running in your theme.
The check that catches it
Assert on the output rather than the code: the share of yesterday’s orders that actually carry the attribute the customisation is supposed to write.
Order webhooks fail and are retried into nothing
What happens
Your endpoint is briefly down, or slow enough to time out, or it returns 200 before the work is committed. Shopify retries on a documented schedule and eventually stops. A subscription that keeps failing can be removed.
Why you never see it
Shopify has the order. The storefront is correct. Only the receiving system is short, and a receiving system has no way to know what it never received. Nobody is counting an absence, so the absence is free to grow.
The check that catches it
Reconcile by order id, never by count alone. Two systems can hold the same number of orders and not the same orders.
Orphaned scripts from apps you removed
What happens
Uninstalling an app does not always remove what it left behind: script tags, theme snippets still being rendered, app blocks still sitting in JSON templates, leftovers in older checkout configurations.
Why you never see it
The app is gone from your admin, so nobody looks for it. Meanwhile the orphan can double-fire an event, which inflates your conversions and looks like good news, or throw an error that stops every tag queued behind it.
The check that catches it
Inventory every script the storefront and checkout actually load, then diff that list against the apps you actually have installed.
Discount or shipping logic silently stops matching
What happens
Rules key off collections, product tags, weights or metafields. A bulk edit renames a tag. A supplier changes packaging weight. A smart collection’s condition is adjusted. The rule still evaluates. It just matches nothing.
Why you never see it
A rule that matches nothing does nothing, and doing nothing raises no error. A discount that stops applying shows up as a slightly higher average order value and a slightly lower conversion rate — two numbers that move on their own anyway. A shipping rate that falls through to the wrong fallback is a margin loss no report is watching for.
The check that catches it
Run a fixture cart through the rule every day and check that it still gets the discount and the rate it is supposed to get.
Two systems disagree and both are confident
What happens
Inventory or price has more than one source of truth. Sync is one-directional in some places and bidirectional in others. A job fails overnight, retries, and settles into a steady disagreement.
Why you never see it
Overselling looks like demand. A stale price looks like a promotion someone forgot about. Both systems report healthy, because each one is internally consistent — they are only wrong relative to each other, and nothing is comparing them.
The check that catches it
Sample a rotating set of SKUs daily and compare store state against the source system field by field.
You cannot find a silent leak by watching the total
Weekly revenue moves for plenty of legitimate reasons: a promotion, a stock-out, a shipping delay, weather, a competitor's sale, the calendar. A persistent small loss sits comfortably inside that movement. It is not that anyone is careless. It is that the signal you would need to spot it is smaller than the noise you are looking at.
The only reliable way to detect a silent failure is to ask a question you already know the correct answer to, and to ask it often enough that the answer changing is itself the alarm. That is what an assertion is: two independent records that should agree, compared on a schedule, with the tolerance agreed in advance so that nobody gets to reinterpret the result afterwards.
It also has to be a record from outside the system under test. Asking analytics whether analytics is working is not a check.
What we actually do
( 03 parts )
Assertions that run every day against the real store
Not a synthetic sandbox and not a copy. The checks run against your live store and your live receiving systems, because a staging copy cannot tell you that a theme edit made last Tuesday stopped a tag from firing in production. Each assertion has an expected answer and a tolerance you sign off on during the audit.
Example assertions · yours are tuned to your chain
- 01Orders created yesterday reconcile against purchase events in analytics and in each ad platform, inside a tolerance you agree to up front.
- 02Every order created in the last 24 hours has a matching record in the receiving system, matched by order id.
- 03Every webhook subscription still exists, still points at the right endpoint, and has no failed deliveries outstanding.
- 04The storefront and checkout load no script belonging to an app that is not installed.
- 05A fixture cart still receives the discount your rule is meant to apply and the shipping rate your rule is meant to return.
- 06Every order paid outside the settlement window appears in a payout, and payout totals reconcile to orders less refunds less fees.
- 07Every fulfilment created in the last 24 hours carries a tracking number and a sent customer notification.
- 08A rotating sample of SKUs matches the source system on price, inventory and status.
- 09The tag chain runs to completion on a headless load of a product page, a cart page and checkout entry.
- 10No order in the last seven days is missing the attribution properties your reporting depends on.
A weekly reconciliation receipt
One page a week that compares what the storefront thinks happened against what the order records and the payout records say happened. Every row either reconciles, or carries an explanation, or becomes an exception. There is no fourth option and no summary paragraph in place of the numbers.
Illustrative receipt · format only
| Row | Count | Delta |
|---|---|---|
| Orders createdBaseline | 412 | — |
| Purchase events, analyticsExplained: 7 orders drafted in admin | 405 | −7 |
| Purchase events, ad platformUnexplained → exception #118 | 388 | −24 |
| Orders delivered to ERPMatched by order id | 412 | 0 |
| Fulfilments with trackingExplained: awaiting carrier pickup | 399 | −13 |
| Paid orders in a payoutExplained: settlement window | 404 | −8 |
These numbers are invented to show the layout. Carrtel has no client results to publish.
An exception queue for the differences
Every unexplained difference becomes a numbered item with an owner and a state, in a queue you can open yourself rather than a status email you have to trust. An item closes with a cause written down. When the cause is a defect inside a third-party app, the item closes as reported, carrying the vendor reference, so the record survives the conversation.
The queue is the part that is easiest to leave out, and the part that decides whether any of this survives a busy week. An alert with nowhere to go gets muted, and a muted alert is worse than no alert, because now you believe something is watching.
What an item carries
- The assertion that failed and the evidence it failed on
- The first date the difference appears in the record
- An owner: us, you, or a named vendor
- A state, and a cause when it closes
This needs access to your store. There is no version that does not.
Anyone selling you order-level monitoring without asking for order-level access is selling you something else.
An app, with order-read scope
A custom app installed on your store with read access to orders. Order data is protected customer data under Shopify’s rules, so approval for it is a real step in onboarding with its own timeline. We plan for it rather than discovering it in week two.
Minimum scopes, named to a purpose
Read-only wherever the assertion allows it. Write access only where a fix genuinely needs it, and only for the window it needs. We tell you which assertion each scope is for, and you can revoke the whole thing from your admin without asking us.
The receiving side too
Read access to the logs of whatever sits downstream: your ERP, 3PL, subscription tool or middleware. A reconciliation with one side missing is not a reconciliation, it is a report.
What we do not need is your personal admin login. A scoped, revocable app is the right shape for this, and it is the shape we ask for.
What the free scan can and cannot see
The Store Integrity Scan takes about 90 seconds, needs no signup and installs nothing. It reads your public storefront the way any visitor could, which is exactly why it is free and exactly why it is limited.
Run the scanIt can see
- Which tags the storefront actually loads on a product page and a cart page
- Scripts that look like leftovers from apps that are no longer installed
- Event wiring that appears to fire twice for the same action
- Whether the tag chain finishes or stops partway through
- Basic behaviour at the point where a visitor crosses into checkout
It cannot see
- Your orders — not one of them, at any level of detail
- Your webhook delivery history and whether anything was dropped
- Your payouts, refunds, chargebacks and fees
- Your ERP, 3PL, subscription tool or accounting system
- Anything that happens after the customer crosses into checkout
The links that lose money quietly are all on the right-hand list. The scan is a good reason to keep reading. It is not a substitute for the audit.
Where to start, and what each step costs
All prices in USD. Fixed scope, fixed price, stated duration. Anything outside the scope is quoted at $135/hr and approved before it starts.
Store Integrity Scan
About 90 seconds
Self-serve, no signup, no app install. It reads the public storefront and tells you what it can see from the outside. It is the zero-access half of this page.
Tracking & Checkout Integrity Audit
5 business days
One pass over the whole chain, with access. You get a map of every money path in your store, a list of what is currently broken with the evidence attached, and the assertion set we would run against it. Credited in full against any project booked within 60 days.
Tracking Restoration Sprint
7 business days
Fix what the audit found: re-wire events, clear orphaned scripts, restore checkout-side behaviour, repair webhook delivery and replay what was lost where it can still be replayed.
Integrity Watch
Ongoing
Daily assertions, a weekly reconciliation receipt, an exception queue, and up to 4 fix-hours a month.
Order Ops
Ongoing
Everything in Integrity Watch, plus the middleware between Shopify and your other systems maintained by us, a quarterly API-version upgrade, and up to 12 fix-hours a month.
The $750 audit is credited in full against any project booked within 60 days. Book a sprint or a build after it and the audit costs you nothing.
We do not start a watch retainer without one. Assertions tuned to a store we have not read are decoration.
Work beyond the included fix-hours is $135/hr, scoped and approved in writing before anyone starts it.
What is included, and what is not
The exclusions are the useful half of this table. Read those first.
Integrity Watch
$1,200 per month
For a store where someone else built the plumbing and you want daily proof it still works.
Included
- Daily assertions across the money path, tuned to your store in the audit
- An alert the moment an assertion fails, with the failing evidence attached, not a summary
- A weekly reconciliation receipt: storefront against orders against payouts, every difference either explained or queued
- An exception queue you can open yourself, where each item has a number, an owner and a state
- Up to 4 fix-hours per month, used the same week wherever the fix is small
- One review call a month to close or re-scope what is still open
Not included
- New feature work, theme redesign or app builds beyond the fix-hours
- Fixing defects inside third-party apps. We identify them, document them and chase the vendor. We cannot patch someone else’s code.
- Paid media, SEO or brand design. We do not sell those.
- Round-the-clock on-call. Assertions run daily; we respond on business days.
- Maintaining middleware we did not build. That is Order Ops.
- Rollover. Unused fix-hours do not carry into the next month.
Order Ops
$3,400 per month
For a store where the integration between Shopify and the back office is ours to run.
Included
- Everything in Integrity Watch
- The middleware between Shopify and your ERP, 3PL or accounting system monitored, patched and owned by us
- A quarterly API-version upgrade, planned and executed before the version you are on is retired. Shopify retires API versions on a published schedule, and an unattended integration eventually stops.
- Replay and repair for failed deliveries: we keep the record of what did not arrive and put it back
- Up to 12 fix-hours per month
Not included
- Building a new integration from scratch. That is the Order Ops Bridge, $9,500.
- Changes inside your ERP or 3PL, made in their own systems by their own teams
- Third-party app defects. Same rule as above: reported, tracked, not patched by us.
- Work beyond the fix-hours. Overage is $135/hr, quoted and approved before it is started.
- Enterprise-tier bids. We do not take Shopify Plus enterprise work.
What we stand behind, stated plainly
30-day bug warranty
Defects in work we delivered are fixed at no charge for 30 days after delivery.
25% credit on a missed date
If we miss an agreed delivery date, you get a 25% credit toward the next engagement. A credit, not a cash refund.
Three projects at a time
We run a maximum of three concurrent projects. That limit is why the dates are meetable in the first place.
Exclusions
The warranty and the credit do not cover defects inside third-party apps, delays on your side (access, approvals, content, decisions), or platform incidents. None of those are ours to control, so we do not price as though they are.
Who this is for, and who it is not for
( Fit )
A good fit
- A live store past product-market fit, roughly $40k to $400k USD a month
- On Basic, Grow or Advanced, running a Liquid theme
- No in-house developer, so nobody currently owns the plumbing
- At least one system downstream of the order: an ERP, a 3PL, accounting, a subscription tool
- Enough paid traffic that a broken conversion signal costs real money
Not a fit
- Shopify Plus enterprise bids. We do not take that work.
- Greenfield headless rebuilds for a small merchant
- Paid media or SEO retainers, and brand identity design
- Dropshipping store spin-ups
- A store still searching for product-market fit. There is nothing to protect yet, and the money is better spent finding demand.
Common questions
( 09 )
- What is a money path?
- The chain a dollar travels through: ad click, analytics and pixel event, add to cart, checkout, order created, webhook delivered to your other systems, fulfilment, and finally payout and accounting. Every link is a separate piece of software, and every link can break on its own without breaking the ones next to it. That is why a store can take orders normally while a link in the middle is losing data.
- Can you do this without access to my store?
- No, and we will not pretend otherwise. The free Store Integrity Scan is the zero-access part: it reads the public storefront in about 90 seconds with no signup and no app install. Everything past checkout — orders, webhook deliveries, payouts — requires an app installed on your store with read access to orders. Order data is protected customer data under Shopify’s rules, and getting approved for it is a real step in onboarding rather than a formality.
- How is this different from analytics, or from an uptime monitor?
- An uptime monitor answers whether the site is up. Analytics reports what it received, which is exactly the number that a broken pixel corrupts — you cannot use a broken instrument to detect that the instrument is broken. An assertion compares two independent records that should agree, such as orders created against purchase events recorded, and tells you when they stop agreeing.
- Do I have to buy the $750 audit before a retainer?
- Yes. We will not start a watch retainer without one. Assertions are only worth anything when they are tuned to your actual chain — your apps, your theme, your integrations — and the audit is where we learn it. The $750 is credited in full against any project booked within 60 days, so if you go on to a sprint or a build, the audit costs nothing.
- What if the audit finds nothing wrong?
- Then you have a documented baseline of your money paths and the assertion set that fits them, and you can decide with real information whether daily checking is worth $1,200 a month to you. We would rather report a healthy store than sell a retainer against an imaginary problem.
- What actually happens when an assertion fails?
- You get an alert with the failing evidence attached, and the difference becomes a numbered item in your exception queue with an owner and a state. From there it is either fixed inside your monthly fix-hours, or scoped and quoted at $135/hr before any work starts. If the cause is a defect in a third-party app, we document it, report it to the vendor, and keep the item open with the vendor reference on it. Items close with a cause, not with a shrug.
- Which retainer do I need?
- Integrity Watch ($1,200/mo) if the plumbing between Shopify and your other systems was built by someone else and you want daily proof it still works. Order Ops ($3,400/mo) if that middleware is ours to maintain, including the quarterly API-version upgrade and the replay of failed deliveries.
- Is this an app I install from the App Store?
- It is a custom app installed on your store with the specific scopes the assertions you are buying actually need, plus read access to the logs on the receiving side. Nothing is published publicly. We tell you which assertion each scope is for, and access is revocable by you at any time from your admin.
- Do you build stores too, or only monitor them?
- Both. Carrtel Solutions is a Shopify Partner. We build stores on Shopify and the order-and-tracking plumbing behind them, then stay on to prove the money still arrives. Store Build is $7,500, Platform Migration is $14,000, and the Order Ops Bridge between Shopify and an ERP, 3PL or accounting system is $9,500.
Start at the free end
Find out what your storefront is doing before you pay us anything
The scan reads the public half of your store in about 90 seconds. If it comes back clean, you have spent nothing and learned something. If it does not, the $750 audit is where the other seven links get checked.
Two ways in
Store Integrity Scan
Free, self-serve, no signup and no app install. About 90 seconds.
Or email support@carrtelsolutions.com