Essay · November 10, 2026 · 12 min read

8x Revenue, 20x Profit: What I Learned Growing an Ecom Business

How a part-time operator took an ecom brand from a $180k to a $1.5M run rate in about a year: technical SEO, one paid channel, patient bidding, AI agents, and the capital problem nobody warns you about.

Most ecom advice tells you to find a new channel, a new creative angle, or a new growth hack. In my experience, the business usually doesn't need more gas. It needs someone to take the brakes off.

In October 2025 I took over as operator of an ecom business in the automotive space. My cofounder had started it a while back but didn't have the time to scale it. I'm keeping the brand and products private, but the numbers are real.

  • Then: about $500/day in revenue at 8% net, roughly $40/day in profit. A $180k annual run rate.
  • Now: about $4,000/day in revenue, nearing 20% net, roughly $800/day in profit. A $1.5M run rate.
Monthly sales$1.46MAnnual run rate (Oct ’26 × 12) · 8.5x since I took over
Monthly sales grew from $14.3k in Oct ’25 to $122k in Oct ’26.$0$50k$100k$150kJan ’25Jul ’25Jan ’26Jul ’26Oct ’26I take overOct ’25 · $14.3kStockoutStockout

That's about 8x revenue and 20x profit, and I did it part time. This isn't my main job, so the business gets the hours I can give it.

Here's what we fixed, what broke, and what I'd tell anyone trying the same thing.

What I walked into

The starting point was pretty bare:

  • SEO: basically none.
  • Google Ads: running, but at break even, with a minimal setup and minimal spend (about $100/day).

Nothing was broken in a dramatic way. Everything was just underbuilt. That's good news, because underbuilt is fixable.

Lesson 1: Fix the foundation before you scale anything

Technical SEO and site quality sound boring. They're also what unlocks both organic and paid traffic.

What we did:

  1. Programmatic SEO across 1,200+ pages. Instead of hand-writing pages, we generated them from structured data so the site could rank for far more of the searches people actually type.
  2. Rewrote meta titles and descriptions. These are what people see in search results. Better ones mean more clicks from the same rankings.
  3. Upgraded every product image. High-quality images help conversion, and they also cleared a lot of Google Merchant Center issues that were quietly holding back our Shopping ads.

That last one surprised me. Better product photos fixed an ads problem. Your site and your ads aren't separate systems.

The same goes for your catalog. At one point, 55 listings sat in draft waiting on a part we hadn't ordered yet, costing about $1,158/month in lost revenue. A partial catalog also means wasted impressions on products people can't buy.

Quick win: open Google Merchant Center today and look at the Diagnostics tab. If you see image or product data warnings, that's free performance sitting on the table.

Lesson 2: Slow, consistent changes add up

Once the foundation was solid, I rebuilt Google Ads:

  • Split it into two campaigns: one Search and one Performance Max (PMax).
  • Cleaned up keywords. We cut the ones that shouldn't have been running and added ones that should.
  • Expanded PMax search themes so Google had a clearer picture of who to show ads to.
  • Moved to smart bidding, in stages (more on that below).

Then the important part: one change per campaign per week, max.

Every change has a recovery cost

I learned this the hard way. I tracked every major change in the account, and every single one produced at least one day below 0.65x ROAS. The algorithm has to explore bad territory to learn what doesn't work.

Here's roughly how long it took to recover:

Change typeFirst signalSustained recovery
Budget onlyDay 2–3Day 4–7
Bid strategy (tCPA → tROAS)Day 2Day 8
New algorithm (AI Max)Day 6Day 11

Stacking changes doesn't save time. In March 2026 I made three changes in one evening while AI Max was still climbing. It cost us the rest of that climb, added a new recovery period, and made it impossible to tell which change did what. Multiple changes recover on the timeline of the slowest one.

At one point, 42% of all days were recovery days. The rules I follow now:

  • Wait for stabilization, not just recovery. Recovery is when the rolling average climbs back. Stabilization is when it flattens into a tight band for 5–7 days. Make the next change after stabilization.
  • Never make big changes on a Friday. I changed conversion goals on a Friday once and spent a volatile weekend unable to do anything about it. Change things Monday through Wednesday.
  • Never judge a day before 4 PM. For us, 69% of paid conversions happen after noon.
  • Look at 3–5 day averages, not single days. One bad day after a great day is normal.

