How to Fix App Store Guideline 5.1.2 Data Use and Sharing Rejection

How to Fix App Store Guideline 5.1.2 Data Use and Sharing Rejection

A 5.1.2 rejection means Apple found your app sending or sharing user data in a way that does not match what you declared in App Store Connect or your privacy policy. This guide helps an indie or small-team developer diagnose the disagreement, produce a reviewer-verifiable snapshot, and either stop pre-consent collection or sync your disclosures so you can resubmit.

Early proof - quick snapshot (30-90 minutes)

  • What to capture
    • Fresh-install network trace from a real iPhone during the first 1-2 minutes of onboarding; record top 3-5 outbound domains and whether payloads include identifiers (IDFA, device ID, hashed email).
  • How to capture it
    • Use Charles, Proxyman, or backend logs; test via TestFlight or an ad-hoc install and limit the run to initial screens only.
  • What to include in reviewer notes
    • For each risky call, state what was sent, why you think it was sent (SDK X init, web view, etc.), and the exact build number and reproduction steps.
  • Practical interpretation
    • If identifiers or ad/attribution calls occur before a disclosure or ATT/consent, you likely have the three-surface mismatch (runtime, privacy policy, App Store Connect) that triggers 5.1.2.
  • Business impact
    • Fixing the snapshot typically costs a few hours to a few days of engineering work depending on SDKs and onboarding complexity; it avoids repeated rejections and review delays.

What this guide will do: show focused fixes and reviewer-note content so you have a reproducible package for resubmission. Expect reviewer variability and plan for 1-2 review cycles; some cases need vendor coordination.

How to Publish a Kids App on App Store - Extra Rules Explained goes deeper on the ideas above and adds concrete next steps.

Why was my app rejected under App Store Guideline 5.1.2?

Apple rejects when app behavior, your privacy policy, and App Store Connect metadata disagree. In practice reviewers look for undisclosed or surprising data collection, especially identifiers or ad/attribution traffic sent before any consent.

Here is the thing: the common failure mode is pre-consent SDK initialization or a missing disclosure entry. What this guide fixes is the mismatch and the reviewer evidence you attach so verification is quick.

One thing worth noting: reviewers and regional rules vary, and some enterprise or MDM installs behave differently. Expect to iterate if a reviewer requests extra detail.

Quick diagnosis and the pass/fail gate

  • What reviewers look for
    • Undisclosed identifier sharing, ad/attribution traffic, or third-party forwarding that contradicts your metadata and policy.
  • Pass/fail gate on a fresh install
    • No analytics, attribution, or ad-related network calls before a clear disclosure and any required consent or ATT prompt.
  • Immediate checks
    • Confirm App Store Connect entries match what your snapshot shows.
    • Verify onboarding order so disclosure and consent precede third-party SDK initialization.

Who needs to read this and realistic effort

  • Audience
    • Indie devs and small teams who manage builds, onboarding UX, or App Store metadata.
  • Time commitment
    • 30-90 minutes for the first snapshot and inventory; 2-6 hours for a focused SDK audit; several days if you must refactor onboarding or rework vendor integrations.
  • Practical outcome
    • Either stop pre-consent collection or produce synchronized disclosures and reviewer notes that let App Review verify behavior. Some SDKs may require vendor support or acceptance of reduced early analytics.

When you move from outline to execution, Does Your App Need a Privacy Policy? (Yes - Here's Why) helps close common gaps teams hit here.

How do I fix a 5.1.2 rejection - step-by-step?

Checklist of items to verify before resubmitting for App Store Guideline 5.1.2: capture, disclosure-first, metadata sync, reviewer notes, retest.

A compact checklist block showing pre-flight items for a 5.1.2 resubmission: fresh-install capture attached, disclosure screen appears first, ATT/consent prompts contextually placed, App Store Connect fields updated, reviewer notes include reproduction steps and screenshots, and final verification on clean device.

30 - 90 min
Consistency snapshot timebox
Fast first pass to spot 5.1.2 mismatches
3 examples
High-risk mismatch checks
SDK identifier at launch, signup email handling, ad partner event forwarding
4 hrs
Median fix time
After a store rejection notice
A quick 30 - 90 minute, three-column consistency snapshot surfaces the most common 5.1.2 data use and sharing mismatches - using three concrete example rows - and points directly to the required fixes.

Start by stopping what reviewers can see and then document the remaining behavior clearly.

Ordered workflow - exact steps to fix the rejection

  1. Inventory data paths

    Capture network traffic and list where data goes: analytics, crash, attribution, ad networks, identity providers, and any web views.

  2. Tag purposes and consent needs

    For each path record data types, whether it links to identity, whether it runs before onboarding completion, and whether users can opt out.

  3. Stop pre-consent collection

    Delay SDK initialization so analytics and ad SDKs start only after consent or ATT. If a vendor has no deferred init option, consider removing or replacing the SDK, or show a pre-consent disclosure before it runs.

  4. Update App Store Connect and policy

    Make App Store Connect entries and your privacy policy explicitly match the inventory. List identifiers and third parties used for each purpose and be conservative in language.

  5. Prepare reviewer notes and retest

    Attach the snapshot, exact reproduction steps, screenshots of disclosure/consent, and build number. Do a fresh-install retest yourself to confirm the snapshot matches your notes.

One tradeoff: gating SDKs reduces early telemetry and may complicate analytics; weigh that against faster approval and lower review friction. SDKs that cache identifiers or auto-init can require vendor coordination.

A complementary angle worth comparing lives in We Analyzed App Store Rejection Patterns: What Most Founders Miss Before Submission.

What checklist should I run and what mistakes should I avoid?

Run this checklist before submitting and avoid the frequent traps.

Checklist to run before resubmitting:

  • Fresh-install network capture attached to reviewer notes with build number.
  • Pre-consent disclosure and ATT prompt shown before any identifier leaves the device.
  • App Store Connect privacy fields list all identifier types and third parties.
  • Privacy policy text matches the inventory and is copy-paste friendly for reviewers.
  • Fresh-install retest confirms the snapshot you submitted.

Common mistakes and edge cases:

  • Analytics inside web views or SafariViewController firing independently of app gating.
  • SDKs with cached consent or automatic initialization you missed - check vendor docs.
  • Updating metadata or policy without changing runtime behavior - reviewers test the binary.
  • Enterprise or MDM-managed devices behaving differently - mention this in notes if relevant.

Final practical note: plan for reviewer variability and one additional review cycle; complex third-party stacks or regional rules may need extra documentation or vendor changes.

For tradeoffs, checklists, and edge cases, Google app Store privacy policy requirements rounds out this section.

FAQ

Why did Apple say App Store Guideline 5.1.2 applies to my app?
Because the reviewer observed data collection or sharing that does not match your App Store Connect entries or privacy policy, commonly identifier sharing or ad/attribution calls before consent.
Can I fix this by editing my privacy policy only?
No. If the binary sends identifiers or forwards data before consent, you must stop that behavior or explicitly disclose and gate it. Reviewers verify the runtime on a fresh install.
How do I verify on my own device what App Review sees?
Do a fresh install on a real device, capture outbound traffic with Charles or Proxyman, and run only the first 1-2 minutes of onboarding. That reproduces the reviewer environment.
What if a third-party SDK automatically initializes and I cannot change it?
Check vendor docs for deferred or manual init options; if none exist, document the behavior in reviewer notes, list the SDK in App Store Connect, and consider replacing the SDK or removing it from the initial experience.