audit report
Fly.io
Fly.io's privacy policy claims not to track users beyond Google Analytics and explicitly states "we do not permit third-party services to track your activity on our site beyond our basic Google Analytics tracking." However, the site loads Google Tag Manager (2 hits) alongside GA4, sets a `fly_gtm` cookie, and contains inline patterns for "Google Tag Manager"—a server-side tagging platform that can trigger arbitrary third-party tracking without being individually listed in the privacy policy. The policy names only Google Analytics as a tracking vendor but does not disclose Google Tag Manager, which materially expands tracking scope beyond what the policy claims.
claim vs. reality
“The information we collect about all visitors to our website includes the visitor's browser type, language preference, referring site, additional websites requested, and the date and time of each visitor request. We also collect potentially personally-identifying information like Internet Protocol (”
observed · html
Third-party domain: googletagmanager.com (2 hits) findings
- mismatch
Google Tag Manager not disclosed in privacy policy
The site loads Google Tag Manager (googletagmanager.com, 2 hits) and sets a `fly_gtm` cookie, but the privacy policy only names 'Google Analytics' as a tracking vendor and explicitly claims 'we do not permit third-party services to track your activity on our site beyond our basic Google Analytics tracking.' GTM is a server-side container that can dynamically load arbitrary tracking tags without explicit disclosure, creating a gap between the stated tracking scope and actual implementation.
how we detected this →Third-party domain: googletagmanager.com (2 hits) Cookie set: fly_gtm Inline pattern: 'Google Tag Manager' - warn
No HSTS header
The response did not include a Strict-Transport-Security header. Users on a compromised network could be downgraded to plaintext HTTP.
how we detected this → - warn
Observed vendors not named in policy
The policy names some third parties but omits these observed vendors. Undeclared: Google Tag Manager, Hachyderm.
how we detected this →Google Tag Manager Hachyderm - note
Google Tag Manager loaded (tag_manager)
Observed 2 time(s) on the page.
how we detected this →inline: V' window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); inline: const tagId = 'G-EX6DMZ1DZV' window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(ar - note
Hachyderm loaded (social)
Observed 1 time(s) on the page.
how we detected this →link me: https://hachyderm.io/@flydotio - note
No Content-Security-Policy header
A CSP header restricts what scripts the page can load. Its absence isn't a policy mismatch but is worth noting in a transparency report.
how we detected this → - note
Missing security headers for a SaaS platform
The site does not include HSTS (HTTP Strict-Transport-Security) or CSP (Content-Security-Policy) headers. Given that Fly.io is a developer platform handling sensitive application deployments, the absence of these security headers is inconsistent with the privacy policy's claim to 'follow generally accepted industry standards' for protecting user data.
how we detected this →has_hsts: false has_csp: false Policy claim: 'follow generally accepted industry standards' - info
Hachyderm social embed loaded without explicit policy mention
The site loads a resource from hachyderm.io (a federated social network), categorized as 'social' with 1 hit. The privacy policy does not mention social embeds or any federated social integrations, leaving unclear whether this constitutes a third-party data share or simply a client-side iframe.
how we detected this →Third-party domain: hachyderm.io (1 hit, category: social)
third parties observed
| vendor | domain | category | hits | disclosure |
|---|---|---|---|---|
| Google Tag Manager | googletagmanager.com | tag_manager | 2 | not named |
| Hachyderm | hachyderm.io | social | 1 | not named |
policy claims
source · https://fly.io/legal/privacy-policy
- collects pii
- yes
- shares 3p
- yes
- sells data
- no
- cookies
- yes
- analytics
- yes
- advertising
- no
named third parties (1)
Google Analytics
retention
User Personal Information is retained as long as the account is active or needed to provide services. Inactive accounts are not automatically deleted; users must manually delete their accounts, after which personal information is deleted within 30 days (barring legal requirements). Some data may be retained indefinitely for legal compliance.
user rights
Users can access, update, alter, or delete their basic profile information by editing their user profile or contacting support@fly.io. Users can delete their account through the Fly.io dashboard under Account Settings, resulting in permanent deletion within 30 days.
response headers
- hsts
- no
- csp
- no
- server
- Fly/9e64c111f (2026-04-16)
run this yourself
Every audit on this site is reproducible. Install stackpeek and run the same check against https://fly.io from your own machine — the tool is MIT-licensed and runs locally.
pip install stackpeek
stackpeek audit https://fly.io provenance
This audit was generated by running
stackpeek
against https://fly.io
from a public IP, using only HTTP GET and standard browser headers. The
findings compare the observed HTML against the
extracted privacy policy
using the
public methodology.
Re-scans append new findings at new permalinks and never overwrite the
historical record.