How to Track App Installs from Your Website
Your website has a download button but you don't know how many visitors actually install. Here's how to measure website-to-install conversion for every page on your site.
The missing metric
Your website gets 10,000 visitors a month. You have a "Download the app" button on your homepage, your blog posts, and your landing pages. Some of those visitors click the button. Some of those install the app. Some become paying users.
You know the traffic numbers from your analytics tool. You might know click counts from Google Analytics event tracking. But the moment a visitor leaves your website and arrives at the App Store or Google Play, you lose visibility. You don't know how many of those clicks turned into installs. You don't know which pages drive the most installs. And you have no idea how much revenue your website traffic generates inside the app.
Your website is probably your most important organic channel. But you can't measure its impact beyond the click.
This post covers the website-specific setup. For the full picture across every channel, see the broader guide on tracking app installs with links.
Why Google Analytics can't solve this
Google Analytics tracks what happens on your website. It can tell you how many people clicked the "Download" button, which pages they were on when they clicked, and what their referral source was. But it can't tell you what happened after they left your site.
The App Store doesn't report installs back to GA. There's no callback, no conversion pixel, no postback. The moment the user leaves your domain, GA's tracking ends.
Some developers try to estimate installs by looking at App Store Connect's "Web Referrer" data. You'll see your domain listed as a source, but the data is delayed by 24-48 hours, and it's aggregated at the domain level. You can't distinguish between installs from your homepage vs. your blog vs. your pricing page. And you certainly can't tie revenue back to a specific page.
How tracking links bridge the gap
Instead of linking directly to the App Store, you link to a tracking URL that records the click and then redirects the user to the correct store. When the user installs and opens the app, the SDK matches the install back to that click.
Here's the flow:
- Visitor lands on your blog post
- They click the "Download the app" button, which points to a tracking link like
instally.io/app/blog-getting-started - Instally logs the click and redirects to the App Store or Google Play
- The visitor installs and opens the app
- The SDK calls
trackInstall - Instally matches the install to the prior click
- Revenue from that user (via RevenueCat, Stripe, etc.) is tied to the same link
Setting it up
Step 1: Map your website touchpoints
Before creating tracking links, identify every place on your website where someone can download your app. Common touchpoints:
| Page | CTA location | Link slug |
|---|---|---|
| Homepage | Hero section CTA | homepage-hero |
| Homepage | Bottom CTA section | homepage-bottom |
| Pricing page | CTA below pricing table | pricing |
| Blog: Getting started guide | Inline CTA | blog-getting-started |
| Blog: Feature comparison | Inline CTA | blog-comparison |
| Docs: Quickstart | Sidebar CTA | docs-quickstart |
| Footer | Persistent footer link | footer |
Step 2: Create tracking links
In the Instally dashboard, create a link for each touchpoint you identified. Each link gets a URL like instally.io/app/homepage-hero.
Step 3: Integrate the SDK in your app
If you haven't done this yet, add the Instally SDK to your app. It's a one-time setup.
Swift example:
import Instally
@main
struct YourApp: App {
init() {
Instally.configure(appId: "YOUR_APP_ID", apiKey: "your_api_key")
}
var body: some Scene {
WindowGroup {
ContentView()
.task {
try? await Instally.trackInstall()
}
}
}
}
Kotlin example:
import io.instally.sdk.Instally
class MyApp : Application() {
override fun onCreate() {
super.onCreate()
Instally.configure(this, "your_api_key")
Instally.trackInstall()
}
}
See the full iOS guide or Android guide for detailed setup.
Step 4: Replace links on your website
Swap your App Store and Google Play URLs for the tracking links. Since Instally detects the visitor's device, you can use a single link instead of platform-specific buttons.
Before:
<a href="https://apps.apple.com/app/your-app/id123456789"
class="btn">
App Store
</a>
<a href="https://play.google.com/store/apps/details?id=com.yourapp"
class="btn">
Google Play
</a>
After:
<a href="https://instally.io/app/homepage-hero"
class="btn">
Download the app
</a>
If you prefer to keep separate App Store and Google Play buttons for design reasons, you can still use the same tracking link for both. Instally will redirect each user to the correct store regardless.
Step 5: Connect revenue tracking
To see revenue per page (not just installs), connect your billing provider. We support RevenueCat, Stripe, Superwall, and Adapty. The RevenueCat integration guide and Stripe integration guide walk through the setup.
What the data looks like
After a few weeks of data collection, your dashboard shows something like this:
| Source | Clicks | Installs | Conv. Rate | Revenue | Rev/Install |
|---|---|---|---|---|---|
| Homepage (hero) | 4,200 | 630 | 15.0% | $2,520 | $4.00 |
| Homepage (bottom) | 1,100 | 132 | 12.0% | $462 | $3.50 |
| Blog: Getting started | 860 | 215 | 25.0% | $1,075 | $5.00 |
| Blog: Comparison post | 1,400 | 280 | 20.0% | $1,120 | $4.00 |
| Pricing page | 320 | 80 | 25.0% | $480 | $6.00 |
| Docs: Quickstart | 200 | 60 | 30.0% | $300 | $5.00 |
| Footer (all pages) | 580 | 29 | 5.0% | $58 | $2.00 |
This is the kind of insight that's impossible without per-link tracking. You'd never know your getting-started blog post is more valuable than your homepage CTA without measuring installs and revenue per source.
Measuring blog post performance
If you run a content marketing strategy, per-post install tracking is particularly valuable. Each blog post becomes a measurable acquisition channel.
Create a tracking link for each post (or at least for your highest-traffic posts). Over time, you build a picture of which content themes drive the most installs and the highest-value users.
| Blog post | Monthly traffic | Clicks | Installs | Revenue |
|---|---|---|---|---|
| "Getting started with [your app]" | 3,200 | 860 | 215 | $1,075 |
| "How to solve [problem]" | 5,100 | 410 | 82 | $246 |
| "[Your app] vs [competitor]" | 2,800 | 1,400 | 280 | $1,120 |
| "10 tips for [use case]" | 4,500 | 180 | 18 | $36 |
Optimizing based on the data
Once you have install and revenue data per page, you can make decisions that actually move the needle:
Move your best-converting CTA higher on the page. If your inline CTA converts at 25% but only 10% of visitors scroll to it, move it up or add an earlier CTA. Create more content in your highest-performing category. If comparison posts drive the most installs per visitor, write more comparisons. Test different CTA copy. Swap "Download on the App Store" for "Try the app free" and create a new tracking link. After a week, compare install rates. Remove or rethink low performers. If the footer CTA gets thousands of impressions but almost zero installs, the space might be better used for something else. Calculate your content ROI. If a blog post costs $200 to produce and generates $1,120/month in revenue, that's a clear win. If another post costs $200 and generates $36/month, maybe that topic isn't worth covering again.A note on landing pages
If you run dedicated landing pages for campaigns (from ads, Product Hunt, Hacker News, etc.), tracking installs from those pages is especially important. Create a unique tracking link for each landing page:
instally.io/app/producthuntfor your Product Hunt launchinstally.io/app/hn-launchfor your Hacker News postinstally.io/app/reddit-aprilfor a Reddit campaign
FAQ
Can I track installs from my website without changing my app?
No, you need to integrate the Instally SDK in your app. The SDK is what enables matching a website click to an app install. Without it, we can track clicks but not installs. The good news is integration takes about 5 minutes. See the iOS guide or Android guide.
What if my website already uses Google Analytics?
Instally and GA serve different purposes and work alongside each other. GA tracks on-site behavior (page views, scroll depth, button clicks). Instally tracks what happens after the user leaves your site and enters the app store. Keep GA for website analytics. Use Instally for install and revenue tracking.
Do tracking links affect my website's SEO?
No. The tracking link is used as the href on your download button, not as a page URL. Search engines don't crawl or index button destinations. Your page URLs, content, and metadata are unchanged.
Will the redirect add noticeable latency?
The redirect is fast, typically under 200ms. The user clicks the button, gets redirected through Instally, and lands on the App Store or Google Play. It feels instantaneous.
Can I use this with a React / Next.js / static site?
Yes. Instally tracking links are standard URLs. They work in any HTML, any framework, any static site generator. If you can render an tag, you can use a tracking link.
How do I handle users who already have the app installed?
If a visitor already has the app, clicking the tracking link will either take them to the App Store (where it says "Open" instead of "Get") or open the app directly via a universal link. Instally does not count this as a new install. Only first-time installs are recorded.
How many tracking links can I create?
On the free plan, one tracked link. On Pro and Business plans, unlimited links. See our pricing page for details.
---
Your website is the one channel you fully control. You control the content, the design, the CTAs, and the traffic strategy. But if you can't measure how many visitors become app users, you're optimizing blind. Add tracking links to your download buttons and start seeing the full picture: clicks, installs, and revenue, per page.
Stop guessing. Start shipping.
Track clicks, installs, and revenue from every link. Set up in five minutes.
Get started free