# How to customize webhook payloads

**URL:** https://meta.discourse.org/t/webhooks-payload/393027
**Category:** Support
**Tags:** webhooks
**Created:** [January 9, 2026, 3:18am UTC](https://meta.discourse.org/t/webhooks-payload/393027 "2026-01-09T03:18:49Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![singi2016cn](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/singi2016cn/32/532755_2.png) [@singi2016cn](https://meta.discourse.org/u/singi2016cn)
#### Post date: [January 9, 2026, 3:18am UTC](https://meta.discourse.org/t/webhooks-payload/393027/1 "2026-01-09T03:18:49Z")

</div>

My specific requirement is to synchronize activated user data to Pardot via webhooks. The current issue is that the webhook payload and the fields configured on the Pardot side do not match.

Is there any plugin that can achieve this transformation?

---

<div class="post-metadata">

### Author: ![Lilly](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lilly/32/575047_2.png) [@Lilly](https://meta.discourse.org/u/Lilly)
#### Post date: [January 9, 2026, 3:48am UTC](https://meta.discourse.org/t/webhooks-payload/393027/2 "2026-01-09T03:48:04Z")

</div>

perhaps one can use zapier integration

> **[Pardot Integrations | Connect Your Apps with Zapier](https://zapier.com/apps/pardot/integrations)**
>
> Instantly connect Pardot with the apps you use everyday. Pardot integrates with 9,000 other apps on Zapier - it's the easiest way to automate your work.

> [@Trigger a Zapier task with Discourse Webhooks](https://meta.discourse.org/t/trigger-a-zapier-task-with-discourse-webhooks/56753):
>
> Want to use Discourse Webhooks to trigger a task via [Zapier](https://zapier.com)? Let’s get started! bulb Tip: Zapier now has an [official Discourse integration](https://zapier.com/apps/discourse/integrations) with built-in triggers and actions (e.g. “New Post”, “Create Post”). For common use cases, this is simpler than configuring generic webhooks manually. The guide below covers the manual webhook approach, which gives you more flexibility and access to all Discourse event types. Zapier requires a trigger and an action. In this howto the trigger…

> [@Make requests to the Discourse API with Zapier](https://meta.discourse.org/t/make-requests-to-the-discourse-api-with-zapier/122126):
>
> Requests to the Discourse API can be automated by creating a Zap that uses a Zapier Webhook as its action step. This topic will describe how to perform requests for the following actions: add user to group grant a custom badge To figure out how to perform other types of API requests with Zapier, read through the topic and then search the [Discourse API docs](https://docs.discourse.org/) for the action you are wanting to perform. You can also find how to create an API request for a specific action by reading [Reverse engi…](https://meta.discourse.org/t/how-to-reverse-engineer-the-discourse-api/20576)

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [January 9, 2026, 2:00pm UTC](https://meta.discourse.org/t/webhooks-payload/393027/3 "2026-01-09T14:00:00Z")

</div>

If you don’t want to use something like zapier then you’d need a custom plugin.

---

<div class="post-metadata">

### Author: ![singi2016cn](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/singi2016cn/32/532755_2.png) [@singi2016cn](https://meta.discourse.org/u/singi2016cn)
#### Post date: [January 22, 2026, 8:46am UTC](https://meta.discourse.org/t/webhooks-payload/393027/4 "2026-01-22T08:46:46Z")

</div>

The requirement was temporarily met through an intermediate conversion layer. However, this should not be the best practice. It would be great if Discourse natively supported defining the push data format.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [January 22, 2026, 3:03pm UTC](https://meta.discourse.org/t/webhooks-payload/393027/5 "2026-01-22T15:03:03Z")

</div>

You either need to call an existing API or create a new one with a plugin. Discourse cannot be expected to accept every data format in existence, can it?

Perhaps you could use [Discourse Jira](https://meta.discourse.org/t/discourse-jira/274045) as an example, though that might be overkill.

---

<div class="post-metadata">

### Author: ![singi2016cn](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/singi2016cn/32/532755_2.png) [@singi2016cn](https://meta.discourse.org/u/singi2016cn)
#### Post date: [January 23, 2026, 1:33am UTC](https://meta.discourse.org/t/webhooks-payload/393027/6 "2026-01-23T01:33:01Z")

</div>

What I mean is, for each corresponding event’s push data, add field configuration mapping, for example, `user.id => user_id`, and whether to flatten the data structure (all JSON becomes a 1-level structure, no nesting). For example, the data for a user confirmation email event is as follows (simplified):

```json
{
  "user": {
    "id": 1,
    "username": "jack",
    "name": "jack 2026"
  }
}

```

Select to flatten the data structure, and then configure the mapping for each field (this might require a very long form).

```plaintext
user.id => user_id
user.username => username
user.name => name

```

The data structure actually pushed after configuration is as follows:

```json
{
  "user_id": 1,
  "username": "jack",
  "name": "jack 2026"
}

```

Of course, this can be set as an advanced configuration, which people who don’t need it can completely ignore.
