Blog

Notes on building InvenTrac and managing an online shop.

Why Is Shopify So Confusing for Developers?

September 6, 2026

Working on the Shopify integration for InvenTrac and I have to rant a little.

Why is everything so confusing?

There’s Shopify Admin. Then Partner Dashboard. Then Dev Dashboard. Then Apps. Then a bunch of different Shopify URLs and subdomains.

Half the time I know exactly what I need to change, I just can’t remember where the hell I changed it last time.

API settings? One place.

App settings? Somewhere else.

Store settings? Different place.

App review? Go find another dashboard.

And somehow they all look like they’re part of Shopify, but don’t really feel connected.

Maybe if you’ve been developing Shopify apps for years this all makes perfect sense. But coming into it fresh, the experience is just… confusing.

I spent way too much time today clicking around trying to find a setting I know I’ve seen before.

Building the actual integration might be easier than figuring out where Shopify put everything.

Rant over. Back to InvenTrac.

AI Makes Building Easy. Marketing? Not So Much.

September 4, 2026

Lately I feel like I’m constantly choosing between coding and marketing.

I work full time, so there are only so many hours left in the day. And of course I’d rather spend those hours building. That’s the fun part for me.

AI coding has made that part kind of crazy. I can have an idea, try it, change it, break it, fix it, and ship something way faster than I could before.

But then I started realizing… building faster doesn’t really solve the bigger problem.

Nobody knows what I built.

So now I’m spending time learning things I honestly never paid much attention to before. Posting on social media. Hanging around Reddit. Joining Facebook groups. Setting up alerts to see what people are talking about. Trying to figure out what to post without sounding like I’m trying to sell something.

And half the time I’m doing that, I’m thinking: I could be coding right now.

That’s the part I’m struggling with.

AI gave developers like me a pretty amazing superpower. One person can build a ridiculous amount of stuff now.

Except everyone else got the same superpower too.

There are more apps, more SaaS products, more extensions, more everything.

So I’m slowly learning that maybe the hard part isn’t building anymore.

It’s getting anyone to notice.

Shopify Rejected My App, and They Had a Point

August 31, 2026

Here’s a shorter version that feels more like a founder writing about what happened, rather than a polished company blog.

Shopify Rejected My App, and They Had a Point

I finally submitted InvenTrac to the Shopify App Store.

And… rejected.

The reason was pretty simple: InvenTrac is built around a Chrome extension. You connect your store, install the extension, and that’s where you check your inventory, orders, low stock, etc.

Shopify doesn’t allow that. A browser extension can be part of an app, but it can’t be required. The Shopify app has to be useful on its own.

At first, I was a little annoyed. The Chrome extension is kind of the whole idea behind InvenTrac. I wanted something lightweight that I could open from anywhere without logging into Etsy, Shopify, Squarespace, and eventually five other dashboards.

But after thinking about it, Shopify actually pushed me in a direction I probably needed to go anyway.

Most of the hard work is already on the backend. InvenTrac already connects to the stores, pulls the inventory, orders and other data, and organizes it. The Chrome extension is really just one way of looking at that data.

So instead of fighting the rejection, I’m building a simple web dashboard.

Shopify users will be able to install InvenTrac and immediately see their inventory, low-stock products, sold-out items and orders inside the app. No Chrome extension required.

The extension will still be there. It’ll just become the optional, faster way to check everything while you’re browsing.

Funny how building a product goes. You start with one idea, run into a wall, and sometimes the wall points you toward what you should have built next anyway.

Back to coding.

Real-Time Inventory Sync Is Harder Than I Thought

August 27, 2026

I’ve been spending some time researching how inventory sync actually works across platforms like Shopify, Square, Etsy, and others.

At first it sounds pretty simple. Something sells on Shopify, reduce the quantity on Square. Done.

Except it’s not.

Say Shopify and Square both show 10 in stock. Someone buys one on Shopify at almost the same time someone buys one through Square. Both platforms now report 9, but you actually have 8.

Then there are delayed webhooks, duplicate events, retries, refunds, manual inventory changes, and updates arriving in a different order than they happened. Your own sync update can even trigger another webhook coming back.

I was looking at how Trunk handles this, and their approach makes a lot more sense now. They maintain their own inventory in the middle and reconcile timestamped changes from each platform. Basically, Trunk becomes the inventory master.

That was the interesting part of this research for me.

Connecting a bunch of APIs isn’t really the difficult part. Knowing what the inventory should actually be when several systems are changing it at the same time is.

Still digging into this. The deeper I go, the more edge cases I find.

Everyone Can Build Now. But Then What?

August 25, 2026

AI made building software ridiculously easy.

That’s great. I can have an idea, build it, fix it, and ship it faster than I ever could before.

But there’s a catch: everyone else can too.

Now the hard part isn’t building something. It’s getting anyone to notice it.

I’m learning this with InvenTrac. Writing code? Easy, especially for programmers. Getting people to care without becoming that annoying guy spamming his product everywhere? Much harder.

Reddit hates self-promotion. Facebook groups hate spam. Everyone ignores ads. And now social media is full of AI-generated marketing that all sounds the same.

There’s an old saying I keep coming back to: Nobody wants to be sold. Everyone wants to buy.

