Custom timeline event option label drops final word in rendered header

An event header is missing the word “by” from an enum’s label while being displayed in the contact’s timeline activity.

The factual output:

LinkedIn message replied to User (without BY)

App event definition example:

{
  "uid": "linkedin_conversation_message",
  "type": "app-event",
  "config": {
    "name": "LinkedIn conversation message",
    "objectType": "CONTACT",
    "headerTemplate": "{{type}} {{userName}}",
    "detailTemplate": "{{text}}",
    "properties": [
      {
        "name": "userName",
        "label": "Sender name",
        "type": "string"
      },
      {
        "name": "type",
        "label": "Message direction",
        "description": "Message direction relative to the Dripify user",
        "type": "enumeration",
        "options": [
          {
            "value": "LINKEDIN_SENT",
            "label": "LinkedIn message sent to"
          },
          {
            "value": "LINKEDIN_REPLIED",
            "label": "LinkedIn message replied by" // with BY
          }
        ]
      },
      {
        "name": "text",
        "label": "Message text",
        "description": "Full text of the message",
        "type": "string"
      }
    ]
  }
}

Hey @bk-dripify,

Welcome to the Community!

Great debugging detail – I appreciate the specific example!

While we wait for some peer input, I’d suggest looking further here:

Hopefully this doc gets you pointed in the right direction, but also tagging in a few folks from the community who may be able to give you some more specific advice!

Hey @MichaelMa, @Anton, @Josh – do you have any suggestions for @bk-dripify on this?

Thanks!

Sam, Community Manager

Hi @bk-dripify
Thanks for reporting this. It looks like a small UI formatting issue rather than a problem with the event itself.

I suggest including the event type, a sample event payload (with any sensitive information removed), and whether this happens consistently across all enum values or only this specific one.

That should help the HubSpot team reproduce and investigate it more quickly.

Hi, attaching the sample event payload:

{
  "inputs": [
    {
      "id": "828904090841:1784887544918:LINKEDIN_SENT:cd1fa272",
      "eventTypeName": "linkedin_conversation_message",
      "properties": {
        "userName": "<GENERIC SENDER>",
        "type": "LINKEDIN_SENT",
        "text": "Hello again"
      },
      "objectId": "828904090841",
      "timestamp": "2026-07-24T10:05:44.918Z"
    },
    {
      "id": "828904090841:1784887573622:LINKEDIN_REPLIED:80b4ddd5",
      "eventTypeName": "linkedin_conversation_message",
      "properties": {
        "userName": "<GENERIC SENDER 2>",
        "type": "LINKEDIN_REPLIED",
        "text": "Hi too"
      },
      "objectId": "828904090841",
      "timestamp": "2026-07-24T10:06:13.622Z"
    }
  ]
}

This also happened to the second enum, so I can assume the parsers always trim the last word of the enum label.

An example of the transformation:
“LinkedIn message sent to” → “LinkedIn message sent”
“LinkedIn message replied by” → “LinkedIn message replied”

Hi @bk-dripify !

Jumping in here!

It looks like the issue is with the field name used for your enumeration options. For enumeration type properties, the app events reference specifies that each option object requires a name field (not label) for the display text. HubSpot appears to ignore the unrecognized label key and falls back to rendering the raw value — which is why you’re seeing truncated or unexpected text in the timeline header.

Update your enumeration options to use name instead of label:

"options": [
  {
    "value": "LINKEDIN_SENT",
    "name": "LinkedIn message sent to"
  },
  {
    "value": "LINKEDIN_REPLIED",
    "name": "LinkedIn message replied by"
  }
]

Note that label is valid for top-level property definitions (like your userName, type, and text properties) — it’s specifically within the options array where name is required.

Give that a try and let us know if it resolves the issue!

Cassie, Community Manager

Hi, @chighsmith !

Thanks for the response.

Unfortunately, the proposed solution is not passing HubSpot CLI validation with either name only, and both name and label.

With both name and label:

[ERROR] Project dripify-hubspot-platform is invalid
[ERROR] Project validation failed:
Encountered the following errors for dripify-hubspot-platform/src/app/app-events/linkedin-conversation-message-hsmeta.json:
	- config.properties.1.options.0: must NOT have additional properties 
		-  additionalProperty: name
	- config.properties.1.options.1: must NOT have additional properties 
		-  additionalProperty: name

With name only:

[ERROR] Project dripify-hubspot-platform is invalid
[ERROR] Project validation failed:

Encountered the following errors for dripify-hubspot-platform/src/app/app-events/linkedin-conversation-message-hsmeta.json:
	- Missing required field: 'config.properties.1.options.0.label'
	- config.properties.1.options.0: must NOT have additional properties 
		-  additionalProperty: name
	- Missing required field: 'config.properties.1.options.1.label'
	- config.properties.1.options.1: must NOT have additional properties 
		-  additionalProperty: name

In addition, the HubSpot documentation lists label rather than name in all the enumeration definition examples.

Could you investigate, please?

Hey @bk-dripify,

Thanks so much for confirming what you’ve attempted here. Your options should look like:

My last thoughts here based on the documentation would be only to keep value and label? Such as it seems all the code examples use value and **label.
**
Going to tag a in a few more folks from the community to see if they’ve dealt with this before.

Hey @GRajput, @UlianaV, @evaldas – have you come across this before?

Thanks!

Sam, Community Manager