Legal

Privacy Policy

Last updated: March 3, 2026

This Privacy Policy explains how Cloaked (“we”, “us”, “our”) at cloaked.ink collects, uses, and protects your information when you use our content-protection platform (“Service”).

We believe in minimal data collection. We only gather what is necessary to provide and improve the Service, and we go out of our way to hash or encrypt data wherever possible.

1. Information We Collect

1.1 Account Information

When you create an account, we collect:

DataPurposeStorage
Email addressAuthentication, account communicationPlaintext
PasswordAuthenticationbcrypt hashed (cost 10) — never stored in plaintext
OAuth profile (Google/GitHub)Authentication (optional, only if you choose OAuth sign-in)Email only, via provider
Plan selectionService tier and billingPlaintext

1.2 Billing Information

When you subscribe to a paid plan:

  • Stripe customer ID and subscription ID are stored to link your account to your subscription
  • Payment card details are handled entirely by Stripe— card numbers, CVVs, and billing addresses never touch our servers

1.3 Content You Protect

When you submit articles for protection:

  • Article content is encrypted at rest using AES-256 before being stored in our database
  • We store a SHA-256 content hash to detect changes and manage cache invalidation
  • We do not read, analyze, or share your content

1.4 Render Analytics

When your protected content is viewed by end users, we collect:

DataPurposeStorage
IP addressRate limiting, abuse preventionSHA-256 hash only — raw IP never stored
User agentAnalytics (browser/device breakdown)SHA-256 hash only — raw string never stored
Viewport widthResponsive rendering analyticsInteger value
Render timestampUsage tracking and billingTimestamp
Monthly render countPlan limit enforcementInteger counter

1.5 API Keys

  • We store only a bcrypt hash of each API key
  • An 8-character prefix is stored in plaintext for identification in the dashboard
  • The full API key is shown to you once at creation and cannot be retrieved afterward

1.6 Site Configuration

If you integrate Cloaked with a CMS:

  • Site base URL is stored in plaintext
  • CMS API keys are encrypted at the application layer
  • Webhook secrets are randomly generated (nanoid)

2. Information We Do NOT Collect

We want to be explicit about what we avoid:

  • Raw IP addresses — only SHA-256 hashes, which cannot be reversed
  • Raw user agent strings — only SHA-256 hashes
  • Plaintext article content at rest — always AES-256 encrypted in the database
  • Tracking cookies — we use no tracking, advertising, or analytics cookies
  • Cross-site identifiers — we do not track users across websites
  • Payment card details — fully handled by Stripe; we have no access
  • Third-party analytics — no Google Analytics, no pixel trackers, no ad networks
  • Content of renders for end users — we do not profile or track your readers

3. How We Protect Your Data

3.1 Encryption and Hashing

MethodApplied To
bcrypt (cost 10)Account passwords, API keys
AES-256Article content at rest
SHA-256IP addresses, user agents, content change detection
TLS 1.2+All data in transit

3.2 Infrastructure Security

  • Database hosted on Neon PostgreSQL with encrypted connections
  • Caching via Upstash Redis with token-based authentication
  • API hosted on Railway with isolated containers
  • Dashboard hosted on Vercel with edge network protection
  • Widget assets served via Cloudflare CDN with DDoS protection

3.3 Access Controls

  • JWT-based authentication with 30-day session lifetime
  • API rate limiting to prevent abuse (per-endpoint limits with sliding windows)
  • API keys are hashed; only the 8-character prefix is visible in the dashboard
  • No shared admin accounts; individual account access only

4. How We Use Your Information

We use your information for the following purposes:

PurposeLegal Basis (GDPR)Data Used
Providing the ServiceContract performanceAccount info, content, API keys
AuthenticationContract performanceEmail, password hash, OAuth tokens
BillingContract performanceStripe IDs, plan selection
Rate limitingLegitimate interestIP hashes, API key prefixes
Render analyticsLegitimate interestIP hashes, user agent hashes, viewport, timestamps
Abuse preventionLegitimate interestIP hashes, rate limit counters
Service communicationContract performanceEmail address
Security monitoringLegitimate interestAccess logs, error logs

We do not use your data for:

  • Advertising or marketing profiling
  • Selling to third parties
  • Training machine learning models
  • Behavioral tracking across sites

5. Third-Party Data Sharing

We share data with third-party service providers only as necessary to operate the Service:

