Privacy Policy
How SavvyStocks handles your data
Last updated: October 19, 2026
Personal Information & Data We Keep
We keep the information needed to provide your account and the features you choose. This includes information you enter and data you authorize us to import:
- Portfolio holdings (ticker symbols, share counts, cost basis, notes)
- Watchlist entries
- Transaction records (buy, sell, dividend)
- AI chat conversation history
- Account sign-in and security records; passkeys use public-key credentials, and customer email sign-in uses single-use links or codes
- Your email address — used to sign you in via secure magic link and to send account alerts and reports
- Your mobile phone number — only if you enable SMS alerts or SMS two-factor authentication
- Limited technical data such as IP address — used for security, rate limiting, and fraud prevention
Account data is stored in a hosting-platform database encrypted at rest. Access to your account in the app requires an authenticated session. We do not sell your personal information or portfolio data for advertising.
Brokerage Account Connections
SavvyStocks lets you securely link a brokerage or investment account to automatically import your holdings and transaction history. These connections are handled by trusted third-party providers — Plaid and SnapTrade.
How the Connection Works- When you choose to link an account, brokerage sign-in happens in Plaid's or SnapTrade's interface. SavvyStocks does not ask for or store your brokerage username, password, or security answers. We store provider access tokens or connection secrets to refresh the data you authorize.
- We use investment data for tracking and analysis—not to place trades or move money. After authorization, we receive and store investment data such as institution name, account type, masked account number, holdings, balances, and transaction history.
- This data is linked to your account and used solely to power the portfolio tracking, analysis, and reporting features of the app. It is never sold or used for advertising.
- You can remove a linked account from Account > Brokerage Connections. This stops local syncing and removes its linked holdings; imported transaction history may remain for portfolio and tax history. For provider-side authorization, also review access in your brokerage, Plaid, or SnapTrade settings. Deleting your SavvyStocks account removes its active database records as explained below.
- Your use of Plaid is governed by Plaid's End User Privacy Policy. Your use of SnapTrade is governed by SnapTrade's Privacy Policy.
Market Data
Real-time stock quotes, dividend information, earnings data, and price history are retrieved from third-party market data providers (primarily Twelve Data). When you look up a stock or view your portfolio, your requested ticker symbols are sent to these providers to fetch current pricing.
We do not sell your portfolio data or search queries for advertising. Other feature-specific sharing, including optional AI processing, is explained in the sections below.
AI-Powered Features & Data Processing
SavvyStocks uses AI-powered features provided by OpenAI (a third-party service). The following AI features process your data:
What Data Is Sent to OpenAI- Hootie Chat Assistant: Your chat messages, conversation history, and portfolio context (holdings, allocations, performance data) are sent to generate personalized responses.
- Daily Portfolio Brief: A summary of your portfolio holdings, sector allocations, and recent performance is sent to generate your daily AI analysis.
- AI Portfolio Services: Portfolio data relevant to your selected analysis prompt (e.g., risk assessment, tax-loss harvesting candidates) is sent for processing.
- Smart Insights: Holdings data is analyzed to generate automated alerts (concentration risk, earnings proximity, etc.).
- SavvyStocks accesses OpenAI via their API. Per OpenAI's API Data Usage Policy, data submitted through the API is not used to train or improve OpenAI's models by default.
- OpenAI may retain API inputs and outputs in abuse-monitoring logs for up to 30 days, or longer when legally required or reasonably necessary to protect its services or others.
- For full details, see OpenAI's Privacy Policy.
- AI chat conversation history is stored in the SavvyStocks database. In-app access requires your authenticated account. This does not mean end-to-end encryption or exclude service-provider processing and authorized operational access needed to run and support the service.
- AI-generated portfolio briefs are cached temporarily to improve performance and reduce redundant API calls.
- You can delete any chat conversation at any time from the chat panel.
- You can disable personal AI features through Account > Preferences; this prevents your use of Hootie and other account AI tools. General market research and background analysis may still use OpenAI without sending your account or portfolio details.
- Personalized AI features require eligible access and your AI consent. General market research may be generated by AI independently of your subscription.
- Do not share sensitive personal information (Social Security numbers, bank account details, passwords, etc.) in AI chat conversations.
SMS / Text Messaging Program
SavvyStocks offers an optional SMS notification program ("SavvyStocks SMS Alerts") that delivers user-configured account alerts — including price alerts, dividend confirmations, ex-dividend reminders, earnings reminders, and system notices — to a mobile phone number you provide.
How We Collect Your Mobile Number- You provide your mobile number directly to SavvyStocks by signing in to your account, navigating to Account > Message Center > Notification Preferences, entering your number, and explicitly checking the SMS consent box before saving.
- SavvyStocks does not obtain mobile numbers from third parties, purchased lists, data brokers, affiliates, or offline channels. Mobile numbers are collected only through this in-app opt-in flow.
- At the moment you opt in, our server records the timestamp, the IP address used to consent, and the exact disclosure text shown to you, so the consent is auditable.
No mobile information (including your phone number, SMS opt-in status, and consent records) will be shared with third parties or affiliates for marketing or promotional purposes. Text messaging opt-in data and consent are not shared for marketing; your number and message content go to Twilio to deliver texts.
- Your mobile number and message content are sent to Twilio to deliver enabled alerts, verification codes, and service notices. Twilio's handling of this data is governed by its service terms and privacy notice.
- Your mobile number is never sold, rented, leased, or otherwise transferred to any third party for advertising, lead generation, or promotional purposes.
- Your SMS opt-in status, consent timestamp, and consent text are stored solely to demonstrate compliance with applicable carrier and CTIA requirements and are never shared for marketing.
- Message frequency varies and depends entirely on the alert thresholds you configure (for example, the number of price alerts you set or the dividends/earnings tied to your holdings).
- Message and data rates may apply. SavvyStocks does not charge for SMS, but your wireless carrier's standard rates apply.
- Reply STOP to any SavvyStocks SMS message to unsubscribe from all SMS at any time. Reply HELP for support contact information. You can also revoke consent at any time by unchecking the SMS consent box in Account > Message Center > Notification Preferences.
- For SMS support questions, contact support@savvystocks.ai.
For full SMS program terms, see the SMS Program Terms section of our Terms of Service.
Push & Email Notifications
SavvyStocks can notify you about account and market events (such as price alerts, dividend and earnings reminders, and system notices) through the channels you choose to enable:
- Email: account alerts, reports, and sign-in links or codes are delivered through SendGrid. The recipient address and email subject and content (which can include account or portfolio summaries for reports) are sent for delivery. We do not send these for third-party marketing.
- Push notifications: if you enable browser or device notifications, we store a push subscription token for your device so we can deliver the alerts you turned on. You can revoke this at any time in your browser or device settings, or by disabling notifications in the app.
- SMS / text messages: delivered via Twilio only if you opt in — see the SMS / Text Messaging Program section above for full details.
Cookies & Local Storage
SavvyStocks uses the following browser storage:
- Session cookie — Maintains your login session (httpOnly, secure, expires after 7 days)
- Sidebar state cookie — Remembers if the sidebar is open or collapsed
- localStorage — Stores UI preferences (theme, column widths, watchlist list names) and your optional marketing-measurement choice
On public web landing and signup pages, the optional Reddit measurement pixel loads only after you allow measurement. We send general events such as visits and signups (and, with consent, an attributed first-portfolio event), not your email, holdings, balances, or brokerage login details. Reddit may receive browser/device information such as IP address and cookies when its pixel loads. You can decline or turn off future measurement on the Reddit landing page; turning it off does not undo events already sent. The pixel is not loaded in the native app.
Security Measures
Your financial information deserves careful protection. SavvyStocks uses encrypted connections and offers passkeys and optional two-factor verification. Brokerage sign-in is separate and takes place through Plaid or SnapTrade as described above. We use investment data for tracking and analysis—not to place trades or move money.
- Passkey or email-link/code sign-in for customer accounts, with optional two-factor verification; administrator password sign-in has additional verification and rate limits
- HTTPS/TLS encryption for data in transit and hosting-platform encryption for the database at rest
- Login rate limits and temporary IP-based lockouts after repeated failed administrator sign-in attempts
- HttpOnly, Secure, SameSite cookies for authenticated sessions
- Content Security Policy headers and server-side input validation
We limit sharing to information needed to provide the services you use: for example, Plaid or SnapTrade for connected brokerage accounts, market-data providers for requested quotes, OpenAI for enabled AI features, SendGrid for email, and Twilio for opted-in SMS. The sections above explain what those services receive. You can disconnect a brokerage, turn off AI, opt out of SMS, or delete your account using the controls described here.
Payments & Subscriptions
SavvyStocks offers Free and Pro subscription tiers. All payment processing is handled by trusted third parties — SavvyStocks never receives or stores your full payment card number.
- On the web, subscription payments are processed by Stripe. Your card details are entered directly with Stripe; SavvyStocks stores only your Stripe customer and subscription identifiers and your current plan status.
- On iOS, subscriptions are processed through Apple In-App Purchase, with entitlement status managed via RevenueCat. Apple processes the payment; SavvyStocks stores your subscription status and a purchase identifier linked to your account.
- Payment and subscription data is used solely to provide and manage your subscription. It is never sold or used for advertising.
- Your use of these services is governed by Stripe's Privacy Policy and RevenueCat's Privacy Policy.
Data Retention
SavvyStocks runs a single daily job that prunes user-attributed event and audit tables on the schedule below. The retention windows shown here are read directly from the server, so they always match what the backend actually does:
- AI and research outcome evidence — kept for 30 days, then automatically deleted. Admin-only surface outcome counts and timestamps, without prompts, responses, portfolios or raw errors. Account deletion removes user-linked evidence.
- Processed customer journey outcomes — kept for 3 months, then automatically deleted. Redacted server outcomes used for durable deduplication; unprocessed signals remain for catch-up.
- Resolved customer experience incidents — kept for 3 months, then automatically deleted. Admin-only, redacted operational incidents. Unresolved issues remain until resolved; account deletion removes user-linked evidence.
- Hidden Gem engagement events — kept for 6 months, then automatically deleted. Per-user clicks on Hidden Gem cards (copy, share, view) used to power the admin engagement panel. Older rows have no operational value.
- AI usage logs — kept for 1 year, then automatically deleted. Per-user OpenAI request token counts used to enforce daily caps and surface monthly cost transparently. No prompt or response content is stored.
- In-app notifications — kept for 3 months, then automatically deleted. Price alerts, dividend confirmations, earnings reminders, and system notices delivered to your inbox. Read or unread, all are pruned on the same schedule.
- Magic-link login tokens — kept for 7 days, then automatically deleted. One-time email login tokens. Consumed and expired tokens are kept briefly so a security incident can be audited, then deleted.
- System scan history — kept for 1 year, then automatically deleted. Background platform health and security scan results, retained so the team can investigate past incidents.
- Scheduled job run log — kept for 30 days, then automatically deleted. Per-tick success/failure record for every background job (price-alerts, weekly reports, scanners, canary). Powers the admin Scheduled Jobs panel and reliability metrics.
- Alert canary run log — kept for 3 months, then automatically deleted. Daily synthetic-event runs that exercise every alert type × channel against the demo user, used to detect silent per-channel regressions. No real user content stored.
- External API call log — kept for 30 days, then automatically deleted. Per-call forensic record of every external API request (TD, Stooq, Coingecko, OpenAI, SendGrid, Twilio, Stripe, Plaid). Used by the API Diagnostics admin tab and operator alerting. Pruned after 30 days.
- Dividend API snapshot log — kept for 3 months, then automatically deleted. Per-symbol verbatim vendor dividend values (reportedYield, reportedRate, ex-date, last payment) captured on every fetch. Used by the day-over-day delta canary to detect long-tail dividend drift. No user content stored.
- Dividend delta canary run log — kept for 3 months, then automatically deleted. Daily delta-canary runs that compare today's dividend snapshot to the prior one for every held symbol. Used to detect silent vendor-side dividend regressions. No user content stored.
- User-reported dividend issues — kept for 1 year, then automatically deleted. Reports filed by users via the 'Report incorrect dividend' link. Resolved/dismissed reports are kept for one year to support pattern analysis, then deleted.
- User-facing SLO log — kept for 3 months, then automatically deleted. Per-request record of whether each critical user-facing endpoint (/api/quotes/*, etc.) delivered usable data. The SLO truth table that survives a vendor swap unchanged. Pruned after 90 days.
- Login audit trail — kept for 30 days, then automatically deleted. Record of every successful sign-in (account, IP, device, method) shown in Admin → Security → Recent Logins and under each customer in the directory. Kept for 30 days, then deleted.
- Last-known-good fallback cache — kept for 7 days, then automatically deleted. Most recent successful payload per (scope, key) used as the durable safety net when every live source fails. Pruned after 7 days — anything older is too stale to be useful even as a last resort.
- PWA module failure diagnostics — kept for 14 days, then automatically deleted. Redacted, grouped evidence of failed app modules used to detect broken post-publish assets across multiple clients. Kept for 14 days.
- Portfolio return evidence — kept for 3 months, then automatically deleted. Immutable evidence behind the return shown in the dashboard and Total Return dialog. Recent calculations are retained for auditability; older superseded rows are deleted unless a retained dashboard snapshot still references them.
Records you create directly (holdings, watchlists, transactions, AI chat history, account settings) are kept until you delete them or close your account. See Data Deletion below.
Data Deletion
You can delete your data at any time:
- Individual holdings, watchlist items, and transactions can be deleted from their respective pages
- AI chat conversations can be deleted from the chat panel
- Delete your account from Account > Security > Delete my account. This removes your active account records, including profile, holdings, transactions, watchlists, alerts, preferences, passkeys, and locally stored brokerage connections, and signs you out.
Deletion removes active account records from our application database. Historical backups, security logs, service-provider records, and records retained for legal or operational reasons may persist according to their own retention schedules. Removing an account in SavvyStocks does not itself revoke an authorization held at your brokerage or provider; review access there separately. Contact support@savvystocks.ai for deletion questions.
This policy may be updated periodically. Continued use of SavvyStocks constitutes acceptance of any changes.