---
title: "Acquia DAM Webhooks"
date: "2024-03-20T17:17:30+00:00"
summary: "Set up Acquia DAM webhooks to automate workflows on asset events. Learn configuration, best practices, and API samples."
image:
type: "article"
url: "/acquia-dam/help/88666-acquia-dam-webhooks"
id: "04962fbc-698e-4afe-b351-aad39b362f1d"
---

What is a webhook?  
  
A webhook is a way for the Acquia DAM to notify your integration that changes have occurred and allow action to be taken on the information provided. Webhooks are used by web apps to receive small amounts of data from other apps and can also be used to trigger automation workflows when set up properly.   
  
Webhooks are a powerful new capability for DAM API and provide you with useful information about your DAM assets.

DAM webhooks are now available for the following events:

*   Asset creation
*   Asset deletion
*   Asset updates
    *   Asset category change
    *   Asset tags change
    *   Asset release date change
    *   Asset expiration date change
    *   Asset group change
    *   Asset metadata change
        
    *   Asset metadata value change
        

**Setup:**  
Have your DAM admin enable the Webhook Feature in the Admin app and enable the permission for certain roles.  
  
From there configure webhooks through our API to [enable events based on this documentation.](https://docs.acquia.com/acquia-dam/api-v2#tag/Acquia-DAM-Webhooks/asset_metadata_value_updated)   
 

**Best practices:**  
When using webhooks, it's best to set up a user specifically for the purpose of handling and interacting with the events. That way, it's clear and easy to see when something was triggered from an action due to a webhook rather than another action taken elsewhere in DAM. All events are marked with the user responsible for generating them to help prevent a change event loop.   
  
**Sample:**  
By the end of this, you'll be hooked.

Your DAM admin needs to know when users are creating new assets so they can check the assets metadata, asset groups, and security settings.

You can set up a webhook to notify the admin when an asset is created, so long as there is a receiving solution that can handle the events.  
  
First, send a POST request to the webhook creation endpoint.

    https://api.widencollective.com/v2/webhooks/configurations

With a body similar to this:

    {
     "event_type": "asset_created",
     "delivery_url": "https://MyReciever.MyAppOrService.fake",
     "secret_key": "ShhIt'sASecretToEveryone"
    }

On successful creation of the webhook, you will receive back a webhook\_configuration\_id to verify the setup with.

    {
     "webhook_configuration_id": "976cf9b0-95d0-4dbd-acb0-57fbdaef7b6f"
    }

Verify that the receiving solution is getting the data by sending a GET request to the ping endpoint with the webhook\_configuration\_id we received back from the webhook creation process.

    https://api.widencollective.com/v2/webhooks/configurations/976cf9b0-95d0-4dbd-acb0-57fbdaef7b6f/ping

You'll then see an event hitting the receiving solution's delivery\_url with the ping event\_type and a body similar to the following:

    {
     "webhook_configuration_id": "976cf9b0-95d0-4dbd-acb0-57fbdaef7b6f",
     "webhook_delivery_id": "88ee7845-7977-4d49-a699-06f678d05c72",
     "event_context": {
     "user": {
     "id": "5f6f1f60-1b5e-4690-8ba0-a40c09b2cf0c",
     "username": "john@widen.com"
     }
     },
     "event_type": "ping",
    }

Now that you know the connection between DAM and the receiving solution is working, test it by creating an asset. You should receive an event on the delivery\_url with a body similar to the following.

    {
     "webhook_configuration_id": "976cf9b0-95d0-4dbd-acb0-57fbdaef7b6f",
     "webhook_delivery_id": "a2b622ea-2780-48a6-b591-8a1cc3a34f4d",
     "event_context": {
     "user": {
     "id": "5f6f1f60-1b5e-4690-8ba0-a40c09b2cf0c",
     "username": "john@widen.com"
     }
     },
     "asset_id": "3db58e3c-fe98-4437-9637-df299f9d1b06",
     "event_type": "asset_created",
     "date_created": "2021-02-10T22:18:47Z"
    }

Now, the receiving solution can use any of our other asset API endpoints to manipulate or check the asset information via the asset\_id.

**Sample: Asset Metadata Change Webhook**

Your team wants to keep an external system (such as a PIM or CMS) in sync whenever asset metadata changes in DAM.

You can set up a webhook to notify the external system when metadata is updated, so it can pull the latest values automatically.

First, send a POST request to the webhook creation endpoint.

    https://api.widencollective.com/v2/webhooks/configurations

With a body similar to this:

    { "event_type": "asset_metadata_updated", "delivery_url": "https://MyReciever.MyAppOrService.fake", "secret_key": "ShhIt'sASecretToEveryone", "monitored_metadata_fields": ["Publish to Salsify", "Copyright Status"] }

The `monitored_metadata_fields` parameter is optional. When provided, the webhook only fires for changes to the listed fields. When omitted, it fires for changes to any metadata field.

When a monitored metadata field is updated on an asset, you should receive an event on the delivery\_url with a body similar to the following.

    { "webhook_configuration_id": "976cf9b0-95d0-4dbd-acb0-57fbdaef7b6f", "webhook_delivery_id": "b3c733fb-3891-49b7-c702-9b2dd4bf8e73", "event_context": { "user": { "id": "5f6f1f60-1b5e-4690-8ba0-a40c09b2cf0c", "username": "john@widen.com" } }, "asset_id": "3db58e3c-fe98-4437-9637-df299f9d1b06", "event_type": "asset_metadata_updated", "metadata_changes": [ { "field_name": "Publish to Salsify", "old_value": "No", "new_value": "Yes" } ], "date_created": "2026-06-15T12:00:00Z" }

Now, the receiving solution knows exactly which metadata field changed and what the previous and new values are, allowing it to take action accordingly.

**Sample: Asset metadata value change webhook**

Your integration needs to stay in sync with metadata updates in Acquia DAM. For example, when a user updates a metadata field such as "Usage Rights" or "Campaign Name," you want an external system (such as a PIM or CMS) to receive the change automatically.

You can set up a webhook to notify your integration when asset metadata values change.

First, send a POST request to the webhook creation endpoint with the event type asset\_metadata\_value\_updated:

    {
      "delivery_url": "https://example.com/webhooks/dam",
      "event_type": "asset_metadata_value_updated",
      "monitored_metadata_fields": ["Usage Rights", "Campaign Name"],
      "signing_key": "your-signing-key"
    }

The monitored\_metadata\_fields parameter is optional. If you include it, the webhook sends notifications only when the specified fields change. If you omit it, the webhook sends notifications for all metadata field changes.

After you create the webhook, test it by updating a metadata field on an asset. You should receive an event on the delivery\_url with a body similar to the following:

    {
      "event_type": "asset_metadata_value_updated",
      "asset_id": "abc123-def456",
      "timestamp": "2026-06-25T14:30:00Z",
      "metadata_changes": [
        {
          "field_name": "Usage Rights",
          "old_value": "Pending Review",
          "new_value": "Approved"
        }
      ],
      "user": {
        "id": "user-789",
        "name": "Jane Smith"
      }
    }

The metadata\_changes array includes the field name, the previous value, and the updated value for each changed field. Your integration can use this information to update the corresponding records in external systems without additional API calls.

**Testing:**  
We currently offer a means of testing configuration of the webhook via the ping endpoint. It's recommended to validate that your configuration is correct in order to ensure event delivery.

    https://api.widencollective.com/v2/webhooks/configurations/c94d0fc3-64b3-4337-8f37-12c656bd7897/ping

This triggers our services to push out a ping message to your supplied receiving endpoint.  
  
Ping body:

    {
     "webhook_configuration_id": "c94d0fc3-64b3-4337-8f37-12c656bd7897",
     "webhook_delivery_id": "88ee7845-7977-4d49-a699-06f678d05c72",
     "event_context": {
     "user": {
     "id": "5f6f1f60-1b5e-4690-8ba0-a40c09b2cf0c",
     "username": "john@widen.com"
     }
     },
     "event_type": "ping",
    }

There is also useful information available on the GET webhook endpoint.

If you were to retrieve this endpoint as an example:

    https://api.widencollective.com/v2/webhooks/configurations/c94d0fc3-64b3-4337-8f37-12c656bd7897

You would then receive a body similar to the following.

    { 
     "webhook_configuration_id": "c94d0fc3-64b3-4337-8f37-12c656bd7897",
     "created_by_user": {
     "uuid": "5f6f1f60-1b5e-4690-8ba0-a40c09b2cf0c",
     },
     "event_type": "asset_asset_groups_updated",
     "created_date": "2021-02-10T22:18:47Z",
     "last_delivered_date": "2021-04-18T07:18:33Z",
     "last_pinged_date": "2021-03-12T11:04:13Z",
     "signing_enabled": "false",
     "delivery_enabled": "true",
    }

  
This allows users to view when the last delivery occurred from the webhook, the last time it had been pinged, as well as basic information about the configuration of the webhook.  
  
**Security options:**  
When creating a webhook, if a signing key is supplied, it will be used to generate a HMAC hex digest signature for all events, allowing users to verify the contents are unchanged and from their DAM environment.