ServiceRoleData SharedPrivacy Policy
StripePayment processingEmail, plan selectionstripe.com/privacy
NeonDatabase hostingAll persisted data (encrypted/hashed as described above)neon.tech/privacy
UpstashRedis caching & rate limitingEphemeral data: rate counters, token JTIs, fingerprint hashesupstash.com/privacy
RailwayAPI server hostingRequest data in transitrailway.com/legal
VercelDashboard hostingSession data in transitvercel.com/legal
CloudflareCDN & widget hostingStatic assets, standard request metadatacloudflare.com/privacy
GoogleOAuth provider (optional)Email (only if user chooses Google sign-in)policies.google.com
GitHubOAuth provider (optional)Email (only if user chooses GitHub sign-in)github.com/privacy

We do not sell your personal data to anyone, ever.

6. Cookies and Sessions

6.1 What We Use

  • JWT session token: A secure, HTTP-only token for authentication with a 30-day lifetime. This is a functional session cookie, not a tracking mechanism.

6.2 What We Do Not Use

  • No advertising cookies
  • No analytics cookies
  • No third-party tracking pixels
  • No cross-site tracking of any kind

Because we only use a functional session token, most cookie-consent requirements do not apply. However, we inform you here for full transparency.

7. Data Retention

7.1 Account Data

  • Account information is retained for as long as your account is active
  • Upon account deletion, all associated data is permanently removed, including: account profile and credentials, API keys, articles and encrypted content, render event records, and subscription and billing references

7.2 Render Analytics

  • Render event data (hashed IPs, hashed user agents, viewport data) is retained for the duration of your account
  • Monthly render counts reset each billing cycle

7.3 Ephemeral Data

  • Redis-cached data (rate limit counters, token JTIs, layout caches) expires automatically via TTL and is not retained long-term

7.4 Backups

  • Database backups may retain deleted data for up to 30 days as part of disaster recovery
  • Backups are encrypted and access-controlled

8. Your Rights

8.1 All Users

Regardless of your location, you have the right to:

  • Access your personal data (available via the dashboard and API)
  • Correct inaccurate data (update your profile in the dashboard)
  • Delete your account and all associated data
  • Export your data (articles and analytics) in standard formats

8.2 European Economic Area (GDPR)

If you are in the EEA, you additionally have the right to:

  • Object to processing based on legitimate interest
  • Restrict processing in certain circumstances
  • Data portability — receive your data in a structured, machine-readable format
  • Withdraw consent for any consent-based processing (note: we rely primarily on contract performance and legitimate interest, not consent)
  • Lodge a complaint with your local data protection authority

Lawful Bases for Processing:

  • Contract performance: Providing the Service you signed up for (account management, content rendering, billing)
  • Legitimate interest: Security measures (rate limiting, IP hashing, abuse prevention) and aggregated analytics. We have assessed that these interests do not override your fundamental rights, particularly because we hash personal identifiers and do not track individuals.

Data Transfers: Your data may be processed in the United States by our infrastructure providers. We rely on Standard Contractual Clauses (SCCs) and provider-specific data protection agreements to ensure adequate safeguards for international transfers.

8.3 California Residents (CCPA)

If you are a California resident, you have the right to:

  • Know what personal information we collect, use, and disclose
  • Delete your personal information
  • Opt out of sale— we do not sell personal information, so there is nothing to opt out of
  • Non-discrimination— we will not treat you differently for exercising your rights

Categories of Personal Information Collected (per CCPA definitions):

  • Identifiers: email address, Stripe customer ID
  • Internet activity: hashed IP addresses, hashed user agents, render counts
  • Commercial information: subscription plan, billing period

We do not sell personal information. We do not share personal information for cross-context behavioral advertising.

9. Children's Privacy

The Service is not directed at children under 13 years of age. We do not knowingly collect personal information from children under 13. If you believe a child under 13 has provided us with personal information, please contact us at privacy@cloaked.ink and we will promptly delete it.

10. Security Incident Response

In the event of a data breach that affects your personal information:

  • We will notify affected users via email within 72 hours of becoming aware of the breach
  • We will notify relevant data protection authorities as required by law
  • We will provide a clear description of what happened, what data was affected, and what steps we are taking

11. Changes to This Policy

We may update this Privacy Policy from time to time. When we make changes:

  • We will update the “Last updated” date at the top
  • For material changes, we will provide 30 days’ notice via email and/or dashboard notification
  • Your continued use of the Service after the notice period constitutes acceptance

12. Contact Us

For privacy-related questions, requests, or concerns:

For GDPR-specific requests, email privacy@cloaked.ink with the subject line “GDPR Request” and specify which right you are exercising.

For CCPA-specific requests, email privacy@cloaked.ink with the subject line “CCPA Request.”

This Privacy Policy is effective as of March 3, 2026.