---
title: "Update Marketing Event by External IDs"
method: PATCH
path: "/marketing/marketing-events/2026-09/events/{externalEventId}"
tags: ["Basic"]
---

# Update Marketing Event by External IDs

`PATCH /marketing/marketing-events/2026-09/events/{externalEventId}`

## Request

- Base URL: `https://api.hubapi.com`
- URL: `https://api.hubapi.com/marketing/marketing-events/2026-09/events/{externalEventId}`
- Auth: OAuth 2
  - Authorization code: `https://app.hubspot.com/oauth/authorize`
  - Token URL: `https://api.hubapi.com/oauth/v1/token` scopes: `crm.objects.marketing_events.write`

Updates the details of an existing Marketing Event identified by its externalAccountId, externalEventId if it exists.

Only Marketing Events created by the same app can be updated.

## Path parameters

- `externalEventId` string, required

## Query parameters

- `externalAccountId` string, required

## Request body

- MarketingEventUpdateRequestParams
  - `customProperties` PropertyValue[], required: A list of PropertyValues. These can be whatever kind of property names and values you want. However, they must already exist on the HubSpot account's definition of the MarketingEvent Object. If they don't they will be filtered out and not set. In order to do this you'll need to create a new PropertyGroup on the HubSpot account's MarketingEvent object for your specific app and create the Custom Property you want to track on that HubSpot account. Do not create any new default properties on the MarketingEvent object as that will apply to all HubSpot accounts.
    - `dataSensitivity` 'high' | 'none' | 'standard', required: Level of data sensitivity
    - `isEncrypted` boolean, required: Indicates whether the property is encrypted
    - `isLargeValue` boolean, required: Indicates whether the property value is stored as a large value in the storage
    - `maskedSubstrings` MaskedSubstrings, required
      - `substrings` MaskedSubstring[], required: An array of masked substring objects, each defining a specific portion of a string to be masked. Each object in the array specifies the start and end positions of the substring to be masked.
        - `end` integer, required: An integer indicating the ending position of the masked substring.
        - `label` string, required
        - `start` integer, required: An integer indicating the starting position of the masked substring.
    - `name` string, required: Name of custom property
    - `persistenceTimestamp` integer, required: The timestamp that indicates when the value being written is persisted in storage
    - `requestId` string, required: The ID of the request
    - `selectedByUser` boolean, required: Indicates whether the property is selected
    - `selectedByUserTimestamp` integer, required: Timestamp of when the property was selected by the user
    - `source` 'ACADEMY' | 'ACCEPTANCE_TEST' | 'ACTIVITY_AUTO_ASSOCIATE' | 'ACTIVITY_LOG_REVERT' | 'ADS' | 'AI_GROUP' | 'ANALYTICS' | 'API' | 'APPROVALS' | 'ASSISTS' | 'ASSOCIATIONS' | 'AUTO_ASSOCIATE_BY_DOMAIN' | 'AUTOMATION_JOURNEY' | 'AUTOMATION_PLATFORM' | 'AVATARS_SERVICE' | 'BATCH_UPDATE' | 'BCC_TO_CRM' | 'BEHAVIORAL_EVENTS' | 'BET_ASSIGNMENT' | 'BET_CRM_CONNECTOR' | 'BIDEN' | 'BILLING' | 'BOT' | 'BREEZE_AGENT' | 'CALCULATED' | 'CENTRAL_EXCHANGE_RATES' | 'CHATSPOT' | 'CLONE_OBJECTS' | 'COMMUNICATOR' | 'COMPANIES' | 'COMPANY_FAMILIES' | 'COMPANY_INSIGHTS' | 'CONNECTED_ACCOUNT' | 'CONTACTS' | 'CONTACTS_WEB' | 'CONTENT_MEMBERSHIP' | 'CONVERSATIONAL_ENRICHMENT' | 'CONVERSATIONS' | 'CRM_PROCESSES_PLATFORM' | 'CRM_UI' | 'CRM_UI_BULK_ACTION' | 'CUSTOMER_AGENT' | 'CUSTOMER_PORTAL' | 'DATA_ENRICHMENT' | 'DATA_QUALITY' | 'DATASET' | 'DEALS' | 'DEFAULT' | 'DELETE_OBJECTS' | 'DI_WRITE_TO_CRM' | 'EMAIL' | 'EMAIL_INBOX_IMPORT' | 'EMAIL_INTEGRATION' | 'ENGAGEMENTS' | 'EXTENSION' | 'FILE_MANAGER' | 'FLYWHEEL_PRODUCT_DATA_SYNC' | 'FORECASTING' | 'FORM' | 'FORWARD_TO_CRM' | 'GMAIL_INTEGRATION' | 'GOALS' | 'HEISENBERG' | 'HELP_DESK' | 'HELP_DESK_AI' | 'IMPORT' | 'INTEGRATION' | 'INTEGRATIONS_PLATFORM' | 'INTEGRATIONS_SYNC' | 'INTENT' | 'INTERNAL_PROCESSING' | 'LEADIN' | 'LEGAL_BASIS_REMEDIATION' | 'MARKET_SOURCING' | 'MARKETPLACE' | 'MARKETS' | 'MEETINGS' | 'MERGE_COMPANIES' | 'MERGE_CONTACTS' | 'MERGE_OBJECTS' | 'MERGE_REVERT_OBJECTS' | 'MICROAPPS' | 'MIGRATION' | 'MOBILE_ANDROID' | 'MOBILE_IOS' | 'PAYMENTS' | 'PIPELINE_SETTINGS' | 'PLAYBOOKS' | 'PORTAL_OBJECT_SYNC' | 'PORTAL_USER_ASSOCIATOR' | 'PRESENTATIONS' | 'PRIMARY_AUTOMATION' | 'PROPERTY_DEFAULT_VALUE' | 'PROPERTY_RESTORE' | 'PROPERTY_SETTINGS' | 'PROSPECTING_AGENT' | 'QUOTAS' | 'QUOTES' | 'RECYCLING_BIN' | 'RESTORE_OBJECTS' | 'REVENUE_PLATFORM' | 'SALES' | 'SALES_MESSAGES' | 'SALESFORCE' | 'SEQUENCES' | 'SETTINGS' | 'SIDEKICK' | 'SIGNALS' | 'SLACK_INTEGRATION' | 'SMART_DATA_CAPTURE' | 'SOCIAL' | 'SUCCESS' | 'TALLY' | 'TASK' | 'UNKNOWN' | 'WAL_INCREMENTAL' | 'WORK_UI' | 'WORKFLOW_CONTACT_DELETE_ACTION' | 'WORKFLOWS', required: Source of the property
    - `sourceId` string, required: ID of the source of the property
    - `sourceLabel` string, required: Label of the source of the property
    - `sourceMetadata` string, required: Source metadata encoded as a base64 string
    - `sourceUpstreamDeployable` string, required: Indicates which upstream service made the property change
    - `sourceVid` integer[], required: An array of integers representing IDs associated with the source of the property value.
    - `timestamp` integer, required: Timestamp of the request
    - `unit` string, required: The unit
    - `updatedByUserId` integer, required: The ID of the user who last updated the property
    - `useTimestampAsPersistenceTimestamp` boolean, required: Indicates if the persistence timestamp is the same as storage version timestamp
    - `value` string, required: Custom property value
  - `endDateTime` string, date-time: The end date and time of the marketing event.
  - `eventCancelled` boolean: Indicates if the marketing event has been cancelled. Defaults to `false`
  - `eventCompleted` boolean: Indicates if the marketing event has been completed. Defaults to `false`
  - `eventDescription` string: The description of the marketing event.
  - `eventName` string: The name of the marketing event.
  - `eventOrganizer` string: The name of the organizer of the marketing event.
  - `eventType` string: Describes what type of event this is. For example: `WEBINAR`, `CONFERENCE`, `WORKSHOP`
  - `eventUrl` string: A URL in the external event application where the marketing event can be managed.
  - `startDateTime` string, date-time: The start date and time of the marketing event.

