Back to Blog

Link Security: Passwords, Expiry & GDPR

Sharing a link is a security event. This guide covers the controls that actually matter for confidential content: password protection, expiration, click limits, GDPR-aligned analytics, and the honest limits of what a link shortener can and cannot protect.

Karan Bhakuni
Karan Bhakuni
Founder, Flyn
Best PracticesJan 10, 202612 min readUpdated May 5, 2026
Link Security: Passwords, Expiry & GDPR

GDPR-Compliant Click Analytics

Click analytics on short links is a privacy minefield if done naively. Most link shorteners log full IP addresses indefinitely, store browser fingerprints, set persistent cookies, and call third-party trackers. Each of those is a GDPR exposure if you operate in the EU or have EU users.

Flyn's analytics are privacy-first by design. Here's exactly what we collect, what we don't, and where the legal lines sit.

What Flyn collects on every click

Data pointStored?How
Country / region / cityYesDerived from IP at request time, then IP is discarded
Device type / OS / browserYesParsed from User-Agent string
Referrer URLYesFrom Referer header when present
UTM parametersYesParsed from the original URL
TimestampYesISO 8601 UTC, with Asia/Kolkata project default
Bot signalYesHeuristic classifier; bot clicks excluded from counts
Full IP addressNoNever persisted, used only for geolocation lookup
Personal identifiers (email, name, user ID)NoNot collected unless you put them in UTM (don't)
Browser fingerprintNoNo canvas / WebGL / font enumeration
Cross-link tracking cookiesNoNo persistent identifier across distinct links

What this means for GDPR Article 4 personal-data definitions

Because Flyn's click records don't contain anything that, alone or in combination, identifies a natural person, individual click rows are not "personal data" in the GDPR sense. Aggregate analytics over country, device, browser, time are fully usable without consent banners. See Privacy Policy and GDPR notes for the full legal positioning.

Where this gets nuanced

If you add personal identifiers to a link's UTM parameters ([email protected]) or its slug, those identifiers become personal data the moment they're logged. Flyn can't prevent this and the responsibility shifts to you as the controller. The short link safety checker flags links that contain email patterns, names, or session-token-shaped strings.

Data Export and Account Deletion

GDPR Article 15 (right of access) and Article 17 (right to erasure) require operators to provide self-service data export and deletion. Flyn implements both as one-click flows in the dashboard and as authenticated API endpoints.

Data export

From the dashboard: Settings > Data & Privacy > Export my data. Generates a complete JSON archive containing:

  • Account profile (email and settings)
  • Every link you've ever created with all metadata
  • Every click event ever recorded against your links
  • Folders and tags
  • Custom domains
  • API key names and creation dates (never the plaintext keys)
  • Webhook configurations

The export downloads as a single JSON archive. For automation, the same export is available via GET /api/account/export, see the docs index.

Account deletion

From the dashboard: Settings > Data & Privacy > Delete my account. Requires you to type your account email to confirm. Once submitted, the deletion is irreversible and processes immediately:

  • All links stop redirecting (existing short URLs return a generic "not found" page)
  • All click history is purged
  • API keys are revoked
  • Custom domains are unverified (you should also remove the CNAME at your DNS provider)
  • Billing records are retained only as long as applicable tax law requires

Granular data deletion

If you don't want to nuke the whole account but need to remove specific data, delete individual links: DELETE /api/links/:id or the dashboard delete button removes a link, and its click history goes with it. Pro accounts can select multiple links and bulk-delete them in one action. If you want the data on record before removing it, run the export first.

Watch out

Once an account is deleted, your custom-domain short links (e.g. links.yoursite.com/abc) immediately stop redirecting. If you have public-facing branded short links you want to preserve, move them into a team workspace another member owns before deleting, don't delete and rebuild. Branded short links you've published in marketing materials should outlive your individual login.

Team Security: Roles, Two-Factor, and Abuse Protection

Individual link controls protect content. Workspace-level controls protect operations, who can create links, who can see analytics, who touches billing. Here is what Flyn actually ships for teams, and, just as important, what it does not.

Workspace roles

Flyn team workspaces ($4 per seat per month) use four roles: owner (billing and the workspace itself), admin (manage members and shared resources), member (create and edit links), and viewer (read-only access to links and analytics). The people who can change where money and domains point stay a much smaller set than the people who can make links, which is the property that matters: on any link platform, whoever controls the branded domain configuration can effectively repoint every short link on that domain.

Account security

Sign-in is email and password or Google sign-in, with optional TOTP two-factor authentication (any standard authenticator app). Enable 2FA on every account that has dashboard access; a leaked password on an account that manages your public links is a supply-chain incident waiting to happen.

Abuse protection built into the redirect

Two protections run whether you think about them or not. Every destination is checked against Google Safe Browsing when a link is created or edited and re-scanned on a recurring schedule, so a destination that turns malicious after the fact gets caught and the link disabled. And password-protected links carry a brute-force lockout: repeated wrong guesses are throttled per link, so an attacker cannot grind through a password list against your client deliverable.

What Flyn does not offer (on purpose, for now)

Flyn does not currently offer SAML SSO, SCIM provisioning, customer-facing audit logs, or IP-allowlisted API keys. If your procurement process requires those certifications and controls, an enterprise-focused platform is the honest recommendation today. For teams whose real needs are role separation, 2FA, scanned destinations, and per-link access controls, the stack above covers the practical threat model at a fraction of enterprise pricing.

Compliance Audit Checklist

If you operate under HIPAA, GDPR, SOC 2, CCPA, or similar regimes, this checklist covers the controls auditors will look at. Treat it as a Monday-morning review template for your link library.

The 10-point quarterly review

  1. No PII in slugs, tags, or UTM parameters. Run the link safety checker against your link library to find anything that smells like email, name, or session token. Migrate offenders to non-PII alternatives.
  2. Password protection on every confidential link. Default to off, opt-in for sensitive content. Don't rely on "long random slug" as the only access control.
  3. Expiration on temporary access. Job postings, time-limited promos, one-time access tokens, set expires_at on creation, not "later when I remember".
  4. API keys scoped and rotated. Minimum necessary scopes, rotated quarterly or on personnel change. The API guide covers the rotation flow.
  5. Link library reviewed quarterly. Spot check for links that should have expired, passwords that should have rotated, and analytics that show a private link traveling further than intended.
  6. Two-factor enabled. Flyn supports TOTP 2FA; turn it on for every account with dashboard access, especially owners and admins.
  7. Processor documentation done. EU controllers should record Flyn in their processor register and review the privacy policy and GDPR notes for what is and is not collected.
  8. Data retention windows documented. If you need shorter retention than default, configure it explicitly. See the retention section below.
  9. Custom domain certs in good standing. SSL is auto-provisioned, but verify your DNS-verification record hasn't drifted.
  10. Departed-employee access revoked. Check the team member list, remove former members, and revoke any API keys they created from Settings.

Mapping to specific frameworks

  • SOC 2: items 4, 5, 6, 9, 10 map to the Common Criteria; items 1, 7, 8 are typically Confidentiality criteria (note this maps your controls; Flyn itself is not SOC 2 certified)
  • HIPAA: do not share PHI via short links at all; Flyn does not sign BAAs, so PHI belongs inside a HIPAA-compliant system end to end
  • GDPR: items 1, 7, 8 are the high-frequency findings in EU audits
  • ISO 27001: most items map to A.9 (access control) and A.12 (operations security)
The most overlooked compliance failure in link management isn't a misconfigured setting. It's the absence of a quarterly review. Click history is forensic; control of the future requires showing up to look at the library every three months and ask "is this still right?"

Data Retention and Custom Policies

GDPR Article 5(1)(e) (storage limitation) and similar provisions in CCPA, LGPD, and PIPEDA require organizations to define and enforce retention limits for personal data. For link analytics, this means deciding how long click event data is kept and how long links live before archival.

Default retention behavior

  • Click events: 30 days of history on the Free plan, unlimited retention on Pro
  • Link records: retained for the lifetime of the account; never auto-deleted

Enforcing a shorter window yourself

Flyn does not offer configurable auto-deletion windows today. If your data-minimization policy requires one, enforce it operationally: export your data on your schedule (the JSON export includes every click event), then delete the links whose history has aged out; deleting a link removes its click records with it. On Free, the 30-day retention window effectively acts as a short retention policy by default.

Deactivation vs deletion

For links themselves, the recommendation is to deactivate rather than delete links that are no longer active. The clean way to switch a link off without losing its record is to set its expiration to now (or a past date): it stops redirecting, visitors see the standard expired page, the record and click history stay in your dashboard, and you can remove the expiry at any time to bring it back.

Permanent deletion via DELETE /api/links/:id or the dashboard delete button removes the record and its click history entirely, use it when you have a documented retention-policy reason. Pro accounts can bulk-select and delete many links in one action.

API patterns for compliance automation

Pull click data on your own schedule via the clicks endpoint and store it in your warehouse under your retention policy. Webhooks fire on link.create, link.update, and link.delete, useful for keeping an external inventory of what links exist and when they changed. See the webhooks doc for delivery and verification details, and the API guide for the larger pattern.

Note

If you process EU-resident data, document Flyn as a processor in your records and review the privacy policy and GDPR notes for exactly what click data is and is not collected. The strongest position is the simplest one: keep personal data out of your links entirely, then the click records contain nothing to regulate.

Frequently Asked Questions

Can I add a password to a short link after it has already been shared publicly?
Yes. Add, change, or remove a password at any time from the dashboard or via PATCH /api/links/:id with a password field. Changes take effect on the next click, the next person to visit the link sees the password prompt regardless of prior access. This is the standard remediation when you discover a link has been shared more broadly than intended: add a password, communicate it through a controlled channel, the leak is plugged on the next request. See the links endpoint doc for the field schema.
Is Flyn GDPR compliant?
Yes. Flyn's analytics are privacy-first by design: IP addresses are used for geolocation at request time and immediately discarded (never persisted), no personal identifiers are stored in click records, no browser fingerprinting, no cross-link tracking cookies. Self-service data export and account deletion satisfy Articles 15 and 17. EU controllers should document Flyn as a processor and review the GDPR notes and privacy policy for the collection details. Provided you don't put PII in your own UTM parameters or slugs (which would create personal data you control), the platform operates outside the consent-banner requirement for the click data it captures.
What happens when an auto-expiring link reaches its expiration date?
At the moment expires_at passes, the link stops redirecting. Visitors see a clean This link has expired page instead of a broken redirect or 404 (if you want to route late visitors somewhere useful instead, a click limit with a fallback URL covers that pattern). The link record remains in your dashboard with full click history preserved, useful for audit and post-mortem. You can extend the expiration or remove it entirely from the dashboard or via PATCH /api/links/:id to reactivate. Combine expiration with passwords on truly sensitive links for defense in depth.
How should I secure API keys for my Flyn integration?
Store keys in a secrets manager (AWS Secrets Manager, HashiCorp Vault, GCP Secret Manager, Doppler, Vercel environment variables), never hardcode them or commit them to source control. Generate one key per integration, named descriptively (e.g. ci-deploy-bot, chrome-extension-personal) so revocation is granular. Rotate keys quarterly or immediately on suspected compromise. Revoke unused keys promptly from Settings > API Keys. Flyn does not offer per-key IP allowlisting, so treat every key as fully privileged and lean harder on rotation and scoping. The API guide walks through the rotation flow.
Does Flyn support SSO and SCIM for enterprise teams?
No, and we would rather say that plainly than let you find out during procurement. Flyn does not offer SAML SSO or SCIM provisioning today, and they are not on the near-term roadmap. Sign-in is email and password or Google sign-in, with optional TOTP two-factor authentication, and team workspaces use four roles (owner, admin, member, viewer) at $4 per seat. If your organization mandates IdP-managed provisioning and SAML, an enterprise-focused link platform is the right tool; if your real needs are role separation and 2FA, Flyn covers them at a fraction of the cost.
Where is Flyn data stored, and what about cross-border transfers?
Flyn runs on managed cloud infrastructure (Supabase for the database, Vercel for the application), and all account data lives in a single primary region rather than per-user regional databases. Flyn does not currently offer data-residency guarantees or region pinning, so if your organization has a strict residency mandate, factor that in before adopting any small SaaS vendor. What reduces the exposure in practice is what the click records contain: no raw IPs, no personal identifiers, no fingerprints, so the data crossing borders is aggregate click metadata rather than personal data. Details are in the privacy policy.
How do I prevent click fraud or bot traffic from polluting my analytics?
Flyn classifies bot traffic via User-Agent, request patterns, and IP heuristics, then excludes classified bots from default click counts (you can opt into seeing bot traffic in dashboard filters if needed). For higher-stakes integrations, paid affiliate tracking, conversion attribution, the click fraud prevention guide covers the additional measures, from bot-filtered counts to per-link click limits that stop a drained budget.
Can I use Flyn for HIPAA-regulated workflows?
Only for HIPAA-adjacent workflows, and the line matters. Linking to a HIPAA-compliant document portal is fine: the portal's own authentication protects the PHI, and Flyn's password protection and expiration add a second gate in front of it. But Flyn does not sign Business Associate Agreements and is not a HIPAA business associate, so PHI must never appear in a slug, UTM parameter, or destination URL that Flyn processes. If the link itself would carry or reveal patient information, keep that workflow inside a HIPAA-compliant system end to end.

Ready to try Flyn?

Free plan includes 25 links/month, full analytics, and access to all 30+ free tools above. No credit card required.

Already a member? Log in

Karan Bhakuni
Karan Bhakuni· Founder, Flyn

Karan Bhakuni is the founder of Flyn. He writes about branded links, click analytics, and the link-management tooling growth teams and creators actually need, drawn from building Flyn and reading a lot of user feedback.