# WebHooks

The platform also allows the use of Webhooks for certain specific events within your account. To do this, they must be enabled and configured from the Webhooks section in the account settings.

A webhook is an automatic POST action to a given URL with certain information.

To enable them, you must check the top of the page and then proceed to create all the webhooks you want.

Webhooks can be created from actions of apps, spaces, or realms. The Context type you pick defines which triggers the Trigger (Log types) selector offers you: every context has its own catalog and no trigger is available in all of them.

When creating a webhook, you must have the URL to which you want to send the information, pick the Context type, narrow the Context down to one app, space, or realm, or leave All to listen to every one of that type, select one or more triggers in Trigger (Log types), since the selector accepts several, and then save the changes.

After this, you will be able to see all active webhooks in the list.

Warning

In the version 10.1.0, realm webhooks are added for end-user events. If you were using these in previous versions, these Webhooks must be recreated within the realm.

# Create an Administrative Webhook

Call your management channels through a webhook.

To create a webhook, follow these steps:

  1. From the administration page, click Settings, then select Webhooks.
  2. Click + New Webhook.
  3. Type the name and the URL you want to call.
  4. In Context type, pick App, Space, or Realm.
  5. In Context, pick the app, space, or realm that will trigger the webhook, or leave All.
  6. In Trigger (Log types), select one or more triggers from the catalog of the context you picked.
  7. Add the necessary headers for the call.
  8. Click Save.

Tip

The value in the trigger_uid column is what travels in the payload's trigger_uid field, so it is the data your endpoint uses to tell one trigger from another.

The triggers of the App context type are:

Trigger trigger_uid
Page created layout_page_created_log
Page deleted layout_page_deleted_log
Page published layout_page_published_log
Page unpublished layout_page_unpublished_log
Page updated layout_page_updated_log
Menu approved menu_approved_log
Menu published menu_published_log
Menu sent to review menu_sent_to_review_log
Menu updated menu_updated_log
App created site_created_log
App deleted site_deleted_log
App disabled site_disabled_log
App enabled site_enabled_log
App draft site_draft_log
App updated site_updated_log
Template approved site_template_approved_log
Templates sent to review site_template_sent_to_review_log
Template updated site_template_updated_log
Template published site_template_published_log
Widget approved widget_definition_approved_log
Widget Cloned widget_definition_cloned_log
Widget Created widget_definition_created_log
Widget Published widget_definition_published_log
Widget Restored widget_definition_restored_log
Widget sent to review widget_definition_sent_to_review_log
Widget unpublished widget_definition_unpublished_log
Widget Updated widget_definition_updated_log

Signing in, signing out, and profile updates are recorded in the activity, but they are not triggers of this context. If you need your end users' session events, create the webhook from the realm.

The triggers of the Space context type are:

Trigger trigger_uid
Category created category_created_log
Category deleted category_deleted_log
Category updated category_updated_log
Entry approved entry_approved_log
Entry created entry_created_log
Entry published entry_published_log
Entry sent to review entry_sent_to_review_log
Entry unpublished entry_unpublished_log
Entry updated entry_updated_log
Space created space_created_log
Space updated space_updated_log
Type created type_created_log
Type deleted type_deleted_log
Type updated type_updated_log
Type sent to reindex type_reindex_log
Reindex of type canceled type_cancel_reindex_log
Asset created asset_created_log
Asset updated asset_updated_log

The triggers of the Realm context type are:

Trigger trigger_uid
User created user_created_log
User updated user_updated_log
User enabled user_enabled_log
User disabled user_disabled_log
User deleted user_deleted_log

Attention

These five triggers are the only ones the Realm context type offers from Settings > Webhooks, and they cover the user management your team does. They are not the same ones you see in Realm Settings > Webhooks, which listens to the realm's end-user events and does not include User disabled. If you need both groups of events, create one webhook in each place.

# Payload example

