curl --request POST \
--url https://api.hubapi.com/marketing/marketing-events/2026-03/attendance/{externalEventId}/{subscriberState}/email-create \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"inputs": [
{
"contactProperties": {},
"email": "<string>",
"interactionDateTime": 123,
"properties": {}
}
]
}
'import requests
url = "https://api.hubapi.com/marketing/marketing-events/2026-03/attendance/{externalEventId}/{subscriberState}/email-create"
payload = { "inputs": [
{
"contactProperties": {},
"email": "<string>",
"interactionDateTime": 123,
"properties": {}
}
] }
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({
inputs: [
{
contactProperties: {},
email: '<string>',
interactionDateTime: 123,
properties: {}
}
]
})
};
fetch('https://api.hubapi.com/marketing/marketing-events/2026-03/attendance/{externalEventId}/{subscriberState}/email-create', 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/marketing/marketing-events/2026-03/attendance/{externalEventId}/{subscriberState}/email-create",
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([
'inputs' => [
[
'contactProperties' => [
],
'email' => '<string>',
'interactionDateTime' => 123,
'properties' => [
]
]
]
]),
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/marketing/marketing-events/2026-03/attendance/{externalEventId}/{subscriberState}/email-create"
payload := strings.NewReader("{\n \"inputs\": [\n {\n \"contactProperties\": {},\n \"email\": \"<string>\",\n \"interactionDateTime\": 123,\n \"properties\": {}\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))
}HttpResponse<String> response = Unirest.post("https://api.hubapi.com/marketing/marketing-events/2026-03/attendance/{externalEventId}/{subscriberState}/email-create")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"inputs\": [\n {\n \"contactProperties\": {},\n \"email\": \"<string>\",\n \"interactionDateTime\": 123,\n \"properties\": {}\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/marketing/marketing-events/2026-03/attendance/{externalEventId}/{subscriberState}/email-create")
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 \"inputs\": [\n {\n \"contactProperties\": {},\n \"email\": \"<string>\",\n \"interactionDateTime\": 123,\n \"properties\": {}\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"completedAt": "2023-11-07T05:31:56Z",
"results": [
{
"email": "<string>",
"vid": 123
}
],
"startedAt": "2023-11-07T05:31:56Z",
"status": "CANCELED",
"errors": [
{
"category": "<string>",
"context": {},
"errors": [
{
"message": "<string>",
"code": "<string>",
"context": "{missingScopes=[scope1, scope2]}",
"in": "<string>",
"subCategory": "<string>"
}
],
"links": {},
"message": "<string>",
"status": "<string>",
"id": "<string>",
"subCategory": {}
}
],
"links": {},
"numErrors": 123,
"requestedAt": "2023-11-07T05:31:56Z"
}{
"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"
}
}Record attendance by participant email and external event ID
Registra la participación de múltiples contactos de HubSpot en un evento de marketing utilizando sus direcciones de correo electrónico.
Si un contacto no existe, se creará automáticamente. El campo contactProperties se usa solo para crear contactos nuevos y no para actualizar las propiedades de los contactos existentes
Funciones adicionales: Añade un evento de la cronología a los contactos Propiedades permitidas Para el estado “asistir”:
- joinedAt
- leftAt
curl --request POST \
--url https://api.hubapi.com/marketing/marketing-events/2026-03/attendance/{externalEventId}/{subscriberState}/email-create \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"inputs": [
{
"contactProperties": {},
"email": "<string>",
"interactionDateTime": 123,
"properties": {}
}
]
}
'import requests
url = "https://api.hubapi.com/marketing/marketing-events/2026-03/attendance/{externalEventId}/{subscriberState}/email-create"
payload = { "inputs": [
{
"contactProperties": {},
"email": "<string>",
"interactionDateTime": 123,
"properties": {}
}
] }
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({
inputs: [
{
contactProperties: {},
email: '<string>',
interactionDateTime: 123,
properties: {}
}
]
})
};
fetch('https://api.hubapi.com/marketing/marketing-events/2026-03/attendance/{externalEventId}/{subscriberState}/email-create', 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/marketing/marketing-events/2026-03/attendance/{externalEventId}/{subscriberState}/email-create",
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([
'inputs' => [
[
'contactProperties' => [
],
'email' => '<string>',
'interactionDateTime' => 123,
'properties' => [
]
]
]
]),
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/marketing/marketing-events/2026-03/attendance/{externalEventId}/{subscriberState}/email-create"
payload := strings.NewReader("{\n \"inputs\": [\n {\n \"contactProperties\": {},\n \"email\": \"<string>\",\n \"interactionDateTime\": 123,\n \"properties\": {}\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))
}HttpResponse<String> response = Unirest.post("https://api.hubapi.com/marketing/marketing-events/2026-03/attendance/{externalEventId}/{subscriberState}/email-create")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"inputs\": [\n {\n \"contactProperties\": {},\n \"email\": \"<string>\",\n \"interactionDateTime\": 123,\n \"properties\": {}\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/marketing/marketing-events/2026-03/attendance/{externalEventId}/{subscriberState}/email-create")
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 \"inputs\": [\n {\n \"contactProperties\": {},\n \"email\": \"<string>\",\n \"interactionDateTime\": 123,\n \"properties\": {}\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"completedAt": "2023-11-07T05:31:56Z",
"results": [
{
"email": "<string>",
"vid": 123
}
],
"startedAt": "2023-11-07T05:31:56Z",
"status": "CANCELED",
"errors": [
{
"category": "<string>",
"context": {},
"errors": [
{
"message": "<string>",
"code": "<string>",
"context": "{missingScopes=[scope1, scope2]}",
"in": "<string>",
"subCategory": "<string>"
}
],
"links": {},
"message": "<string>",
"status": "<string>",
"id": "<string>",
"subCategory": {}
}
],
"links": {},
"numErrors": 123,
"requestedAt": "2023-11-07T05:31:56Z"
}{
"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
Autorizaciones
The access token received from the authorization server in the OAuth 2.0 flow.
Parámetros de consulta
Cuerpo
Lista de detalles de eventos de marketing para crear o actualizar
Show child attributes
Show child attributes
Respuesta
successful operation
Marca de tiempo que representa cuándo terminó de procesarse la solicitud
Show child attributes
Show child attributes
Marca de tiempo que representa cuándo comenzó a procesarse la solicitud
El estado de procesamiento de la solicitud
CANCELED, COMPLETE, PENDING, PROCESSING Show child attributes
Show child attributes
Resultado de la solicitud
Show child attributes
Show child attributes
El número de errores que se produjeron durante el procesamiento
Marca de tiempo que representa cuándo se hizo la solicitud