Menu

Running multiple Shopify apps as a solo developer might sound like juggling chainsaws — but with the right systems, it's surprisingly manageable. At Punchy, I've built several apps, and over time I've developed a workflow that keeps me focused on building new features instead of constantly putting out fires.

Here's a behind-the-scenes look at how I manage everything — from hosting and support to monitoring and revenue tracking.

My Tech Stack and Hosting Setup

All my apps are built using Shopify's official Remix starter kit, and I couldn't be happier with the developer experience. It's fast, opinionated in the right ways, and lets me stay productive without fighting the framework.

For hosting, I've moved away from Railway and now prefer DigitalOcean App Platform — reliable, predictable, and easy to manage. My database of choice is Postgres hosted on Neon, which is easy to use and cost-effective.

Support: Staying Responsive Without Going Live 24/7

I use Helpscout to handle all support. I avoid tools like Intercom because live chat creates an expectation for instant responses, which is unrealistic as a one-person team. A slow live chat feels worse than a fast email reply.

To speed things up, I keep a knowledge base of common replies and code snippets. This helps me answer quickly and will scale well if I grow the team in the future.

And if a customer needs a small styling tweak? I'm happy to do it for free. It's a little gesture that goes a long way.

Keeping a Changelog

I maintain a public changelog built with Laravel Jigsaw. Every entry lives in markdown files and gets compiled into a static site. It's simple, transparent, and keeps merchants in the loop without extra overhead.

Changelog

Logs, Monitoring, and Status

For logs and uptime monitoring, I rely on Betterstack. If something goes wrong, I know right away. Plus, I have a public status page to keep everything transparent.

App Analytics

I use Posthog on some apps to understand how merchants actually use my UI. Seeing real session data helps me make smarter design decisions.

What I don't use: Google Analytics or funnel tracking. Right now, I'm keeping it simple.

Background Tasks

Critical background jobs run on Inngest. It handles retries, error recovery, and scheduling far better than anything I could whip up myself. When you're solo, you really appreciate tools that just work.

Why I Avoid Mantle, Gadget, and Similar Tools

Building Shopify apps already means you depend on Shopify's rules. I'd rather not add extra layers on top.

In short: fewer dependencies = fewer surprises.

My Custom Backoffice

I've built a lightweight serverless backoffice service using Cloudflare Workers to track events and app metrics. Here's what it handles:

App Events

Install/uninstall notifications: When someone installs or uninstalls an app, I get a Slack alert.

Retention email on uninstall: Automatically sent via Helpscout to ask for feedback.

Retention Email

No welcome emails: I skip them because I personally find them annoying.

Simple billing model: All apps have one paid plan with two options — monthly or discounted yearly. Development stores are always free.

Tracking Uninstall Events Using a Cron Job

To stay on top of app uninstalls, I set up a daily cron job that reads uninstall events via the Shopify Partner API. If an app is uninstalled and the merchant leaves a specific comment, the system automatically sends a notification to my Slack channel.

Uninstall feedback

This setup lets me reach out to merchants proactively to understand their issues, gather feedback, and potentially fix problems before they escalate. It’s a simple automation that helps maintain strong relationships even when someone decides to leave.

Rating Widget

One thing I really wanted was a better way to collect feedback directly inside my apps — before a merchant ever reaches the Shopify App Store. That's where my custom rating widget comes in.

Review Widget

Here's how it works:

Every app has a small, non-intrusive rating prompt. Merchants can quickly share how they feel about the app without leaving their dashboard.

Positive ratings trigger a friendly prompt to leave a public review. If they're already happy, why not make it visible?

Positive Feedback

Negative ratings ask for details instead of sending merchants straight to the review page. This gives me a chance to fix issues privately rather than reading about them later in a 1-star review.

Negative Feedback

All feedback is logged to Cloudflare KV and sent straight to Slack. I see new ratings in real-time and can respond quickly.

Feedback Slack

It builds trust without being pushy. Merchants feel heard because I follow up personally on any concerns, and good experiences naturally turn into public reviews.

This tiny feature has saved me a lot of guesswork — I know if something's off before it turns into churn. And when someone's thrilled, I can nudge them to share that with others. It's low-effort, high-impact.

“Other Apps by Punchy” Page

Every app has a page showcasing my other apps. Nice to have, though I haven't measured conversion yet.

More apps by Punchy

Tracking Revenue Metrics

I built a small CLI tool to process Shopify App Payout CSV files and generate a clean revenue table. No third-party dashboards — just a quick way to check how things are doing.

App Revenue

Wrapping Up

Running multiple Shopify apps solo doesn't mean working around the clock — it just means being intentional about systems and simplicity.

If you're thinking of running multiple apps yourself, I hope this gives you some ideas for building a workflow that works for you.

Share this post:
Comments or questions? Shoot me a tweet!