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.

In compliance with the Google API Services User Data Policy and Google APIs Terms of Service, this section summarizes how SheetLink accesses, uses, stores, and protects Google user data:

SheetLink requests the following Google API scopes:

  • https://www.googleapis.com/auth/spreadsheets - Access to read and write data in your Google Sheets
  • https://www.googleapis.com/auth/script.projects - Access to create and manage Apps Script projects for recipe installation

We access:

  • Google Sheets API: To write banking transaction data to spreadsheets you explicitly select
  • Apps Script API: To programmatically install analysis recipes (pre-built code) into container-bound Apps Script projects
  • Google OAuth user info: Your email and user ID for authentication and account management
  • Spreadsheets scope: Used exclusively to write banking transaction data and account balances to your Google Sheets. All data processing happens client-side in the extension.
  • Apps Script scope: Used exclusively to create container-bound script projects, deploy recipe code, and manage custom menu functions. We only access the specific script project we create for your spreadsheet.
  • User info: Used for authentication, subscription tier management, and associating encrypted Plaid tokens with your account.

We DO NOT share Google user data with any third parties. Specifically:

  • ❌ No selling of data
  • ❌ No sharing with advertisers or data brokers
  • ❌ No external analytics services receive Google user data
  • ❌ No access to your Google Sheets content (data stays in your Sheet under your control)

We may only disclose data if required by law (court order, subpoena). See the "Your rights and options" section for details.

  • Google Sheets data: NOT stored on our servers. Written directly to your Google Sheet and remains under your control.
  • Apps Script projects: Container-bound to your spreadsheet. We do not access or store your script project content.
  • OAuth tokens: Managed by Chrome extension storage (encrypted by Chrome). Google access tokens are stored locally and never transmitted to our backend.
  • User info: Google user ID and email stored in our backend database (PostgreSQL) for authentication purposes only.

Security measures:

  • 🔒 HTTPS/TLS for all API communication
  • 🔒 Minimal permissions (scoped OAuth requests)
  • 🔒 Client-side data processing (no server-side access to sheet contents)
  • 🔒 Container-bound Apps Script projects only (no access to your other projects)
  • Google Sheets data: Retained indefinitely in your Google Sheet (you control retention and deletion)
  • Apps Script projects: Retained as container-bound projects attached to your spreadsheet until you uninstall recipes
  • User authentication data: Retained until you revoke access or delete your account

How to delete your data:

  • Revoke Google OAuth access: Visit Google Account Permissions and remove SheetLink
  • Delete Google Sheets: Delete tabs or entire spreadsheet from Google Sheets
  • Uninstall extension: Remove extension from Chrome to clear all local storage

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: February 2026

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.