Events
Events are the core of how Moveo One understands and predicts user behavior.
Every interaction, screen view, or system action is represented as an event — allowing you to visualize, analyze, and model user experience across sessions.
OverviewDirect link to Overview
Moveo One best works if you collect three types of events:
| Type | Description |
|---|---|
| Non user interactions | Appear, Disappear... poupups etc.. Events for elements that are driven by functions of the app/website itself |
| Direct user interactions | Click of a button, text input, scroll etc.. |
| Custom events for business logic | Sign up, Sign in, Checkout, etc.. |
Each event is time-stamped, context-aware, and connected to a unique session and user identifier.
Event StructureDirect link to Event Structure
An event is a JSON object with a flexible schema.
All SDKs and API endpoints follow this format:
{
"context": "main_screen",
"type": "track",
"prop":
{
"sg": "user_interactions",
"eID": "main_button",
"eA": "tap",
"eT": "button",
"eV": "primary_action"
},
"timestamp": 1760082029814
}
Required FieldsDirect link to Required Fields
| Field | Type | Description |
|---|---|---|
context | string | Session context |
type | string | type of the event (start_session |
prop | object | Key-value data describing the event |
prop -> sg | string | Semantic group |
prop -> eID | string | Elemnt ID - unuque id, in semantic group, of element that produced event |
prop -> eA | string | Event Action |
prop -> eT | string | Element Type |
prop -> eV | string | Value, usually text, of en element |
timestamp | long | Epoch timestamp when event occured |
Custom EventsDirect link to Custom Events
You can send any event that fits your product’s logic.
For example:
- Web
- iOS
- Android
- Flutter
- React Native
- JS
moveo.track('checkout_start', {
items: 3,
totalValue: 49.99
});
MoveoOne.track(event: "checkout_start", properties: [
"items": 3,
"totalValue": 49.99
])
MoveoOne.track("checkout_start", mapOf(
"items" to 3,
"totalValue" to 49.99
))
MoveoOne.track("checkout_start", {
"items": 3,
"totalValue": 49.99
});
import MoveoOne from 'moveo-one-react-native';
MoveoOne.track('checkout_start', {
items: 3,
totalValue: 49.99
});
import MoveoOne from 'moveo-one-sdk';
MoveoOne.track('checkout_start', {
items: 3,
totalValue: 49.99
});
Event Naming Best PracticesDirect link to Event Naming Best Practices
To keep analytics consistent and queryable, follow these conventions:
✅ Recommended:
- Use lowercase snake_case naming (e.g.,
add_to_cart,session_end) - Group similar actions by prefix (
checkout_,profile_,search_) - Keep event names stable — changing them breaks history continuity
- Use
propertiesto add detail, not in the event name
❌ Avoid:
- Spaces, uppercase letters, or random casing (e.g.,
AddToCart,CheckoutStart) - Overloaded events that mix multiple actions (e.g.,
action_performed)
Event LifecycleDirect link to Event Lifecycle
- Event is created locally by SDK
- Added to event queue and optionally batched
- Sent to Moveo One API endpoint
- Validated and stored
- Processed by analytics and predictive pipeline
You can monitor this lifecycle in debug mode (via browser console, Xcode logs, or Logcat).
Event DebuggingDirect link to Event Debugging
Enable SDK debug mode to inspect events as they’re queued and flushed:
WebDirect link to Web
const moveo = MoveoOne.init('YOUR_TOKEN_HERE', { debug: true });
Console output example:
[MoveoOne] Tracking event: checkout_start
[MoveoOne] Queue size: 2
[MoveoOne] Flush triggered
Batch SendingDirect link to Batch Sending
SDKs automatically batch multiple events into one network call for performance.
You can manually trigger a flush (send) operation using the methods below:
- Web
- iOS
- Android
- Flutter
- React Native
- JS
moveo.flush();
MoveoOne.flush()
MoveoOne.flush()
await MoveoOne.flush();
import MoveoOne from 'moveo-one-react-native';
MoveoOne.flush();
import MoveoOne from 'moveo-one-sdk';
MoveoOne.flush();
Example Dashboard OutputDirect link to Example Dashboard Output
When events arrive successfully, they appear in your Moveo One dashboard as sessions:
-
Events are grouped into sessions
-
Sessions are distincted and countable
-
Grouped and processed events can be viewed in AI Movel Builder section