Security and your data
What we store, how long we keep it, how to export or delete it, and the DPA.
Your store's data is yours
You can export all of it, and you can delete all of it, at any time, from the dashboard or the API. The data stays in your store's own space: tests prove that one store cannot read or search another store's keys, products, logs, files or assistant conversations.
What SeekGist stores
| Data | What is in it |
|---|---|
| Catalog | The products you send: names, descriptions, prices, stock, categories, attributes, links |
| Search logs | The search text, the language, the device type, the results count, and a hashed session id. Emails and phone numbers typed into the search box are masked |
| Events | Clicks, add-to-cart and orders from searches, with the hashed session id |
| Assistant conversations | Shopper messages (emails and phone numbers masked) and answers, if you use the assistant |
| Your account | Your team's names and emails, your settings, keys (stored only as hashes), invoices |
No shopper personal data by default. SeekGist does not store shopper names, emails, addresses, IP addresses or browser user agents. Session ids are hashed with a key per store. Recent searches stay only in the shopper's browser and are never sent to SeekGist.
How long we keep it
| Data | Kept for |
|---|---|
| Search logs and events | Your setting Keep search logs (days) in Settings: 7 to 730 days, 90 by default. Older rows are deleted every night |
| Assistant conversations | The same setting as search logs |
| Webhook delivery log | 30 days |
| Data export files | 7 days (the download link works for 24 hours) |
| Catalog, settings, synonyms, rules | Until you delete them or delete the store |
Export all data
In the dashboard, open Settings > Your data and click Export all data. Only the store owner can do this. A job builds one zip file with one JSON-lines file per table and a manifest.json, and the owner gets an email with a download link that works for 24 hours.
The export never contains secrets: key hashes, tokens and encrypted fields are left out.
With the API (scope data:manage):
curl -X POST https://api.seekgist.com/v1/data/requests \
-H "Authorization: Bearer $SEEKGIST_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{"kind": "export"}'
# then GET /v1/data/requests until status is "succeeded"; download_url is in the answerDelete the store
In Settings > Your data, click Delete store and type your store ID to confirm. With the API, send {"kind": "delete", "confirm_slug": "<your store ID>"} to the same endpoint.
- At once: the store is marked deleted and all its API keys stop working.
- Then a job cancels your paid subscription, and deletes the search index, cached data, files, search logs, events and every other row of the store.
- What stays: one audit line that says the store was deleted, by whom and when. User accounts stay too, because a person may belong to other stores; delete your account separately.
This cannot be undone. Export first if you may need the data.
Security
- Keys: API keys are stored only as keyed hashes. A secret key is refused in a URL. Public keys can be locked to your websites (
allowed_origins), and every key has scopes. - Sign-in: two-step sign-in (TOTP), sessions that end after 30 minutes without activity and 12 hours after sign-in, a check against 100,000 common leaked passwords, and a lock after repeated wrong passwords.
- Secrets at rest: two-step sign-in secrets, store-app tokens and webhook secrets are encrypted in the database.
- Webhooks: every delivery is signed (Standard Webhooks). See API basics.
- Audit log: changes to keys, team, settings and billing are recorded under Audit log.
- Rate limits per key, and HTTPS everywhere.
Legal documents
These are templates, each marked "needs lawyer review", until a lawyer has checked them. TODO: list of subprocessors (hosting, AI provider, email, payments) after the accounts are set up