# Events
The Events section contains a chronological log of activities and occurrences performed by users on the platform. This detailed history is useful for tracking and monitoring tasks.
In the events interface, you can view a list of users who have performed tasks, the types of tasks, and when they were carried out.
# Available Filters
To find specific events, use the available filters:
- Date: Filter by a specific period or select a start and end date.
- Type: Filter by an event type, such as Login, Email delivered or Form response created. The list is dynamic: it only offers the types that already happened at least once in the realm, so a brand new realm sees it almost empty. The full catalog is in Event types.
- User: Search for events related to a specific user, or select all users of the realm.
# Listing columns
Each row of the list is an event. These are its columns:
| Column | What it shows |
|---|---|
| User | Name and email of the realm user who generated the event. When the event was not associated with any user, it shows Unregistered User. |
| Type | Name of the event type, already translated. For example, Login or Order completed. |
| Description | Realm the event belongs to, with the format Realm: realm name. |
| Origin | Does not apply to realm events: it always shows -. |
| Context | Realm where the event happened. |
| Created at | Date and time the event was recorded. |
To reach this screen, the admin needs the View Events permission on the realm.
# Event detail
Click the user of a row to open Log details, with every piece of data stored alongside the event. event_category, event_action and event_type always show up, which are the category, the action and the type, and so does user_agent, with the browser, the operating system and the device type it was generated from. The rest of the fields depend on the event type.
Two of them are the ones most used when auditing:
authentication_method: method the user logged in with, on session events. It takes the valuedirectfor the realm form,otpfor login with code, andsaml,openidc,oauth2orgoogle_oauth2for identity providers.impersonator_idandimpersonator_name: admin who was impersonating the user when the event happened. They only show up when the action was done during an impersonation, so their presence is the mark that the event was not generated by the user themselves.
# Event types
The type of an event is built from the category and the action that generated it, joined by an underscore: the user category with the login_log action gives the user_login_log type, which the panel displays as Login.
These are the types the platform records on its own, grouped by module. Remember that the Type filter only offers the ones that already happened in the realm.
# Session and account
| Type | Label in the panel |
|---|---|
user_login_log | Login |
user_logout_log | Logout |
user_login_attempt_failed_log | Login attempt failed |
user_otp_login_log | Login with code |
user_otp_login_attempt_failed_log | Login with code attempt failed |
user_created_log | User created |
user_created_via_form_log | User created |
user_created_via_order_log | User created |
user_created_via_invitation_log | User created |
user_signup_log | User signup |
user_updated_log | User updated |
user_enabled_log | User enabled |
user_deleted_log | User deleted |
user_password_reset_log | User password reset |
user_web_push_subscribed | WebPush notification subscription |
The four creation variants share the User created label and are told apart only by their type: user_created_log is the base type, user_created_via_form_log is the user created by submitting a form, user_created_via_order_log when an order was generated, and user_created_via_invitation_log when they were invited as a participant of an origination. Since all four share the same label, the type is the only thing that tells you how the user came in.
The email provider generates these when reporting what happened with each delivery.
| Type | Label in the panel |
|---|---|
email_delivered_log | Email delivered |
email_opened_log | Email opened |
email_click_log | Email click |
email_dropped_log | Email dropped |
email_bounce_log | Email bounce |
email_unsubscribed_log | Email unsubscribed |
email_spam_report_log | Email spam report |
# Notifications
| Type | Label in the panel |
|---|---|
notification_opened_log | Notification opened |
# Forms
| Type | Label in the panel |
|---|---|
form_response_created_log | Form response created |
form_response_updated_log | Form response updated |
# Origination
| Type | Label in the panel |
|---|---|
origination_submission_created_log | Origination submission created |
origination_submission_started_log | Origination submission started |
origination_submission_canceled_log | Origination submission canceled |
origination_submission_completed_log | Origination submission completed |
origination_submission_task_submitted_log | Origination submission task submitted |
origination_submission_task_updated_log | Origination submission task updated |
origination_submission_task_validation_deleted_log | Origination submission task validation deleted |
origination_task_response_started_log | Origination task response started |
origination_task_response_completed_log | Origination task response completed |
origination_task_response_auto_completed_log | Origination task response automatically completed |
origination_task_response_reopened_log | Origination task response reopened |
origination_invitation_invitation_sent_log | Origination submission invitation sent |
origination_invitation_invitation_resent_log | Origination submission invitation resent |
origination_invitation_invitation_cancelled_log | Origination submission invitation cancelled |
The emails of an origination submission have their own types, with the same seven situations as the ones from the email module:
| Type | Label in the panel |
|---|---|
origination_submission_email_delivered_log | Submission email delivered |
origination_submission_email_opened_log | Submission email opened |
origination_submission_email_click_log | Submission email click |
origination_submission_email_dropped_log | Submission email dropped |
origination_submission_email_unsubscribed_log | Submission email unsubscribed |
origination_submission_email_spam_report_log | Submission email spam report |
# Orders and payments
| Type | Label in the panel |
|---|---|
order_created_log | Order created |
order_placed_log | Order placed |
order_placed_error_log | Order placement error |
order_rejected_log | Order rejected |
order_rejected_error_log | Error in rejected order |
order_confirming_log | Confirming order |
order_completed_log | Order completed |
order_confirmation_failed_log | Order confirmation failed |
order_tracking_log | Order tracking log |
order_tracking_error_log | Order process error |
tokenized_card_created_log | Tokenized card created |
tokenized_card_activated_log | Tokenized card activated |
tokenized_card_removed_log | Tokenized card removed |
tokenized_card_inscription_failed_log | Tokenized card inscription failed |
tokenized_card_unsubscription_failed_log | Tokenized card unsubscription failed |
# Identity providers
| Type | Label in the panel |
|---|---|
identity_provider_sync_user_failed_log | Identity provider sync user failed |
# Export Events
Check the box next to one or more events and click the Export button, located below the list, to download a file in Excel or CSV format with the selected events.
# Register events from a site
POST SITE_URL/events
Any page of a Modyo site can record its own business events with this call. They land in the same realm Events list as the ones the platform records, and they feed the Insights dashboards, so this is how you instrument the business analytics of your own application.
The request goes to the site URL, not the account one, and it needs the user session in the realm. An event sent without an authenticated user is rejected with 422 and this body:
{
"errors": ["Anonymous events are not allowed"]
}
# Accepted parameters
The endpoint accepts a closed set of parameters. Any other one you send is silently discarded and the event is stored anyway, with no errors.
| Parameter | What it is for |
|---|---|
e_c | Event category. |
e_a | Event action. |
url | URL of the page where the event happened. |
urlref | URL the user came from. |
link | URL of the outbound link that was followed. |
download | URL of the file that was downloaded. |
action_name | Page title. |
pv_id | Pageview identifier. |
res | Screen resolution. |
idgoal | Goal conversion identifier. |
revenue | Amount tied to the conversion. |
cp_id | Campaign identifier. |
em_tp | Email type. |
em_rec | Recipient email. |
fr_id | Form response identifier. |
fr_fid | Form identifier. |
order_id | Order identifier. |
order_pm | Order payment method. |
card_id | Tokenized card identifier. |
origination_uid | Origination identifier. |
submission_uuid | Origination submission identifier. |
task_id and task_uuid | Identifiers of the origination task. |
au_mt | Authentication method. |
au_err | Detail of the authentication error. |
pf_net, pf_srv, pf_tfr, pf_dm1, pf_dm2 and pf_onl | Network, server, transfer, DOM processing, DOM completion and page load times. |
idsite, uid, ua and _id | Site, user, browser and visitor. Modyo fills them in from the request context, so you do not need to send them. |
Besides what you send, Modyo stores the user realm, the request IP and, if an admin is impersonating the user, who they are.
# The event type
The type is not sent: Modyo builds it by joining e_c and e_a with an underscore. An event with e_c=simulator and e_a=quote_requested ends up with the simulator_quote_requested type, and that is the value everything filters and groups by afterwards.
Attention
An event with neither e_c nor e_a is stored, but it stays out of the Events list and of the API: both only show events that have a type. Always send at least e_c.
Attention
Your own types have no translated label in the panel, so the Type column of the list and the title field of the API arrive empty for them. To recognize them, use the event_type field of the event detail.
# Response
With 201, the body returns the event exactly as it was stored: its id, the account_id, the created_at and the info object with the accepted parameters plus the context Modyo filled in.
Tip
The event is stored right away, but it takes a few seconds to show up in the Events list and in the API, because the record is processed in the background. If you are testing your instrumentation, wait a moment before giving an event up for lost.
Tip
Site pages carry a global _paq object already pointing at this same endpoint. It is an internal detail of the platform instrumentation and not a stable contract, so for your own events use the direct call to POST SITE_URL/events.
# Query the events of a user
An application can read the events of the user with the active session through GET ACCOUNT_URL/api/customers/realms/{realm_uid}/events. The full contract is in User events.