Zyro

Revenue attribution and A/B testing that drives sales

Visit Website
February 14, 2026 I spent 18 months building a CRO tool to $2M ARR. Here's everything I learned about bootstrapping SaaS.

From side project to 1,000+ paying customers without VC funding. The honest breakdown of what worked, what failed, and what I'd do differently.

Timeline:

- Month 1-3: Scratching my own itch (Shopify store attribution was broken)

- Month 4-6: Built MVP, used it myself, saw results

- Month 7-9: First 10 customers from Reddit (free audits)

- Month 10-12: $5K MRR, quit my job

- Month 13-18: $167K MRR ($2M ARR run rate), 1,047 customers

What I built:

Zyro is attribution and conversion optimization for e-commerce. It solves a specific problem: analytics tools like GA4 miss 20-30% of traffic, which breaks attribution and makes you cut winning ad campaigns.

We do server-side tracking + intent-based personalization + AI-powered A/B testing.

The Backstory:

I ran a Shopify store (coffee equipment). We were spending $25K/month on Meta ads with "1.4x ROAS" according to GA4. Almost cut the budget entirely.

On a hunch, I checked Shopify's revenue data vs GA4. Huge discrepancy. Dug into server logs. Found that 30% of conversions weren't being tracked at all (ad blockers + iOS 14).

When I fixed the tracking, Meta's real ROAS was 3.8x. We'd almost killed our best channel because of bad data.

Built the tool for myself. Realized every e-commerce brand has this problem. Turned it into SaaS.

---

### MONTH 1-3: THE SCRATCH-YOUR-OWN-ITCH PHASE

What I built:

- Node.js server-side tracking layer

- Custom attribution engine (position-based model)

- Basic dashboard showing real vs reported ROAS

- Integration with Shopify and Meta

Tech stack:

- Backend: Node.js + Express + PostgreSQL + Redis

- Frontend: React + Tailwind

- Hosting: DigitalOcean droplets (cheaper than AWS early on)

- Analytics: Plausible (self-hosted)

Time investment:

- Nights/weekends only (still had day job)

- ~25 hours/week

- 3 months = ~300 hours

Cost:

- Servers: $40/month

- Domains: $12/year

- Tools (GitHub, Figma, etc.): $50/month

- Total burn: ~$100/month

---

### MONTH 4-6: MVP FOR REAL USERS

Key decision: Didn't build a marketing site first

I went straight to r/shopify and posted:

> "I built a tool that shows you the traffic Google Analytics is missing. If you're spending $5K+/month on ads and your attribution feels wrong, I'll audit your store for free. DM me."

Got 87 responses. Did 43 audits (rest were tire-kickers).

The audit process:

1. They give me GA4 + Shopify access (read-only)

2. I install a tracking script on their store

3. Wait 48 hours for data

4. Show them side-by-side: GA4 vs reality

5. Average finding: 27% of conversions were invisible

Conversion rate: 23% (10 paying customers)

These people already had the problem. They knew attribution was broken. I just showed them proof and offered to fix it.

Pricing:

- Started at $99/month (way too low)

- Raised to $299/month (still too low)

- Raised to $499/month (about right for the value)

Revenue: ~$3K MRR after 6 months

---

### MONTH 7-9: FINDING PRODUCT-MARKET FIT

Big lesson: Don't sell "attribution"—sell "stop wasting ad spend"

Nobody wakes up thinking "I need better attribution." They wake up thinking "Why does Facebook say 1.2x ROAS when I'm barely breaking even?"

Changed the messaging from technical (server-side tracking, multi-touch attribution) to outcome-focused (see which ads actually work, stop cutting winning campaigns).

Traction channels that worked:

1. Reddit (r/shopify, r/ecommerce): 60% of early customers

- Be genuinely helpful, never spam

- Answer questions, provide value

- Mention tool only when directly relevant

2. Product Hunt: Launched in Month 8, #3 product of the day

- Got 147 signups

- 11 converted to paid (7.5% conversion)

- Still get 2-3 signups/week from PH

3. Direct outreach: Found stores with obvious attribution problems

- Used BuiltWith to find Shopify stores spending on Meta ads

- Sent personalized emails: "Hey, noticed you're spending on Meta. Are you seeing [specific problem]?"

- 4% reply rate, 1% conversion rate

- Time-consuming but worked

4. Word of mouth: Nothing beats happy customers

- First customer referred 4 others

- Implemented referral program (10% commission)

- Now generates ~15% of new customers

What didn't work:

- Twitter (spent 3 months tweeting, got 14 followers)

- LinkedIn ads (burned $2K, got 3 demos, 0 customers)

- Content SEO (too slow for early stage)

- Cold email (terrible response rate, felt spammy)

