Create a webhook
curl --request POST \
--url https://api.folk.app/v1/webhooks \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "My app integration",
"targetUrl": "https://my-app.com/webhook",
"subscribedEvents": [
{
"eventType": "person.created",
"filter": {
"groupId": "grp_bc984b3f-0386-434d-82d7-a91eb6badd71"
}
}
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'My app integration',
targetUrl: 'https://my-app.com/webhook',
subscribedEvents: [
{
eventType: 'person.created',
filter: {groupId: 'grp_bc984b3f-0386-434d-82d7-a91eb6badd71'}
}
]
})
};
fetch('https://api.folk.app/v1/webhooks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.folk.app/v1/webhooks"
payload = {
"name": "My app integration",
"targetUrl": "https://my-app.com/webhook",
"subscribedEvents": [
{
"eventType": "person.created",
"filter": { "groupId": "grp_bc984b3f-0386-434d-82d7-a91eb6badd71" }
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)require 'uri'
require 'net/http'
url = URI("https://api.folk.app/v1/webhooks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"My app integration\",\n \"targetUrl\": \"https://my-app.com/webhook\",\n \"subscribedEvents\": [\n {\n \"eventType\": \"person.created\",\n \"filter\": {\n \"groupId\": \"grp_bc984b3f-0386-434d-82d7-a91eb6badd71\"\n }\n }\n ]\n}"
response = http.request(request)
puts response.read_bodypackage main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.folk.app/v1/webhooks"
payload := strings.NewReader("{\n \"name\": \"My app integration\",\n \"targetUrl\": \"https://my-app.com/webhook\",\n \"subscribedEvents\": [\n {\n \"eventType\": \"person.created\",\n \"filter\": {\n \"groupId\": \"grp_bc984b3f-0386-434d-82d7-a91eb6badd71\"\n }\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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))
}<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.folk.app/v1/webhooks",
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([
'name' => 'My app integration',
'targetUrl' => 'https://my-app.com/webhook',
'subscribedEvents' => [
[
'eventType' => 'person.created',
'filter' => [
'groupId' => 'grp_bc984b3f-0386-434d-82d7-a91eb6badd71'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"data": {
"id": "wbk_8c18c158-d49e-4ad4-90d4-2b197688bac7",
"name": "My app integration",
"targetUrl": "https://my-app.com/webhook",
"subscribedEvents": [
{
"eventType": "person.created",
"filter": {}
}
],
"signingSecret": "whsec_QWFSUzl1QUVoQW1kdWtpTnJRTUFpbXNlZmxLTg==",
"status": "active",
"createdAt": "2025-07-17T09:00:00.000Z"
}
}{
"error": {
"code": "INVALID_REQUEST",
"message": "The request was invalid.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#bad-request",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "No valid API key provided.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#unauthorized",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "FORBIDDEN",
"message": "The API key doesn’t have permissions to perform the request.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#forbidden",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "The requested resource was not found.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#not-found",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "UNPROCESSABLE_ENTITY",
"message": "Invalid query parameters",
"documentationUrl": "https://developer.folk.app/api-reference/errors#unprocessable-entity",
"details": {
"issues": [
{
"code": "too_small",
"minimum": 1,
"type": "number",
"inclusive": true,
"exact": false,
"message": "Number must be greater than or equal to 1",
"path": [
"limit"
]
}
]
},
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "The rate limit has been exceeded.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#rate-limiting",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z",
"details": {
"limit": 1000,
"remaining": 0,
"retryAfter": "2025-10-01T12:00:00Z"
}
}
}{
"error": {
"code": "INTERNAL_SERVER_ERROR",
"message": "An internal server error occurred.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#internal-server-error",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "The service is currently unavailable.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#service-unavailable",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}Webhooks
Create a webhook
Creates a new webhook listening to workspace events.
POST
/
v1
/
webhooks
Create a webhook
curl --request POST \
--url https://api.folk.app/v1/webhooks \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "My app integration",
"targetUrl": "https://my-app.com/webhook",
"subscribedEvents": [
{
"eventType": "person.created",
"filter": {
"groupId": "grp_bc984b3f-0386-434d-82d7-a91eb6badd71"
}
}
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'My app integration',
targetUrl: 'https://my-app.com/webhook',
subscribedEvents: [
{
eventType: 'person.created',
filter: {groupId: 'grp_bc984b3f-0386-434d-82d7-a91eb6badd71'}
}
]
})
};
fetch('https://api.folk.app/v1/webhooks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.folk.app/v1/webhooks"
payload = {
"name": "My app integration",
"targetUrl": "https://my-app.com/webhook",
"subscribedEvents": [
{
"eventType": "person.created",
"filter": { "groupId": "grp_bc984b3f-0386-434d-82d7-a91eb6badd71" }
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)require 'uri'
require 'net/http'
url = URI("https://api.folk.app/v1/webhooks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"My app integration\",\n \"targetUrl\": \"https://my-app.com/webhook\",\n \"subscribedEvents\": [\n {\n \"eventType\": \"person.created\",\n \"filter\": {\n \"groupId\": \"grp_bc984b3f-0386-434d-82d7-a91eb6badd71\"\n }\n }\n ]\n}"
response = http.request(request)
puts response.read_bodypackage main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.folk.app/v1/webhooks"
payload := strings.NewReader("{\n \"name\": \"My app integration\",\n \"targetUrl\": \"https://my-app.com/webhook\",\n \"subscribedEvents\": [\n {\n \"eventType\": \"person.created\",\n \"filter\": {\n \"groupId\": \"grp_bc984b3f-0386-434d-82d7-a91eb6badd71\"\n }\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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))
}<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.folk.app/v1/webhooks",
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([
'name' => 'My app integration',
'targetUrl' => 'https://my-app.com/webhook',
'subscribedEvents' => [
[
'eventType' => 'person.created',
'filter' => [
'groupId' => 'grp_bc984b3f-0386-434d-82d7-a91eb6badd71'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"data": {
"id": "wbk_8c18c158-d49e-4ad4-90d4-2b197688bac7",
"name": "My app integration",
"targetUrl": "https://my-app.com/webhook",
"subscribedEvents": [
{
"eventType": "person.created",
"filter": {}
}
],
"signingSecret": "whsec_QWFSUzl1QUVoQW1kdWtpTnJRTUFpbXNlZmxLTg==",
"status": "active",
"createdAt": "2025-07-17T09:00:00.000Z"
}
}{
"error": {
"code": "INVALID_REQUEST",
"message": "The request was invalid.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#bad-request",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "No valid API key provided.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#unauthorized",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "FORBIDDEN",
"message": "The API key doesn’t have permissions to perform the request.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#forbidden",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "The requested resource was not found.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#not-found",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "UNPROCESSABLE_ENTITY",
"message": "Invalid query parameters",
"documentationUrl": "https://developer.folk.app/api-reference/errors#unprocessable-entity",
"details": {
"issues": [
{
"code": "too_small",
"minimum": 1,
"type": "number",
"inclusive": true,
"exact": false,
"message": "Number must be greater than or equal to 1",
"path": [
"limit"
]
}
]
},
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "The rate limit has been exceeded.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#rate-limiting",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z",
"details": {
"limit": 1000,
"remaining": 0,
"retryAfter": "2025-10-01T12:00:00Z"
}
}
}{
"error": {
"code": "INTERNAL_SERVER_ERROR",
"message": "An internal server error occurred.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#internal-server-error",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "The service is currently unavailable.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#service-unavailable",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}Create a webhook to be notified about events that occur in the workspace.
To learn more about webhooks, how to set them up and receive notifications, check out the webhooks guide.
Available events
You can find the list of available events in the webhook events and payloads guide.Filters
You can add filters to events in order to narrow down the notifications you receive. Filters allow you to achieve advanced workflow capabilities, such as:- Only receive notifications when a person is added to a specific group.
- Only receive notifications when a company is moved to a specific pipeline status.
- Only receive notifications when a deal from a specific group is updated.
Filters are only available through the API. If you add filters and then update
the events from the settings page, the filters will be lost.
Person events
person.created
person.created
You can filter by the group the person is added to.
// Notify only if the person is created in a group
// with the ID grp_bc984b3f-0386-434d-82d7-a91eb6badd71
{
"eventType": "person.created",
"filter": {
"groupId": "grp_bc984b3f-0386-434d-82d7-a91eb6badd71"
}
}
person.updated
person.updated
You can filter by:Only the following attributes can be filtered:
- The group the person is in
- The updated attribute
- The updated attribute and the value of the attribute
// Notify only if the person is updated while in a group
// with the ID grp_bc984b3f-0386-434d-82d7-a91eb6badd71
{
"eventType": "person.updated",
"filter": {
"groupId": "grp_bc984b3f-0386-434d-82d7-a91eb6badd71"
}
}
// Notify only if the person's first name is updated
{
"eventType": "person.updated",
"filter": {
"path": ["firstName"]
}
}
// Notify only if the person's first name is updated to "John"
{
"eventType": "person.updated",
"filter": {
"path": ["firstName"],
"value": "John"
}
}
// Notify only if the person's custom field "Status" is updated
{
"eventType": "person.updated",
"filter": {
"path": ["customFieldValues", "grp_bc984b3f-0386-434d-82d7-a91eb6badd71", "Status"]
}
}
// Notify only if the person's custom field "Status"
// is updated to "In Progress"
{
"eventType": "person.updated",
"filter": {
"path": ["customFieldValues", "grp_bc984b3f-0386-434d-82d7-a91eb6badd71", "Status"],
"value": "In Progress"
}
}
// Notify only if the person's custom field "Status"
// is updated to "In Progress" while in a group with the ID grp_bc984b3f-0386-434d-82d7-a91eb6badd71
{
"eventType": "person.updated",
"filter": {
"groupId": "grp_bc984b3f-0386-434d-82d7-a91eb6badd71",
"path": ["customFieldValues", "grp_bc984b3f-0386-434d-82d7-a91eb6badd71", "Status"],
"value": "In Progress"
}
}
firstNamelastNamebirthdayjobTitledescription- You cannot provide a value for this attributeaddressesemailsphonesurlscustomFieldValues
When passing a value for these fields, you must provide the value in the correct format. Refer to the update person documentation for more information.
person.deleted
person.deleted
You can filter by the group the person is removed from.
// Notify only if the person is deleted while in a group
// with the ID grp_bc984b3f-0386-434d-82d7-a91eb6badd71
{
"eventType": "person.deleted",
"filter": {
"groupId": "grp_bc984b3f-0386-434d-82d7-a91eb6badd71"
}
}
person.groups_updated
person.groups_updated
You can filter by the group the person is added to or removed from.
// Notify only if the person is added to or removed from the group
// with the ID grp_bc984b3f-0386-434d-82d7-a91eb6badd71
{
"eventType": "person.groups_updated",
"filter": {
"groupId": "grp_bc984b3f-0386-434d-82d7-a91eb6badd71"
}
}
person.workspace_interaction_metadata_updated
person.workspace_interaction_metadata_updated
You can filter by the group the person is in.
// Notify only if the person's workspace interaction metadata
// is updated while in a group with the ID grp_bc984b3f-0386-434d-82d7-a91eb6badd71
{
"eventType": "person.workspace_interaction_metadata_updated",
"filter": {
"groupId": "grp_bc984b3f-0386-434d-82d7-a91eb6badd71"
}
}
Company events
company.created
company.created
You can filter by the group the company is added to.
// Notify only if the company is created in a group
// with the ID grp_bc984b3f-0386-434d-82d7-a91eb6badd71
{
"eventType": "company.created",
"filter": {
"groupId": "grp_bc984b3f-0386-434d-82d7-a91eb6badd71"
}
}
company.updated
company.updated
You can filter by:Only the following attributes can be filtered:
- The group the company is in
- The updated attribute
- The updated attribute and the value of the attribute
// Notify only if the company is updated while in a group
// with the ID grp_bc984b3f-0386-434d-82d7-a91eb6badd71
{
"eventType": "company.updated",
"filter": {
"groupId": "grp_bc984b3f-0386-434d-82d7-a91eb6badd71"
}
}
// Notify only if the company's name is updated
{
"eventType": "company.updated",
"filter": {
"path": ["name"]
}
}
// Notify only if the company's name is updated to "ACME Inc."
{
"eventType": "company.updated",
"filter": {
"path": ["name"],
"value": "ACME Inc."
}
}
// Notify only if the company's custom field "Status" is updated
{
"eventType": "company.updated",
"filter": {
"path": ["customFieldValues", "grp_bc984b3f-0386-434d-82d7-a91eb6badd71", "Status"]
}
}
// Notify only if the company's custom field "Status"
// is updated to "In Progress"
{
"eventType": "company.updated",
"filter": {
"path": ["customFieldValues", "grp_bc984b3f-0386-434d-82d7-a91eb6badd71", "Status"],
"value": "In Progress"
}
}
// Notify only if the company's custom field "Status"
// is updated to "In Progress" while in a group with the ID grp_bc984b3f-0386-434d-82d7-a91eb6badd71
{
"eventType": "company.updated",
"filter": {
"groupId": "grp_bc984b3f-0386-434d-82d7-a91eb6badd71",
"path": ["customFieldValues", "grp_bc984b3f-0386-434d-82d7-a91eb6badd71", "Status"],
"value": "In Progress"
}
}
namedescription- You cannot provide a value for this attributeaddressesemailsphonesurlsfundingRaisedlastFundingDatefoundationYearemployeeRangeindustrycustomFieldValues
When passing a value for these fields, you must provide the value in the correct format. Refer to the update company documentation for more information.
company.deleted
company.deleted
You can filter by the group the company is removed from.
// Notify only if the company is deleted while in a group
// with the ID grp_bc984b3f-0386-434d-82d7-a91eb6badd71
{
"eventType": "company.deleted",
"filter": {
"groupId": "grp_bc984b3f-0386-434d-82d7-a91eb6badd71"
}
}
company.groups_updated
company.groups_updated
You can filter by the group the company is added to or removed from.
// Notify only if the company is added to or removed from the group
// with the ID grp_bc984b3f-0386-434d-82d7-a91eb6badd71
{
"eventType": "company.groups_updated",
"filter": {
"groupId": "grp_bc984b3f-0386-434d-82d7-a91eb6badd71"
}
}
Deal events
object.created
object.created
You can filter by:
- The group the deal is in
- The group the deal is in and the object type
// Notify only if the deal is created while in a group
// with the ID grp_bc984b3f-0386-434d-82d7-a91eb6badd71
{
"eventType": "object.created",
"filter": {
"groupId": "grp_bc984b3f-0386-434d-82d7-a91eb6badd71",
}
}
// Notify only if the deal is created while in a group
// with the ID grp_bc984b3f-0386-434d-82d7-a91eb6badd71 and the object type is "Deals"
{
"eventType": "object.created",
"filter": {
"groupId": "grp_bc984b3f-0386-434d-82d7-a91eb6badd71",
"objectType": "Deals"
}
}
object.updated
object.updated
You can filter by:Only the following attributes can be filtered:
- The group the deal is in
- The group the deal is in and the object type
- Group, object type and the updated attribute
- Group, object type, the updated attribute and the value of the attribute
// Notify only if the deal is updated while in a group
// with the ID grp_bc984b3f-0386-434d-82d7-a91eb6badd71
{
"eventType": "object.updated",
"filter": {
"groupId": "grp_bc984b3f-0386-434d-82d7-a91eb6badd71",
}
}
// Notify only if the deal is updated while in a group
// with the ID grp_bc984b3f-0386-434d-82d7-a91eb6badd71 and the object type is "Deals"
{
"eventType": "object.updated",
"filter": {
"groupId": "grp_bc984b3f-0386-434d-82d7-a91eb6badd71",
"objectType": "Deals"
}
}
// Notify only if the deal is updated while in a group
// with the ID grp_bc984b3f-0386-434d-82d7-a91eb6badd71
// and the object type is "Deals" and the updated attribute is "name"
{
"eventType": "object.updated",
"filter": {
"groupId": "grp_bc984b3f-0386-434d-82d7-a91eb6badd71",
"objectType": "Deals",
"path": ["name"]
}
}
// Notify only if the deal is updated while in a group
// with the ID grp_bc984b3f-0386-434d-82d7-a91eb6badd71
// and the object type is "Deals" and the updated attribute is "name"
// and the value of the attribute is "New Deal"
{
"eventType": "object.updated",
"filter": {
"groupId": "grp_bc984b3f-0386-434d-82d7-a91eb6badd71",
"objectType": "Deals",
"path": ["name"],
"value": "New Deal"
}
}
// Notify only if the deal is updated while in a group
// with the ID grp_bc984b3f-0386-434d-82d7-a91eb6badd71
// and the object type is "Deals"
// and the custom field attribute is "Status"
{
"eventType": "object.updated",
"filter": {
"groupId": "grp_bc984b3f-0386-434d-82d7-a91eb6badd71",
"objectType": "Deals",
"path": ["customFieldValues", "Status"]
}
}
// Notify only if the deal is updated while in a group
// with the ID grp_bc984b3f-0386-434d-82d7-a91eb6badd71
// and the object type is "Deals"
// and the custom field attribute is "Status"
// and the value of the attribute is "In Progress"
{
"eventType": "object.updated",
"filter": {
"groupId": "grp_bc984b3f-0386-434d-82d7-a91eb6badd71",
"objectType": "Deals",
"path": ["customFieldValues", "Status"],
"value": "In Progress"
}
}
namecustomFieldValues
object.deleted
object.deleted
You can filter by:
- The group the deal is in
- The group the deal is in and the object type
// Notify only if the deal is deleted from the group
// with the ID grp_bc984b3f-0386-434d-82d7-a91eb6badd71
{
"eventType": "object.deleted",
"filter": {
"groupId": "grp_bc984b3f-0386-434d-82d7-a91eb6badd71",
}
}
// Notify only if the deal is deleted from the group
// with the ID grp_bc984b3f-0386-434d-82d7-a91eb6badd71 and the object type is "Deals"
{
"eventType": "object.deleted",
"filter": {
"groupId": "grp_bc984b3f-0386-434d-82d7-a91eb6badd71",
"objectType": "Deals"
}
}
Note events
note.created
note.created
There are no filters available for this event at the moment.
note.updated
note.updated
There are no filters available for this event at the moment.
note.deleted
note.deleted
There are no filters available for this event at the moment.
Reminder events
reminder.created
reminder.created
There are no filters available for this event at the moment.
reminder.updated
reminder.updated
There are no filters available for this event at the moment.
reminder.deleted
reminder.deleted
There are no filters available for this event at the moment.
reminder.triggered
reminder.triggered
There are no filters available for this event at the moment.
Authorizations
API key for authentication
Body
application/json
A friendly name for the webhook.
Maximum string length:
255Example:
"My app integration"
The URL of the webhook. It must be a publicly accessible URL using the HTTP or HTTPS protocol.
Maximum string length:
2048Example:
"https://my-app.com/webhook"
The events the webhook is subscribed to, with optional filters.
Required array length:
1 - 20 elementsShow child attributes
Show child attributes
Example:
[
{
"eventType": "person.created",
"filter": {
"groupId": "grp_bc984b3f-0386-434d-82d7-a91eb6badd71"
}
}
]
Response
The created webhook.
A webhook with a visible signing secret.
Show child attributes
Show child attributes
Example:
{
"id": "wbk_8c18c158-d49e-4ad4-90d4-2b197688bac7",
"name": "My app integration",
"targetUrl": "https://my-app.com/webhook",
"subscribedEvents": [
{
"eventType": "person.created",
"filter": {}
}
],
"signingSecret": "whsec_QWFSUzl1QUVoQW1kdWtpTnJRTUFpbXNlZmxLTg==",
"status": "active",
"createdAt": "2025-07-17T09:00:00.000Z"
}
Example:
["This field is deprecated"]