Events and privacy
What the SDK sends to Miniwall, what it never sends, what it stores in the browser, and how to turn analytics off.
What is sent
Only for screens loaded by placement or paywall ID, and only while analytics is not false. Screens from a JSON object or a URL send nothing.
| Event | When |
|---|---|
view | A screen is shown. Each screen of a flow is one. Counts toward your monthly views. |
close | The visitor closes the screen (not when a toast fades out). |
purchase_click | A purchase button was tapped. |
purchase | onPurchase finished without returning false, or reportPurchase() was called. |
purchase_cancel, purchase_error | onPurchase returned false, or threw. |
restore | A restore succeeded. |
action | A "Run your code" button was pressed, with its actionId. |
answer | A chosen option of a choice question, with fieldId and optionId. |
holdout | The visitor was held out. |
holdout_purchase | reportPurchase() for a held-out visitor. |
Each event carries: the type, the screen's paywallId, version and placement, packageId where it applies, the A/B test id and side if a test picked the screen, a random visitorId, and a timestamp. Events go in batches of up to 50, about 2 seconds after they happen, and when the page is hidden (using sendBeacon). A failed send is dropped silently: analytics never breaks your page. A key may send up to 1200 events a minute per server instance, after which the API answers 429 and events are dropped.
What is never sent
- Attributes you pass for audiences. They are only compared in the browser.
- Text typed into text fields. Only chosen options of choice questions are sent.
- Names, emails, IP-based profiles or any user identity. The visitor ID is a random UUID stored in the browser, not tied to a person.
- Prices, amounts, or card data.
What is stored in the browser
| Key | Where | Purpose |
|---|---|---|
uikit:vid | localStorage | The random visitor ID. If storage is blocked it lives in memory for the page. |
uikit:v1: plus a URL | localStorage | Saved copies of published screens, for offline use. |
uikit:pending-purchase | localStorage | The last buy tap, for reportPurchase(). |
uikit:last-exposure | localStorage | The last placement met (30 days), for reportPurchase(). |
uikit:first-seen | localStorage | Date for the "Days since first visit" condition. |
uikit:shown: plus a placement | localStorage | Frequency counters and times seen. |
uikit:session-shown: plus a placement | sessionStorage | The per-visit counter. |
If your cookie banner needs consent for this, call configure and the other SDK functions after consent.
Turning analytics off
UIKit.configure({ analytics: false });No events are sent. Frequency limits and holdouts still work, because they are counted in the browser. Analytics and results in the dashboard stay empty, and so does Usage for views from that site.