Privacy isn't a feature.
It's the foundation.

SheetLink never stores your financial data. Transactions flow from Plaid to your spreadsheet, nowhere else. Available now on the Free Tier. Connect real bank accounts for free.

SheetLink never sees, stores, or sells your banking data.

All sensitive data flows directly between Plaid, your browser, and your Google Sheet. Our servers only handle short-lived, encrypted token exchanges so the extension can communicate securely with your bank. Transaction data never touches our database.

We:

  • Do store: encrypted Plaid access tokens, Google user ID, email address (for authenticated users), subscription tier (FREE/BASIC/PRO), linked sheet metadata (ID and title), institution names, and minimal sync metadata.
  • Do store (in browser only): JWT authentication tokens with 60-minute expiry, stored locally in Chrome's secure storage.
  • Do not store: transactions, balances, categories, or anything about your banking activity. We also never store your Google OAuth tokens or sheet contents.
  • Do not sell or share any data, ever.

You can delete all your data at any time.

SheetLink is designed to be a transparent data pipe, not a data vault.

  • ✗ Transaction line items (amounts, merchants, categories, dates)
  • ✗ Account balances or transaction history
  • ✗ Bank usernames or passwords (handled exclusively by Plaid)
  • ✗ Google OAuth tokens (these remain in your browser)
  • ✗ Contents of your Google Sheets

Explicitly: We do NOT store your transaction details, balances, or any identifiable financial activity. Transaction data flows through our servers for less than a second during sync, then is immediately discarded.

When you authorize Google Sheets access, SheetLink uses a client-side OAuth flow that keeps your token completely private:

  1. Extension opens Google OAuth in a popup window
  2. You authorize Google Sheets access via Google's secure page
  3. Google redirects to https://sheetlink.app/oauth/callback with access token
  4. Callback page sends token to extension via local Chrome messaging
  5. Extension stores token locally for subsequent syncs

Your Google OAuth token is stored only in the extension's local storage (encrypted by Chrome) and never leaves your device.

JWT (JSON Web Tokens) are secure tokens that prove you're authenticated. After you sign in with Google, our backend generates a JWT token that the extension stores locally in your browser.

  1. You sign in with Google OAuth (one-time)
  2. Backend verifies your Google identity and creates a JWT token
  3. Extension stores JWT token in Chrome's secure storage
  4. Extension sends JWT with each API request (Authorization header)
  5. Backend uses JWT to identify you and apply your subscription tier
  • Your user ID (UUID)
  • Your email address
  • Token expiration timestamp (60 minutes)
  • Cryptographic signature (prevents tampering)
  • Your Google OAuth token
  • Your bank data or transactions
  • Your Google Sheets information
  • Any personally identifiable financial data

SheetLink offers three subscription tiers with different historical data access:

  • 7 days of transaction history
  • 11 core fields per transaction
  • Unlimited bank connections
  • Manual sync control
  • 90 days of transaction history
  • 11 core fields per transaction
  • All FREE features
  • Extended history access
  • 730 days (2 years) of history
  • 33 total fields per transaction
  • All BASIC features
  • Enhanced details (location, merchant IDs)
  • Subscription tier: Your current tier (FREE/BASIC/PRO)
  • Tier history: When you change tiers (for data integrity)
  • Feature usage: Which features you've accessed (not usage frequency)

When you change subscription tiers:

  • Upgrade: Access more history and fields immediately
  • Downgrade: Extension may clear extra data from your sheet to match new tier limits
  • Data safety: We warn you before clearing any data from your sheets
  • Your control: You can always reconnect to restore data within tier limits

All API communication over HTTPS (TLS/SSL)

Plaid tokens encrypted at rest with Fernet (AES-256)

Google OAuth tokens never sent to servers (client-side only)

CORS restricted to SheetLink domains and Chrome extension only

Privacy middleware suppresses sensitive logs

Client-side transaction processing (rules engine runs in your browser)

We use Fernet encryption (AES-128-CBC + HMAC) to protect Plaid access tokens at rest. The encryption key is stored securely in environment variables and tokens are only decrypted during sync operations. This means even if someone gained access to our database, they couldn't read your tokens without the encryption key.

SheetLink's browser extension and client code is fully open source and available for audit on GitHub. You can inspect exactly how your data flows through the extension, verify what permissions it uses, and review all client-side logic. The backend API is private for business and security reasons, but its architecture is fully documented in the public repository.

Our backend includes privacy middleware that automatically suppresses detailed logging for all Plaid-related endpoints. Only high-level request metadata is logged (like "POST /plaid/sync"), never request bodies or transaction data. This ensures your financial data never appears in server logs, even accidentally.

SheetLink's client code (browser extension, landing site) is fully open source. The backend API is in a private repository for these reasons:

  • Intellectual Property: Protects business logic and future subscription features
  • Security: Prevents exposure of internal security patterns and infrastructure details
  • Chrome Store & Plaid Compliance: Simplifies review processes by separating public-facing code from internal services
  • Prevents Clones: Protects against direct commercial copying while maintaining user trust through client transparency

Transparency commitment: While the backend code is private, its minimal architecture is fully documented in the public repository. You can see exactly what endpoints exist, what data they handle, and how your information flows. All backend operations are limited to token storage (encrypted), transaction pass-through (never stored), and Google Sheets writes. For maximum privacy, you can still self-host the entire backend using our Docker deployment guide.

Remove your bank connection from the extension. This deletes the encrypted token from our database immediately.

Your Google Sheet is yours. Delete it whenever you want. SheetLink has no copy.

Want complete control? Run your own SheetLink backend with Docker or cloud providers. Full self-hosting guide coming soon.

SheetLink's client code is open source. Inspect the extension logic, data flow, and architecture documentation yourself on GitHub.

Plaid securely connects to your bank and retrieves transaction data. Your banking credentials are handled exclusively by Plaid, never by SheetLink. Plaid Privacy Policy

We write data to your Google Sheet via the Sheets API. You control who can access your Sheet. Google Privacy Policy

Questions or concerns about our privacy practices? Email us at privacy@sheetlink.app.

The SheetLink Chrome extension does not collect browsing activity or track which websites you visit.

It does not inject scripts into web pages.

All data processing occurs locally in your browser and only uses permissions required for Google Sheets access and Plaid Link connectivity.

Last updated: December 2025

This privacy policy may be updated from time to time. Material changes will be communicated via email or through the extension. Continued use of SheetLink after updates constitutes acceptance of the revised policy.