Privacy

    iOS privacy manifest tracking domains explained

    A 2026 view of an iOS privacy manifest listing tracking domains, with iOS blocking connections to those domains because App Tracking Transparency consent was not granted

    Inside the iOS privacy manifest is a section that has real runtime teeth: tracking domains. If your app declares that it does tracking, you list the domains involved, and iOS will block connections to those domains when the user has not granted App Tracking Transparency permission. That makes getting the tracking-domain declaration right both a compliance and a functionality matter, since a misdeclaration can break connections or misrepresent your data practices. The domains often come from your SDKs, not just your own code. Here is what tracking domains in the privacy manifest are, how the blocking works, and how to declare them correctly.

    Short answer

    The iOS privacy manifest, PrivacyInfo.xcprivacy, includes a tracking flag and a list of tracking domains, the domains your app connects to that are used for tracking. Per Apple's documentation, when your app declares that it tracks, iOS blocks connections to the listed tracking domains if the user has not granted App Tracking Transparency permission. So you must list the domains your app or its SDKs use for tracking, and those connections will only succeed when the user consents to tracking. The domains frequently come from third-party SDKs, which provide their own, so build your app's list from your code and your dependencies, and keep it accurate.

    What you should know

    • The manifest lists tracking domains: domains used for tracking.
    • iOS enforces it at runtime: it blocks tracking domains without ATT consent.
    • Tracking needs the ATT permission: connections to those domains depend on it.
    • SDKs contribute tracking domains: gather theirs into your manifest.
    • Accuracy matters both ways: misdeclaring breaks connections or misstates practices.

    What are tracking domains in the privacy manifest?

    They are the domains your app contacts that are involved in tracking, declared in the privacy manifest. The manifest has a flag indicating whether your app uses data for tracking, and when that is set, a list of the tracking domains, the internet domains that receive or combine data for tracking purposes, typically belonging to ad, attribution, or analytics services. Tracking here has the App Tracking Transparency meaning: linking user or device data with data from other companies for advertising or sharing it with data brokers. So the tracking-domains section is where you enumerate the endpoints that do that. It is distinct from the rest of the manifest, the required-reason APIs and collected-data types, because it is tied directly to ATT enforcement and to the network connections your app makes.

    How does tracking-domain blocking work?

    By gating those connections on ATT consent. The table outlines it.

    SituationWhat iOS does
    Domain listed as tracking, ATT grantedConnection allowed
    Domain listed as tracking, ATT not grantedConnection blocked
    Tracking domain not declaredInaccurate manifest; tracking undisclosed
    No tracking, no domains listedNothing to block

    The key behavior is that iOS blocks connections to your declared tracking domains when the user has not granted App Tracking Transparency permission. That is a runtime enforcement, not just a disclosure: a tracking SDK that would otherwise phone home is prevented from reaching its domain without consent. So declaring a domain as a tracking domain is partly a promise to the system to gate it on consent. Conversely, failing to declare a domain that does tracking misrepresents your data practices, and declaring domains incorrectly can break legitimate, non-tracking connections, so accuracy cuts both ways.

    How do you declare tracking domains correctly?

    Identify which domains do tracking, including your SDKs', and list them with the tracking flag set. First, determine whether your app does tracking in the ATT sense, through your own code or any SDK, and set the manifest's tracking flag accordingly. Then list the tracking domains: the endpoints that receive or combine data for tracking, which for most apps come from ad, attribution, and analytics SDKs. Those SDKs provide their tracking domains in their own privacy manifests, so gather them into your app's manifest rather than guessing, and include only domains genuinely used for tracking, since listing a non-tracking domain could block a connection your app needs. Pair this with requesting App Tracking Transparency before tracking, and keep your App Privacy disclosures consistent. The goal is a manifest where the tracking flag and domains match what your app and dependencies actually do.

    What to watch out for

    The first trap is omitting a tracking domain that an SDK uses, which misrepresents your data practices and can draw scrutiny; gather your SDKs' tracking domains. The second is declaring a non-tracking domain as a tracking domain, which can cause iOS to block a connection your app legitimately needs. The third is forgetting that listed tracking domains are blocked without ATT consent, so you must request that permission. A pre-submission scan such as PTKD.com (https://ptkd.com) reads the compiled IPA against OWASP MASVS and surfaces the network endpoints and SDKs in your build, which helps you see which domains your app contacts so your tracking-domain list reflects reality. The manifest itself you complete in the project.

    What to take away

    • The iOS privacy manifest lists tracking domains, the domains your app contacts for tracking, alongside a flag indicating that the app tracks.
    • iOS blocks connections to declared tracking domains when the user has not granted App Tracking Transparency permission, so those connections depend on consent.
    • List the tracking domains accurately, gathering your SDKs' tracking domains, and avoid declaring non-tracking domains, since misdeclaring breaks connections or misstates practices.
    • Use a pre-submission scan such as PTKD.com to see which endpoints and SDKs your app contacts so your tracking-domain declaration reflects reality.
    • #ios
    • #privacy-manifest
    • #tracking-domains
    • #app-tracking-transparency
    • #privacyinfo-xcprivacy
    • #privacy
    • #app-privacy

    Frequently asked questions

    What are tracking domains in the iOS privacy manifest?
    They are the internet domains your app contacts that are involved in tracking, declared in the privacy manifest alongside a flag indicating whether the app uses data for tracking. Tracking here has the App Tracking Transparency meaning: linking user or device data with other companies' data for advertising or sharing it with data brokers. The tracking domains are typically endpoints of ad, attribution, or analytics services, and the section is tied directly to ATT enforcement and the connections your app makes.
    What happens to declared tracking domains without ATT consent?
    iOS blocks connections to them. When your app declares tracking domains and the user has not granted App Tracking Transparency permission, the system prevents the app from reaching those domains, so a tracking SDK that would otherwise phone home is blocked without consent. That makes the declaration a runtime enforcement, not just a disclosure: listing a domain as a tracking domain effectively gates it on the user's tracking consent.
    Where do the tracking domains come from?
    Often from your third-party SDKs, not just your own code. Ad, attribution, and analytics SDKs that perform tracking provide their tracking domains in their own privacy manifests, and you gather those into your app's manifest. So build your tracking-domain list from your code and your dependencies rather than guessing, since a tracking SDK contributes domains you must declare. This mirrors how the rest of the privacy manifest aggregates required reasons and data types from dependencies.
    What if I declare the wrong tracking domains?
    Accuracy cuts both ways. Omitting a domain that does tracking misrepresents your data practices and can draw scrutiny, while declaring a non-tracking domain as a tracking domain can cause iOS to block a connection your app legitimately needs once tracking is not consented. So list only domains genuinely used for tracking, gather your SDKs' tracking domains, and keep the tracking flag and domains consistent with what your app and dependencies actually do and with your App Privacy disclosures.
    How do I know which domains my app contacts?
    Scan the build. A pre-submission scan such as PTKD.com reads the compiled IPA against OWASP MASVS and surfaces the network endpoints and SDKs in your build, which helps you see which domains your app contacts so your tracking-domain declaration reflects reality rather than guesswork. With that visibility, you can identify which connections come from tracking SDKs, declare those domains, request App Tracking Transparency, and avoid listing domains that are not used for tracking.

    Keep reading

    Scan your app in minutes

    Upload an APK, AAB, or IPA. PTKD returns an OWASP-aligned report with copy-paste fixes.

    Try PTKD free