technical-guidesUpdated 2025

Google App Campaigns Tracking: Complete Setup Guide (2025)

Complete guide to tracking Google App campaigns with wbraid (iOS) and gclid (Android). Step-by-step Firebase setup, conversion tracking, and troubleshooting.

10 min readtechnical-guides

Setting up Google App campaigns correctly ensures accurate install attribution and in-app conversion tracking. Here's the complete guide to tracking iOS and Android app campaigns without creating duplicate data.

🚨 Not sure what's breaking your tracking?

Run a free 60-second audit to check all 40+ ways UTM tracking can fail.

Scan Your Campaigns Free

✓ No credit card ✓ See results instantly

What are Google App Campaigns?

Google App campaigns are Google Ads campaign types designed specifically to promote mobile apps across Google's entire network:

  • Google Search: App install ads in search results
  • Google Play Store: App listings and search ads (Android)
  • YouTube: Video ads promoting app installs
  • Display Network: Banner and interstitial ads
  • Discovery: Ads in Gmail, Discover feed, YouTube home

Campaign Types

App Install Campaigns:

  • Goal: Drive new app downloads
  • Tracked metric: App installs
  • Bidding: Cost per install (CPI)

App Engagement Campaigns:

  • Goal: Re-engage existing users
  • Tracked metric: In-app actions (purchases, subscriptions, level completions)
  • Bidding: Cost per action (CPA)

How App Campaign Tracking Differs from Web

FeatureWeb CampaignsApp Campaigns
Tracking Parametergclid, gbraidwbraid (iOS), gclid (Android)
Attribution SystemGA4 cookiesFirebase SDK + device ID
Privacy RestrictionsCookie blockingATT framework (iOS 14+)
Conversion TrackingGA4 eventsFirebase events
PlatformBrowsersApp Store / Play Store

How Google App campaigns track iOS users

Google automatically appends the wbraid parameter to iOS app campaign traffic. This parameter tracks:

  • App install attribution: Which campaign/ad drove the install
  • In-app conversion events: Purchases, signups, subscriptions, custom events
  • Campaign and ad group performance: CPI, conversion rate, ROAS by campaign
  • Cross-device attribution: User sees ad on desktop → installs on mobile (when signed into Google)

wbraid respects Apple's App Tracking Transparency (ATT) framework, making it compatible with iOS 14+ privacy restrictions.

Technical Flow: iOS App Campaign Tracking

Step 1: User Sees Ad

Code
User searches "meditation apps" on Google
↓
Google App campaign triggers
↓
Ad shows in search results with App Store link

Step 2: User Clicks Ad

Code
User clicks ad
↓
Google appends wbraid to App Store URL
↓
User redirected to: apps.apple.com/app/id123?wbraid=abc123xyz

Step 3: User Installs App

Code
User clicks "Get" in App Store
↓
App installs on iPhone
↓
App opens for first time

Step 4: Firebase Tracks Install

Code
Firebase SDK initializes
↓
Reads wbraid from iOS system
↓
Sends install event to Google Ads with wbraid
↓
Google Ads attributes install to campaign

Step 5: In-App Conversions

Code
User completes purchase in app
↓
Firebase logs "purchase" event
↓
Event sent to Google Ads with original wbraid
↓
Purchase attributed to original campaign

How Google App campaigns track Android users

Android app campaigns use standard gclid parameter (same as web campaigns). Android has fewer privacy restrictions than iOS, allowing more detailed tracking.

Android Tracking Flow

Step 1: User Clicks Ad

Code
User clicks app install ad
↓
Google appends gclid to Play Store URL
↓
Redirected to: play.google.com/store/apps/details?id=com.app&gclid=abc123

Step 2: Install Attribution

Code
User installs app from Play Store
↓
Google Play Install Referrer API passes gclid to app
↓
Firebase SDK reads gclid
↓
Install attributed to Google Ads campaign

Step 3: In-App Events

Code
Firebase logs conversion events
↓
Events linked to gclid
↓
Full attribution in Google Ads

Android vs iOS Tracking Differences