The bidding path that worked

  1. Started tCPA high: $32, on purpose. Start tight and you starve the algorithm. It beat the target and hovered around $20–25.
  2. Tightened to $27.50. Our record day at the time came after the reduction.
  3. Switched to tROAS at 148% in January 2026 when Google flagged the account as ready, matched to our actual 30–60 day performance. ROAS improved 9%.
  4. Turned on AI Max for Search in March 2026.

AI Max almost broke me. The first few days looked like it was burning money, and I nearly turned it off on day 3 or 4. That's the explore phase: it's building a map of what converts. I left it on. Within two weeks we had our best days ever.

Know your breakeven. Ours is about 117% tROAS after product cost, shipping, fees, and refunds. At 120%, we made about $1 per ad order. That number tells you how much room you have before you're paying Google to sell your stuff.

It compounds. Once performance was stable, Google itself started recommending budget increases. Our daily budget went from about $100/day to about $3,000/day, and we're not even fully spending it yet. That number is headroom, not a bill we pay every day. A tROAS target is the real ceiling: if not enough auctions clear the bar, the extra budget just sits there.

Growth still wasn't a straight line. There were slower and flat stretches, and most of them lined up with the weeks I had less time to give the business.

Lesson 3: Pick one channel and scale it hard

For the whole year, the paid side was Google Ads only. No Meta, no TikTok, no influencer program. I'm only now starting to think about a second channel.

It's tempting to spread across five channels so you feel diversified. In practice, you end up mediocre at all of them. One channel done well taught me more than five done halfway.

Even inside one channel, campaigns compete with each other. In March 2026:

  • 67% of our Search terms overlapped with PMax. The two campaigns were bidding against each other.
  • Search won on cost by 21% on those shared terms.
  • PMax ate 59% of the month's ad spend at 116% ROAS, below breakeven. It lost about $4.76 per order while Search made money.

The lesson: spend share is the lever, not just the target. Adding your top converting terms as exact match in Search pushes those auctions away from PMax.

Negative keywords are your steering wheel

With AI Max, negatives matter even more, because it treats your keywords loosely but respects negatives. What worked for us:

  • Add negatives in small batches and measure each one.
  • Don't blanket-block a category that partly converts. One "wrong" looking category turned out to have real buyers in it.
  • Competitor brand searches were mostly waste. One competitor's name drove 62 clicks and 1 sale.
  • People searching "[product] amazon" bought from us at an 8% conversion rate. Never block those.

Lesson 4: Give SEO 10–20% of your time while paid scales

Paid traffic grows fast. SEO grows slow but keeps paying, and it doesn't have recovery days.

About 21% of our orders are organic, at zero ad cost. On our worst paid day, organic jumped to 54% of orders and kept the business running. That buffer is worth building early.

The way I make the 10–20% work: I set up an AI agent connected to Ahrefs, Google Search Console, and Shopify. It tracks progress and makes recommendations every day. It's essentially driving the ship, and I approve the specific changes.

One trap it caught: Search Console's average position can blend two different intents. One of our category pages looked like it ranked around position 35–40. Filtered to searches that actually matched what we sell, it averaged 8–10. The rest were people searching for something we don't sell. Filter by your commercial keyword before you decide a page is broken.

When I have a free block, I'll dive into a larger project on the SEO or Google Ads side. The agent handles the daily maintenance, so my time goes to the bigger moves.

Lesson 5: Stockouts are the real blocker

Every stockout has cost us more than any ad mistake. The worst one took about 1.5 months to get back on track. You can see two of them on the chart: January 2026 and again late last summer.

In January 2026, ads kept spending about $685/day while our best-selling variants sold out. Margin dropped from 23% to 11%, and we burned over $4,000 in ad spend with worse and worse returns. The root cause was embarrassing: the reorder had been flagged 3–4 weeks before anyone placed it.

Even after restocking, the algorithm needed about two weeks to recalibrate.

What we do now:

  • Never scale ad spend into a stockout. More spend means more orders, which means you run out faster.
  • Keep 2+ months of stock on hand. Lead times are longer than you think: one recent order took 81 days from confirmation to receiving.
  • Budget increases require inventory first. No new purchase order landed, no budget raise.
  • Run air vs. sea freight math per day, not per order. We once chose sea freight to save $540 total. The delay cost about $175/day in lost revenue. If the air premium pays for itself within a week, fly it.
  • Verify every purchase order. One came in about 40% over budget. The next came in under budget after we required variant, quantity, part type, unit cost, and delivery date on every line, and verified it before paying the deposit.
  • Inspect, don't expect. When a supplier or teammate reports status, ask for evidence: tracking numbers, PO screenshots, dates. Checkpoint results, not promises.

