> ## 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: 86ad8f1b-0a07-4302-8503-f91a8e37195b
---

# Create an event property

> Create a new property for an existing event definition.

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, crm, marketingLevel, salesLevel, serviceLevel, cmsLevel, dataLevel, commerceLevel, crmLevel}) => {
  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",
      crm: "Smart CRM"
    },
    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://www.hubspot.com/hubfs/Knowledge_Base_2023-24-25/developer/icons/MarketingHub.svg",
    alt: "Marketing Hub"
  }, {
    name: sales ? translations.productNames.sales : '',
    level: translateTier(salesLevel),
    icon: "https://www.hubspot.com/hubfs/Knowledge_Base_2023-24-25/developer/icons/SalesHub.svg",
    alt: "Sales Hub"
  }, {
    name: service ? translations.productNames.service : '',
    level: translateTier(serviceLevel),
    icon: "https://www.hubspot.com/hubfs/Knowledge_Base_2023-24-25/developer/icons/ServiceHub.svg",
    alt: "Service Hub"
  }, {
    name: cms ? translations.productNames.cms : '',
    level: translateTier(cmsLevel),
    icon: "https://www.hubspot.com/hubfs/Knowledge_Base_2023-24-25/developer/icons/ContentHub.svg",
    alt: "Content Hub"
  }, {
    name: data ? translations.productNames.data : '',
    level: translateTier(dataLevel),
    icon: "https://www.hubspot.com/hubfs/Knowledge_Base_2023-24-25/developer/icons/DataHub.svg",
    alt: "Data Hub"
  }, {
    name: commerce ? translations.productNames.commerce : '',
    level: translateTier(commerceLevel),
    icon: "https://www.hubspot.com/hubfs/Knowledge_Base/subscription_key_icons/commerce_icon.svg",
    alt: "Revenue Hub"
  }, {
    name: crm ? translations.productNames.crm : '',
    level: translateTier(crmLevel),
    icon: "https://www.hubspot.com/hubfs/Knowledge_Base_2023-24-25/developer/icons/SmartCRM.svg",
    alt: "Smart CRM"
  }].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} data={true} commerce={true} marketingLevel="professional" salesLevel="professional" serviceLevel="professional" cmsLevel="professional" dataLevel="professional" commerceLevel="professional" />
  </Accordion>

  <Accordion title="Required Scopes" icon="key">
    <ScopesList
      scopes={[
  'behavioral_events.event_definitions.read_write'
]}
    />
  </Accordion>
</AccordionGroup>


## OpenAPI

````yaml specs/2026-03/events-manage-event-definitions-v2026-03.json POST /events/2026-03/event-definitions/{eventName}/property
openapi: 3.0.1
info:
  title: Events Manage Event Definitions
  description: Basepom for all HubSpot Projects
  version: 2026-03
  x-hubspot-product-tier-requirements:
    marketing: ENTERPRISE
    sales: ENTERPRISE
    service: ENTERPRISE
    cms: ENTERPRISE
    commerce: ENTERPRISE
    crmHub: ENTERPRISE
    dataHub: ENTERPRISE
servers:
  - url: https://api.hubapi.com
security: []
tags:
  - name: Advanced
  - name: Basic
  - name: Batch
paths:
  /events/2026-03/event-definitions/{eventName}/property:
    post:
      tags:
        - Advanced
      summary: Create a property for an event definition
      description: Create a new property for an existing event definition.
      operationId: post-/events/2026-03/event-definitions/{eventName}/property
      parameters:
        - name: eventName
          in: path
          description: ''
          required: true
          style: simple
          explode: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExternalBehavioralEventPropertyCreate'
        required: true
      responses:
        '201':
          description: successful operation
          headers:
            Location:
              description: URL of the newly created resource
              style: simple
              explode: false
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Property'
        default:
          $ref: '#/components/responses/Error'
          description: ''
      security:
        - oauth2:
            - behavioral_events.event_definitions.read_write