## Response `200`

successful operation

- MarketingEventPublicDefaultResponse
  - `createdAt` string, date-time, required: The creation date and time of the marketing event.
  - `customProperties` PropertyValue[], required: A list of PropertyValues. These can be whatever kind of property names and values you want. However, they must already exist on the HubSpot account's definition of the MarketingEvent Object. If they don't they will be filtered out and not set. In order to do this you'll need to create a new PropertyGroup on the HubSpot account's MarketingEvent object for your specific app and create the Custom Property you want to track on that HubSpot account. Do not create any new default properties on the MarketingEvent object as that will apply to all HubSpot accounts.
    - `dataSensitivity` 'high' | 'none' | 'standard', required: Level of data sensitivity
    - `isEncrypted` boolean, required: Indicates whether the property is encrypted
    - `isLargeValue` boolean, required: Indicates whether the property value is stored as a large value in the storage
    - `maskedSubstrings` MaskedSubstrings, required
      - `substrings` MaskedSubstring[], required: An array of masked substring objects, each defining a specific portion of a string to be masked. Each object in the array specifies the start and end positions of the substring to be masked.
        - `end` integer, required: An integer indicating the ending position of the masked substring.
        - `label` string, required
        - `start` integer, required: An integer indicating the starting position of the masked substring.
    - `name` string, required: Name of custom property
    - `persistenceTimestamp` integer, required: The timestamp that indicates when the value being written is persisted in storage
    - `requestId` string, required: The ID of the request
    - `selectedByUser` boolean, required: Indicates whether the property is selected
    - `selectedByUserTimestamp` integer, required: Timestamp of when the property was selected by the user
    - `source` 'ACADEMY' | 'ACCEPTANCE_TEST' | 'ACTIVITY_AUTO_ASSOCIATE' | 'ACTIVITY_LOG_REVERT' | 'ADS' | 'AI_GROUP' | 'ANALYTICS' | 'API' | 'APPROVALS' | 'ASSISTS' | 'ASSOCIATIONS' | 'AUTO_ASSOCIATE_BY_DOMAIN' | 'AUTOMATION_JOURNEY' | 'AUTOMATION_PLATFORM' | 'AVATARS_SERVICE' | 'BATCH_UPDATE' | 'BCC_TO_CRM' | 'BEHAVIORAL_EVENTS' | 'BET_ASSIGNMENT' | 'BET_CRM_CONNECTOR' | 'BIDEN' | 'BILLING' | 'BOT' | 'BREEZE_AGENT' | 'CALCULATED' | 'CENTRAL_EXCHANGE_RATES' | 'CHATSPOT' | 'CLONE_OBJECTS' | 'COMMUNICATOR' | 'COMPANIES' | 'COMPANY_FAMILIES' | 'COMPANY_INSIGHTS' | 'CONNECTED_ACCOUNT' | 'CONTACTS' | 'CONTACTS_WEB' | 'CONTENT_MEMBERSHIP' | 'CONVERSATIONAL_ENRICHMENT' | 'CONVERSATIONS' | 'CRM_PROCESSES_PLATFORM' | 'CRM_UI' | 'CRM_UI_BULK_ACTION' | 'CUSTOMER_AGENT' | 'CUSTOMER_PORTAL' | 'DATA_ENRICHMENT' | 'DATA_QUALITY' | 'DATASET' | 'DEALS' | 'DEFAULT' | 'DELETE_OBJECTS' | 'DI_WRITE_TO_CRM' | 'EMAIL' | 'EMAIL_INBOX_IMPORT' | 'EMAIL_INTEGRATION' | 'ENGAGEMENTS' | 'EXTENSION' | 'FILE_MANAGER' | 'FLYWHEEL_PRODUCT_DATA_SYNC' | 'FORECASTING' | 'FORM' | 'FORWARD_TO_CRM' | 'GMAIL_INTEGRATION' | 'GOALS' | 'HEISENBERG' | 'HELP_DESK' | 'HELP_DESK_AI' | 'IMPORT' | 'INTEGRATION' | 'INTEGRATIONS_PLATFORM' | 'INTEGRATIONS_SYNC' | 'INTENT' | 'INTERNAL_PROCESSING' | 'LEADIN' | 'LEGAL_BASIS_REMEDIATION' | 'MARKET_SOURCING' | 'MARKETPLACE' | 'MARKETS' | 'MEETINGS' | 'MERGE_COMPANIES' | 'MERGE_CONTACTS' | 'MERGE_OBJECTS' | 'MERGE_REVERT_OBJECTS' | 'MICROAPPS' | 'MIGRATION' | 'MOBILE_ANDROID' | 'MOBILE_IOS' | 'PAYMENTS' | 'PIPELINE_SETTINGS' | 'PLAYBOOKS' | 'PORTAL_OBJECT_SYNC' | 'PORTAL_USER_ASSOCIATOR' | 'PRESENTATIONS' | 'PRIMARY_AUTOMATION' | 'PROPERTY_DEFAULT_VALUE' | 'PROPERTY_RESTORE' | 'PROPERTY_SETTINGS' | 'PROSPECTING_AGENT' | 'QUOTAS' | 'QUOTES' | 'RECYCLING_BIN' | 'RESTORE_OBJECTS' | 'REVENUE_PLATFORM' | 'SALES' | 'SALES_MESSAGES' | 'SALESFORCE' | 'SEQUENCES' | 'SETTINGS' | 'SIDEKICK' | 'SIGNALS' | 'SLACK_INTEGRATION' | 'SMART_DATA_CAPTURE' | 'SOCIAL' | 'SUCCESS' | 'TALLY' | 'TASK' | 'UNKNOWN' | 'WAL_INCREMENTAL' | 'WORK_UI' | 'WORKFLOW_CONTACT_DELETE_ACTION' | 'WORKFLOWS', required: Source of the property
    - `sourceId` string, required: ID of the source of the property
    - `sourceLabel` string, required: Label of the source of the property
    - `sourceMetadata` string, required: Source metadata encoded as a base64 string
    - `sourceUpstreamDeployable` string, required: Indicates which upstream service made the property change
    - `sourceVid` integer[], required: An array of integers representing IDs associated with the source of the property value.
    - `timestamp` integer, required: Timestamp of the request
    - `unit` string, required: The unit
    - `updatedByUserId` integer, required: The ID of the user who last updated the property
    - `useTimestampAsPersistenceTimestamp` boolean, required: Indicates if the persistence timestamp is the same as storage version timestamp
    - `value` string, required: Custom property value
  - `endDateTime` string, date-time: The end date and time of the marketing event.
  - `eventCancelled` boolean: Indicates if the marketing event has been cancelled.
  - `eventCompleted` boolean: Indicates if the marketing event has been completed.
  - `eventDescription` string: The description of the marketing event.
  - `eventName` string, required: The name of the marketing event.
  - `eventOrganizer` string, required: The name of the organizer of the marketing event.
  - `eventType` string: The type of the marketing event.
  - `eventUrl` string: A URL in the external event application where the marketing event can be managed.
  - `id` string, required: The ID of the marketing event CRM object.
  - `objectId` string: The ID of the marketing event CRM object.
  - `startDateTime` string, date-time: The start date and time of the marketing event.
  - `updatedAt` string, date-time, required: The update date and time of the marketing event.

