What it is
Dunning Engine Pro sits on top of whatever subscription tool a Shopify merchant already uses — ReCharge, Appstle, Shopify Subscriptions — and handles the thing none of them do well: recovering failed payments.
It classifies why a payment failed, sends the right email at the right time, and keeps a running count of exactly how many dollars it saved.
That dashboard number — "You recovered $2,340 this month" — is the whole product.
How I got here
I was researching the Shopify subscription space and noticed something wild. Shopify's own Subscriptions app has a 3.5-star rating, and the reviews are brutal. The same complaint over and over: "a customer's payment failed and there's no way to do anything about it."
The only real solution is ReCharge at $499+/mo — which prices out most small and mid-size merchants. I realized there's an enormous gap between "nothing" and "$500/month." Dunning Engine Pro starts at $49.
I validated the idea the old-fashioned way — reading hundreds of complaint threads on Reddit, the Shopify Community forums, and DTC Discords. People are asking for this by name.
The interesting engineering problems
I hit a wall almost immediately. Shopify's read_own_subscription_contracts
scope means billing webhooks only fire for contracts your app created. That's useless
for an overlay app that connects to existing subscriptions. So I pivoted to
direct provider integration — starting with ReCharge's API.
The failure classifier was the most fun to build. Not every declined payment is the same, and the messaging shouldn't be either:
- Soft decline — temporary glitch, retry quickly with a gentle heads-up
- Hard decline — card rejected, the customer needs to take action
- Expired card — straightforward, just needs an update
- Insufficient funds — more sensitive, retry after a delay
- Fraud flag — completely different tone and approach
Each class gets its own 3-step dunning sequence with timing tuned to the failure type. 12 email templates ship ready to go. Data flows through ReCharge webhooks with a 15-minute polling backup because webhooks aren't 100% reliable.
appUsageRecordCreate API to bill
1% of recovered revenue — so the merchant only pays when the app actually works.
Where it's at
The MVP is done. Everything works end-to-end — provider connection, failure classification, dunning sequences, email delivery with open/click tracking, the recovery dashboard, and all four billing tiers.
Next up: production deploy, end-to-end testing with ReCharge's sandbox, and App Store submission.