We're still getting this dialed in. If you're scaling, assume it'll bite you and build the process before it does.

Lesson 6: Let AI agents run the business

I couldn't run this part time without agents. My setup has changed a few times:

  • Claude Code was where I started. It got too messy, and everything ran on my computer.
  • Cloud agents became the requirement. I wanted to ship changes from my phone, so the agents had to run in the cloud, not on my laptop.
  • Codex with OpenAI's Astra models is what I use for very large changes, especially ones that have to happen in a browser. I just trust it more for the big stuff.
  • Grok Bot is what I've recently started playing with to create specialized agents with routines that run automatically.

Give your agents a memory of what went wrong

The most useful thing I built isn't an agent. It's three plain markdown files the agents read before making any recommendation:

  • Learnings: hard-won rules from this account, like "one change per week" and "never scale into a stockout."
  • A failure catalog: every mistake, its root cause, and a prevention rule, so we never repeat it.
  • History: monthly performance, every bid strategy change, and how each one played out.

That's how the agents stop repeating the same mistakes. It also makes their recommendations specific to this business instead of generic Google Ads advice.

Know which numbers lie

The agents also keep me honest about data:

  • Google Ads lags Shopify by 1–3 days. A dip always looks worse in Google Ads than it really is. Check Shopify orders first.
  • Google Ads only counts ad-attributed sales. Triple Whale includes organic. Don't credit ads for organic, or blame ads for a slow organic day.
  • Batched returns wreck your margin data. One day of bulk-processed returns made a whole month look like 15% margin when the real run rate was 20–25%.
  • Recent refund rates look too low. Returns take weeks to process. Model with your mature rate (ours is 11.5%).
  • Budget isn't spend. If you're only spending 67% of budget, raising the budget does nothing.

Lesson 7: Get a growth rep, not a setup rep

A good Google Ads rep can solve real problems and work for you for free, within reason. But the type matters.

  • A setup rep helps you get campaigns running.
  • A growth rep helps you scale them.

You want the growth rep. They'll start reaching out on their own once you have enough spend coming through.

Our rep's ideas drove a lot of the wins: tCPA, the budget raises, the switch to tROAS, and AI Max. But treat their advice as input, not orders. We delayed AI Max for six weeks because inventory was low, and that was the right call. And when sales dropped in January, the rep saw "nothing out of the ordinary." The cause was the stockout. Your rep can't see your warehouse.

The reality check: capital, not time

With AI, time isn't a massive issue if you know where to deploy it. Capital is.

If you scale quickly, your purchase orders scale too. When you're growing fast, you're not only reinvesting everything the business makes. You're also adding more capital on top.

The reason: when you're scaling, you're buying inventory for where you plan to be, not where you currently are. If you want to grow fast enough, that gap needs to be funded.

So before you push the gas, ask two questions:

  • Do you know your lead times?
  • Can you fund inventory for the business you're growing into?

If the answer to either is no, that's your bottleneck, not your ads.

What's next: an autonomous ecom business

Here's where I want to take it:

  • Scale to somewhere between $3M and $5M over the next few months, with a solid net margin.
  • Have AI agents manage the day-to-day operations, making this as close to an autonomous operation as possible.

This business is a great test case for what AI is actually capable of. And I plan to build AI software around it to launch to other ecom brands.

Tools I actually use

  • Triple Whale for tracking everything. This has been super helpful.
  • Google Pomelli for product images. It's free, and the Photoshoot feature is great for product shots.
  • A Claude Fable 5.2 prompt I found on X for creating videos. I just keep reusing it.
  • Ahrefs, Google Search Console, and Shopify, all wired into the SEO agent.

If I took over a store tomorrow: the first 30 days

  1. Set up the infrastructure correctly: Google Search Console, Shopify, Triple Whale, and whatever else you need to measure.
  2. Run a full SEO audit so you know what's working and what's not.
  3. Run the same audit on every paid channel you already have.
  4. Scale what's working and cut what's not.

The goal of month one isn't growth. It's a better foundation you can scale from, with everything optimized.

I call this releasing the brakes before adding gas. Fix the foundation, let it stabilize, then scale. Always in that order.