Skip to content
AppFoyer

Guides

Your app was rejected for a missing or broken policy URL

What to do in the next hour: work out which URL is at fault, get a working one live, update the listing, and resubmit without making it worse.

Checked 15 September 2026. Store policies change, sometimes without notice. Everything below links to the official documentation, and that page — not this one — is the authority. If the two disagree, the store is right.

If you are reading this with a rejection open in another tab: this is one of the fastest categories of rejection to clear. It is a broken link, not a judgement about your app.

Work through it in order.

1. Find out which URL is actually at fault

The notice names a field. Read it literally rather than assuming, because four different URLs get confused with each other:

FieldWhere it livesWhat it is
Privacy policy URLPlay Console → App content; App Store ConnectYour policy
Data deletion URLPlay Console → App contentWhere a user requests account deletion
Support URLApp Store ConnectWhere a user gets help
Developer websiteStore listingYour site — also where app-ads.txt is looked for

A rejection that says “privacy policy” sometimes means the policy exists but the Data safety form disagrees with it. Check both before you change anything.

Open it in a private window, signed out, on mobile data rather than your home network:

curl -i https://your-url.example/privacy

You are looking for 200 OK and readable content. The usual findings are a 404, an expired domain, a redirect to a login, or a page that is fine on your laptop because you are signed in to the service hosting it.

3. Get a working URL live

Whatever you do here, it has to still be true in six months. A URL that works today and disappears when a trial ends will bring you back to this page.

Three routes, honestly:

  • Your own domain and host. Best if you already have one. An afternoon if you do not — and the account-deletion page will need something that can receive a request, which static hosting cannot do.
  • A hosted compliance page. Faster; check what happens to the URL if you stop paying.
  • A document link. Works sometimes, reads as improvised, and is the first thing questioned if anything else about the submission looks thin.

4. Update the listing, then resubmit

Change the URL in the console field the rejection named — not only on your website. Then reply to the review with one plain sentence saying what you changed and where. Reviewers process a great many of these; a specific note is faster to act on than an apology.

5. Do not make these worse

  • Do not resubmit without changing the URL, hoping it was a fluke. Repeat submissions of the same problem slow you down.
  • Do not point the field at a page you do not control — a Notion page, a social profile, a friend’s site.
  • Do not paste a competitor’s policy with the names changed. It is noticed, and it is a copyright problem on top of a rejection.
  • Do not fix only the one URL named. If the privacy URL was dead, the support and deletion URLs are usually on the same dead domain. Fix all of them now rather than over three review cycles.

What AppFoyer does here

All five pages go live together on one subdomain, so you paste working URLs into every field in one pass instead of coming back for the next rejection. One app is free and there is no card to enter, which matters when you are trying to clear a rejection this evening.

The authoritative sources


Do this in a few minutes instead

AppFoyer hosts the pages this guide is about — privacy policy, terms, support, account deletion and app-ads.txt — on their own subdomain, with no domain or server of your own. One app is free, and nothing a store requires is ever behind a paywall.