So maybe the answer isn’t more marketing. Maybe it’s being useful, interesting, a little different, and actually talking to people.

AI can help everyone build.

Standing out is still a very human problem.

The Shopify App Store Gamble

August 22, 2026

I finally submitted InvenTrac to the Shopify App Store this week.

But there’s one problem.

Shopify’s requirements say a browser extension should be an optional part of an app.

InvenTrac is a Chrome extension. That’s kind of the whole point.

I took the requirement seriously enough to map out a minimal embedded Shopify dashboard just to satisfy it.

Then I looked at similar inventory apps already in the Shopify App Store. Some appear to work without much of an embedded UI at all.

So instead of building something nobody has asked for yet, I decided to submit InvenTrac as-is and see what Shopify actually says.

If they reject it specifically because I need an embedded dashboard, I’ll build one.

If they approve it, I saved myself from building a feature purely for compliance.

There’s also a funny chicken-and-egg problem.

Shopify wants its reviewer to install InvenTrac from the Chrome Web Store.

But InvenTrac is also still waiting for Chrome Web Store approval. 😅

So I ended up making a reviewer-only version that Shopify can sideload while Chrome does its own review.

Two app stores. Two review queues. One extension.

Now I wait.

This is one of those parts of building software nobody really talks about. Sometimes the question isn’t “Can I build this?”

It’s “Do I spend a few days building something just because a paragraph in an App Store policy says I might need it?”

This time, I decided to wait for the reviewer to answer that question for me.

Shipping InvenTrac: 7 releases, then everything else broke. 😅

August 15, 2026

The last two weeks have been pretty busy. I took InvenTrac from 0.1.7 to 0.1.13 — seven releases with a mix of new features, fixes, and a few things I didn’t realize were broken until I started supporting multiple shops.

A few things I shipped:

- Sales stats that actually match Etsy.

I added Today, Yesterday, 7D, 30D, This Month and Last Month. My first version used UTC, which meant “Today” could be completely wrong depending on where the seller lived. It now uses each shop’s timezone, and revenue excludes shipping, tax and canceled orders.

- Cross-platform product linking.

Once I added multiple shops, the next problem became obvious: which Etsy listing is the same product as the one on Shopify or Squarespace?

InvenTrac now automatically matches products by SKU, with manual linking when needed. This is also the foundation for actual cross-platform inventory sync later.

- Squarespace is finally one-click.

Originally, sellers had to generate an API key and paste it in. It worked, but it wasn’t exactly friendly. I replaced it with OAuth, so connecting Squarespace is now basically one click.

- Real InvenTrac accounts.

Originally, connecting a shop basically was your account. That worked fine with one store and immediately fell apart with two. Now there’s email + magic-link login, so multiple stores can live under one account.

And, of course, bugs:

* Stock updates could fail with multiple shops.
* The badge hid “0” open orders.
* Some Squarespace products could inflate inventory totals.
* I replaced native browser dialogs with proper in-app modals.

Seven releases sounds like a lot, but honestly most of it came from one thing leading to another.

Add multiple shops → need accounts.
Add multiple platforms → need product linking.
Add sales stats → discover timezone problems.

That’s pretty much how this project has been going.

The name finally catches up

August 11, 2026

I originally built InvenTrac for Etsy sellers — mostly for my daughter — and for a long time that was its whole identity. The extension literally had “Etsy Inventory Manager” in the name. Then I added Shopify support last week and… never updated the name. Every time I saw it sitting in my extensions bar, it bugged me. Tiny thing, but those tiny things make a tool feel unfinished even when the product itself is solid.

So I finally fixed it. It’s now “Etsy & Shopify Inventory Manager & Stock Tracker.” Not clever, but accurate — which is exactly what you want at 11pm when you’re trying to remember what you built.

The more meaningful update this round is behind the scenes, but you’ll notice it if you ever run into it. If a shop’s connection broke — expired token, revoked access, whatever — the old “Sync now” button would just fail and tell you to retry. Completely useless, because retrying was never going to work. The connection wasn’t hiccuping, it was dead.

Now it tells you the truth: reconnect this shop. One click, done.

— Richard

Why Built InvenTrac

July 16, 2026

InvenTrac actually started because of my daughter.

She runs a small Etsy store, and like many small sellers, she was having trouble keeping everything in check — inventory, what was running low, what sold out, and orders that still needed attention.

I watched her constantly go back into Etsy and jump between different pages just to figure out what was going on.

As a software developer, my first thought was pretty simple:

There has to be an easier way to do this.

So I started building InvenTrac.

The idea isn’t to replace Etsy or build another huge inventory management system. I just wanted a small Chrome extension where she could click a button and quickly see the things that matter: low-stock items, sold-out products, open orders, and what needs attention.

And if it helps her, I figured it might help other Etsy sellers too.

For now, I’m keeping InvenTrac intentionally simple and focused on Etsy. Eventually, I’d like to support other stores and marketplaces, but I’d rather make something genuinely useful first than stuff it with features nobody asked for.

It’s still a small project I’m building and improving as I go.

If you run an Etsy store and try InvenTrac, I’d love to hear what you think — especially what’s annoying about managing your shop today.

That’s really how InvenTrac started: my daughter had a problem, and I thought I could build something to make it a little easier.