ATT Framework
Alternatives
Should you collect IDFA?
IDFA is opt-in only, it’s gated behind Apple’s App Tracking Transparency (ATT) prompt, so it’s never available for 100% of your users. When a user consents, the IDFA can be collected as an additional, stable identifier for that user.
Config-driven auto-collection is available from v2.6.0. If your workspace has it enabled, the SDK can automatically collect the IDFA (and IDFV / IP) as aliases, no manual
setIdentityForIDFA code required. The manual approach below is still supported. See the v2.6 Migration Guide for setup and the privacy/App Store implications.Why opting in can be worth it
- Consent rates are rising, not collapsing. The industry-wide ATT opt-in rate reached roughly 35% by Q2 2025, up from ~34% in 2023 and ~34.5% in 2024, a steady upward trend as prompt design and onboarding flows have matured.
- A stable, consented identifier. For users who consent, the IDFA stays consistent for that user, giving a reliable signal to resolve their identity accurately.
- A standard iOS identifier. IDFA uses Apple’s own identifier format, so it fits into your existing identity setup without custom handling.
- Complements your other identifiers. IDFA adds to the identity you already collect (hashed email, IDFV) rather than replacing it, helping build a more complete picture of the consenting share of your audience.
What to weigh before opting in
- Coverage is partial. Even at healthy opt-in rates, a meaningful share of users will decline, so IDFA should never be your only identifier. Pair it with hashed email and IDFV (see Recommended Alternatives).
- Extra implementation. Requires integrating the ATT framework and requesting permission at the right moment.
- App Store compliance. You must justify IDFA usage and declare it accurately in App Store Connect.
Recommended Alternatives
1. Identifier for Vendor (IDFV)
A consistent identifier across your apps from the same vendor:- No user permission required
- Consistent across app installs (until uninstall)
- Available on both iOS and tvOS
- No App Store justification needed
2. Hashed Email Address
The most reliable cross-device identifier:- Works across devices and platforms
- Highest priority for identity resolution
- No Apple framework dependencies
- User provided and expected
3. Internal User ID
Your system’s user identifier:App Tracking Transparency
If you still need IDFA, follow these steps:1. Add Usage Description
Add to yourInfo.plist:
2. Request Permission
3. Check Status Before Requesting
4. When to Request
Using setIdentityForIDFA
The SDK provides a dedicated method for IDFA:- Sets an alias with the reserved tag
"idfa" - Validates the IDFA is not all zeros
- Throws an error if IDFA is invalid
Apple Privacy Information
When submitting to the App Store, you must declare data collection. For apps using Permutive:Without IDFA
If you’re NOT using IDFA, Permutive’s SDK data collection is:- Identifiers: Device ID (vendor identifier if used)
- Usage Data: Product interaction
- Purpose: Analytics, advertising
With IDFA
If you ARE using IDFA, also declare:- Identifiers: Device ID (IDFA)
- Purpose: Third-party advertising, tracking
tvOS Considerations
tvOS Note: App Tracking Transparency and IDFA are available on tvOS from version 14.5 onwards.
Best Practices
- Do
- Don't
- Use
identifierForVendoras a reliable alternative - Use hashed email for cross-device identity
- Request ATT permission at an appropriate time
- Explain the value to users before requesting
- Handle all authorization statuses gracefully
- Have fallback identifiers when IDFA unavailable
Troubleshooting
setIdentityForIDFA throws error
setIdentityForIDFA throws error
Problem: IDFA call fails with error.Cause: IDFA is all zeros (tracking denied/restricted).Solution: Check authorization status first and use alternative identifiers:
ATT prompt not appearing
ATT prompt not appearing
Problem:
requestTrackingAuthorization doesn’t show prompt.Possible Causes:- Missing
NSUserTrackingUsageDescriptionin Info.plist - User already responded (check status first)
- Running on iOS 13 or earlier
- Running on simulator (may behave differently)
App rejected for IDFA usage
App rejected for IDFA usage
Problem: App Store rejects app for tracking without permission.Solution: Ensure you:
- Request ATT permission before accessing IDFA
- Have clear
NSUserTrackingUsageDescription - Accurately declare data usage in App Store Connect
Related Documentation
Identity Management
All identity options
Initialization
SDK setup and consent
Google Ad Manager
Ad targeting
Issues
Common problems