Skip to main content
Question

Facebook SDK ATE True Status Rate stuck at 0% (Before & After RevenueCat). What am I missing?

  • July 21, 2026
  • 1 reply
  • 24 views

Forum|alt.badge.img

Hey everyone,

I’m running Meta Ads to drive app installs and recently integrated RevenueCat to handle subscriptions and forward revenue events back to Meta.

I am completely stuck on the "iOS 14.5 ATE True Status Rate" in Meta Events Manager - it has been sitting at 0% for a long time, and I know for a fact users are accepting the ATT prompt because my custom att_ok events are logging successfully in Firebase.

Here is my timeline and setup:

  1. Before RevenueCat: FacebookAutoLogAppEventsEnabled was enabled in my Info.plist. The ATE True Status Rate was 0%.

  2. After RevenueCat: FacebookAutoLogAppEventsEnabled is still enabled in my Info.plist. However, following Adapty's docs, I turned OFF "iOS: Log in-app events automatically (Recommended)" in the Meta Developer console to prevent double-counting revenue. The ATE True Status Rate remains at 0%.

Here is my current ATT request code:

private func requestTrackingPermission() {
ATTrackingManager.requestTrackingAuthorization { status in

// 1. Firebase Analytics
let isAuthorized = (status == .authorized)
Analytics.logEvent(isAuthorized ? "att_ok" : "att_nok", parameters: nil)

// 2. Facebook SDK
if #available(iOS 17.0, *) {
print("ATT status resolved. Tracking enabled/disabled automatically by Facebook SDK for iOS 17+.")
} else {
// Condenses the 4 switch cases into a single boolean assignment
Settings.shared.isAdvertiserTrackingEnabled = isAuthorized
}

Purchases.shared.attribution.enableAdServicesAttributionTokenCollection()

// Automatically collect the $idfa, $idfv, and $ip values
Purchases.shared.attribution.collectDeviceIdentifiers()

// 4. Delegate
DispatchQueue.main.async {
delegate?.next()
}
}
}

Since it was 0% even before I disabled the console setting for RevenueCat, I feel like there's a fundamental timing or configuration issue I'm missing with how the Facebook SDK registers the isAdvertiserTrackingEnabled flag upon launch.

Based on my Firebase analytics, I can confirm that approximately 40% of users are accepting the ATT prompt, as indicated by the 'att_ok' event.

Has anyone navigated this? What is the correct way to fix the 0% ATE rate in this scenario without breaking install attribution? Any advice would be hugely appreciated!

 

This is my RevenueCat and Facebook SDK init code.

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
initFacebook(
application,
launchOptions: launchOptions
)

initRevenueCat()

...
}


// https://www.revenuecat.com/docs/integrations/attribution/apple-search-ads
// https://www.revenuecat.com/docs/integrations/attribution/facebook-ads#3-send-revenuecat-events-into-facebook-ads-manager
private func initRevenueCat() {
Purchases.configure(with:
.init(withAPIKey: "appl_xxx")
.with(
purchasesAreCompletedBy: .myApp,
storeKitVersion: .storeKit2
)
)

Purchases.shared.attribution.enableAdServicesAttributionTokenCollection()

// https://www.revenuecat.com/docs/customers/customer-attributes
// Device identifiers can't be changed once set
// (That's why we are checking trackingAuthorizationStatus)
if ATTrackingManager.trackingAuthorizationStatus != .notDetermined {
// Automatically collect the $idfa, $idfv, and $ip values
Purchases.shared.attribution.collectDeviceIdentifiers()
}

// REQUIRED: Set the Facebook anonymous Id
Purchases.shared.attribution.setFBAnonymousID(FBSDKCoreKit.AppEvents.shared.anonymousID)
}


private func initFacebook(_ application: UIApplication, launchOptions: [UIApplication.LaunchOptionsKey: Any]?) {
// https://developers.facebook.com/docs/app-events/getting-started-app-events-ios
ApplicationDelegate.shared.application(
application,
didFinishLaunchingWithOptions: launchOptions
)

if #unavailable(iOS 17.0) {
// Fallback for iOS 16 and earlier
Settings.shared.isAdvertiserTrackingEnabled = ATTrackingManager.trackingAuthorizationStatus == .authorized
}
}

 

1 reply

erik-macinnis
RevenueCat Staff
Forum|alt.badge.img+3
  • RevenueCat Staff
  • July 21, 2026

Hi ​@yan,

RevenueCat does forward the relevant identifiers and tracking status with Meta Conversions API events.

  • IDFA is sent through madid when available
  • Facebook Anonymous ID is sent through user_data.anon_id
  • ATT status is reflected through advertiser_tracking_enabled and application_tracking_enabled

You can view the exact payload RevenueCat sent by opening the Meta Integration Event under Customer History.

One thing worth confirming is the Facebook SDK version. The iOS 17 handling in the shared code is correct when using Facebook SDK 17 or newer. Meta automatically reads the ATT authorization status on iOS 17+ beginning with that SDK version.

Meta documents that behaviour here:

https://developers.facebook.com/docs/app-events/guides/advertising-tracking-enabled/

If Facebook SDK 17 or newer is already installed, I’d recommend contacting Meta support. RevenueCat sends the expected ATE fields, but Meta does not expose how the ATE True Status Rate is calculated. They would need to confirm why Events Manager is still reporting 0%.

Hopefully Meta can help you out or another developer who has run into this issue can point you in the right direction.

All the best,
Erik - Developer Support Engineer