Skip to main content
POST
/
marketing
/
v3
/
marketing-events
/
attendance
/
{externalEventId}
/
{subscriberState}
/
email-create
Record Participants by Email with Marketing Event External Ids
curl --request POST \
  --url https://api.hubapi.com/marketing/v3/marketing-events/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/v3/marketing-events/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/v3/marketing-events/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/v3/marketing-events/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/v3/marketing-events/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/v3/marketing-events/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/v3/marketing-events/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",
  "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

Authorizations

Authorization
string
header
required

The access token received from the authorization server in the OAuth 2.0 flow.

Path Parameters

externalEventId
string
required

The id of the marketing event in the external event application

subscriberState
string
required

The new subscriber state for the HubSpot contacts and the specified marketing event. For example: 'register', 'attend' or 'cancel'.

Query Parameters

externalAccountId
string

The accountId that is associated with this marketing event in the external event application

Body

application/json
inputs
object[]
required

List of marketing event details to create or update

Response

successful operation

completedAt
string<date-time>
required

Timestamp that represents when the request finished processing

results
object[]
required
startedAt
string<date-time>
required

Timestamp that represents when the request started processing

status
enum<string>
required

The status of the request processing

Available options:
CANCELED,
COMPLETE,
PENDING,
PROCESSING
errors
object[]

Result of the request

numErrors
integer<int32>

The number of errors that occurred during the processing

requestedAt
string<date-time>

Timestamp that represents when the request was made

Last modified on March 30, 2026