> ## Documentation Index
> Fetch the complete documentation index at: https://developers.hubspot.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

---
id: 59ef604d-1512-45eb-a3a7-fbe5246ffe4d
---

# Create an event

> Creates a new marketing event in HubSpot

export const ScopesList = ({scopes = [], description = "This API requires one of the following scopes:"}) => {
  if (!scopes || scopes.length === 0) {
    return null;
  }
  const sortedScopes = scopes.sort((a, b) => a.localeCompare(b));
  return <div>
      <div className="text-sm mb-2">{description}</div>
      <div>
        {sortedScopes.map((scope, index) => <div key={index}>
            <code>
              <span className="text-xs">{scope}</span>
            </code>
          </div>)}
      </div>
    </div>;
};

export const SupportedProducts = ({marketing, sales, service, cms, data, commerce, marketingLevel, salesLevel, serviceLevel, cmsLevel, dataLevel, commerceLevel}) => {
  const translations = {
    description: "Requires one of the following products or higher.",
    productNames: {
      marketing: "Marketing Hub",
      sales: "Sales Hub",
      service: "Service Hub",
      cms: "Content Hub",
      data: "Data Hub",
      commerce: "Revenue Hub"
    },
    tiers: {
      free: "Free",
      starter: "Starter",
      professional: "Professional",
      enterprise: "Enterprise"
    }
  };
  const translateTier = tier => {
    if (!tier) return '';
    const lowerTier = tier.toLowerCase();
    return translations.tiers[lowerTier] || tier;
  };
  const products = [{
    name: marketing ? translations.productNames.marketing : '',
    level: translateTier(marketingLevel),
    icon: "https://mintlify-assets.b-cdn.net/Icons/marketing-bolt.svg",
    alt: "Marketing Hub"
  }, {
    name: sales ? translations.productNames.sales : '',
    level: translateTier(salesLevel),
    icon: "https://mintlify-assets.b-cdn.net/Icons/sales-star.svg",
    alt: "Sales Hub"
  }, {
    name: service ? translations.productNames.service : '',
    level: translateTier(serviceLevel),
    icon: "https://mintlify-assets.b-cdn.net/Icons/service-heart.svg",
    alt: "Service Hub"
  }, {
    name: cms ? translations.productNames.cms : '',
    level: translateTier(cmsLevel),
    icon: "https://mintlify-assets.b-cdn.net/Icons/content-play.svg",
    alt: "Content Hub"
  }, {
    name: data ? translations.productNames.data : '',
    level: translateTier(dataLevel),
    icon: "https://developers.hubspot.com/hubfs/Knowledge_Base_2023-24-25/subscription_key_icons/operations_icon.svg",
    alt: "Data Hub"
  }, {
    name: commerce ? translations.productNames.commerce : '',
    level: translateTier(commerceLevel),
    icon: "https://developers.hubspot.com/hubfs/Knowledge_Base/subscription_key_icons/commerce_icon.svg",
    alt: "Revenue Hub"
  }].filter(product => product.name && product.level);
  if (products.length === 0) return null;
  return <div>
      <div className="text-sm mb-2">{translations.description}</div>
      <div className={`grid ${products.length === 1 ? 'grid-cols-1' : 'grid-cols-2'} gap-1.5`}>
        {products.map((product, index) => <div key={index} style={{
    display: 'flex',
    alignItems: 'center'
  }}>
            <img src={product.icon} alt={product.alt} className="w-3.5 h-3.5 mr-1.5 mt-2.5 mb-2.5 flex-shrink-0 align-middle" />
            <span className="font-medium mr-1 text-sm">{product.name} -</span>
            <span className="text-sm">{product.level}</span>
          </div>)}
      </div>
    </div>;
};

<AccordionGroup>
  <Accordion title="Supported products" defaultOpen="true" icon="cubes">
    <SupportedProducts marketing={true} sales={true} service={true} cms={true} marketingLevel="FREE" salesLevel="FREE" serviceLevel="FREE" cmsLevel="FREE" />
  </Accordion>

  <Accordion title="Required Scopes" icon="key">
    <ScopesList
      scopes={[
  'crm.objects.marketing_events.write'
]}
    />
  </Accordion>
