App Store linking
mobile app links
app deep linking
iOS app links
app marketing tips

How to link to apps on the app store

Master System Design with Codemia

Enhance your system design skills with over 120 practice problems, detailed solutions, and hands-on exercises.

Introduction

Linking to an App Store page is mostly about choosing the right URL format for the context. A normal HTTPS link is best for websites, messages, and email, while app-to-App Store handoff from iOS often uses the itms-apps scheme for a more direct launch. This article covers both forms, shows how to open them safely, and explains when SKStoreProductViewController is a better user experience.

For most purposes, use the normal App Store HTTPS URL. This works in browsers, on mobile devices, and on desktop.

Typical format:

text
https://apps.apple.com/app/id1234567890

If you know the app name slug, Apple also supports URLs like this:

text
https://apps.apple.com/us/app/example-app/id1234567890

The important part is the numeric App Store app ID. That is the most stable identifier in the URL.

Linking from an iOS App

Inside an iOS app, a common approach is to open the App Store directly with UIApplication.

swift
1import UIKit
2
3func openAppStore(appID: String) {
4    guard let url = URL(string: "itms-apps://itunes.apple.com/app/id\(appID)") else {
5        return
6    }
7
8    UIApplication.shared.open(url)
9}

The itms-apps scheme skips the browser step and usually opens the App Store app directly. That makes it a good choice for upgrade prompts or "rate this app" flows.

If the link is shown on a website, in documentation, or in a cross-platform UI, prefer HTTPS.

swift
1import UIKit
2
3func openStoreWebURL(appID: String) {
4    guard let url = URL(string: "https://apps.apple.com/app/id\(appID)") else {
5        return
6    }
7
8    UIApplication.shared.open(url)
9}

HTTPS links are more portable and degrade more gracefully outside iOS.

Present the Store Inside Your App

If you want users to stay inside your app while viewing the store page, use SKStoreProductViewController.

swift
1import StoreKit
2import UIKit
3
4final class StorePresenter: NSObject, SKStoreProductViewControllerDelegate {
5    func showStorePage(from viewController: UIViewController, appID: Int) {
6        let storeVC = SKStoreProductViewController()
7        storeVC.delegate = self
8
9        storeVC.loadProduct(withParameters: [SKStoreProductParameterITunesItemIdentifier: appID]) { loaded, error in
10            if loaded {
11                viewController.present(storeVC, animated: true)
12            } else {
13                print(error?.localizedDescription ?? "Failed to load App Store page")
14            }
15        }
16    }
17
18    func productViewControllerDidFinish(_ viewController: SKStoreProductViewController) {
19        viewController.dismiss(animated: true)
20    }
21}

This is useful for upgrade nudges because it keeps the user inside your app flow rather than sending them out to the App Store app.

Region and Localization Notes

App Store URLs often contain a storefront region such as /us/ or /gb/. If you omit the explicit region, Apple can often resolve the correct storefront automatically, but region-specific links are still common in marketing material.

If your app is available only in certain storefronts, test the link in those regions before shipping campaigns or in-app prompts.

Finding the App ID

The app ID is not the bundle identifier. It is the numeric App Store identifier assigned in App Store Connect.

Examples:

  • bundle identifier: com.example.myapp
  • App Store ID: 1234567890

Many broken links come from mixing those up.

Linking to Ratings and Reviews

Some teams also want a review page link rather than the app landing page. That is possible, but the exact URL pattern is more brittle than the main app page. If your goal is in-app review prompting, SKStoreReviewController is usually the better API for supported contexts.

That means the decision tree is often:

  • app page link for install or upgrade
  • 'SKStoreProductViewController for in-app store display'
  • 'SKStoreReviewController for rating prompts'

Common Pitfalls

  • Using the bundle identifier where the App Store numeric ID is required.
  • Using itms-apps in places where a normal web URL would be more portable.
  • Sending users out of the app when an in-app store sheet would give a better experience.
  • Hard-coding a storefront region without verifying that the app is available there.
  • Treating rating prompts and store-page links as the same problem.

Summary

  • Use the HTTPS App Store URL for web, email, and general sharing.
  • Use itms-apps when opening the App Store directly from an iOS app.
  • Use SKStoreProductViewController when you want the store page inside your app.
  • The critical identifier is the numeric App Store ID, not the bundle identifier.
  • Choose the link style based on context: portability, direct launch, or embedded store experience.

Course illustration
Course illustration

All Rights Reserved.