If a repeated or hosting-labeled IP falls in Apple’s Private Relay ranges, treat it as a shared network address. Apple says multiple users in an area can share one relay IP. Check what happened at the landing page, form or checkout before changing a security rule or an ad exclusion.

Verify the client field before checking relay ranges

Private Relay sends Safari browsing through separate relays and presents an egress address to the website. The address can be stable during a session and shared by multiple users. It can map to a general area or a broader location. Compare these labels at the level they describe, without assigning an exact person, home location or billing event.

Behind a CDN, first resolve the client address from the trusted edge record or verified proxy chain. Use the client IP and proxy header diagnostic to distinguish the connection peer from the value restored by your server. Join edge and origin records by request ID when available. Use edge or origin logs for this check. A GA4 city or engagement spike is an aggregate, with a different scope from a request address.

Compare that address with a dated copy of Apple’s published egress feed. Use the snapshot relevant to the log period when you have it. A current snapshot can differ from the addresses used in an older capture. GeoIP and hosting labels can also lag.

Apple’s guidance for websites and network operators and Private Relay location settings.

Check the addresses locally, then read the outcomes

Download the Python range checker and run python3 private-relay-log-review.py --demo. The example uses documentation ranges. Two events at the same matching IPv4 address have different outcomes.

RequestAddress in the exampleRange contextSite outcome
example-a192.0.2.10Feed matchAccepted lead
example-b192.0.2.10Feed matchRejected form
example-c2001:db8:1::5Feed matchPage view
example-d198.51.100.7No feed matchRejected form
example-e203.0.113.8No feed matchAccepted lead
example-fMissingUnresolvedPage view

To check your own data, download the Apple feed separately and save it as egress-ip-ranges.csv. Export a narrow cohort with the header below and one trusted client IP per record. Use an opaque request reference and a local outcome label. The checker reads the CIDR in the first feed column, compares IPv4 and IPv6, and keeps blank or invalid client addresses unresolved.

request_id,client_ip,outcome

python3 private-relay-log-review.py --ranges egress-ip-ranges.csv --events events.csv

The checker makes no network request. A match describes the supplied network range. A miss describes that snapshot only. Use the site outcome and rule history to decide which events require more investigation.

Reproduce the customer journey before changing a rule

  1. Use a controlled Safari session with Private Relay enabled. Test the affected landing page and the next legitimate step, such as a form or checkout. Record the response, request ID, rule ID and action.
  2. If the same IP triggered a rate limit, examine the protected operation and the time window. Look for independent abuse evidence such as rejected submissions, repeated failed operations or a concentrated request pattern. Distinguish a rendered challenge from a completed business event.
  3. Evaluate a narrower rule for the affected operation or an appropriate request-level check. Preserve validation and replay protection, then retest a legitimate Relay journey and the abusive pattern. Record the rollback owner.

For accepted versus rejected enquiries, use the server-side lead acceptance review. Download the relay review worksheet to keep the rule and outcome evidence together.

Preview the relay review worksheet
PRIVATE RELAY AND SHARED ADDRESS REVIEW

Site, landing path and UTC window:
Source of the trusted client address:
Proxy or CDN rules and known gaps:
Date of the Apple egress snapshot:
Observed request IDs and matching, unmatched or unresolved status:
Successful and rejected site outcomes by context:
Same-origin duplicate rows or retry requests:

Controlled Safari journey with Private Relay enabled:
What the visitor saw at landing, form, sign-in or checkout:
Observed rule ID, action and response:
Independent evidence of abuse, if any:
One scoped change, protected operation and rollback owner:

Ad campaign and settings in scope, if applicable:
Ad account evidence for any exclusion or invalid-click review:
Follow-up test and review date:

Keep ad exclusions tied to separate evidence

Use the local IP exclusion builder for independently reviewed candidates with evidence beyond the network label. Keep relay observations and unresolved addresses in your review cohort. Check the scope of the exclusion and its saved setting before relying on it. For billed click questions, reconcile with Google’s invalid-traffic and billing evidence.

Free tool

Build your IP exclusion list

Paste addresses from a log, a CSV export or a report, in any layout. You get a clean list in the format Google Ads accepts, with repeats removed and the most active addresses first. Paste a server log to count distinct GCLIDs from each address.

addresses share the first three parts

0 entries

Runs in your browser. Nothing you paste is sent anywhere.

Start an AdProtektor trial to inspect observed visitor evidence and configure protection. Keep the rule decision, recorded business outcome and confirmed platform action separate in the review.