This guide introduces the different ways in which you can customize the webhooks you receive.

## Filter events

Filters are made up of user-defined rules and can be applied to your webhook subscriptions.

Filters gate whether or not certain event messages are delivered, based on these rules.

Filters allow you to control _how many_ webhooks you receive. Think of a filter as a binary gate for your webhooks.

<figure markdown>
  <figure class="figure"><img src="https://cdn.shopify.com/shopifycloud/shopify_dev/assets/apps/webhooks/customize/filters-2fa944a1add8b7434bafe572b8162bd8408329252d13bc26611a6f28daf835c4.png" class="lazyload themed-image" data-alt-src="https://cdn.shopify.com/shopifycloud/shopify_dev/assets/apps/webhooks/customize/filters-dark-327f705f00bd109537c4d911bf8278b44ddcfff4b81c329c128cc402c7357a37.png" alt="What are filters" width="75%" height="2120"></figure>
</figure>

## Modify payloads

Shopify provides you with a way to modify the payload you receive when you subscribe to webhook topics.

Payload modifications allow you to specify which fields you will receive per webhook. Think of this as a way to control what information you get.

Unlike filters, which always return the same payload, this feature enables you to specify what subset of information is most relevant to your use case from a webhook. This can be especially useful in instances where you might be most interested in only a subset of fields from very large payloads, like the `orders/updated` webhook topic.

<figure markdown>
  <figure class="figure"><img src="https://cdn.shopify.com/shopifycloud/shopify_dev/assets/apps/webhooks/customize/modify_payloads-062d8dc859c82cf0d1d86b43bdc4ff027218e356abd7e20d799c7393ffcc7a48.png" class="lazyload themed-image" data-alt-src="https://cdn.shopify.com/shopifycloud/shopify_dev/assets/apps/webhooks/customize/modify_payloads-dark-f0cdb8da4457943f36b7b2da9e734810e7f61f9dddbb94a72713747706420809.png" alt="What are payload modifications" width="40%" height="2116"></figure>
</figure>

## Customize your webhooks experience

When combined, filters and modified payloads are a powerful way to tailor the webhooks you receive for your use case.

When specifying filters and included fields, all fields that are in the filter must also be included in the included fields for that webhook.

<p>
<div class="react-code-block" data-preset="file">
<div class="react-code-block-preload ThemeMode-dim">
<div class="react-code-block-preload-bar "></div>
<div class="react-code-block-preload-placeholder-container">
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>

</div>
</div>

<script data-option="filename" data-value="Filters with Modified Payloads"></script>
<script data-option="nocopy" data-value="true"></script>

<script type="text/plain" data-language="toml">
RAW_MD_CONTENT[webhooks]
api_version = "2024-01"

[[webhooks.subscriptions]]
topics = ["products/update"]
uri = "https://example.com/webhooks"
include_fields = ["id", "status", "product_type", "variants.taxable", "variants.price", "variants.title", "updated_at"]
filter = "id:* AND status:active AND (product_type:Music OR product_type:Movies) AND variants.taxable:true AND variants.price:>=100 AND variants.title:'The Miseducation of'"
END_RAW_MD_CONTENT</script>

</div>
</p>