Own Your Data
Analytics captured into your own backend, isolation so no organization ever sees another's records, and sensitive fields encrypted before they reach disk. The data your business runs on stays yours.
The Short Version
Four facts, and not one of them is a number. Each is the name of a thing that either exists in this product or does not.
- First-party
- Analytics collector
- Per-org
- Data isolation
- At rest
- Field encryption
- None
- Ad-network resale
Stop Feeding Your Funnel To Somebody Else
The insights module is a self-hosted analytics collector. Pageviews, clicks, sessions and custom events are written into your own backend as AnalyticsEvent and Visitor records. They are not shipped to an ad network that resells the aggregate back to your competitors, and there is no third-party script on your storefront deciding what it is allowed to keep.
Where it pays off is the order record. Pass the attribution payload into the checkout call and the order carries the real UTM source and visitor id. That is the fix for the everything-looks-like-direct problem, where a third-party script quietly loses the trail somewhere between the ad and the confirmation page and then reports the loss as a channel.
// Pageviews and clicks, into YOUR backend.dash.insights.init()// Custom events, where they matter.dash.insights.track("add_to_cart", { product_id, price })// Tie the session to a customer after login.dash.insights.identify(customerId)// And onto the order, so the source survives checkout.const order = await dash.checkout.complete({ shipping, payment_token, analytics: dash.insights.attributionForOrder(),})Your Tenant Is A Wall
Enforced underneath you, rather than remembered on every new endpoint.
Every organization’s data is isolated at the platform level. A storefront querying the API cannot read another organization’s products, customers or orders. The separation is not a WHERE org_id = ? a developer has to remember, which is what makes running several brands off one backend safe rather than merely convenient.
The Sensitive Fields Are Ciphertext In The Database
Encrypted before they reach disk, decrypted only in application memory when something needs to read them.
Credentials and personal data are not stored in the clear. Field-level encryption, through EncryptedCharField and EncryptedTextField, covers payment processor keys, API secrets and customer PII across the models that hold them. A database dump on its own is not a breach of your customers’ details.
What You Keep
Six things, and the last one is the point of the other five.
Events In Your Own Backend
Analytics stored as AnalyticsEvent and Visitor records, on your side of the line.
Attribution On The Order
A real UTM source and visitor id, rather than a (direct) guess made after the fact.
Isolation On Every Endpoint
Per-organization, with no cross-tenant read path to forget about.
Encryption At Rest
Credentials, processor keys and customer PII, ciphertext on disk.
Nothing Resold
Not your traffic, not your customers, not your events. To anyone.
Yours To Take
You export it, you migrate it, you decide. It is your data.
Keep What Is Yours.
Run analytics you host, on records that are isolated and encrypted. Take a key and watch the first event land in your own backend.