</AccordionGroup>


## OpenAPI

````yaml specs/2026-03/marketing-marketing-events-v2026-03.json POST /marketing/marketing-events/2026-03/events
openapi: 3.0.1
info:
  title: Marketing Marketing Events
  description: Basepom for all HubSpot Projects
  version: 2026-03
  x-hubspot-product-tier-requirements:
    marketing: FREE
    sales: FREE
    service: FREE
    cms: FREE
    commerce: FREE
    crmHub: FREE
    dataHub: FREE
servers:
  - url: https://api.hubapi.com
security: []
tags:
  - name: Basic
  - name: Batch
  - name: Event Attendees
  - name: Event Status
  - name: Identifiers
  - name: List Associations
  - name: Participant State
  - name: Settings
  - name: Subscriber State Changes
paths:
  /marketing/marketing-events/2026-03/events:
    post:
      tags:
        - Basic
      summary: Create a marketing event
      description: Creates a new marketing event in HubSpot
      operationId: post-/marketing/marketing-events/2026-03/events_create
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MarketingEventCreateRequestParams'
        required: true
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MarketingEventDefaultResponse'
        default:
          $ref: '#/components/responses/Error'
          description: ''
      security:
        - oauth2:
            - crm.objects.marketing_events.write
components:
  schemas:
    MarketingEventCreateRequestParams:
      required:
        - customProperties
        - eventName
        - eventOrganizer
        - externalAccountId
        - externalEventId
      type: object
      properties:
        customProperties:
          type: array
          description: >
            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.
          items:
            $ref: '#/components/schemas/PropertyValue'
        endDateTime:
          type: string
          description: The end date and time of the marketing event.
          format: date-time
        eventCancelled:
          type: boolean
          description: >-
            Indicates if the marketing event has been cancelled.  Defaults to
            `false`
        eventCompleted:
          type: boolean
          description: >-
            Indicates if the marketing event has been completed.  Defaults to
            `false`
        eventDescription:
          type: string
          description: The description of the marketing event.
        eventName:
          type: string
          description: The name of the marketing event.
        eventOrganizer:
          type: string
          description: The name of the organizer of the marketing event.
        eventType:
          type: string
          description: >-
            Describes what type of event this is.  For example: `WEBINAR`,
            `CONFERENCE`, `WORKSHOP`
        eventUrl:
          type: string
          description: >-
            A URL in the external event application where the marketing event
            can be managed.
        externalAccountId:
          type: string
          description: >-
            The accountId that is associated with this marketing event in the
            external event application.
        externalEventId:
          type: string
          description: The id of the marketing event in the external event application.
        startDateTime:
          type: string
          description: The start date and time of the marketing event.
          format: date-time
    MarketingEventDefaultResponse:
      required:
        - customProperties
        - eventName
        - eventOrganizer
      type: object
      properties:
        customProperties:
          type: array
          description: >
            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.
          items:
            $ref: '#/components/schemas/PropertyValue'
        endDateTime:
          type: string
          description: The end date and time of the marketing event.
          format: date-time
        eventCancelled:
          type: boolean
          description: Indicates if the marketing event has been cancelled.
        eventCompleted:
          type: boolean
          description: Indicates if the marketing event has been completed.
        eventDescription:
          type: string
          description: The description of the marketing event.
        eventName:
          type: string
          description: The name of the marketing event.
        eventOrganizer:
          type: string
          description: The name of the organizer of the marketing event.
        eventType:
          type: string
          description: The type of the marketing event.
        eventUrl:
          type: string
          description: >-
            The URL in the external event application where the marketing event
            can be managed.
        objectId:
          type: string
          description: The ID of the marketing event CRM object
        startDateTime:
          type: string
          description: The start date and time of the marketing event.
          format: date-time
    PropertyValue:
      required:
        - dataSensitivity
        - isEncrypted
        - isLargeValue
        - name
        - persistenceTimestamp
        - requestId
        - selectedByUser
        - selectedByUserTimestamp
        - source
        - sourceId
        - sourceLabel
        - sourceMetadata
        - sourceUpstreamDeployable
        - sourceVid
        - timestamp
        - unit
        - updatedByUserId
        - useTimestampAsPersistenceTimestamp
        - value
      type: object
      properties:
        dataSensitivity:
          type: string
          description: Level of data sensitivity
          enum:
            - high
            - none
            - standard
        isEncrypted:
          type: boolean
          description: Indicates whether the property is encrypted
        isLargeValue:
          type: boolean
          description: >-
            Indicates whether the property value is stored as a large value in
            the storage
        name:
          type: string
          description: Name of custom property
        persistenceTimestamp:
          type: integer
          description: >-
            The timestamp that indicates when the value being written is
            persisted in storage
          format: int64
        requestId:
          type: string
          description: The ID of the request
        selectedByUser:
          type: boolean
          description: Indicates whether the property is selected
        selectedByUserTimestamp:
          type: integer
          description: Timestamp of when the property was selected by the user
          format: int64
        source:
          type: string
          description: Source of the property
          enum:
            - 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
        sourceId:
          type: string
          description: ID of the source of the property
        sourceLabel:
          type: string
          description: Label of the source of the property
        sourceMetadata:
          type: string
          description: Source metadata encoded as a base64 string
        sourceUpstreamDeployable:
          type: string
          description: Indicates which upstream service made the property change
        sourceVid:
          type: array
          description: The unique identifier associated with the source.
          items:
            type: integer
            format: int64
        timestamp:
          type: integer
          description: Timestamp of the request
          format: int64
        unit:
          type: string
          description: The unit
        updatedByUserId:
          type: integer
          description: The ID of the user who last updated the property
          format: int32
        useTimestampAsPersistenceTimestamp:
          type: boolean
          description: >-
            Indicates if the persistence timestamp is the same as storage
            version timestamp
        value:
          type: string
          description: Custom property value
      description: >-
        Represents a single custom property of a marketing event, storing its
        name, value, metadata (like source, timestamp, and sensitivity), and
        related audit information for tracking changes.
    Error:
      required:
        - category
        - correlationId
        - message
      type: object
      properties:
        category:
          type: string
          description: The error category
        context:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: Context about the error condition
          example: >-
            {invalidPropertyName=[propertyValue], missingScopes=[scope1,
            scope2]}
        correlationId:
          type: string
          description: >-
            A unique identifier for the request. Include this value with any
            error reports or support tickets
          format: uuid
          example: aeb5f871-7f07-4993-9211-075dc63e7cbf
        errors:
          type: array
          description: further information about the error
          items:
            $ref: '#/components/schemas/ErrorDetail'
        links:
          type: object
          additionalProperties:
            type: string
          description: >-
            A map of link names to associated URIs containing documentation
            about the error or recommended remediation steps
        message:
          type: string
          description: >-
            A human readable message describing the error along with remediation
            steps where appropriate
          example: An error occurred
        subCategory:
          type: string
          description: >-
            A specific category that contains more specific detail about the
            error
      example:
        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
    ErrorDetail:
      required:
        - message
      type: object
      properties:
        code:
          type: string
          description: The status code associated with the error detail
        context:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: Context about the error condition
          example: '{missingScopes=[scope1, scope2]}'
        in:
          type: string
          description: The name of the field or parameter in which the error was found.
        message:
          type: string
          description: >-
            A human readable message describing the error along with remediation
            steps where appropriate
        subCategory:
          type: string
          description: >-
            A specific category that contains more specific detail about the
            error
  responses:
    Error:
      description: An error occurred.
      content:
        '*/*':
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    oauth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://app.hubspot.com/oauth/authorize
          tokenUrl: https://api.hubapi.com/oauth/v1/token
          scopes:
            crm.objects.marketing_events.read: ''
            crm.objects.marketing_events.write: ''
            developers-read: ''
            developers-write: ''

````