Revenue: $14K MRR by month 9

---

### MONTH 10-12: QUITTING THE DAY JOB

Hit $60K MRR in Month 11. That's when I quit.

Everyone says "wait until you have 6 months runway." I had 2 months. Nerve-wracking but it worked out.

Why I quit early:

- Customer support was suffering (doing it nights/weekends)

- Feature requests were piling up

- Competition was launching similar tools

- Calculated risk: If it failed, I could get another job

What changed when I went full-time:

1. Response time: Same-day support instead of 2-3 days

- Churn dropped from 8% to 4%

- NPS went from 42 to 67

2. Shipping velocity: 2-3 features/week instead of 1/month

- Users noticed

- Referrals increased

3. Sales: Could actually take demo calls

- Enterprise deals started closing

- ACV went from $500 to $1,800

Biggest challenge: Loneliness

Going from office (200 people) to home office (just me) was brutal. Joined a co-working space in Month 12. Best decision—having people around matters.

---

### MONTH 13-18: SCALING TO $2M ARR

Key metrics:

| Month | MRR | Customers | Churn | CAC | LTV |

|-------|-----|-----------|-------|-----|-----|

| 13 | $87K | 312 | 5% | $420 | $8,200 |

| 14 | $103K | 387 | 4% | $380 | $9,100 |

| 15 | $124K | 453 | 4% | $340 | $9,800 |

| 16 | $142K | 538 | 3% | $310 | $11,200 |

| 17 | $161K | 627 | 3% | $290 | $12,100 |

| 18 | $167K | 701 | 3% | $280 | $12,800 |

What drove growth:

1. Self-serve dashboard (finally)

- Previously, users booked demos (me manually showing them around)

- Built onboarding flow, video tutorials, in-app tooltips

- Converted 40% of trials vs 15% with demos

- Freed up 20 hours/week

2. Annual plans

- Started offering 20% discount for annual

- 34% of customers chose annual

- Massive cash flow improvement ($850K up-front)

3. Expansion revenue

- Added usage-based pricing (per-visitor tiers)

- 23% of customers upgrade within 6 months

- Expansion MRR now equals new customer MRR

4. Partner channel

- Signed 8 Shopify agencies as resellers

- They recommend us to clients

- 11% commission (lower than direct but zero CAC)

- Generates $18K MRR now

Team:

- Month 13: Just me

- Month 15: Hired part-time support person (VA, $1,500/month)

- Month 17: Hired full-time engineer ($120K/year)

- Month 18: Hired customer success (full-time, $85K/year)

Expenses:

- Servers: $800/month (scaled up)

- Salaries: $17K/month (by month 18)

- Tools (AWS, etc.): $600/month

- Marketing (very little): $2K/month

- Total burn: ~$20K/month

- Net profit: ~$147K/month

---

### WHAT I LEARNED

1. Solve a hair-on-fire problem

E-commerce brands were actively cutting ad budgets based on wrong data. That's a $10K+/month mistake. They'll pay $500/month to fix it without blinking.

If your tool saves them more than it costs, pricing is easy.

2. Don't build features, build outcomes

I kept wanting to add "cool" features (AI recommendations! Predictive analytics! Slack integration!).

What customers actually wanted: "Make this number go up."

I'd add a feature, nobody used it. I'd fix a bug that made a number more accurate, people would thank me profusely.

Build what moves the metrics, not what's interesting to build.

3. Charge more than you're comfortable with

$99/month felt safe. $299/month felt scary. $499/month felt greedy.

But here's the thing: Only $499/month customers stick around. The $99 people churn in 3 months. The $499 people stay for 2+ years.

Higher price = better customers = lower churn = higher LTV.

Plus it turns out: The value we provide is worth way more than $499. We're finding $5-20K/month in lost revenue. They should be paying us $5K/month. We're undercharging.

4. Content is overrated (for B2B SaaS)

Everyone says "start a blog, rank on Google, get inbound leads."

I wrote 40 blog posts. Got 200 organic visitors/month. Converted 0.

You know what worked? Showing up in r/shopify every day and helping people for free. That built trust. That got customers.

SEO is a long game. When you're at $0 MRR, you need customers now, not in 18 months.

5. Launch imperfect

My MVP didn't have:

- A proper onboarding flow (I walked people through on Google Meet)

- Even a marketing site (just a Notion page)

But it solved the problem. That's all that matters.

I see people spending 6 months on "just one more feature" before launching. You're not building an iPhone. Ship it and iterate.

6. Customer support is marketing

Every support ticket is a chance to:

- Make someone love you (or hate you)

- Learn what's broken

- Find your next feature

- Get a testimonial