{
   "id":1552,
   "account_id":2,
   "site_id":null,
   "user_id":2,
   "type":null,
   "value_1":"6111a767-71dc-485c-bea3-80229edf7450",
   "value_2":"the-new-type",
   "value_3":"space-test",
   "request_ip":"127.0.0.1",
   "request_user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36",
   "loggeable_id":5,
   "loggeable_type":"Content::Entry",
   "options":{
      "title":"test entries (6111a767-71dc-485c-bea3-80229edf7450)"
   },
   "created_at":"2021-08-13T17:08:46.000Z",
   "user_type":"AdminUser",
   "space_id":1,
   "log_type_id":262,
   "realm_id":null,
   "trigger_uid":"entry_created_log",
   "trigger_name":"Entry created log",
   "trigger_entity":"Content::Entry",
   "trigger_entity_id":5,
   "trigger_entry_uuid":"6111a767-71dc-485c-bea3-80229edf7450",
   "trigger_content_uuid":"the-new-type",
   "trigger_entry_space_uid":"space-test"
}

# Create a Realm Webhook

Call your management channels through a webhook.

To create a webhook, follow these steps:

  1. From a realm, click Realm Settings, then select Webhooks.
  2. Click + New Webhook.
  3. Type the name and the URL you want to call.
  4. In Trigger (Log types), select one or more triggers from the end-user event catalog.
  5. Add the necessary headers for the call.
  6. Click Save.

The available triggers are the realm's 24 end-user events:

Trigger trigger_uid Fires when
Form response created form_response_created_log An end user submits a form response.
Form response updated form_response_updated_log An already submitted form response is updated.
Origination submission created origination_submission_created_log An origination submission is created.
Origination submission started origination_submission_started_log The end user enters the first task and the submission becomes started.
Origination submission task submitted origination_submission_task_submitted_log The end user submits a task of the submission.
Origination submission completed origination_submission_completed_log The submission becomes completed.
Origination submission canceled origination_submission_canceled_log Someone cancels the submission.
Origination submission canceled due to expiration origination_submission_canceled_overdue_log The platform cancels an overdue submission on its own. New in 10.2.
Origination submission task updated origination_submission_task_updated_log The data of a task of the submission is updated.
Origination task response started origination_task_response_started_log A task of the submission becomes in progress. New in 10.2.
Origination task response completed origination_task_response_completed_log A task of the submission becomes completed. New in 10.2.
Origination task response reopened origination_task_response_reopened_log An already completed task goes back to in progress. New in 10.2.
Origination task response assigned origination_task_response_assigned_log The assignee of a task of the submission changes. New in 10.2.
Login user_login_log An end user signs in.
Login with code user_otp_login_log An end user's code is verified successfully.
Logout user_logout_log An end user signs out.
Login attempt failed user_login_attempt_failed_log A sign-in attempt fails.
Login with code attempt failed user_otp_login_attempt_failed_log The submitted code cannot be verified.
User created user_created_log An end user is created.
User updated user_updated_log An end user is updated.
User enabled user_enabled_log An end user is enabled.
User signup user_signup_log An end user signs up.
User password reset user_password_reset_log A password reset is requested.
User deleted user_deleted_log An end user is deleted.

Attention

This form has no Context type or Context selectors: the webhook is always scoped to the realm you create it from. User disabled is not on this list, because it only exists in the Realm context type webhooks you create from Settings > Webhooks.

Tip

The same trigger can reach you in two shapes. When the end user performs the action from the site, the payload is compact and carries the event in e_c and e_a. When an administrator performs it from the admin panel, or the platform performs it on its own, the payload carries the full log, with trigger_uid, trigger_entity, and the event detail inside options. Keep your endpoint ready for both.