FeatureiOS (wbraid)Android (gclid)
Privacy FrameworkATT + SKAdNetworkGoogle Play Services
Attribution Window30 days post-click90 days post-click
User-Level DataAggregated (privacy-limited)Full (if permissions granted)
Conversion Delay24-48h (aggregated)Real-time
Cross-DeviceLimitedFull (Google account)

😰 Is this your only tracking issue?

This is just 1 of 40+ ways UTM tracking breaks. Most marketing teams have 8-12 critical issues they don't know about.

• 94% of sites have UTM errors

• Average: $8,400/month in wasted ad spend

• Fix time: 15 minutes with our report

✓ Connects directly to GA4 (read-only, secure)

✓ Scans 90 days of data in 2 minutes

✓ Prioritizes issues by revenue impact

✓ Shows exact sessions affected

Get Your Free Audit Report

Tracking setup checklist

1. Enable auto-tagging in Google Ads

  1. Open Google Ads
  2. Click SettingsAccount Settings
  3. Find Auto-tagging section
  4. Enable: "Tag the URL that people click through from my ad"
  5. Click Save

Auto-tagging automatically applies:

  • wbraid for iOS app campaigns
  • gclid for Android app campaigns
  • No manual configuration needed

2. Remove manual UTM parameters

Delete any manual utm_source, utm_medium, or utm_campaign parameters from your app campaign URLs. Google's auto-tagging provides complete attribution automatically.

Before (redundant UTMs):

Code
https://apps.apple.com/app/id123?utm_source=google&utm_medium=app&utm_campaign=launch

After (clean, auto-tagged):

Code
https://apps.apple.com/app/id123

Google automatically appends ?wbraid=... when user clicks ad.

3. Connect Firebase to GA4

Firebase is required for app campaign tracking. It provides the SDK that reads wbraid/gclid and sends conversion events to Google Ads.

Setup steps:

iOS (Swift/Objective-C):

  1. Add Firebase to your Xcode project
  2. Install Firebase SDK via CocoaPods:
    Ruby
    pod 'Firebase/Analytics'
    pod 'Firebase/Core'
  3. Initialize Firebase in AppDelegate:
    Swift
    import Firebase
     
    func application(_ application: UIApplication,
                     didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
      FirebaseApp.configure()
      return true
    }

Android (Java/Kotlin):

  1. Add Firebase to your Android Studio project
  2. Add dependencies in build.gradle:
    Gradle
    implementation 'com.google.firebase:firebase-analytics:21.3.0'
    implementation 'com.google.android.gms:play-services-ads-identifier:18.0.1'
  3. Initialize Firebase in MainActivity:
    Kotlin
    import com.google.firebase.analytics.FirebaseAnalytics
     
    private lateinit var firebaseAnalytics: FirebaseAnalytics
     
    override fun onCreate(savedInstanceState: Bundle?) {
      super.onCreate(savedInstanceState)
      firebaseAnalytics = FirebaseAnalytics.getInstance(this)
    }

Link Firebase to GA4:

  1. Firebase Console → Project Settings → Integrations
  2. Click Google Analytics → Link
  3. Select existing GA4 property or create new one
  4. Save

4. Configure app conversion tracking

Set up conversion events in Firebase that send to Google Ads.

Common conversion events:

E-commerce app:

Swift
// iOS example: Purchase event
Analytics.logEvent(AnalyticsEventPurchase, parameters: [
  AnalyticsParameterCurrency: "USD",
  AnalyticsParameterValue: 49.99,
  AnalyticsParameterTransactionID: "ORDER-12345"
])
Kotlin
// Android example: Purchase event
val bundle = Bundle().apply {
  putString(FirebaseAnalytics.Param.CURRENCY, "USD")
  putDouble(FirebaseAnalytics.Param.VALUE, 49.99)
  putString(FirebaseAnalytics.Param.TRANSACTION_ID, "ORDER-12345")
}
firebaseAnalytics.logEvent(FirebaseAnalytics.Event.PURCHASE, bundle)

Subscription app:

Swift
// iOS: Subscription event
Analytics.logEvent("subscription_start", parameters: [
  "plan": "premium_monthly",
  "value": 9.99
])