components:
  schemas:
    ExternalBehavioralEventPropertyCreate:
      required:
        - label
        - type
      type: object
      properties:
        description:
          type: string
          description: >-
            A description of the property that will be shown as help text in
            HubSpot.
        label:
          type: string
          description: Human readable label for the property. Used in HubSpot UI
        name:
          type: string
          description: >-
            Internal property name, which must be used when referencing the
            property from the API
        options:
          type: array
          description: >-
            A list of available options for the property if it is an
            enumeration. NOTE: This field is only applicable for enumerated
            properties.
          items:
            $ref: '#/components/schemas/OptionInput'
        type:
          type: string
          description: >-
            The data type of the property. Can be one of the following: [string,
            number, enumeration, datetime]
    Property:
      required:
        - description
        - fieldType
        - groupName
        - label
        - name
        - options
        - type
      type: object
      properties:
        archived:
          type: boolean
          description: Whether the property is archived.
        archivedAt:
          type: string
          description: The timestamp when the property was archived, in ISO 8601 format.
          format: date-time
        calculated:
          type: boolean
          description: Whether the property is a calculated field.
        calculationFormula:
          type: string
          description: The formula used for calculated properties.
        createdAt:
          type: string
          description: The timestamp when the property was created, in ISO 8601 format.
          format: date-time
        createdUserId:
          type: string
          description: The ID of the user who created the property.
        currencyPropertyName:
          type: string
          description: The name of the related currency property.
        dataSensitivity:
          type: string
          description: >-
            Indicates the sensitivity level of the property, such as
            "non_sensitive", "sensitive", or "highly_sensitive".
          enum:
            - highly_sensitive
            - non_sensitive
            - sensitive
        dateDisplayHint:
          type: string
          enum:
            - absolute
            - absolute_with_relative
            - time_since
            - time_until
        description:
          type: string
          description: A summary of the property's purpose.
        displayOrder:
          type: integer
          description: The position of the item relative to others in the list.
          format: int32
        externalOptions:
          type: boolean
          description: >-
            Applicable only for enumeration type properties. Should be set to
            true with a 'referencedObjectType' of 'OWNER'. Otherwise false.
        fieldType:
          type: string
          description: >-
            Determines how the property will appear in HubSpot's UI or on a
            form. Learn more in the properties API guide.
        formField:
          type: boolean
          description: Whether the property can appear on forms.
        groupName:
          type: string
          description: The name of the group to which the property is assigned.
        hasUniqueValue:
          type: boolean
          description: Whether the property is a unique identifier property.
        hidden:
          type: boolean
          description: >-
            Whether or not the property will be hidden from the HubSpot UI. It's
            recommended that this be set to false for custom properties.
          example: false
        hubspotDefined:
          type: boolean
          description: A boolean value set to true for HubSpot default properties.
        label:
          type: string
          description: The display label for the property.
        modificationMetadata:
          $ref: '#/components/schemas/PropertyModificationMetadata'
        name:
          type: string
          description: The internal name for the property.
        numberDisplayHint:
          type: string
          description: >-
            Hint for how a number property is displayed and validated in
            HubSpot's UI. Can be: "unformatted", "formatted", "currency",
            "percentage", "duration", or "probability".
          enum:
            - currency
            - duration
            - formatted
            - percentage
            - probability
            - unformatted
        options:
          type: array
          description: >-
            A list of valid options for the property. This field is required for
            enumerated properties.
          items:
            $ref: '#/components/schemas/Option'
        referencedObjectType:
          type: string
          description: Deprecated. Use externalOptionsReferenceType instead.
        sensitiveDataCategories:
          type: array
          description: >-
            When sensitiveData is true, lists the type of sensitive data
            contained in the property (e.g., "HIPAA").
          items:
            type: string
        showCurrencySymbol:
          type: boolean
          description: Whether to show the currency symbol in HubSpot's UI.
        textDisplayHint:
          type: string
          description: >-
            Hint for how the text is displayed and validated in HubSpot's UI.
            Can be: "unformatted_single_line", "multi_line", "email",
            "phone_number", "domain_name", "ip_address", "physical_address", or
            "postal_code".
          enum:
            - domain_name
            - email
            - ip_address
            - multi_line
            - phone_number
            - physical_address
            - postal_code
            - unformatted_single_line
        type:
          type: string
          description: The data type of the property, such as string or number.
        updatedAt:
          type: string
          description: >-
            The timestamp when the property was last updated, in ISO 8601
            format.
          format: date-time
        updatedUserId:
          type: string
      description: A HubSpot property
    OptionInput:
      required:
        - displayOrder
        - hidden
        - label
        - value
      type: object
      properties:
        description:
          type: string
        displayOrder:
          type: integer
          format: int32
        hidden:
          type: boolean
        label:
          type: string
        value:
          type: string
    PropertyModificationMetadata:
      required:
        - archivable
        - readOnlyDefinition
        - readOnlyValue
      type: object
      properties:
        archivable:
          type: boolean
        readOnlyDefinition:
          type: boolean
        readOnlyOptions:
          type: boolean
        readOnlyValue:
          type: boolean
    Option:
      required:
        - hidden
        - label
        - value
      type: object
      properties:
        description:
          type: string
          description: A description of the option.
        displayOrder:
          type: integer
          description: The position of the item relative to others in the list.
          format: int32
        hidden:
          type: boolean
          description: Whether the option is displayed in HubSpot's UI.
        label:
          type: string
          description: A user-friendly label that identifies the option.
        value:
          type: string
          description: The actual value of the option.
      description: A HubSpot property option
    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
      description: >-
        Represents an error response returned by the API when an operation
        fails. This component is used in various endpoints to provide detailed
        information about the error encountered.
      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
      description: >-
        Represents detailed information about an error that occurred in the API.
        This component is used to provide additional context and specifics about
        errors, typically as part of an error response.
  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:
            analytics.behavioral_events.send: ''
            behavioral_events.event_definitions.read_write: ''

````