You built the app in a weekend. Maybe two. You described what you wanted, the AI wrote the code, you tweaked a few screens, and now it's live on the App Store. That part was surprisingly painless.
Then you start marketing it. You post on TikTok. You share it on Reddit. You message a few influencers. A friend puts it in their Instagram story. Downloads start trickling in. A few purchases land.
And that's where it gets uncomfortable. Because you have no idea which of those things worked.
The vibe coding blind spot
Tools like VibeCode, Cursor, Bolt, and Rork Max have made building apps absurdly fast. What used to take a team of three a few months, one person can now ship in a week. The barrier to having a product is basically gone.
But the barrier to understanding your product's marketing hasn't moved. App Store Connect shows you that 14 people bought your premium tier on Thursday. It doesn't tell you why. RevenueCat shows the transactions rolling in but not where those customers came from. You're flying blind on the thing that actually determines whether your app makes money.
This gap is almost universal among vibe-coded apps. The development was so fast that nobody stopped to wire up attribution. There was no sprint where someone said "right, let's add tracking." The AI didn't suggest it. The tutorials don't mention it.
So you end up in the classic indie dev position: making decisions about where to spend your marketing time and money based on vibes. Which is ironic.
Why it matters more for you than for big apps
If you're Duolingo, imprecise attribution is a rounding error. You've got a data science team and a marketing budget that can absorb the waste. You run 50 campaigns at once and A/B test everything.
If you're a solo developer with an app making a few hundred quid a month, imprecise attribution could be the difference between profitability and giving up. You might have 10 hours a week for marketing. Spending 8 of those hours on TikTok when Reddit is what's actually driving purchases means you're burning most of your effort on nothing.
The smaller your resources, the more you need to know what's working. Big companies can afford to guess. You can't.
What tracking actually looks like
The basic idea is straightforward. Instead of sharing the same App Store link everywhere, you create a unique tracked link for each channel or campaign. Each link redirects to the same destination, but records where the tap came from.
Your TikTok bio gets one link. Your Reddit post gets a different one. The influencer you're working with gets their own. When someone taps any of these and eventually buys your premium tier, you can see which link started that journey.
Here's what that gives you:
- TikTok bio link: 340 taps, 28 installs, 3 purchases
- Reddit r/productivity post: 45 taps, 12 installs, 5 purchases
- Instagram influencer story: 890 taps, 64 installs, 1 purchase
Now you know something useful. Reddit converts at a much higher rate despite lower volume. The influencer drove lots of taps but almost no purchases, which might mean the audience wasn't right. TikTok is somewhere in the middle.
Without this data, you'd probably look at the raw numbers and conclude that the Instagram influencer was your best channel. 890 taps looks impressive next to 45. But the revenue tells a completely different story.
Setting this up in a vibe-coded app
If your app was built with AI tools, adding attribution doesn't require rebuilding anything. You're essentially adding two things: a small SDK that stores where the user came from, and a webhook that fires when they make a purchase.
For React Native and Expo apps (the kind you'd build with VibeCode, Bolt, or Cursor), it's an npm package. Install it, initialise it when the app launches, and it handles the rest. The SDK reads the attribution data from the link that brought the user in and stores it locally. When a purchase happens through RevenueCat or Superwall, a webhook sends the purchase data along with that attribution info.
For Swift apps (built with Rork Max or Xcode), it's a Swift Package. Same idea — add the package, initialise it, and purchases get attributed to the link that drove the install.
The entire setup takes about 10 minutes. If you're using a vibe coding tool, you can literally paste "add LinkOwl attribution tracking" into your AI prompt and it'll handle the integration. The SDK is designed to be AI-readable, which sounds like a weird thing to optimise for until you remember that the AI is the one writing most of the code.
What changes when you have the data
The first thing that usually happens is a surprise. People expect their highest-traffic channel to be their highest-revenue channel, and it almost never is.
I've seen an app developer discover that a single Reddit comment — not even a post, a comment — drove more purchases in a week than their entire TikTok presence. They'd been spending two hours a day on TikTok content. They shifted half that time to writing helpful Reddit comments in relevant subreddits and their revenue went up 40%.
Another one found that their "free" marketing (organic posts, community engagement) was outperforming their paid ads by a factor of three on a per-purchase basis. They killed the ad spend entirely and reinvested the time into organic.
These are the decisions you can only make with data. Without it, you're just guessing. And guessing usually means defaulting to whatever channel has the biggest vanity metrics.
The cost question
Enterprise attribution tools like AppsFlyer and Adjust start around $500 a month. That pricing makes sense for their customers — companies running massive ad campaigns where a few percentage points of attribution accuracy saves thousands.
For a vibe-coded app making £200 a month? That's obviously absurd.
LinkOwl charges 5p per attributed purchase. No monthly fee. If your app makes 20 purchases in a month, that's £1. If it makes 200, that's £10. The cost scales with your revenue, not ahead of it.
There's a minimum billing threshold of £5, meaning you don't even get charged until you've had 100 attributed purchases. For most new apps, that means weeks or months of free usage while you're still figuring out your marketing.
The thing nobody tells vibe coders
There's a pattern I keep seeing. Someone builds an app fast, launches it, gets some initial traction, then stalls. Not because the app is bad, but because they can't figure out what to double down on. They try a bit of everything — TikTok, Reddit, Instagram, influencers, ads — and nothing seems to work well enough to justify the effort.
Usually the problem isn't that nothing works. It's that they can't tell what's working. One or two of those channels is probably converting fine. But without per-link attribution, the signal is buried in the noise.
Building the app was the easy part. Knowing where your customers come from is the part that determines whether it becomes a business or stays a side project.
Get started
Setting up LinkOwl takes about 10 minutes:
- Create a free account at linkowl.app
- Register your app and grab your API key
- Add the SDK — npm package for React Native, Swift package for native iOS
- Connect your RevenueCat or Superwall webhook
- Create tracked links for each marketing channel
First 100 attributed purchases are free. After that it's 5p per purchase, billed at £5 minimum.
Your AI tool built the app. Let a simple SDK tell you which marketing is paying for itself.