These are the payload examples of the origination triggers:

  • Origination submission created
{
   "ip":"172.71.194.146",
   "ua":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36",
   "e_a":"created_log",
   "e_c":"origination_submission",
   "uid":2300345,
   "idsite":4521,
   "realm_id":681,
   "realm_uid":"jordana",
   "account_id":381,
   "origination_uid":"ori",
   "submission_uuid":"4c23599f-2aa6-4a8c-b2ae-66be46b7b938"
}
  • Origination submission started
{
   "ip":"172.71.194.146",
   "ua":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36",
   "e_a":"started_log",
   "e_c":"origination_submission",
   "uid":2300345,
   "idsite":4521,
   "realm_id":681,
   "realm_uid":"jordana",
   "account_id":381,
   "origination_uid":"ori",
   "submission_uuid":"4c23599f-2aa6-4a8c-b2ae-66be46b7b938"
}
  • Origination submission task submitted
{
   "ip":"172.71.195.36",
   "ua":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36",
   "e_a":"task_submitted_log",
   "e_c":"origination_submission",
   "uid":2300345,
   "idsite":4521,
   "task_id":157,
   "realm_id":681,
   "realm_uid":"jordana",
   "account_id":381,
   "origination_uid":"ori",
   "submission_uuid":"4c23599f-2aa6-4a8c-b2ae-66be46b7b938"
}
  • Origination submission completed
{
   "id":35914440,
   "account_id":381,
   "site_id":null,
   "user_id":1177351,
   "value_1":null,
   "value_2":null,
   "value_3":null,
   "request_ip":"172.71.195.87",
   "request_user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36",
   "loggeable_id":419,
   "loggeable_type":"Origination::Submission",
   "options":{"title":null},
   "created_at":"2025-06-16T10:50:22.000-04:00",
   "space_id":null,
   "log_type_id":415405,
   "realm_id":681,
   "trigger_uid":"origination_submission_completed_log",
   "trigger_name":"Origination submission completed log",
   "trigger_entity":"Origination::Submission",
   "trigger_entity_id":419,
   "trigger_entry_uuid":null,
   "trigger_content_uuid":null,
   "trigger_entry_space_uid":null
}
  • Origination submission canceled
{
   "ip":"172.71.195.41",
   "ua":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36",
   "e_a":"canceled_log",
   "e_c":"origination_submission",
   "uid":2300345,
   "idsite":4521,
   "realm_id":681,
   "realm_uid":"jordana",
   "account_id":381,
   "origination_uid":"ori",
   "submission_uuid":"04bf572a-9e00-4474-ae8a-6a0bc17d4c1a"
}
  • Origination submission canceled due to expiration
{
   "id":35914462,
   "account_id":381,
   "automated":true,
   "site_id":null,
   "space_id":null,
   "user_id":null,
   "value_1":null,
   "value_2":null,
   "value_3":null,
   "request_ip":null,
   "request_user_agent":null,
   "loggeable_id":419,
   "loggeable_type":"Origination::Submission",
   "options":null,
   "created_at":"2026-07-02T09:15:04.000-04:00",
   "log_type_id":415412,
   "realm_id":681,
   "trigger_uid":"origination_submission_canceled_overdue_log",
   "trigger_name":"Origination submission canceled overdue log",
   "trigger_entity":"Origination::Submission",
   "trigger_entity_id":419,
   "trigger_entry_uuid":null,
   "trigger_content_uuid":null,
   "trigger_entry_space_uid":null
}

This is the only trigger on the list that nobody performs: it arrives with automated set to true and without user_id, because the platform is the one canceling the overdue submission.

  • Origination task response completed
{
   "e_c":"origination_task_response",
   "e_a":"completed_log",
   "account_id":381,
   "uid":2300345,
   "idsite":4521,
   "submission_uuid":"4c23599f-2aa6-4a8c-b2ae-66be46b7b938",
   "origination_uid":"ori",
   "realm_uid":"jordana",
   "realm_id":681,
   "task_uid":"datos-personales",
   "task_response_id":9871,
   "task_response_type":"Origination::UserInputTaskResponse",
   "ua":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36",
   "ip":"172.71.194.146"
}

The origination task response started, reopened, and assigned triggers use the same shape, with e_a set to started_log, reopened_log, or assigned_log, and task_uid tells you which task of the origination the event belongs to.

Tip

The webhook is called via a POST when the selected log type is generated. Once the webhook is created, you can send a test notification with false information to test that your URL is correctly receiving POSTs from Modyo.