Gaming app:

Kotlin
// Android: Level completion
val bundle = Bundle().apply {
  putString("level_name", "level_10")
  putInt("score", 5000)
}
firebaseAnalytics.logEvent("level_complete", bundle)

Link Firebase events to Google Ads:

  1. Google Ads → Tools & Settings → Conversions
  2. Click + New conversion action
  3. Select App
  4. Choose Firebase event (e.g., "purchase", "subscription_start")
  5. Set conversion value and attribution window
  6. Save

5. Verify tracking

Test iOS app campaign:

  1. Create test app campaign in Google Ads
  2. Set low daily budget ($5)
  3. Click ad from iPhone
  4. Verify ?wbraid=... appears in App Store URL
  5. Install app
  6. Complete test conversion (e.g., purchase)
  7. Check Firebase DebugView to see events
  8. Wait 24-48h for conversion to appear in Google Ads

Test Android app campaign:

  1. Create test campaign
  2. Click ad from Android device
  3. Verify ?gclid=... in Play Store URL
  4. Install app
  5. Trigger conversion event
  6. Check Firebase DebugView
  7. Verify conversion in Google Ads (typically within hours)

Common Issues & Troubleshooting

Issue 1: App Installs Not Showing in Google Ads

Problem: Users install app from Google Ads, but installs don't appear in Google Ads reporting.

Possible causes:

  1. Firebase not installed in app
  2. Firebase not linked to Google Ads account
  3. Conversion action not set up in Google Ads

Fix:

  1. Verify Firebase SDK initialized:
    Swift
    // iOS: Add debug logging
    FirebaseConfiguration.shared.setLoggerLevel(.debug)
  2. Check Firebase Console → Project Settings → Integrations → Google Ads (should show "Linked")
  3. Create "first_open" conversion action in Google Ads
  4. Wait 24-48h for iOS installs (aggregated reporting)

Issue 2: In-App Conversions Not Attributed

Problem: App installs tracked, but in-app purchases/events show zero in Google Ads.

Cause: Firebase events not configured or not linked to conversion actions.

Fix:

  1. Verify Firebase events logging correctly:
    • Firebase Console → Analytics → Events
    • Should see events appearing in real-time
  2. Link events to Google Ads conversion actions:
    • Google Ads → Conversions → + New conversion action → App
    • Select Firebase event
  3. Test event in app, verify appears in Firebase DebugView
  4. Wait for conversion to appear in Google Ads

Issue 3: Attribution Window Too Short

Problem: Conversions happening days after install not attributed to original campaign.

Cause: Default attribution windows may be too short.

Fix:

  1. Google Ads → Conversions → Select conversion action
  2. Click Edit settings
  3. Increase attribution window:
    • Post-install conversion window: 30 days (recommended)
    • Post-view conversion window: 1 day
  4. Save changes

Issue 4: Cross-Platform Attribution Missing

Problem: User sees ad on desktop, installs app on mobile later—install not attributed.

Cause: Cross-device attribution requires user to be signed into Google.

Reality: This is expected behavior. Cross-device attribution only works for signed-in users.

Workaround: Focus on same-device attribution, which represents majority of installs.

Issue 5: iOS Conversion Data Delayed

Problem: iOS conversions take 24-48 hours to appear in Google Ads, while Android appears immediately.

Cause: iOS uses aggregated reporting for privacy (SKAdNetwork).

Reality: This is expected. iOS 14+ privacy restrictions require batched reporting.

Action: Accept 24-48h delay as normal. Plan campaign optimization around this delay.

Best Practices for Google App Campaigns

1. Never Use Manual UTM Parameters

Auto-tagging handles everything. Manual UTMs are ignored and create URL clutter.

2. Track Value Events, Not Just Installs

Set up revenue-generating events:

  • Purchases
  • Subscriptions
  • In-app purchases
  • Ad revenue (for ad-supported apps)

This enables ROAS optimization in Google Ads.

3. Set Realistic Attribution Windows

Recommended windows:

  • E-commerce apps: 30 days post-install
  • Gaming apps: 7-14 days post-install
  • Subscription apps: 30 days post-install
  • Dating apps: 7 days post-install

