You are running mobile app campaigns, spending budget across Meta, Google, and TikTok, but your conversion data tells a frustrating story: missing events, underreported installs, and revenue numbers that do not match your actual results. When you are unable to track mobile app conversions accurately, every optimization decision becomes a guess.
This guide walks you through a systematic troubleshooting process to identify why your mobile app conversions are not tracking and how to fix each issue. Whether the problem stems from SDK implementation errors, attribution window mismatches, privacy framework conflicts, or server-side configuration gaps, you will learn exactly where to look and what to do.
By the end, you will have a clear action plan to restore accurate conversion tracking and regain confidence in your mobile marketing data.
Before you dive into technical fixes, you need to understand exactly what is broken. Start by determining whether your tracking issue affects all platforms or just specific ad channels. Log into each ad platform and compare reported conversions for the same date range. If Meta shows 50 purchases but Google shows 3 and TikTok shows zero, you are looking at platform-specific problems rather than a universal tracking breakdown.
Next, check your Mobile Measurement Partner dashboard. Your MMP serves as the source of truth for attribution data. Compare the total conversions your MMP reports against what each ad platform shows. Significant discrepancies here reveal where data is getting lost in transmission. If your MMP shows 100 purchases but Meta only reports 60, the issue likely involves postback configuration rather than event tracking itself.
Now narrow down which conversion events are affected. Open your analytics and examine each event type separately: app installs, registrations, add to cart actions, purchases, and subscription starts. You might discover that installs track perfectly while purchase events never appear. This pattern points to implementation issues with specific event codes rather than wholesale SDK failure.
Create a diagnostic spreadsheet to document your findings. List each ad platform in one column, each conversion event type across the top, and mark whether tracking works, partially works, or fails completely for each combination. Include the percentage discrepancy when comparing MMP data to platform data. This visual map reveals patterns that guide your troubleshooting efforts.
Check the timeline of when tracking broke. Did conversions stop reporting suddenly on a specific date, or has tracking been inconsistent since launch? A sudden drop often correlates with app updates, SDK version changes, or new privacy policies. Gradual degradation suggests accumulating configuration drift or increasing privacy opt-outs. Understanding why conversions are not tracking starts with pinpointing when the problem began.
Test with a fresh install on your own device. Complete a full conversion journey from ad click through purchase while monitoring your MMP dashboard in real time. If this test conversion appears immediately, your core tracking works and the issue involves scale, specific user segments, or delayed attribution. If your own test conversion never shows up, you have fundamental implementation problems to address first.
Start by confirming your SDK is actually initialized. Most ad platforms and MMPs provide debug modes that log SDK activity to your development console. Enable debug logging in your app build, then launch the app on a test device while watching the console output. You should see initialization messages confirming the SDK loaded successfully with the correct app ID and API credentials.
Check that event names match exactly between your app code and platform configurations. Case sensitivity matters. If your code fires "purchase" but your ad platform expects "Purchase", the event will not register. Review every custom event in your codebase and cross-reference it with your event catalog in Meta Events Manager, Google Analytics, and your MMP dashboard. Even a single character difference breaks tracking.
Timing issues cause many tracking failures. Events fired before SDK initialization completes get lost. Review your app's startup sequence to ensure the SDK initializes early, ideally in your app delegate or main activity onCreate method. Any conversion events that could fire during app launch, like completing a purchase flow that was started in a previous session, need delay logic to wait for SDK readiness.
Look for duplicate SDK implementations. If you are using multiple analytics tools, attribution platforms, or ad network SDKs, conflicts can occur. Check your dependency files and initialization code for duplicate or competing SDKs that might interfere with each other. Some SDKs cannot coexist without specific configuration to prevent conflicts.
Validate your app IDs and API keys. Copy them directly from your ad platform dashboards and compare character by character against what appears in your app configuration files. A single wrong character means events transmit but get rejected because they cannot be matched to your account. Following best practices for tracking conversions accurately helps prevent these common configuration errors.
Test event parameters and values. Conversion events should include relevant data like purchase amount, currency, product ID, and user properties. Use your platform's event testing tools to confirm parameters arrive correctly. Meta offers Event Testing in Events Manager, Google provides DebugView in Analytics, and most MMPs have real-time event logs. Fire test events and verify that all expected parameters appear with correct data types and values.
Review your event deduplication setup. If you send the same conversion event through multiple paths, like both SDK and server-side, you need deduplication logic to prevent double-counting. Check that each event includes a unique transaction ID that platforms can use to identify duplicates. Without this, your conversion counts may be inflated or, in some cases, platforms may reject events they suspect are duplicates.
Apple's App Tracking Transparency framework fundamentally changed how iOS apps can track users. Your app must display the ATT prompt and receive user permission before accessing the device's advertising identifier. Check that your ATT prompt implementation appears at an appropriate moment. Showing it immediately on first launch often results in low opt-in rates because users have not yet experienced your app's value. Many successful apps delay the prompt until after users complete a meaningful action.
Verify your ATT prompt displays correctly by testing on iOS 14.5 or later devices. The prompt should show your custom usage description explaining why you need tracking permission. This description must be clear and user-focused. Generic language like "to provide better ads" performs worse than specific value propositions like "to show you relevant product recommendations based on your interests." Understanding the iOS App Tracking Transparency impact helps you optimize your prompt strategy.
Configure SKAdNetwork correctly for iOS attribution. SKAdNetwork provides privacy-safe attribution by sending conversion data through Apple's servers rather than directly from the device. Your app must register supported ad networks in your Info.plist file. Check that this list includes all platforms where you run campaigns. Missing networks cannot receive attribution data even when users grant ATT permission.
Set up conversion value mapping for SKAdNetwork. Unlike traditional tracking that reports specific events, SKAdNetwork uses a single 6-bit conversion value that can represent 64 different states. You must map your conversion events to these values in a way that captures your most important optimization signals. Many apps use a tiered approach: values 0-10 for installs without purchases, 11-30 for low-value purchases, 31-50 for medium-value purchases, and 51-63 for high-value purchases.
Understand the timing constraints of SKAdNetwork. Conversion values update within a 24-hour window after install, with the timer resetting each time the value changes. After this window closes, the conversion value gets sent to the ad network. This delay means SKAdNetwork data appears 1-3 days after the actual conversion, unlike real-time tracking. Adjust your optimization expectations accordingly.
Implement privacy manifests for App Store compliance. Starting in 2024, Apple requires apps to declare their tracking domains and data collection practices in a privacy manifest file. Missing or incorrect manifests can cause app rejection or tracking failures. Your manifest must list all third-party SDKs that track users and specify which data types each SDK accesses.
Monitor your ATT opt-in rate in your analytics. Industry averages vary widely by app category, from 15% to 40%. If your rate falls significantly below your category average, review your prompt timing and messaging. Low opt-in rates mean most of your iOS users cannot be deterministically tracked, making aggregated SKAdNetwork data your primary attribution source for iOS campaigns.
Attribution windows define how long after an ad interaction a conversion can be credited to that ad. Different platforms use different default windows, creating apparent tracking failures when conversions fall outside one system's window but inside another's. Start by documenting the attribution windows configured in each system. Meta typically uses 7-day click and 1-day view windows. Google Ads defaults to 30-day click windows. Your MMP may use different settings entirely.
Align these windows across platforms when possible. If your sales cycle typically takes 14 days from first ad click to purchase, but your attribution window only covers 7 days, half your conversions will appear as organic rather than paid. Extend windows to match your actual customer journey length. However, be aware that longer windows increase the chance of attribution conflicts when users interact with multiple ad sources.
Check your postback URL configuration in your MMP dashboard. Postbacks are server-to-server notifications that send conversion data from your MMP to ad platforms. Each platform requires a specific postback URL format with dynamic parameters that pass conversion details. Log into your MMP, navigate to partner integrations, and verify that postbacks are enabled and correctly configured for every ad platform you use.
Test postback delivery using your MMP's testing tools. Most MMPs let you send test postbacks to verify the connection works. Fire a test postback for each platform and confirm it arrives successfully. Check both success and failure logs. Failed postbacks often reveal authentication errors, incorrect URL formatting, or missing required parameters.
Review your postback event mapping. Your MMP needs to know which internal events should trigger postbacks to which platforms. If you track a "purchase_complete" event internally but your postback is configured to send "purchase" events, no data will flow. Verify that event names in your postback configuration exactly match the events your app actually fires. Proper mobile app attribution tracking depends on these configurations being precisely aligned.
Investigate delayed postbacks by examining server logs. Some MMPs queue postbacks and send them in batches rather than in real time. Others retry failed postbacks with exponential backoff, causing hours of delay. Understanding your MMP's postback timing helps you distinguish between tracking failures and normal processing delays. If conversions appear in your MMP within minutes but take hours to show in ad platforms, delayed postbacks are likely the cause.
Consider attribution window mismatches when comparing data sources. A conversion might fall within your MMP's 30-day window but outside Meta's 7-day window. This same conversion will appear in your MMP report but not in Meta's, creating a discrepancy that looks like a tracking failure but is actually an attribution methodology difference. Document these expected variances to avoid misdiagnosing normal behavior as broken tracking.
Client-side SDK tracking alone is no longer sufficient for accurate attribution in the current privacy landscape. Ad blockers, privacy settings, app termination before SDK transmission completes, and ATT opt-outs all create gaps in client-side data. Server-side tracking addresses these limitations by sending conversion events directly from your backend servers to ad platforms and analytics tools.
Start by identifying which conversion events happen on your server. Purchases, subscription renewals, refunds, and account upgrades typically process through backend systems. These server-side events are perfect candidates for server-to-server tracking because your server already knows they occurred. You do not rely on a client SDK to detect and transmit them. Learning how to track conversions without cookies becomes essential as privacy restrictions expand.
Set up server-side event transmission using platform APIs. Meta offers the Conversions API, Google provides the Measurement Protocol, and TikTok has Events API. Each requires authentication credentials and specific event payload formats. Your server must construct properly formatted HTTP requests containing event data and user identifiers, then send these requests to the platform's API endpoint.
Match server-side events to users correctly. Without client-side cookies or device IDs, you need alternative identifiers. Email addresses, phone numbers, and user IDs from your database work well. Platforms hash these identifiers for privacy protection while still enabling attribution. Include multiple identifiers when possible to improve match rates. A request containing both email and phone number has a higher chance of matching the ad platform's user records than one with only email.
Platforms like Cometly solve the complexity of multi-platform server-side tracking. Rather than building and maintaining separate integrations for each ad platform, Cometly connects your ad platforms, CRM, and website to track the complete customer journey. It captures every touchpoint from initial ad click through final purchase, then syncs enriched conversion data back to ad platforms automatically. This approach feeds better data to Meta, Google, and other platforms, improving their optimization algorithms even when client-side tracking is limited.
Test your server-side events thoroughly. Send test conversions from your server and verify they appear in each platform's events manager or analytics dashboard. Check that event parameters like purchase value, currency, and product details transmit correctly. Confirm that events are attributed to the correct ad campaigns when you can identify the source.
Implement deduplication between client-side and server-side events. When both your SDK and server send the same purchase event, you need logic to prevent double-counting. Use consistent transaction IDs across both transmission methods. Platforms can then recognize duplicate events and count them only once. Configure your deduplication preferences in each platform's settings to specify which source takes priority when duplicates occur.
Monitor server-side event delivery rates. Unlike client-side SDKs that fail silently when blocked, server-side requests typically return HTTP status codes indicating success or failure. Log these responses and set up alerts for elevated error rates. Common issues include authentication failures, rate limiting, and payload formatting errors. Catching these quickly prevents extended periods of missing conversion data.
After implementing fixes, run comprehensive end-to-end tests to confirm tracking works correctly. Create a test campaign with a small budget targeting a narrow audience. Use your own devices to click the test ad, install or open the app, and complete a full conversion journey. Monitor each step in real time across your MMP dashboard, ad platform reporting, and backend analytics.
Check that conversions appear within expected timeframes. Client-side SDK events should show up in real-time dashboards within minutes. Server-side events typically appear even faster since they bypass device transmission delays. SKAdNetwork conversions on iOS will have 24-48 hour delays, which is normal. If events do not appear within these timeframes, investigate further.
Set up ongoing monitoring alerts for tracking discrepancies. Configure your analytics platform to notify you when conversion counts drop below expected thresholds or when the gap between MMP data and ad platform data exceeds acceptable variance. Early detection of tracking degradation lets you fix issues before they significantly impact campaign performance. Using conversion tracking software for multiple ad platforms simplifies this monitoring process.
Compare data across all sources regularly. Create a weekly report that shows conversion counts from your MMP, each ad platform, and your backend database. Some variance is normal due to attribution methodology differences, but sudden changes or growing discrepancies indicate new problems. Document expected variance ranges for each comparison so you can quickly identify anomalies.
Review your tracking setup after every app update. SDK version changes, new iOS releases, updated privacy policies, and code refactoring can all introduce tracking regressions. Make tracking validation part of your QA process before releasing updates. Test conversion events on both iOS and Android, across different OS versions, and with various privacy settings enabled.
Create a maintenance schedule for tracking infrastructure. Review postback configurations monthly to ensure they remain current as platforms update their APIs. Audit SKAdNetwork conversion value mappings quarterly to optimize for your evolving business priorities. Check SDK versions semi-annually and update to the latest stable releases to access new features and bug fixes.
Document your tracking architecture comprehensively. Maintain clear documentation showing which events fire where, how attribution windows are configured, what postbacks send to which platforms, and how server-side tracking integrates with client-side SDKs. When team members change or issues arise months later, this documentation enables faster troubleshooting and prevents knowledge loss. A solid cross platform tracking setup guide serves as an invaluable reference for your team.
Fixing mobile app conversion tracking requires systematic diagnosis rather than random troubleshooting. Start by identifying the scope of your tracking failure, then work through SDK verification, iOS privacy compliance, attribution settings, and server-side implementation. Each layer builds on the previous one to create a robust tracking foundation that works despite privacy restrictions and technical limitations.
Use this checklist to confirm your setup is complete: SDK fires correctly on test devices, ATT prompt displays at the right moment, SKAdNetwork conversion values are mapped to your business priorities, postback URLs are configured for each ad platform, server-side tracking captures critical events that client-side might miss, and monitoring alerts are active to catch future issues early.
With accurate conversion data restored, you can finally optimize your mobile campaigns based on real performance rather than incomplete information. You will know which ad creative drives purchases, which audiences convert at the highest rates, and which campaigns deserve increased budget. This clarity transforms mobile advertising from expensive guesswork into a predictable growth channel.
The mobile attribution landscape continues to evolve as privacy frameworks expand and tracking technologies advance. Staying current with platform updates, maintaining rigorous testing practices, and implementing redundant tracking layers ensures your conversion data remains reliable regardless of future changes.
Ready to elevate your marketing game with precision and confidence? Discover how Cometly's AI-driven recommendations can transform your ad strategy. Get your free demo today and start capturing every touchpoint to maximize your conversions.