What reviewers check
A recognizable public homepage
Google checks that the homepage identifies the app, explains its function and links the consent screen’s privacy policy.
Official source: Google: Homepage requirementsAccurate data disclosures
Disclose how your app accesses, uses, stores and shares Google user data. Actual behavior must match.
Official source: Google: Privacy disclosuresJustified sensitive scopes
For sensitive-scope review, justify each scope and demonstrate the corresponding feature and authorization flow.
Official source: Google: Sensitive-scope submission
Documented rejection risks
Missing domain ownership
Unverified authorized domains fail a stated verification requirement. Check ownership before submission.
Official source: Google: Domain ownershipPermissions beyond the feature
Insufficient scope justification can cause rejection; Google may require narrower access. No frequency is implied.
Official source: Google: Narrowest scopesUndisclosed data use
Hidden secondary uses can violate Google’s policy and put API access at risk. A generic policy does not fix mismatched behavior.
Official source: Google: Prohibited deceptive use
Submission checklist
Check audience and exceptions
Identify the project’s intended audience and publishing status before gathering review material. Compare the actual use case with Google’s listed exceptions, including development/testing and qualifying internal use. Record why an exception applies, if any. Do not equate a small customer count with an organization-owned Internal configuration or assume testing removes every limitation.
Official source: Google: Verification exceptionsPut the full policy text on your domain
Publish your privacy policy at a public HTTPS address on your app homepage’s domain, such as https://harbor.example/privacy.html. Put the full text in the page body: Google cannot process a policy that only appears inside an iframe or another embedded document. Keep the text readable without signing in. When your app starts to use a new tool or new data, update this page.
Official source: Google: Policy page format and hostingPublish matching pages
Prepare a public homepage explaining the app and place the readable privacy policy on the same domain. Link that policy from the homepage and enter the matching address in the consent configuration. Compare the policy’s account of Google data handling against your implementation before asking Google to review it.
Official source: Google: Privacy-policy linksVerify authorized domains
List the registrable domains used by the app’s consent-screen URLs and OAuth credentials, including relevant redirect addresses and JavaScript origins. Configure the authorized domains and verify ownership through Search Console using an account associated with the Cloud project. For a subdomain, check the registrable parent domain rather than treating each URL path as a domain.
Official source: Google: Authorized domainsVerify and publish branding
In the selected Cloud project, open Branding and complete the app identity, contact information and page links. Run Verify Branding, inspect any reported problems and correct them. Once the result permits publication, use Publish branding. Then inspect Verification Center for any separate data-access requirements; an approved draft brand is not yet published branding.
Official source: Google: Brand submissionPrepare the scope demonstration
For each sensitive scope requiring review, explain the implemented feature and why narrower access would not work. Record an unlisted video showing the OAuth grant flow in English and the functionality enabled by each requested scope. Include the app name and client ID as required. The cited requirement does not say every feature’s interface must be English.
Official source: Google: Sensitive-scope submissionHandle data-access review separately
With branding published, use Verification Center to review the applicable data-access status. Declare the scopes actually requested, supply the requested justifications and demonstration, and monitor the project’s support and developer-contact inboxes. Respond to requests for clarification; publishing the homepage or policy does not complete sensitive or restricted-scope review.
Official source: Google: Sensitive-scope submission
Example
Fictional app: Harbor Schedule
Fictional input: Harbor Schedule only displays calendar entries the user chooses during an active session. Assume this example keeps the returned event details in memory and neither saves them in its database nor sends them to analytics. The owner lists each implemented API operation, compares available scopes and records the smallest scope that supports those operations. No exact scope is prescribed here. Expected artifact: a feature-to-operation-to-scope worksheet with a reason broader access is unnecessary. The in-memory and no-sharing statements must be verified in code before appearing in a real policy.
Official source: Google: Minimum permissionsFictional domain worksheet
Fictional input: the owner controls harbor.example and prepares https://harbor.example/ as the homepage and https://harbor.example/privacy.html as the policy. The homepage explains the calendar display and links to that exact policy URL. The owner enters the same address in the consent configuration and checks both pages while signed out. Expected artifact: a submission worksheet showing matching URLs and a separate domain-ownership check. A policy hosted on another service does not establish ownership of harbor.example or replace the required same-domain publication.
Official source: Google: Privacy policy requirementsWrite only confirmed practices
Fictional input: the owner has confirmed the example’s session-only handling of event details, but has not yet inspected error logs or OAuth-token storage. The draft describes the confirmed calendar-display purpose and marks those two unknowns for engineering review. The engineer checks whether either system persists Google user data, then updates the inventory and policy before submission. Expected artifact: a statement-by-statement evidence checklist, not an unconditional claim that nothing is stored. If real behavior differs from the fictional assumptions, both the disclosure and demonstration must reflect the real behavior.
Official source: Google: Identity and intent
https://harbor.example/ https://harbor.example/privacy.html
Frequently asked questions
Is a privacy URL enough?
No. Applicable sensitive-scope review also needs justification and a demonstration of the requested access.
Official source: Google: Sensitive-scope submissionCan I submit a policy hosted on another service or in an iframe?
Not as a shortcut. Google reads the policy text in the page body and cannot process a policy that only appears in an iframe. A URL on another service does not establish your domain ownership. Google documents some verified-owner and parent-organization alternatives, but none makes an unrelated hosting service your domain.
Official source: Google: Privacy policy publicationAre internal apps exempt?
Only qualifying organization-owned, internally configured apps meet the internal-use exception. A small audience alone is not that configuration.
Official source: Google: Internal-only FAQ
Guide changelog
- Expanded reviewer checks, documented rejection risks, submission checklists, worked examples and sourced FAQs. Each requirement now links to its relevant official section.
- Initial English and Spanish guides added with dated primary sources and fictional sample URLs.
Check your URLs before you submit
Reviewers open your links. Open them first: our free check reads your privacy policy page and compares it with what your site loads.
The check looks at
- Whether your privacy policy page opens and we can read it
- The tools, cookies and forms on your public pages
- Whether your policy names the tools we identify, with evidence
It cannot check
- Tools built into mobile apps
- How your server handles data or deletion requests
- Pages behind a login
- What you told the platform in its own forms
Then test by hand
Test: open your own-domain policy page signed out and check that its text is in the page body, not only an iframe. Use that exact HTTPS URL in both the homepage link and Google consent branding. Verify domain ownership separately. An address hosted on another service does not replace this publication step.
We show what we observed. A lawyer has not reviewed the results.