Webhooks

Webhooks in general

What is a webhook?

A webhook is a user-defined callback, triggered by some event (content change or a code push to a repository), which makes a REST call to an external API, usually a build pipeline. The build system then creates a new build that incorporates the changed content.

Common use cases

  • Triggering a build

    The most common use for webhooks in a CMS is to trigger building a static site (Jamstack) whenever content is changed.

  • Updating search indexes

    You can configure a webhook to trigger a specific search service. Upon executing a webhook, the service will perform a re-indexing of content.

  • Sending notifications

    A webhook can be configured to send a request to a messaging service in order to send notifications to staff members or site users.

  • Synchronizing content

    Last but not least, a webhook can be configured to send a request to a third-party service to orchestrate moving or updating content on a CDN or database.

Support for webhooks in Magnolia

Magnolia Webhooks is a DX Core feature and has been available since the 6.2.22 Magnolia release. In the Magnolia implementation, webhooks are:

  • Configured in Yaml files.

  • Registered in a webhook registry.

  • Triggered by the PUBLISH or the UNPUBLISH event(s).

  • Configured for event definitions that are based on Magnolia Content Types.

  • Queued for asynchronous processing to avoid the interruption of the main UI thread.

  • Filterable by:

    • Path

    • Repository

    • Node Type

    • AND/OR filter operations

    • Recursion

Webhook REST configuration parameters

Webhook REST requests can be configured using the following parameters:

  • URL

  • REST method

  • Query parameters

  • Headers

  • List of webhook events

Webhook REST request configuration options

There are two ways you can configure a webhook REST request.

  1. Provide REST request properties together with webhook event definition properties in one Yaml file. In this case, a new REST client is created automatically:

    name: webhook1
    url: https://my.server.com/webhookEndpoint
    method: POST
    queryParameters:
      access_token: '2cf09447'
    headers:
      "Content-Type": "application/json"
      "X_Custom_Header": "value"
    enabled: true
    
    events:
      - name: contentPublished
        eventType: Published
        entity: Content
        filter: "@path LIKE '%whatever%' or @nodeType = 'mgnl:page'"
      - name: contentUnpublished
        eventType: Unpublished
        entity: Content
        filter: "@path LIKE '%whatever%' or @nodeType = 'mgnl:page'"
  2. To avoid redundant configuration, you can use (reference) an existing REST client definition, as shown in the following example configuration:

    name: webhook1
    restClientName: existingCreatedRestClient
    restCallName: triggerBuild
    enabled: true
    
    events:
      - name: contentPublished
        eventType: Published
        entity: Content
        filter: "@path LIKE '%whatever%' or @nodeType = 'mgnl:page'"
      - name: contentUnpublished
        eventType: Unpublished
        entity: Content
        filter: "@path LIKE '%whatever%' or @nodeType = 'mgnl:page'"
Related topics
Feedback

DX Core

×

Location

This widget lets you know where you are on the docs site.

You are currently perusing through the DX Core docs.

Main doc sections

DX Core Headless PaaS Legacy Cloud Incubator modules