Skip to content
WebViewGold Vibe Coding to App Store
English
Get WebViewGold

App Store rejection

Guideline 5.1.2 (Data Use and Sharing): tracking, App Tracking Transparency and third-party SDKs

A 5.1.2 rejection says the app uses or shares data in a way the user never agreed to, most often tracking across apps and websites without the App Tracking Transparency prompt. In a web-wrapped app the culprits are ad SDKs and marketing pixels, and the fix is to make the prompt, the labels and the scripts agree.

From $109 one-time per platform, or let our team do it all from $698.

  • Approval guarantee – or money back within 14 days
  • No coding needed
  • One-time payment, free updates
  • 24/7 human support
  • Made in Germany since 2014 · ISO 27001

What 5.1.2 says

Data collected by an app may only be used for the purposes the user was told about, and sharing it with third parties needs disclosure and, where it counts as tracking, explicit permission through the App Tracking Transparency framework. Tracking means linking user or device data from your app with data from other companies' apps and websites for advertising or measurement, or sharing it with data brokers. Apps may not work around a denial with fingerprinting or other identifiers.

Reviewers find tracking in two ways: the binary contains an ad or attribution SDK (AdMob is in every WebViewGold build, active or not), and the App Privacy section says "Device ID, used for tracking" while no ATT prompt ever appeared, or the reverse. Marketing pixels loaded by the web app (Meta Pixel, TikTok, Google Ads tags) count as well, because they run inside your app.

What counts as tracking in a web-wrapped app

Personalized ads (AdMob, Audience Network)

Uses the advertising identifier and cross-app data. Tracking; needs the ATT prompt and the label.

Marketing pixels in the web app

Meta Pixel, TikTok and Google Ads conversion tags link your users to the ad networks' profiles. Tracking; load them only after consent, or not in the app at all.

First-party analytics

Plausible, PostHog on your own domain, or GA4 with ads features switched off: usage data, generally not tracking. Declare it as Usage Data.

Push and purchases

OneSignal tokens and RevenueCat receipts are data collection for your own features, not tracking. Label them, no ATT needed.

Make the prompt, the labels and the scripts consistent

  1. Decide whether you track at all

    Most vibe-coded apps do not need to. Without ads and without marketing pixels inside the app, answer "no tracking" in App Privacy, keep the tracking usage description (required by the WebViewGold project; removing it crashes the app) with a neutral text, and move on.

  2. If you use AdMob: let WebViewGold handle ATT

    Enable ads in Config.swift (showBannerAd, showFullScreenAd, enableRewardedAds, the AdMob IDs and GADApplicationIdentifier in Info.plist). The tracking prompt is presented natively; decide with ATTDeniedShowAds whether ads stop entirely when the user declines. Details in the AdMob docs and the ATT guide for web apps with ads.

  3. Read the decision in your web app

    Call user-disable-tracking:// and read the trackingDisabled variable WebViewGold injects (User Tracking Decision API). When it is true, do not load pixels or send the user ID to ad platforms. On iOS, combine calls with multiapicall:// if the page triggers several APIs.

  4. Answer the Ad ID question honestly

    App Store Connect asks whether the app uses the advertising identifier. The WebViewGold docs explain the recommended answer when AdMob is embedded, including the case where you do not show ads at all.

  5. Fill the labels

    With ads: Device ID and Advertising Data, used for tracking. Without: no tracking, and only the usage and contact data your web app really collects. Update the privacy policy with the ad partners you use.

Great work! Never coded anything but managed to work with this. Easy and fast! Also with great help from the creators!

Lucas Dubois · CodeCanyon

Respect the decision in JavaScript

javascript
// Ask WebViewGold for the ATT decision, then decide what to load
function initTracking() {
  window.location.href = "user-disable-tracking://";
  setTimeout(function () {
    if (typeof trackingDisabled !== "undefined" && trackingDisabled === true) {
      return; // denied: no Meta Pixel, no ads personalization, no cross-app IDs
    }
    loadMarketingScripts(); // only when tracking is allowed
  }, 500);
}
// Several API calls on one page? multiapicall://user-disable-tracking,getappversion

SDK and script overview

ComponentATT prompt needed?Privacy label
AdMob personalized adsYesDevice ID, Advertising Data: tracking
Meta Pixel, TikTok, Google Ads tagYesIdentifiers, Usage Data: tracking
GA4 without ads featuresNoUsage Data
Plausible, PostHog (own domain)NoUsage Data
OneSignal, Pushwoosh, Firebase pushNoIdentifiers (push token)

Frequently asked questions

My app shows no ads. Why does Apple ask about tracking at all?

Because the AdMob SDK is part of the WebViewGold build, and because your web app might load pixels. Declare no tracking if you have none, keep the usage description key, and the review passes.

Does the Meta Pixel on my website count inside the app?

Yes. Scripts running in the WebView are part of the app. Either gate them on the trackingDisabled variable and a consent screen, or do not load them when the app user agent is detected.

Can I show the ATT prompt from JavaScript?

The prompt is presented natively by the app. WebViewGold handles it on the iOS side; your web app reads the result through the User Tracking Decision API.

Three ways to get your app into the stores

Same result, different amount of work on your side. All three come with the approval guarantee and 24/7 human support.

Do it yourself

$109 per platform, one-time

The WebViewGold license: a finished Xcode or Android Studio project. Paste your URL, set name and icon, switch on features, build and submit. Free updates forever.

See plans on the main page

Cloud Builder

$349 per license, one-time add-on

No Mac, no Xcode, no Android Studio: configure in the browser, we build both apps in the cloud and hand them to App Store Connect and the Play Console.

How the Cloud Builder works Try the free demo

Full Service

$698 per platform $798

Send us your URL and icon. Our team configures, builds and delivers your app within 72 hours, white-label, with source projects. Both platforms for $1,158.

Full Service details Powered by WeSetupYourWebViewApp

Winter Sale prices valid until December 31, 2026.

Ready to ship your app?

App Store & Google Play approval guarantee – or your money back within 14 days

Rather hand it over? Full Service: we configure, build and deliver within 72 hours, from $698 per platform. Questions? Chat with us 24/7.

Refunds are granted under the conditions listed in our FAQ: a non-content rejection by Apple and/or Google, claimed within 14 days after purchase.