Miniwall Docs
Web SDK

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.

EventWhen
viewA screen is shown. Each screen of a flow is one. Counts toward your monthly views.
closeThe visitor closes the screen (not when a toast fades out).
purchase_clickA purchase button was tapped.
purchaseonPurchase finished without returning false, or reportPurchase() was called.
purchase_cancel, purchase_erroronPurchase returned false, or threw.
restoreA restore succeeded.
actionA "Run your code" button was pressed, with its actionId.
answerA chosen option of a choice question, with fieldId and optionId.
holdoutThe visitor was held out.
holdout_purchasereportPurchase() 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

KeyWherePurpose
uikit:vidlocalStorageThe random visitor ID. If storage is blocked it lives in memory for the page.
uikit:v1: plus a URLlocalStorageSaved copies of published screens, for offline use.
uikit:pending-purchaselocalStorageThe last buy tap, for reportPurchase().
uikit:last-exposurelocalStorageThe last placement met (30 days), for reportPurchase().
uikit:first-seenlocalStorageDate for the "Days since first visit" condition.
uikit:shown: plus a placementlocalStorageFrequency counters and times seen.
uikit:session-shown: plus a placementsessionStorageThe 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.

On this page