## Other responses

- `default`: An error occurred.

## Changes

- **2026-10-16** (2026-09) `3afcf69ad1b4`: 1 breaking, 1 info
  - added the new required request property `customProperties/items/maskedSubstrings/substrings/items/label`
  - added the required property `customProperties/items/maskedSubstrings/substrings/items/label` to the response with the `200` status
- **2026-09-03** (2026-09) `e62ad9a49a20`: 1 breaking, 6 warning, 8 info
  - added the new required request property `customProperties/items/maskedSubstrings`
  - added the new `BREEZE_AGENT` enum value to the `customProperties/items/source` response property for the response status `200`
  - added the new `CONNECTED_ACCOUNT` enum value to the `customProperties/items/source` response property for the response status `200`
  - added the new `CUSTOMER_PORTAL` enum value to the `customProperties/items/source` response property for the response status `200`
  - …11 more

[Operation history](https://skmtc.dev/hubspot/apis/marketing-marketing-events/changes/marketing/marketing-events/2026-09/events/:externalEventId/patch.md)

---

[API](https://skmtc.dev/hubspot/apis/marketing-marketing-events.md) - [All operations](https://skmtc.dev/hubspot/apis/marketing-marketing-events/llms.txt) - [OpenAPI document](https://skmtc.dev/hubspot/apis/marketing-marketing-events/revisions/3afcf69ad1b4?raw)
