curl --request POST \
--url https://api.hubapi.com/webhooks-journal/subscriptions/2026-09/filters \
--header 'Content-Type: application/json' \
--data '
{
"filter": {
"conditions": [
{
"filterType": "CRM_OBJECT_PROPERTY",
"property": "<string>",
"value": "<string>",
"values": [
"<string>"
]
}
]
},
"subscriptionId": 123
}
'import requests
url = "https://api.hubapi.com/webhooks-journal/subscriptions/2026-09/filters"
payload = {
"filter": { "conditions": [
{
"filterType": "CRM_OBJECT_PROPERTY",
"property": "<string>",
"value": "<string>",
"values": ["<string>"]
}
] },
"subscriptionId": 123
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
filter: {
conditions: [
{
filterType: 'CRM_OBJECT_PROPERTY',
property: '<string>',
value: '<string>',
values: ['<string>']
}
]
},
subscriptionId: 123
})
};
fetch('https://api.hubapi.com/webhooks-journal/subscriptions/2026-09/filters', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.hubapi.com/webhooks-journal/subscriptions/2026-09/filters",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'filter' => [
'conditions' => [
[
'filterType' => 'CRM_OBJECT_PROPERTY',
'property' => '<string>',
'value' => '<string>',
'values' => [
'<string>'
]
]
]
],
'subscriptionId' => 123
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.hubapi.com/webhooks-journal/subscriptions/2026-09/filters"
payload := strings.NewReader("{\n \"filter\": {\n \"conditions\": [\n {\n \"filterType\": \"CRM_OBJECT_PROPERTY\",\n \"property\": \"<string>\",\n \"value\": \"<string>\",\n \"values\": [\n \"<string>\"\n ]\n }\n ]\n },\n \"subscriptionId\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.hubapi.com/webhooks-journal/subscriptions/2026-09/filters")
.header("Content-Type", "application/json")
.body("{\n \"filter\": {\n \"conditions\": [\n {\n \"filterType\": \"CRM_OBJECT_PROPERTY\",\n \"property\": \"<string>\",\n \"value\": \"<string>\",\n \"values\": [\n \"<string>\"\n ]\n }\n ]\n },\n \"subscriptionId\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/webhooks-journal/subscriptions/2026-09/filters")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"filter\": {\n \"conditions\": [\n {\n \"filterType\": \"CRM_OBJECT_PROPERTY\",\n \"property\": \"<string>\",\n \"value\": \"<string>\",\n \"values\": [\n \"<string>\"\n ]\n }\n ]\n },\n \"subscriptionId\": 123\n}"
response = http.request(request)
puts response.read_body{
"filterId": 123
}{
"message": "Invalid input (details will vary based on the error)",
"correlationId": "aeb5f871-7f07-4993-9211-075dc63e7cbf",
"category": "VALIDATION_ERROR",
"links": {
"knowledge-base": "https://www.hubspot.com/products/service/knowledge-base"
}
}Create a subscription filter
Create a new filter for a specific webhook subscription in the HubSpot account. This endpoint allows you to define conditions that determine when a webhook should be triggered. The filter is associated with a subscription identified by its ID, and the request must include the filter details.
curl --request POST \
--url https://api.hubapi.com/webhooks-journal/subscriptions/2026-09/filters \
--header 'Content-Type: application/json' \
--data '
{
"filter": {
"conditions": [
{
"filterType": "CRM_OBJECT_PROPERTY",
"property": "<string>",
"value": "<string>",
"values": [
"<string>"
]
}
]
},
"subscriptionId": 123
}
'import requests
url = "https://api.hubapi.com/webhooks-journal/subscriptions/2026-09/filters"
payload = {
"filter": { "conditions": [
{
"filterType": "CRM_OBJECT_PROPERTY",
"property": "<string>",
"value": "<string>",
"values": ["<string>"]
}
] },
"subscriptionId": 123
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
filter: {
conditions: [
{
filterType: 'CRM_OBJECT_PROPERTY',
property: '<string>',
value: '<string>',
values: ['<string>']
}
]
},
subscriptionId: 123
})
};
fetch('https://api.hubapi.com/webhooks-journal/subscriptions/2026-09/filters', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.hubapi.com/webhooks-journal/subscriptions/2026-09/filters",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'filter' => [
'conditions' => [
[
'filterType' => 'CRM_OBJECT_PROPERTY',
'property' => '<string>',
'value' => '<string>',
'values' => [
'<string>'
]
]
]
],
'subscriptionId' => 123
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.hubapi.com/webhooks-journal/subscriptions/2026-09/filters"
payload := strings.NewReader("{\n \"filter\": {\n \"conditions\": [\n {\n \"filterType\": \"CRM_OBJECT_PROPERTY\",\n \"property\": \"<string>\",\n \"value\": \"<string>\",\n \"values\": [\n \"<string>\"\n ]\n }\n ]\n },\n \"subscriptionId\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.hubapi.com/webhooks-journal/subscriptions/2026-09/filters")
.header("Content-Type", "application/json")
.body("{\n \"filter\": {\n \"conditions\": [\n {\n \"filterType\": \"CRM_OBJECT_PROPERTY\",\n \"property\": \"<string>\",\n \"value\": \"<string>\",\n \"values\": [\n \"<string>\"\n ]\n }\n ]\n },\n \"subscriptionId\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/webhooks-journal/subscriptions/2026-09/filters")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"filter\": {\n \"conditions\": [\n {\n \"filterType\": \"CRM_OBJECT_PROPERTY\",\n \"property\": \"<string>\",\n \"value\": \"<string>\",\n \"values\": [\n \"<string>\"\n ]\n }\n ]\n },\n \"subscriptionId\": 123\n}"
response = http.request(request)
puts response.read_body{
"filterId": 123
}{
"message": "Invalid input (details will vary based on the error)",
"correlationId": "aeb5f871-7f07-4993-9211-075dc63e7cbf",
"category": "VALIDATION_ERROR",
"links": {
"knowledge-base": "https://www.hubspot.com/products/service/knowledge-base"
}
}Supported products
Supported products
Body
Defines a single condition for searching CRM objects, specifying the property to filter on, the operator to use (such as equals, greater than, or contains), and the value(s) to compare against.
Show child attributes
Show child attributes
An integer representing the unique identifier of the subscription to which the filter will be applied. It is required and uses the int64 format.
Response
successful operation
The unique identifier for the created filter. It is an integer in int64 format.
Was this page helpful?