Connect Your Broker
BlitzPulse becomes useful the moment your real positions land in the system. Today that means Schwab via OAuth. Alpaca, Tradier, and IBKR are on the roadmap; this guide covers Schwab end-to-end.
What we ask Schwab for
When you authorize, Schwab presents the scope we request:
- Read access to account list, positions, balances.
- Read access to orders + transactions.
- Real-time streaming quotes (the “Streamer”).
- Order placement (only when you click; we never auto-trade).
You can revoke access from Schwab’s developer portal at any time.
What we store
- A short-lived access token (refreshed every 30 minutes).
- An encrypted refresh token (90-day Schwab lifecycle).
- A copy of positions, orders, and 1-second bar data — kept in our database so signals can be computed offline.
Refresh tokens are encrypted at rest using AES-128 with a key the infrastructure team rotates quarterly. We do not store your Schwab username or password.
Step-by-step
- Settings → Connected accounts → Connect Schwab.
- New browser tab opens to Schwab’s consent page. Sign in with your Schwab credentials on Schwab’s domain — we never see those credentials.
- Review the scopes Schwab shows you. Click Approve.
- Schwab redirects back to BlitzPulse. The connect dialog confirms success.
- Initial sync runs (usually 10-30 seconds). Positions, orders, and account balance hydrate the dashboard.
What if I have multiple Schwab accounts?
Schwab’s OAuth returns all accounts you have access to. We list them under Settings → Connected accounts. Use the account picker in the top nav to switch which account’s data is currently displayed; choose All accounts for the aggregate view.
Each account is isolated: signals, alerts, and notifications are scoped to the active account. Cross-account aggregation is read-only — we never auto-route orders across accounts.
Token refresh + expiry
- The access token auto-refreshes every 30 minutes; you don’t need to do anything.
- The refresh token lasts 90 days. As we approach expiry, we email you a “reconnect” reminder. Reconnecting takes ~5 seconds (single Schwab page re-auth).
If you ignore the reminder and the refresh token does expire, real-time data stops flowing. The dashboard surfaces a “Schwab disconnected” banner with a one-click reconnect button.
Disconnecting
- Settings → Connected accounts → Disconnect.
- We revoke the refresh token immediately on Schwab’s side.
- Your historical data (positions snapshot, trade log) stays in BlitzPulse for audit but no longer updates.
- You can reconnect any time without losing history.
Common issues
| Symptom | Cause | Fix |
|---|---|---|
| OAuth bounce loops | Schwab session expired in another tab | Sign out of Schwab, retry |
| ”Account not found” after connect | Schwab grants read but no account access | Contact your Schwab admin |
| Positions don’t update | Streamer disconnected | Page refresh; the streamer auto-reconnects |
| Reconnect button missing | Token still valid but data feels stale | Click Force resync under settings |