I respond to every email within 2 hours. People are shocked. They write testimonials unprompted. They refer friends.

Great support is a competitive moat.

---

### WHAT I'D DO DIFFERENTLY

1. Raise prices faster

Took me 12 months to get pricing right. Should've tested $499+ on Day 1.

2. Hire earlier

Tried to do everything myself for too long. Burned out twice. Could've scaled faster with help.

3. Ignore competition

I spent way too much time checking what competitors were doing. It didn't matter. 99% of customers don't know competitors exist—they just want their problem solved.

4. Build for enterprise earlier

SMB customers ($500/month) are great but they churn. Enterprise customers ($5K/month) stay forever.

We're pivoting to enterprise now but I should've done it 6 months ago.

5. Say no more

I said yes to every feature request for the first year. Built a Frankenstein product. Now I'm ripping out features nobody uses.

Saying no is a superpower.

---

### AM I TAKING VC FUNDING?

Short answer: No, not yet.

Long answer:

I've had 12 VC meetings. Everyone wants to invest. Valuations ranging from $15M to $40M.

Why I'm saying no (for now):

1. We're profitable: Making $150K/month profit. Don't need capital.

2. Growing fast organically: 15-20% MoM without spending on ads

3. No competitive pressure: Nobody's racing us to market

4. Optionality: Can always raise later at higher valuation

Why I might say yes (later):

1. Enterprise push: Need sales team to close $50K+ deals

2. International expansion: Want EU/Asia presence

3. Product expansion: Lots of adjacent problems we could solve

4. Talent: Hard to compete with VC-backed companies for senior engineers

Current plan: Bootstrap to $5M ARR, then decide.

---

### ADVICE FOR INDIE HACKERS

If you're just starting:

1. Pick a niche: Don't build "analytics for everyone." Build "analytics for Shopify stores selling coffee equipment in the US." You can expand later.

2. Solve an expensive problem: Time-savers are nice. Money-makers/money-savers are essential. People pay for ROI, not convenience.

3. Talk to customers before you code: I built 3 features nobody wanted before I learned to ask first.

4. Launch in weeks, not months: Your first version will be wrong anyway. Get feedback fast.

5. Charge money immediately: Free users ghost you. Paying users are invested in your success.

If you're at $5-20K MRR:

1. Double down on what's working: Don't add new channels. Make current channels 2x better.

2. Fix churn before growth: A leaky bucket doesn't fill faster with more water. Plug the holes first.

3. Hire for your weaknesses: I hate accounting. Hired a part-time bookkeeper for $200/month. Best $200/month I spend.

4. Build systems, not features: Onboarding flow > 10 new features. Automated billing > manual invoicing.

If you're at $50K+ MRR:

1. Think about exits: Bootstrap to $10M and sell? Raise and grow? IPO? The path changes your decisions.

2. Build a team: You can't scale alone. Hire people smarter than you.

3. Focus on LTV:CAC: This ratio determines everything. Above 3:1 = scale. Below 3:1 = fix the leak.

4. Protect your time: Say no to podcasts, coffee chats, "pick your brain" emails. Your time is worth $500+/hour now. Act like it.

---

### FINAL THOUGHTS

18 months ago I was a random engineer with a side project.

Today I run a $2M ARR SaaS with 701 customers and 3 employees.

It's not a unicorn. But it's profitable, growing, and solves a real problem.

That's the indie hacker dream, right?

The best advice I can give:

Start. Today. Don't wait for the perfect idea. Don't wait for more skills. Don't wait for a co-founder.

Just build something people will pay for and iterate until they do.

You've got this.

---

Want to connect?

I'm on Instagram: @growwithzyro

Happy to answer questions about attribution, bootstrapping, or anything else.

If you're running a Shopify store and want a free attribution audit, DM me. Always happy to help indie hackers.

---

P.S. — One ask:

If this was helpful, I'd appreciate an upvote. Trying to build in public and share what I learn. More updates coming soon.

Thanks for reading 🚀

Comment

January 29, 2026 Why I stopped doing 50/50 A/B tests (and built a Multi-Armed Bandit engine instead)

Hey Indie Hackers,

I’m the founder of Zyro. Coming from an analytics background, I’ve always had a love/hate relationship with traditional A/B testing tools.

The "hate" part comes from the math.

If you run a standard A/B test (Frequentist model), you split traffic 50/50 and wait for "statistical significance" (usually P < 0.05). For a small startup, this might take 2–4 weeks.

The Hidden Cost: Regret

During those 2 weeks, you are knowingly sending 50% of your traffic to a losing variation. In data science terms, this is called "Regret"—the difference between the reward you could have gotten (by showing the best version) and what you actually got.

