Spend an hour in the Shopify community forums or the merchant subreddits and you will read the same defeated sentence over and over. I had the tracking. I had the signature. I uploaded everything, and I still lost. Chargebacks are the rare Shopify pain where merchants are not confused about what to do. They are doing it, carefully, and losing anyway. The frustration is not ignorance. It is the feeling of fighting with one hand tied and a stopwatch running.
The trap is that doing nothing feels almost the same as doing something. When a dispute is filed and you use Shopify Payments, Shopify automatically gathers the basic transaction record and submits a response to the issuing bank on your behalf. That sounds like protection. It is closer to a default form letter mailed on the last possible day. The data is generic, it is not matched to the reason the customer gave, and once it goes out, or once the deadline passes, you cannot add anything else. The bank decides, and that decision is final. There is no appeal.
A chargeback is the only support ticket that answers itself if you ignore it, and the answer it gives is usually you lose.
How big the bill actually is
This is not a rounding error you can wave off. The average disputed transaction is around eighty four dollars, but the true cost of a single dispute lands near three hundred and fifteen dollars once you count the chargeback fee, the merchandise you already shipped, the shipping itself, and the staff time to respond. You lose the sale, you lose the goods, and you pay a penalty for the privilege. Across ecommerce, chargebacks are projected to cost roughly thirty four billion dollars in 2025.
The win rates are the part that stings. US merchants win only about fifty four percent of the disputes they actually fight through representment, and for chargebacks coded as fraud the win rate falls to roughly seventeen percent. And the category that is growing fastest is the one that hurts honest stores most: friendly fraud, where a real customer disputes a real, delivered purchase, now makes up around three quarters of all chargebacks and has been climbing at a double digit annual rate. These are not stolen cards. They are buyers who forgot the charge, regretted it, or learned that the bank is faster than your refund policy.
What Shopify actually does, and where it stops
Shopify has a real disputes flow, and on paper it looks handled. The chargeback appears in your admin, there is an evidence form, and if you are on Shopify Payments the obvious fields are pre filled and sent automatically. The trouble, as always, is in the gap between the form and the win, and the gap is where the actual work lives.
First, the auto response is thin. Shopify populates the available transaction data and submits it, but it does not read the reason code and assemble the specific evidence that beats it. A fraud claim is won with an address and card verification match plus the device and IP history. An item not received claim is won with carrier tracking and a delivery signature. A product not as described claim is won with the listing, the photos, and the refund policy the customer agreed to at checkout. Drop the same generic packet into all three and you answer none of them.
Second, you are racing a hard deadline. The window to add evidence is short, usually somewhere between seven and twenty one days, and it is one shot. Shopify sends everything on the due date, and after that you cannot submit more. Miss the window because the alert got buried under a hundred order notifications, and the thin default is all the bank ever sees.
Third, the evidence is scattered across systems. The proof that wins a dispute is never in one place. The card and address verification results sit with the payment record, the delivery confirmation sits with the carrier, the conversation where the customer said they loved the product sits in your help desk, the refund policy sits on a page, and the customer's order history sits in the admin. To respond well, someone has to go gather all of it, by hand, against the clock, for every single dispute.
Why the usual fixes don't hold
Once disputes start to bite, merchants reach for three coping strategies. Each buys a little relief and each breaks in a predictable way.
"Just let Shopify handle it." The auto response feels like the system has your back, so the dispute gets ignored. But the auto response is the floor, not the case. Leaning on it is how a store ends up with a win rate that tracks the seventeen percent fraud number instead of beating it. You did not fight and lose. You never really fought.
"Refund anything that looks risky." To dodge the fee and the hassle, some merchants pre emptively refund any order that smells like a dispute. That trains the worst behavior, eats margin on orders that were perfectly good, and hands money back to the exact friendly fraud pattern that is already growing fastest. You cannot refund your way out of a problem that rewards the customer for filing.
A Shopify Flow rule or a one-off macro. Flow is great at reacting to clean events, but a chargeback is not a clean event. It arrives as a reason code attached to a story, and the winning response depends on facts spread across your processor, your carrier, and your inbox. Flow can tag the order or send you a Slack ping, but it cannot read the reason code, pull the matching evidence from five systems, write the rebuttal, and file it before the deadline. The trigger exists. The judgement does not.
What the automation actually has to do
The real job is not "notify me about disputes." It is "when a chargeback arrives, decide whether it is worth fighting, gather the exact evidence its reason code calls for, write the rebuttal, and file it in time, while flagging the ones a human should weigh in on." That means reading the claim, pulling data from several systems, and acting end to end. As a Dugong playbook, in plain prose, it reads like this:
# trigger
When a chargeback or inquiry is filed on an order
# steps
1. Read the reason code and the disputed amount, and
pull up the full order
2. Decide if it's winnable: is there delivery proof,
an AVS/CVV match, a clean customer history?
3. If it's clearly unwinnable or below the fee →
accept it and log why, don't waste the hours
4. Gather the evidence the reason code needs:
verification results, tracking + signature, the chat where they
confirmed receipt, the policy they accepted
5. Write a rebuttal that answers that specific claim,
point by point, with the evidence attached
6. File it well before the deadline, never on the
last day, and confirm it was submitted
7. If it's high-value, ambiguous, or a repeat
disputer → assemble the packet and hand it to me to approve
Seven lines. The compiler fills in everything underneath: reading the reason code, querying the payment record for the verification results, pulling tracking and the delivery signature from the carrier, searching the help desk for the relevant thread, attaching the policy, drafting the argument, and submitting through the disputes form with days to spare. The merchant never built a branch for every reason code. They described how a sharp disputes analyst would work the queue, and let the compiler do the gathering and the writing.
Why this is a compiler problem, not an app problem
There are solid chargeback apps in the Shopify ecosystem, and for many stores they are worth it. But an app hands you its author's idea of how to fight a dispute, wrapped in a settings page and a monthly fee that often scales with your dispute volume. What most merchants actually want is to encode their rules: always fight anything over a hundred dollars with a delivery signature, never contest a dispute from a customer we already refunded, auto-concede anything below the fee, always pull the Gorgias thread before filing, treat a second dispute from the same email as a fraud pattern and flag it. Those are sentences, not toggles, and they are specific to how your store loses money.
A natural-language compiler is the unlock because representment was never really a forms problem. It was an evidence and judgement problem wearing a forms problem's clothes. Filing the response is the easy part. The hard part is everything before it: read the claim, decide if it is worth the fight, gather proof from five systems, write the argument that answers this exact reason code, and file it with time to spare. You can write that brief in a paragraph. You could never maintain it as a rule tree with a branch for every reason code and edge case.
The workflow worth building this week
If you are quietly eating chargebacks because the deadline always beats you, this is the automation to build before any upsell or win-back flow, because it pays you back in recovered revenue you had already written off. It sits right next to a pain we have written about already. The checkout-time cousin of the lost dispute is the high-risk flag that makes you guess: catch the bad order before it ships and you never fight the chargeback at all, and answer the chargeback well when one slips through and you stop paying for the ones you should win.
Describe it the way you would brief a careful disputes hire on day one: here is how to read a reason code, here is the proof that wins each kind, here is where each piece lives, here is when a dispute is not worth fighting, and here is when to stop and bring it to me. That is the whole brief. The compiler does the gathering, the writing, and the filing. You keep your attention for the disputes that genuinely need a person, and you stop losing the ones you were always going to win.
If you are a Shopify merchant who has built a disputes playbook that
finally lifted your win rate, or you have a lost-it-with-the-tracking
story that still stings, the inbox is open:
field-notes@dugong.live. We are collecting case studies for
the next issue.