4. Use Target ROAS Bidding

Once you have 50+ conversions in 30 days, switch from Target CPA to Target ROAS for better profitability.

5. Segment by Platform

Create separate campaigns for iOS and Android to:

  • Optimize budgets by platform
  • Account for iOS attribution delays
  • Track platform-specific conversion rates

FAQ

Do I need separate tracking for iOS and Android?

No. Google Ads automatically applies the correct parameter (wbraid for iOS, gclid for Android). Use the same Firebase project for both platforms.

Can I track app campaigns without Firebase?

No. Firebase is required for Google App campaigns. It provides the SDK that reads attribution parameters and sends conversion data to Google Ads.

How long does wbraid track conversions after install?

Default: 30 days post-install. You can adjust this in Google Ads conversion settings (maximum 90 days).

Does wbraid work if user doesn't grant ATT permission?

Yes. wbraid uses SKAdNetwork for aggregated attribution, which works without ATT permission. Individual user tracking requires ATT, but campaign-level attribution doesn't.

Can I see which specific ad creative drove installs?

Yes, but with limitations:

  • Android: Full ad-level data (headline, description, image)
  • iOS: Ad group level only (privacy restrictions)

Should I track "first_open" or custom install events?

Track both:

  • first_open: Default Firebase event, tracks app opens
  • Custom install: Create custom event to track completed onboarding (more valuable)

Example:

Swift
// Track when user completes onboarding
Analytics.logEvent("onboarding_complete", parameters: [:])

How do I track re-engagement campaigns?

Use "App Engagement" campaign type in Google Ads. Target existing users who have app installed. Track in-app events like "session_start" or "purchase".

Can I use Google App campaigns for web apps (PWAs)?

No. Google App campaigns are for native iOS and Android apps only. Web apps use standard web campaigns with gclid/gbraid.

What's the minimum budget for app campaigns?

Google recommends:

  • Minimum daily budget: $50/day per campaign
  • Learning period: 7-14 days with 10+ conversions/day

Lower budgets may not exit learning phase.

How do I track lifetime value (LTV) in app campaigns?

Firebase automatically calculates LTV based on in-app purchase events. View in:

  • Firebase Console → Analytics → LTV
  • Google Ads → Campaigns → View by LTV cohort

Internal Guides

Google Official Documentation

Firebase Resources

Conclusion

Google App campaigns provide powerful app install and engagement tracking through automatic wbraid (iOS) and gclid (Android) parameters.

Unlike manual UTM tracking, Google's auto-tagging provides:

  • ✅ Zero configuration (automatic parameter appending)
  • ✅ iOS ATT compliance via SKAdNetwork
  • ✅ Full attribution from install → in-app events → revenue
  • ✅ Cross-device tracking for signed-in users
  • ✅ Seamless Firebase integration
  • ✅ Campaign optimization based on in-app ROAS

Setup checklist:

  1. ✅ Enable auto-tagging in Google Ads
  2. ✅ Remove manual UTM parameters
  3. ✅ Install Firebase SDK in iOS and Android apps
  4. ✅ Link Firebase to Google Ads
  5. ✅ Configure conversion events (purchase, subscription, custom)
  6. ✅ Test tracking with small budget campaign
  7. ✅ Monitor Firebase DebugView and Google Ads conversions

Result: Complete app attribution without manual tracking code or UTM parameters.


Related Documentation:

✅ Fixed this issue? Great! Now check the other 39...

You just fixed one tracking issue. But are your Google Ads doubling sessions? Is Facebook attribution broken? Are internal links overwriting campaigns?

Connects to GA4 (read-only, OAuth secured)

Scans 90 days of traffic in 2 minutes

Prioritizes by revenue impact

Free forever for monthly audits

Run Complete UTM Audit (Free Forever)

Join 2,847 marketers fixing their tracking daily

UTM

Get Your Free Audit in 60 Seconds

Connect GA4, run the scan, and see exactly where tracking is leaking budget. No credit card required.

Trusted by growth teams and agencies to keep attribution clean.