I realized that for bootstrapped founders, "Regret" is expensive. We don't have infinite traffic like Google or Amazon to waste on "data purity." We need revenue now.

The Solution: Thompson Sampling (The "Bandit" Approach)

I decided to ditch the static 50/50 model and build an optimization engine based on Multi-Armed Bandit algorithms (specifically Thompson Sampling).

For those not familiar with the math: instead of testing A and B equally, the algorithm updates the probability distribution in real-time.

  • Start: 50/50 split.

  • Day 3: Variation B converts slightly better. The engine automatically shifts traffic to 40/60.

  • Day 7: Variation B is clearly winning. The engine shifts to 10/90.

This means we exploit the winning variation during the test, maximizing conversions immediately instead of waiting for the test to finish.

Adding "God Mode" Context

The other flaw with standard testing is the "Average User" myth. A user coming from a TikTok ad has a completely different intent profile than a user coming from a Google Search.

We combined the Bandit engine with our Traffic Source Detector. Now, instead of finding one "global winner," the engine runs separate instances for different sources.

  • It might learn that Headline A works best for TikTok traffic.

  • But Headline B works best for Google traffic.

  • It then routes them accordingly in real-time.

The Tech Stack

We built the decision engine to run server-side to prevent the "flicker" effect. It uses a localized geolocation database (MaxMind) to keep decision latency near 0ms.

I’d love to hear how other founders are handling optimization. Are you sticking to standard A/B testing for statistical rigor, or are you moving toward dynamic/bandit models to move faster?

Comment

January 28, 2026 I audited my "Direct" traffic and found 40% was actually AI bots. Here is how I fixed it.

Hey everyone,

I’m the founder of Zyro. Like a lot of you, I stare at my analytics dashboard way too often. For months, I watched my "Direct" traffic bucket keep growing while my ad spend efficiency dropped.

I told myself the usual story: "This must be brand loyalty. People are typing my URL directly."

But the numbers didn't make sense. The conversion rates on this "Direct" traffic were erratic. So, I decided to audit the raw logs and build a custom detection layer to see what was actually happening.

The Discovery: It wasn't loyalty. It was a black hole.

Once I deployed what I call "God Mode" tracking (basically a paranoid level of header parsing), that "Direct" traffic fractured into reality.

  • 15% was Perplexity AI (referring high-intent answers).

  • 10% was ChatGPT (users asking for comparisons).

  • The rest was dark social (Discord, WhatsApp) that standard tools like GA4 were stripping.

We are witnessing a massive shift from Search Engines to Answer Engines, and standard analytics tools are completely blind to it.

How I Built the "Traffic Brain" (The Tech Stack)

I realized I couldn't just use off-the-shelf tools, so I had to re-engineer the detection logic. Here is what I learned:

  1. Universal Source Detection: Most AI tools strip the referrer or pass it in weird ways. I built a TrafficSourceDetector that parses over 50+ specific parameters (including ttclid, gbraid, and specific AI signatures) that usually get sanitized.

  2. The SQL Problem: Standard tracking links are getting massive. I had to migrate our schema to use NVARCHAR(MAX) columns because standard string limits were truncating the complex tracking parameters from platforms like TikTok and Meta.

  3. Intent Scoring: Instead of just tracking "Page Views," I implemented a ServerSideDecisionController that scores visitors (0-100) based on micro-behaviors (like copying text or hovering prices).

Now, instead of a gray "Direct" bar, I can see exactly which AI engine is driving traffic. More importantly, I can attribute revenue to a specific Perplexity answer or a TikTok comment from 3 weeks ago, rather than erroneously crediting "Direct."

I’m currently refining the detection logic for Gemini and Claude. If anyone else is seeing weird "Direct" spikes, I’d love to compare notes on what headers you are seeing.

Also, happy to answer any questions about the SQL architecture or the bandit algorithms we used for the A/B testing side of things!

Comment

January 20, 2026 I built Zyro to stop guessing what actually drives revenue

After running my own online business for years, I kept hitting the same wall:
analytics told me where clicks came from, A/B tests told me what won, but neither told me who was actually trying to buy or where to spend money next.

So I built Zyro.

Zyro detects high-intent signals on a website, sends those signals back to ad platforms to reduce CAC, and lets you A/B test offers and experiences based on intent or traffic source (ChatGPT, Facebook, Reddit, email, etc.). It also tracks revenue attribution across 50+ sources so budget decisions aren’t guesswork.

I’m launching it publicly now and would genuinely love feedback - especially from e-commerce founders or marketers dealing with conversion and attribution problems.

Happy to answer questions or explain how it works.

Comment

About

Zyro exists because most businesses don’t struggle to get traffic — they struggle to understand which traffic actually turns into revenue, and how to optimize their site to maximize conversions.