Android UTM Validator & Google Play Campaign Builder

Don't let your campaign data disappear into the "not set" abyss. Validate your Google Play Store URLs with precision referrer checking to ensure every install is attributed correctly in GA4 and the Play Console.

Campaign URL Inspector

Try Interactive Test Examples

Valid Play Store Referrer LinkValid

Properly URL-encoded referrer parameter with utm_source, utm_medium, and utm_campaign.

Unencoded Top-Level UTM ErrorBroken

Web-style UTMs outside referrer parameter will be stripped by Play Store.

Firebase Dynamic Link (Deprecated)Broken

Firebase Dynamic Links were deprecated in August 2025.

The Technical Guide to Android UTM Validation & Play Store Attribution

Mobile app attribution is significantly more complex than web attribution. When a user clicks a link to a website, their browser immediately passes the query parameters (UTMs) to the destination page, where Google Analytics 4 (GA4) or other tools can read them on page load. However, when a user clicks a link to an Android app, the process is fundamentally broken by the Google Play Store installation step.

The app hasn't been installed yet, so it can't read the UTM parameters at the moment of the click. Instead, the parameters must be safely stored by the Google Play Store during the download and installation process, and then retrieved by the app only upon its first open. This is where the referrer parameter and the Google Play Install Referrer API come into play.

Why Web UTMs Fail on the Google Play Store

If you put top-level UTM parameters on a Play Store URL (like play.google.com/store/apps/details?id=com.app&utm_source=google), Google Play ignores them completely. The Google Play Store app strips top-level query parameters that are not recognized by its deep-linking mechanism. To transmit tracking data through the install funnel, all UTM parameters must be URL-encoded and nested inside the single referrer parameter.

Play Install Referrer API vs. Legacy BroadcastReceiver

Historically, Android SDKs relied on an INSTALL_REFERRER broadcast intent sent by the OS after installation. In modern Android development, Google deprecated broadcast receivers in favor of the encrypted Play Install Referrer API.

  • Instant Retrieval: The Play Install Referrer API returns the referrer string directly from Google Play Services without relying on OS broadcasts.
  • Click Timestamp: Returns the exact client timestamp when the user clicked the ad link vs. when the app was installed.
  • Google Play Pass-Through: Retains campaign parameters for up to 90 days between ad click and app install.

How to Debug Android Attribution via ADB Commands

To test your Google Play campaign URLs without publishing a live ad, developers use Android Debug Bridge (ADB) to simulate an install referrer payload directly on an Android emulator or test device:

adb shell am broadcast -a com.android.vending.INSTALL_REFERRER -n com.yourcompany.app/com.google.android.gms.measurement.AppMeasurementInstallReferrerReceiver --es "referrer" "utm_source=google&utm_medium=cpc&utm_campaign=test_campaign"

5 Critical Attribution Pitfalls in Android Ad Campaigns

  1. Unencoded Ampersands: Forgetting to encode & as %26 inside the referrer= string causes the Play Store to treat subsequent UTMs as top-level parameters and discard them.
  2. Double Encoding: Encoding the string twice turns %26 into %2526. When decoded by the SDK, the parameters remain concatenated as a single broken key.
  3. Spaces in Parameter Values: Using raw spaces instead of %20 or underscores breaks parameter parsing on mobile webviews.
  4. Case Sensitivity: GA4 treats utm_medium=CPC and utm_medium=cpc as separate channels, fragmenting your paid social and paid search reports.
  5. Firebase Dynamic Links Deprecation: Google deprecated Firebase Dynamic Links in August 2025. Mobile apps must transition to App Links (Android) or native Universal Links.

Support ValidateURL

Find this tool useful?

ValidateURL is completely free. If our tools saved you some time today, consider buying us a coffee to help keep the servers running! ☕

Support Us on Ko-fi