1
3 Comments

I sat there 30 seconds before pushing prices to 175 countries from a script. Here's what "safe automation" actually means.

The first time I pushed prices to 175 countries from a script, I sat there for thirty seconds with my hand off the trackpad before clicking.

Not because the math was wrong. Because I had no idea what would happen if it went wrong.

That feeling, between "I trust my code" and "I'm about to commit to production for the entire planet," is what I think most pricing automation skips over. It treats every push as a one-way commit. No preview, no diff, no history, no undo.

I run 8 apps across iOS and Android. Manually setting prices for 175 countries every time FX rates shifted was a multi-day spreadsheet exercise. So I built PricePush to automate it. But the moment I had it working, I realized speed wasn't the problem. The problem was I'd just made the consequences of a wrong push faster.

Push wrong prices to 175 countries, and you can't fix it in five minutes. Under-price to 20% of intended in Brazil for 24 hours, and anyone who subscribes during that window is locked in at the wrong rate (Apple grandfathers existing subs). On annual subs, that's a year of revenue you can't recoup. Over-price India by 3x for a week, and you see flat conversions three months later, then higher churn six months later. Detection is slow. By the time the data tells you something is wrong, it's wrong for thousands of users.

So I went back and built the rest of it:

  • A diff preview that shows every old/new price, per country, per store, before any push. Manual overrides flagged separately.
  • A push ID with timestamp, attempts counter, and lifecycle status (queued, running, done, error, cancelled). Strategy snapshotted at push time.
  • A history page that shows per-country diff back 90 days or 500 events.
  • Atomic push within a product on a store, with retries and Apple's rate-limit gate respected.
  • One-click rollback that re-pushes the old prices and writes a "Restored from <date>" row to history.

Engineers solved this for code 20 years ago. Git, PRs, atomic commits, git revert. The right tools for app pricing are the same tools we use for code: diffs, versions, history, atomic application, rollback.

The headline isn't rollback. It's the diff. If preview were flawless and the push were truly atomic, you wouldn't need rollback. Rollback is the safety net that exists so the preview step earns the trust it needs.

I also put together an 8-question checklist for evaluating any pricing automation tool. It works against PricePush too, that's the point. If a tool doesn't pass it, you're trusting it on the failure modes you can't see.

Wrote the whole thing up here: https://pricepush.app/blog/app-prices-safely-versioning-history-rollback

Has anyone here been burned by an automated pricing change without rollback?
Or if you've built your own internal tooling for this, what does your audit trail look like?

posted to Icon for group Mobile
Mobile
on May 10, 2026
  1. 1

    This “pause before automation acts” point maps well to mobile too. With Kinetic Override I’m deliberately keeping the automation narrow and visible: record taps/swipes/long-presses, replay locally, and make timing/profiles understandable before the user lets a loop touch the screen. Safe automation is often less about more power and more about showing exactly what will repeat.

  2. 1

    The “safe automation” framing is useful for mobile too: make the boundary obvious before the user trusts the workflow. I’m seeing the same with Kinetic Override — it’s a local Android 15+ no-root tap/swipe/long-press macro recorder, but the important trust layer is explaining no account, no ads, local profiles, and where automation simply won’t bypass app protections.

  3. 1

    The “safe automation” framing is useful beyond pricing too. For Android utilities, I’m learning to make automation visibly bounded: with Kinetic Override the point is local tap/swipe/long-press loops, timing controls, no account, no ads, and profiles that stay on-device. Users need to understand exactly what will repeat before they trust it.

Trending on Indie Hackers
I Was Picking the Wrong SaaS Tools for Two Years. Here's the Mistake I Finally Figured Out. User Avatar 78 comments Drop your landing page URL. I'll use Ferguson to tell you why visitors might be leaving User Avatar 61 comments AI helped me ship faster. Then I forgot what my product actually does. User Avatar 39 comments Most early-stage SaaS companies miss churn signals — here’s how to catch them early User Avatar 31 comments Why Remote Teams Stop Talking (And Don't Even Notice It) User Avatar 22 comments How I Run a 1.7M Product Search Engine at 66ms on a $0 Hosting Budget User Avatar 19 comments