What to pull
Keep only requests whose URL carries anfbclid, from 1 Jan 2025 to today. Keep 3 fields and drop everything else:
- Timestamp: when the request happened, in UTC where the tool allows it.
- IP: the visitor’s address, not a proxy’s or a CDN’s.
- URL: the full landing URL with its query string, so the
fbclidsurvives.
Analytics tools
Amplitude
Amplitude
Check first: no data retention limit (TTL) was set, and the site’s SDK doesn’t set Export windows follow upload time, not event time, so pad each window by a day.
trackingOptions.ipAddress to false.Fastest route: turn on the Amazon S3 export with a backfill starting 1 Jan 2025, then give us access to the bucket.Or export it yourself with the project’s API key and secret key, in windows of up to 365 days. Split by month if a window passes the 4 GB cap. EU projects use analytics.eu.amplitude.com.PostHog
PostHog
Check first: in Settings > Project > IP data capture configuration, “Discard client IP data” must be off. EU-hosted organizations default to discarding.Export: Data pipelines > batch export to S3, BigQuery or Snowflake, with a backfill starting 1 Jan 2025. Keep
timestamp, $ip and $current_url on $pageview events. Then give us access to the destination.To check what you have first, run this in the SQL editor:Other tools
Adobe Analytics
Adobe Analytics
Check first: in Admin > Report Suites > Edit Settings > General > General Account Settings, IP obfuscation must be off.Export: Admin > Data Feeds > Add. Report suite: production. Interval: daily. Start date: 1 Jan 2025. End date: today. Destination: your S3, Google Cloud or Azure bucket. Columns, in this order: Adobe caps URLs at 255 bytes, so long URLs can lose the
ip, hit_time_gmt, page_url. Then give us access to the bucket, or filter the files:fbclid. If you also store it in an eVar or the tracking code, add that column.Heap
Heap
Exporting with IPs needs Heap Connect. Give us access to the warehouse it syncs to, or run:
Segment
Segment
Works if Segment loads a warehouse or S3 bucket (Connections > Destinations). Give us access to the
pages table, or run:Server-side Google Tag Manager
Server-side Google Tag Manager
The container stores nothing itself. Look for a tag writing events to BigQuery (such as Stape’s Write to BigQuery or Logger tag), or Cloud Run request logs routed to BigQuery by a log sink.The page URL sits URL-encoded in the
Cloud Run logs in BigQuery
dl parameter of hit_url. Give us access to the dataset.Matomo
Matomo
Check first: Administration > Privacy > Anonymize data must be off. A masked IP ends in
.0.0.Export: one day per call, looping from 2025-01-01 to today. Self-hosted Matomo can also be queried in its database.AWS CloudFront
AWS CloudFront
CloudFront console > your distribution > Logging shows the log bucket. Add our AWS account to the bucket policy, or filter the logs:Use
x-host-header, not cs(Host), which is the CloudFront domain.Akamai
Akamai
Use your DataStream 2 stream. It must include
cliIP and queryStr, or the fbclid is missing. Give us access to the stream’s bucket, or filter JSON-format files:Fastly
Fastly
Use your logging endpoint (your service > Logging). Its format needs the client IP, a timestamp and the full URL:
req.url.path alone drops the fbclid. Give us access to the endpoint’s bucket or BigQuery table.Cloudflare
Cloudflare
Use your Logpush job (Enterprise plans). It must include
ClientIP, EdgeStartTimestamp and ClientRequestURI. Give us access to the destination, or filter the files:Your own server or cPanel
Your own server or cPanel
In cPanel: Metrics > Raw Access > Archived Raw Logs. On your own server, look in Behind a CDN, check the server logs the visitor’s IP, not the CDN’s (Apache
/var/log/nginx/, /var/log/apache2/ or /var/log/httpd/.mod_remoteip, Nginx real_ip).