# 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:
- From the administration page, click Settings, then select Webhooks.
- Click + New Webhook.
- Type the name and the URL you want to call.
- In Context type, pick App, Space, or Realm.
- In Context, pick the app, space, or realm that will trigger the webhook, or leave All.
- In Trigger (Log types), select one or more triggers from the catalog of the context you picked.
- Add the necessary headers for the call.
- 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:
- From a realm, click Realm Settings, then select Webhooks.
- Click + New Webhook.
- Type the name and the URL you want to call.
- In Trigger (Log types), select one or more triggers from the end-user event catalog.
- Add the necessary headers for the call.
- 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.