Autocapture and automatic events
What the web, Android, iOS and React Native SDKs capture without being asked, what is on by default, and how to switch each part on or off.
Autocapture and automatic events
Web, Android and iOS follow one model. The only deliberate difference: autocapture starts on for web and off for mobile. React Native follows the native platform it runs on.
The four groups
Everything an SDK captures without you calling it belongs to one of four groups.
| Group | What it is | Web | Android | iOS |
|---|---|---|---|---|
| Sessions | Session events | Always on | On by default | On by default |
| App lifecycle | Install, update, app open, app background | Doesn't apply | Off by default | Off by default |
| Autocapture | UI activity: pages or screens, clicks or taps, form and control changes | On by default | Off until the app starts it | Off until the app starts it |
| Commerce integration | Commerce events detected from a store platform, like a product view | Off until you add &shopify=1 or &magento=1 | None | None |
Everything else is an explicit call: track(), record(), identify() and the product calls. Autocapture settings never stop an explicit call.
Web autocapture is on by default so you have data from the first page load. Mobile autocapture is off by default because it hooks the app's own UI code, and a mobile release takes weeks to replace if something goes wrong.
Autocapture families
Each platform lets you switch parts of autocapture on or off.
| Web | Android | iOS | |
|---|---|---|---|
| Pages and screens | pageview: View Page, Leave Page | screenViews | screens, screenExits |
| Clicks and taps | click: Click On | controlInteractions (taps and changes) | taps, rawTouches |
| Form and control changes | input: Change On | Part of controlInteractions | controlChanges |
| Form submits | submit: Submit On | Doesn't apply | Doesn't apply |
| How you switch it | &autocapture=false, or a list like &autocapture=pageview,submit | isAutoCaptureEnabled in intempt-config.json, or Intempt.autocapture.start() / stop() | intempt.autocapture.configure(...) then start() / stop() |
On React Native, intempt.autocapture.configure({ screenViews, controlInteractions }) then start() maps onto the native options above. iOS rawTouches isn't exposed there, because a tap on a control already emits its own event.
See each SDK page for the details: JavaScript, Android, iOS, React Native.
Commerce integrations
An integration is a connector to a store platform you name. On web that's Shopify or Magento.
- It's off until you add it to the script URL.
- The autocapture setting never touches it. With every autocapture family off, Shopify product events still arrive.
- Mobile has no integrations. Commerce there comes only from the product calls:
productView,productAddandproductOrdered.
Commerce isn't an autocapture family on purpose. Autocapture is UI activity that starts on and that you trim. Commerce is revenue data you asked for. Keeping them apart means turning off clicks can never cost you revenue events.
Two rules on every platform
- What a user types is never captured. Typed fields come through masked, on change and on submit, and there's no setting to capture them. A field's name, a checkbox or a selection, and a button's label still come through. To send a typed value on purpose, pass it in an explicit call.
- Commerce is never autocaptured. It comes from an integration you switch on, or from the product calls.
Versions
| SDK | Behaviour on this page from |
|---|---|
| JavaScript | The release that adds the autocapture family list. The CDN serves it to every site once deployed |
| Android | 5.0.0. On 4.x, autocapture starts at initialize() unless isAutoCaptureEnabled is false, and typed text is captured |
| iOS | Every published version |
| React Native | Follows the Android SDK it bundles. It bundles intempt-android 4.0.1 by default. Set intemptAndroidVersion to 5.0.0 in gradle.properties for this behaviour on Android |
