Case study · Shopify App

SplitFlow:
idea to production

SplitFlow is our Shopify app that splits orders into separate shipments, using rules the merchant sets. Here's how it was built, got through App Store review and found its first paying merchant — and how we tracked down an undocumented webhook gap along the way.

Live on the Shopify App Store
Published 15 July 2026
First paying merchant, September 2026
3 days
First version built
One engineer, AI-assisted tooling
90+
Orders split automatically
First paying merchant's first week: 400+ evaluated, zero errors
~40 s
Time-to-split after the webhook fix
Down from up to 15 minutes for the affected orders
5,700+
Automated checks
On the splitting engine, plus end-to-end suites
The product

Rules in, separate shipments out

Some items in an order need to ship on their own — they come from a different vendor, carry a particular tag, or would push a parcel past a carrier's weight cap. In SplitFlow the merchant describes that once, as rules. From then on, matching orders are split into separate shipments — Shopify fulfillment orders — automatically.

Match items by

VendorSKUProduct typeProduct tagCollectionPer-item weightMetafieldLine quantity

Or cap every shipment

Max weight per shipmentMax items per shipment

For example, a carrier's 20 kg cap per parcel.

Only fulfillment changes. Order totals, payment, inventory and reporting stay untouched.

SplitFlow
Example rules, in plain English
OnDropship supplier

When the vendor is “Acme Dropship”, move those items into their own shipment.

OnPre-orders ship separately

When a product tag is “pre-order”, move those items into their own shipment.

OnLimitCarrier limit — max 20 kg

When a shipment weighs more than 20 kg, split it into shipments of up to 20 kg each.

Live on the App Store
Timeline

From first build to first paying merchant

A short build, a single review round-trip, and a first paying merchant about ten weeks after launch.

01

First version

The first working version was built in about 3 days, by one engineer working with AI-assisted tooling.

About 3 days
02

Submitted for review

Submitted to the Shopify App Store for review.

11 July 2026
03

One review round-trip

Shopify's reviewer asked for a real screencast of the working app, not marketing slides. We recorded one — that was the single round-trip.

July 2026
04

Approved & published

Approved and published on the Shopify App Store, where any merchant can install it.

15 July 2026
05

First paying merchant

About ten weeks after launch, the first merchant subscribed to the $49/month plan.

Late September 2026
06

Their first week

SplitFlow evaluated 400+ of their real orders and split 90+ of them automatically — with zero errors.

Week one
Debugging in production

The webhook that never came

Some orders were only being picked up by the 15-minute safety net. The cause was on Shopify's side — and it isn't documented.

The symptom

SplitFlow normally starts work when Shopify sends the fulfillment_orders/order_routing_complete webhook. For orders paid through certain offsite payment gateways, it never arrived — so those orders waited for the safety-net job that rechecks orders every 15 minutes.

The investigation

Shopify's own webhook delivery logs gave the answer. These weren't failed deliveries: for those orders, the event was never generated at all. The behaviour isn't documented.

The fix

We added orders/create as a second trigger. Both triggers go through one shared atomic claim, so whichever arrives first splits the order — exactly once.

The result

For those orders, time-to-split dropped from up to 15 minutes to about 40 seconds. The 15-minute safety net stays in place as a backstop.

Time-to-split
Orders paid through the affected gateways
Before
Waited for the safety-net job
Up to 15 min
After
Picked up via orders/create
~40 s
order_routing_completenever generated
orders/createsecond trigger
shared atomic claimsplit exactly once
Found in Shopify's delivery logs
Engineering

How it's kept reliable

SplitFlow works on real stores' live orders, so the safety nets are part of the build — not an afterthought.

Tested against a model of ShopifyThe splitting engine runs against an in-memory model of the slice of the Shopify Admin API it uses — 5,700+ automated checks, plus end-to-end suites.
Tests that get testedMutation testing: code is deliberately broken, and the tests must catch it — so the tests themselves are checked too.
Deploys with a way backEach deploy takes a database snapshot, boot-checks the new build on a copy of the data, then swaps it in with automatic rollback — about 4 seconds of downtime.
Watched from the outsideAn off-site uptime monitor checks a health endpoint every 2 minutes — database, safety-net job and Shopify reachability — and alerts via Telegram.
Under the hood

The stack

Shopify's app template and APIs, Prisma with SQLite, and Docker on a single VPS.

SplitFlow
Production stack
appReact Router 7 · Shopify app template
admin UIPolaris web components · App Bridge
Shopify APIAdmin GraphQL · fulfillmentOrderSplit
triggersWebhooks · safety-net job every 15 min
billingShopify Managed Pricing · Free / $19 / $49 / $199 a month
dataPrisma · SQLite
hostingDocker · Hetzner VPS
monitoringOff-site uptime checks · Telegram alerts

Need something like this built?

We build custom Shopify apps, platforms and automations — production-grade, at a fixed price. Book a free scoping call and we'll tell you honestly what yours would take.

Response within 24 hours • Written & async • No spam