curl --request POST \
--url https://api.hubapi.com/events/2026-03/event-definitions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"includeDefaultProperties": true,
"label": "<string>",
"propertyDefinitions": [
{
"label": "<string>",
"type": "<string>",
"description": "<string>",
"name": "<string>",
"options": [
{
"displayOrder": 123,
"hidden": true,
"label": "<string>",
"value": "<string>",
"description": "<string>"
}
]
}
],
"description": "<string>",
"name": "<string>",
"primaryObject": "<string>"
}
'import requests
url = "https://api.hubapi.com/events/2026-03/event-definitions"
payload = {
"includeDefaultProperties": True,
"label": "<string>",
"propertyDefinitions": [
{
"label": "<string>",
"type": "<string>",
"description": "<string>",
"name": "<string>",
"options": [
{
"displayOrder": 123,
"hidden": True,
"label": "<string>",
"value": "<string>",
"description": "<string>"
}
]
}
],
"description": "<string>",
"name": "<string>",
"primaryObject": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
includeDefaultProperties: true,
label: '<string>',
propertyDefinitions: [
{
label: '<string>',
type: '<string>',
description: '<string>',
name: '<string>',
options: [
{
displayOrder: 123,
hidden: true,
label: '<string>',
value: '<string>',
description: '<string>'
}
]
}
],
description: '<string>',
name: '<string>',
primaryObject: '<string>'
})
};
fetch('https://api.hubapi.com/events/2026-03/event-definitions', 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/events/2026-03/event-definitions",
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([
'includeDefaultProperties' => true,
'label' => '<string>',
'propertyDefinitions' => [
[
'label' => '<string>',
'type' => '<string>',
'description' => '<string>',
'name' => '<string>',
'options' => [
[
'displayOrder' => 123,
'hidden' => true,
'label' => '<string>',
'value' => '<string>',
'description' => '<string>'
]
]
]
],
'description' => '<string>',
'name' => '<string>',
'primaryObject' => '<string>'
]),
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;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.hubapi.com/events/2026-03/event-definitions"
payload := strings.NewReader("{\n \"includeDefaultProperties\": true,\n \"label\": \"<string>\",\n \"propertyDefinitions\": [\n {\n \"label\": \"<string>\",\n \"type\": \"<string>\",\n \"description\": \"<string>\",\n \"name\": \"<string>\",\n \"options\": [\n {\n \"displayOrder\": 123,\n \"hidden\": true,\n \"label\": \"<string>\",\n \"value\": \"<string>\",\n \"description\": \"<string>\"\n }\n ]\n }\n ],\n \"description\": \"<string>\",\n \"name\": \"<string>\",\n \"primaryObject\": \"<string>\"\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))
}HttpResponse<String> response = Unirest.post("https://api.hubapi.com/events/2026-03/event-definitions")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"includeDefaultProperties\": true,\n \"label\": \"<string>\",\n \"propertyDefinitions\": [\n {\n \"label\": \"<string>\",\n \"type\": \"<string>\",\n \"description\": \"<string>\",\n \"name\": \"<string>\",\n \"options\": [\n {\n \"displayOrder\": 123,\n \"hidden\": true,\n \"label\": \"<string>\",\n \"value\": \"<string>\",\n \"description\": \"<string>\"\n }\n ]\n }\n ],\n \"description\": \"<string>\",\n \"name\": \"<string>\",\n \"primaryObject\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/events/2026-03/event-definitions")
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 \"includeDefaultProperties\": true,\n \"label\": \"<string>\",\n \"propertyDefinitions\": [\n {\n \"label\": \"<string>\",\n \"type\": \"<string>\",\n \"description\": \"<string>\",\n \"name\": \"<string>\",\n \"options\": [\n {\n \"displayOrder\": 123,\n \"hidden\": true,\n \"label\": \"<string>\",\n \"value\": \"<string>\",\n \"description\": \"<string>\"\n }\n ]\n }\n ],\n \"description\": \"<string>\",\n \"name\": \"<string>\",\n \"primaryObject\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"archived": true,
"associations": [
{
"allowsCustomLabels": true,
"cardinality": "ONE_TO_MANY",
"category": "HUBSPOT_DEFINED",
"fromObjectTypeId": "<string>",
"hasAllAssociatedObjects": true,
"hasCascadingDeletes": true,
"hasUserEnforcedMaxFromObjectIds": true,
"hasUserEnforcedMaxToObjectIds": true,
"hidden": true,
"id": 123,
"inverseAllowsCustomLabels": true,
"inverseCardinality": "ONE_TO_MANY",
"inverseHasAllAssociatedObjects": true,
"inverseId": 123,
"inverseName": "<string>",
"isDefault": true,
"isInversePrimary": true,
"isPrimary": true,
"maxFromObjectIds": 123,
"maxToObjectIds": 123,
"name": "<string>",
"portalUniqueIdentifier": "<string>",
"readOnly": true,
"toObjectTypeId": "<string>",
"fromObjectType": "ABANDONED_CART",
"hiddenReason": "DEFAULT",
"inverseLabel": "<string>",
"label": "<string>",
"toObjectType": "ABANDONED_CART"
}
],
"fullyQualifiedName": "<string>",
"id": "<string>",
"labels": {
"singular": "<string>",
"plural": "<string>"
},
"name": "<string>",
"objectTypeId": "<string>",
"properties": [
{
"description": "<string>",
"fieldType": "<string>",
"groupName": "<string>",
"label": "<string>",
"name": "<string>",
"options": [
{
"hidden": true,
"label": "<string>",
"value": "<string>",
"description": "<string>",
"displayOrder": 123
}
],
"type": "<string>",
"archived": true,
"archivedAt": "2023-11-07T05:31:56Z",
"calculated": true,
"calculationFormula": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"createdUserId": "<string>",
"currencyPropertyName": "<string>",
"dataSensitivity": "highly_sensitive",
"dateDisplayHint": "absolute",
"displayOrder": 123,
"externalOptions": true,
"formField": true,
"hasUniqueValue": true,
"hidden": false,
"hubspotDefined": true,
"modificationMetadata": {
"archivable": true,
"readOnlyDefinition": true,
"readOnlyValue": true,
"readOnlyOptions": true
},
"numberDisplayHint": "currency",
"referencedObjectType": "<string>",
"sensitiveDataCategories": [
"<string>"
],
"showCurrencySymbol": true,
"textDisplayHint": "domain_name",
"updatedAt": "2023-11-07T05:31:56Z",
"updatedUserId": "<string>"
}
],
"comboEventRules": {
"composingRules": [
{
"count": 123,
"eventTypeId": "<string>",
"propertyFilters": [
{
"filterType": "PROPERTY",
"operation": {
"includeObjectsWithNoValueSet": true,
"operationType": "<string>",
"operator": "HAS_EVER_BEEN_EQUAL_TO",
"operatorName": "<string>",
"propertyType": "bool",
"value": true,
"defaultValue": "<string>",
"propertyAspect": {
"aspect": "TIMERANGE_END",
"qualifier": "<string>"
},
"renderSpec": "<string>"
},
"property": "<string>",
"context": {
"objectTypeId": "<string>"
},
"filterInsightsId": 123,
"frameworkFilterId": 123
}
],
"lookbackWindowDays": 123
}
],
"operationType": "AND",
"ruleBranches": "<array>"
},
"createdAt": "2023-11-07T05:31:56Z",
"createdUserId": 123,
"customMatchingId": {
"primaryObjectRule": {
"eventPropertyName": "<string>",
"targetObjectPropertyName": "<string>"
}
},
"description": "<string>",
"detailTemplate": "<string>",
"headerTemplate": "<string>",
"primaryObject": "<string>",
"primaryObjectId": "<string>",
"trackingType": "APP_EVENT",
"updatedAt": "2023-11-07T05:31:56Z",
"updatedUserId": 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 an event definition
Créez une définition d’événement personnalisé.
curl --request POST \
--url https://api.hubapi.com/events/2026-03/event-definitions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"includeDefaultProperties": true,
"label": "<string>",
"propertyDefinitions": [
{
"label": "<string>",
"type": "<string>",
"description": "<string>",
"name": "<string>",
"options": [
{
"displayOrder": 123,
"hidden": true,
"label": "<string>",
"value": "<string>",
"description": "<string>"
}
]
}
],
"description": "<string>",
"name": "<string>",
"primaryObject": "<string>"
}
'import requests
url = "https://api.hubapi.com/events/2026-03/event-definitions"
payload = {
"includeDefaultProperties": True,
"label": "<string>",
"propertyDefinitions": [
{
"label": "<string>",
"type": "<string>",
"description": "<string>",
"name": "<string>",
"options": [
{
"displayOrder": 123,
"hidden": True,
"label": "<string>",
"value": "<string>",
"description": "<string>"
}
]
}
],
"description": "<string>",
"name": "<string>",
"primaryObject": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
includeDefaultProperties: true,
label: '<string>',
propertyDefinitions: [
{
label: '<string>',
type: '<string>',
description: '<string>',
name: '<string>',
options: [
{
displayOrder: 123,
hidden: true,
label: '<string>',
value: '<string>',
description: '<string>'
}
]
}
],
description: '<string>',
name: '<string>',
primaryObject: '<string>'
})
};
fetch('https://api.hubapi.com/events/2026-03/event-definitions', 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/events/2026-03/event-definitions",
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([
'includeDefaultProperties' => true,
'label' => '<string>',
'propertyDefinitions' => [
[
'label' => '<string>',
'type' => '<string>',
'description' => '<string>',
'name' => '<string>',
'options' => [
[
'displayOrder' => 123,
'hidden' => true,
'label' => '<string>',
'value' => '<string>',
'description' => '<string>'
]
]
]
],
'description' => '<string>',
'name' => '<string>',
'primaryObject' => '<string>'
]),
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;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.hubapi.com/events/2026-03/event-definitions"
payload := strings.NewReader("{\n \"includeDefaultProperties\": true,\n \"label\": \"<string>\",\n \"propertyDefinitions\": [\n {\n \"label\": \"<string>\",\n \"type\": \"<string>\",\n \"description\": \"<string>\",\n \"name\": \"<string>\",\n \"options\": [\n {\n \"displayOrder\": 123,\n \"hidden\": true,\n \"label\": \"<string>\",\n \"value\": \"<string>\",\n \"description\": \"<string>\"\n }\n ]\n }\n ],\n \"description\": \"<string>\",\n \"name\": \"<string>\",\n \"primaryObject\": \"<string>\"\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))
}HttpResponse<String> response = Unirest.post("https://api.hubapi.com/events/2026-03/event-definitions")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"includeDefaultProperties\": true,\n \"label\": \"<string>\",\n \"propertyDefinitions\": [\n {\n \"label\": \"<string>\",\n \"type\": \"<string>\",\n \"description\": \"<string>\",\n \"name\": \"<string>\",\n \"options\": [\n {\n \"displayOrder\": 123,\n \"hidden\": true,\n \"label\": \"<string>\",\n \"value\": \"<string>\",\n \"description\": \"<string>\"\n }\n ]\n }\n ],\n \"description\": \"<string>\",\n \"name\": \"<string>\",\n \"primaryObject\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/events/2026-03/event-definitions")
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 \"includeDefaultProperties\": true,\n \"label\": \"<string>\",\n \"propertyDefinitions\": [\n {\n \"label\": \"<string>\",\n \"type\": \"<string>\",\n \"description\": \"<string>\",\n \"name\": \"<string>\",\n \"options\": [\n {\n \"displayOrder\": 123,\n \"hidden\": true,\n \"label\": \"<string>\",\n \"value\": \"<string>\",\n \"description\": \"<string>\"\n }\n ]\n }\n ],\n \"description\": \"<string>\",\n \"name\": \"<string>\",\n \"primaryObject\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"archived": true,
"associations": [
{
"allowsCustomLabels": true,
"cardinality": "ONE_TO_MANY",
"category": "HUBSPOT_DEFINED",
"fromObjectTypeId": "<string>",
"hasAllAssociatedObjects": true,
"hasCascadingDeletes": true,
"hasUserEnforcedMaxFromObjectIds": true,
"hasUserEnforcedMaxToObjectIds": true,
"hidden": true,
"id": 123,
"inverseAllowsCustomLabels": true,
"inverseCardinality": "ONE_TO_MANY",
"inverseHasAllAssociatedObjects": true,
"inverseId": 123,
"inverseName": "<string>",
"isDefault": true,
"isInversePrimary": true,
"isPrimary": true,
"maxFromObjectIds": 123,
"maxToObjectIds": 123,
"name": "<string>",
"portalUniqueIdentifier": "<string>",
"readOnly": true,
"toObjectTypeId": "<string>",
"fromObjectType": "ABANDONED_CART",
"hiddenReason": "DEFAULT",
"inverseLabel": "<string>",
"label": "<string>",
"toObjectType": "ABANDONED_CART"
}
],
"fullyQualifiedName": "<string>",
"id": "<string>",
"labels": {
"singular": "<string>",
"plural": "<string>"
},
"name": "<string>",
"objectTypeId": "<string>",
"properties": [
{
"description": "<string>",
"fieldType": "<string>",
"groupName": "<string>",
"label": "<string>",
"name": "<string>",
"options": [
{
"hidden": true,
"label": "<string>",
"value": "<string>",
"description": "<string>",
"displayOrder": 123
}
],
"type": "<string>",
"archived": true,
"archivedAt": "2023-11-07T05:31:56Z",
"calculated": true,
"calculationFormula": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"createdUserId": "<string>",
"currencyPropertyName": "<string>",
"dataSensitivity": "highly_sensitive",
"dateDisplayHint": "absolute",
"displayOrder": 123,
"externalOptions": true,
"formField": true,
"hasUniqueValue": true,
"hidden": false,
"hubspotDefined": true,
"modificationMetadata": {
"archivable": true,
"readOnlyDefinition": true,
"readOnlyValue": true,
"readOnlyOptions": true
},
"numberDisplayHint": "currency",
"referencedObjectType": "<string>",
"sensitiveDataCategories": [
"<string>"
],
"showCurrencySymbol": true,
"textDisplayHint": "domain_name",
"updatedAt": "2023-11-07T05:31:56Z",
"updatedUserId": "<string>"
}
],
"comboEventRules": {
"composingRules": [
{
"count": 123,
"eventTypeId": "<string>",
"propertyFilters": [
{
"filterType": "PROPERTY",
"operation": {
"includeObjectsWithNoValueSet": true,
"operationType": "<string>",
"operator": "HAS_EVER_BEEN_EQUAL_TO",
"operatorName": "<string>",
"propertyType": "bool",
"value": true,
"defaultValue": "<string>",
"propertyAspect": {
"aspect": "TIMERANGE_END",
"qualifier": "<string>"
},
"renderSpec": "<string>"
},
"property": "<string>",
"context": {
"objectTypeId": "<string>"
},
"filterInsightsId": 123,
"frameworkFilterId": 123
}
],
"lookbackWindowDays": 123
}
],
"operationType": "AND",
"ruleBranches": "<array>"
},
"createdAt": "2023-11-07T05:31:56Z",
"createdUserId": 123,
"customMatchingId": {
"primaryObjectRule": {
"eventPropertyName": "<string>",
"targetObjectPropertyName": "<string>"
}
},
"description": "<string>",
"detailTemplate": "<string>",
"headerTemplate": "<string>",
"primaryObject": "<string>",
"primaryObjectId": "<string>",
"trackingType": "APP_EVENT",
"updatedAt": "2023-11-07T05:31:56Z",
"updatedUserId": 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
Required Scopes
Required Scopes
Autorisations
The access token received from the authorization server in the OAuth 2.0 flow.
Corps
Un booléen indiquant s'il faut inclure les propriétés par défaut dans la définition du type d'événement.
Libellé lisible par la personne pour l'événement. Utilisé dans l'IU de HubSpot
Liste des propriétés personnalisées sur l'événement
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Une description de l'événement qui sera affichée comme texte d'aide dans HubSpot.
Nom interne de l'événement, qui doit être utilisé pour référencer l'événement à partir de cette API de définitions d'événements. Si aucun nom n'est fourni, un nom sera généré à partir du libellé. La valeur name sera également utilisée pour générer automatiquement un fullyQualifiedName pour la définition de l'événement, que vous utiliserez lorsque vous enverrez des compléments d'événement à cet événement.
Le type d'objet à associer à cet événement. Peut être l'un des suivants : CONTACT, ENTREPRISE, TRANSACTION, TICKET. Si aucun primaryObject n'est fourni, nous associerons par défaut l'événement aux objets CONTACT.
Réponse
successful operation
Un booléen indiquant si le type d'événement est archivé.
Un tableau de définitions d'associations définissant les associations liées au type d'événement.
Show child attributes
Show child attributes
Chaîne représentant le nom complet du type d'événement.
Une chaîne représentant l'identifiant unique du type d'événement.
Show child attributes
Show child attributes
Une chaîne représentant le nom du type d'événement.
Une chaîne représentant l'ID du type d'objet du type d'événement.
Un tableau d'objets de propriété qui définissent les propriétés du type d'événement.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Une chaîne représentant la date et l'heure de création du type d'événement, au format ISO 8601.
Un nombre entier représentant l'ID de l'utilisateur qui a créé le type d'événement.
Show child attributes
Show child attributes
Une chaîne fournissant une description du type d’événement.
Une chaîne utilisée comme modèle pour les détails du type d'événement.
Une chaîne utilisée comme modèle pour l’en-tête du type d’événement.
Une chaîne représentant l'objet principal associé au type d'événement.
Une chaîne représentant l'ID de l'objet principal associé au type d'événement.
Une chaîne spécifiant le type de suivi de l'événement. Les valeurs valides incluent « VISITED_URL », « CLICKED_ELEMENT », « CUSTOM_SCRIPT » et d'autres encore.
APP_EVENT, AUTOCAPTURE_EVENT, CLICKED_ELEMENT, COMBO_EVENT, CUSTOM_SCRIPT, CUSTOM_SIGNAL, IMPORT, MANUAL, POLLING, PROPERTY_CHANGE, VISITED_URL, WEBHOOK Une chaîne représentant la date et l'heure de la dernière mise à jour du type d'événement, au format ISO 8601.
Un nombre entier représentant l'ID de l'utilisateur qui a mis à jour le type d'événement en dernier.