---
title: "Record a subscriber state by contact email"
method: POST
path: "/marketing/marketing-events/2026-03/events/{externalEventId}/{subscriberState}/email-upsert"
tags: ["Subscriber State Changes"]
---

# Record a subscriber state by contact email

`POST /marketing/marketing-events/2026-03/events/{externalEventId}/{subscriberState}/email-upsert`

## Request

- Base URL: `https://api.hubapi.com`
- URL: `https://api.hubapi.com/marketing/marketing-events/2026-03/events/{externalEventId}/{subscriberState}/email-upsert`
- Auth: one of:
  - HTTP bearer
  - API key in query parameter `hapikey`
  - none

Record a subscriber state between multiple HubSpot contacts and a marketing event, using contact email addresses. Note that the contact must already exist in HubSpot; a contact will not be created. The contactProperties field is used only when creating a new contact. These properties will not update existing contacts.

## Path parameters

- `externalEventId` string, required
- `subscriberState` string, required

## Query parameters

- `externalAccountId` string, required

## Request body

- MarketingMarketingEventsBatchInputMarketingEventEmailSubscriber
  - `inputs` MarketingMarketingEventsMarketingEventEmailSubscriber[], required: List of marketing event details to create or update
    - `contactProperties` object, required: The key-value set that contains properties of the contact.
    - `email` string, required: The email address of the contact in HubSpot to associate with the event.
    - `interactionDateTime` integer, required: Timestamp in milliseconds at which the contact subscribed to the event.
    - `properties` object, required: The key-value set that contains properties of the marketing event.

## Response `default`

An error occurred.

- Error
  - `category` string, required: The error category
  - `context` object: Context about the error condition
  - `correlationId` string, uuid, required: A unique identifier for the request. Include this value with any error reports or support tickets
  - `errors` ErrorDetail[]: further information about the error
    - `code` string: The status code associated with the error detail
    - `context` object: Context about the error condition
    - `in` string: The name of the field or parameter in which the error was found.
    - `message` string, required: A human readable message describing the error along with remediation steps where appropriate
    - `subCategory` string: A specific category that contains more specific detail about the error
  - `links` object: A map of link names to associated URIs containing documentation about the error or recommended remediation steps
  - `message` string, required: A human readable message describing the error along with remediation steps where appropriate
  - `subCategory` string: A specific category that contains more specific detail about the error

## Changes

> 14 revisions in range; 1 not diffed, 2 could not be searched.

- **2026-04-08** `b0d8bc008db9`: 1 info
  - api operation id `post-/marketing/marketing-events/2026-03/events/{externalEventId}/{subscriberState}/email-upsert_upsertByContactEmail` removed and replaced with `post-/marketing/marketing-events/2026-03/events/{externalEventId}/{subscriberState}/email-upsert`
- **2026-03-25** `62586336cea2`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/hubspot/apis/hubspot-api-specification/changes/marketing/marketing-events/2026-03/events/:externalEventId/:subscriberState/email-upsert/post.md)

---

[API](https://skmtc.dev/hubspot/apis/hubspot-api-specification.md) - [All operations](https://skmtc.dev/hubspot/apis/hubspot-api-specification/llms.txt) - [OpenAPI document](https://skmtc.dev/hubspot/apis/hubspot-api-specification/revisions/f9c7181056c5?raw)
