Skip to main content
← Back to blog
Felix Cameron··10 min read

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
Now you know: this blog post generated 45 installs and $180 in revenue this month.

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:

PageCTA locationLink slug
HomepageHero section CTAhomepage-hero
HomepageBottom CTA sectionhomepage-bottom
Pricing pageCTA below pricing tablepricing
Blog: Getting started guideInline CTAblog-getting-started
Blog: Feature comparisonInline CTAblog-comparison
Docs: QuickstartSidebar CTAdocs-quickstart
FooterPersistent footer linkfooter
You can be as granular or as broad as you want. At minimum, track homepage vs. blog vs. other sections separately. If you want to see which individual blog post drives the most installs, create a link per post.

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:

SourceClicksInstallsConv. RateRevenueRev/Install
Homepage (hero)4,20063015.0%$2,520$4.00
Homepage (bottom)1,10013212.0%$462$3.50
Blog: Getting started86021525.0%$1,075$5.00
Blog: Comparison post1,40028020.0%$1,120$4.00
Pricing page3208025.0%$480$6.00
Docs: Quickstart2006030.0%$300$5.00
Footer (all pages)580295.0%$58$2.00
A few things jump out from data like this: The homepage drives the most raw installs because it gets the most traffic. But the conversion rate is moderate at 15%. Blog posts and docs convert best. Visitors reading your getting-started guide or documentation are already invested. They convert at 25-30% and their revenue per install is higher because they've done their research and are more likely to become paying users. The pricing page has the highest revenue per install. Users who visit your pricing page are evaluating whether to pay. When they install, they're already primed to convert. The footer link barely converts. It gets some clicks but almost nobody installs from it. You could remove it or de-emphasize it without losing much.

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 postMonthly trafficClicksInstallsRevenue
"Getting started with [your app]"3,200860215$1,075
"How to solve [problem]"5,10041082$246
"[Your app] vs [competitor]"2,8001,400280$1,120
"10 tips for [use case]"4,50018018$36
The comparison post gets fewer visitors than the tips post but generates 15x more revenue. That's actionable. Write more comparison content. Double down on bottom-of-funnel posts that attract visitors with purchase intent.

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/producthunt for your Product Hunt launch
  • instally.io/app/hn-launch for your Hacker News post
  • instally.io/app/reddit-april for a Reddit campaign
Now you know exactly how many installs (and how much revenue) each launch channel drove, not just how many upvotes or comments you got.

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.

Ready / v1.0

Stop guessing. Start shipping.

Track clicks, installs, and revenue from every link. Set up in five minutes.

Get started free