Última modificação: 11 de setembro de 2025
Veja abaixo as informações de referência para usar eventos de aplicativo, incluindo esquemas de tipo de evento, modelos de renderização de linha do tempo de eventos, campos de ocorrência de eventos e muito mais.
Estrutura do projeto
No contexto de um projeto, as definições de tipo de evento serão colocadas em um diretórioapp-events
em app/
. O diretório app-events
deve conter um arquivo de definição de esquema JSON para cada tipo de evento (*-hsmeta.json
).
- Seu aplicativo deve usar a autenticação OAuth e ser configurado para distribuição no Marketplace de aplicativos. Além disso, o aplicativo deve incluir
timeline
no seurequiredScopes
. Saiba mais sobre a configuração de aplicativos. - Seu projeto deve ser implantado com êxito para que um componente de evento de aplicativo possa ser incluído.
Esquema de tipo de evento
Veja abaixo as opções de configuração disponíveis para esquemas de tipo de evento (*-hsmeta.json
). Observe que alguns atributos abaixo não podem ser alterados depois da criação do tipo de evento.
Cada aplicativo tem um limite de 750 tipos de eventos.
Campos marcados com * são obrigatórios.
Campo | Tipo | Descrição |
---|---|---|
uid * | String | Um identificador exclusivo interno para o tipo de evento. |
type * | String | O tipo de componente. Deve ser app-event . |
name * | String | O rótulo exibido no HubSpot (até 50 caracteres). Este valor não pode ser atualizado após a criação. |
objectType * | String | O nome totalmente qualificado do objeto do CRM ao qual as ocorrências de evento podem ser associadas. Este valor não pode ser alterado após a criação. Pode ser um dos seguintes: COMPANY , CONTACT , CUSTOM_OBJECT , DEAL , TICKET , APP_OBJECT . |
headerTemplate | String | O modelo de renderização para o cabeçalho do cartão de atividades de linha do tempo do CRM. Pode ter até 1.000 caracteres de comprimento. |
detailTemplate | String | O modelo de renderização para o corpo do cartão de atividades de linha do tempo do CRM. Pode ter até 10.000 caracteres de comprimento. |
properties | Matriz | Propriedades definidas para o tipo de evento no qual você armazenará dados de ocorrência de evento. Cada tipo de evento pode ter até 500 propriedades. Saiba mais sobre propriedades de evento abaixo. |
Propriedades do evento
Ao definir o esquema de evento, use a matrizproperties
para definir os campos para os quais os dados de ocorrência de evento serão enviados. Cada tipo de evento pode ter até 500 propriedades.
Campos marcados com * são obrigatórios.
Campo | Tipo | Descrição |
---|---|---|
name * | String | O nome interno da propriedade. Deve ter entre 1 e 500 caracteres minúsculos. Os nomes das propriedades devem ser exclusivos por tipo de evento. Este valor não pode corresponder ao regex "[A-Za-z0-9_\\-.]+" ou começar com hs_ . |
label * | String | O rótulo exibido em HubSpot. Deve ter entre 1 e 500 caracteres minúsculos. |
type * | String | O tipo de dados capturados na propriedade. Pode ser: STRING , NUMBER , DATE , ENUMERATION . |
options | Matriz | Para tipos de propriedade ENUMERATION , este campo fornece as opções disponíveis. Deve conter pelo menos uma opção. Cada opção é um objeto que contém:
name e label devem ser exclusivos ao tipo de evento. |
objectPropertyName | String | Se incluído, o nome do objeto do CRM que deve ser atualizado quando dados de evento são enviados ao HubSpot. O valor desta propriedade substituirá os valores existentes nessa propriedade. Saiba mais sobre como usar o carimbo de propriedades de registro de CRM abaixo. |
Carimbos de propriedade
Em alguns casos, talvez você queira modificar os valores da propriedade do registro do CRM com base nos dados de ocorrência do evento do aplicativo. Por exemplo, você pode querer atualizar o nome e o sobrenome de um contato com novos valores definidos pela ocorrência (por exemplo, envio de formulário). Para atualizar as propriedades de registro por meio de ocorrências de evento, você pode vincular uma propriedade de evento a uma propriedade de CRM no esquema de tipo de evento. Nos campos de definição de uma determinada propriedade de evento, inclua o campoobjectPropertyName
e especifique a propriedade de CRM a vincular. Quando uma propriedade é vinculada, o HubSpot sempre atualiza o valor da propriedade no registro de CRM usando o valor da ocorrência mais recente com base no campo timestamp
.
Por exemplo, o esquema de tipo de evento abaixo vincula a propriedade de evento customerName
a uma propriedade do contato personalizada denominada custom_property_name
. Quando os dados de ocorrência de evento incluir um valor para customerName
, custom_property_name
será atualizado para o registro de CRM associado.
Renderização de modelos
Os esquemas de tipo de evento podem incluir oheaderTemplate
e detailTemplate
para configurar como as ocorrências do evento são renderizadas nas linhas do tempo de registro de CRM.
headerTemplate
: uma descrição em uma linha do evento na parte superior do cartão de atividade (até 1.000 caracteres).detailTemplate
: os detalhes do evento no corpo do cartão de atividade (até 10.000 caracteres).
- Em ambos os modelos, você pode acessar qualquer dados de
property
passados pela ocorrência do evento usando a sintaxe{{propertyName}}
. - Na janela
detailTemplate
, você pode acessar também valores deextraData
transmitidos pela ocorrência do evento usando a sintaxe{{extraData.fieldName}}
. Você pode acessar qualquer categoria de atributo emextraData
por meio da notação de ponto, como{{extraData.person1.preferredName}}
.
O objeto
extraData
só pode conter JSON válido. Se o JSON estiver malformado, a ocorrência será rejeitada e você receberá uma resposta de erro.customerName
e loginLocation
com o campo surveyData
de extraData
enviado através da ocorrência do evento.

detailTemplate
inclui o #if
auxiliar para processar conteúdo condicionalmente com base no fato de os dados de ocorrência do evento incluírem o campo surveyData
em extraData
.
- Se
extraData
contémsurveyData
, as respostas da pesquisa pós-login são mostradas. - Se não havia
surveyData
presente na ocorrência do evento, renderizarNo additional information.
.

Uso de iframes
Quando os dados de ocorrência do evento contiverem o campotimelineIFrame
, o cartão de atividade da linha do tempo incluirá um hiperlink em que os usuários podem clicar para abrir o conteúdo vinculado em um iframe.

Campo | Tipo | Descrição |
---|---|---|
linkLabel | String | O texto do hiperlink que iniciará o iframe ao ser clicado. |
headerLabel | String | O rótulo da janela do modal que mostra o conteúdo do iframe. |
url | String | O URL do conteúdo do iframe. |
width | Inteiro | A largura do modal iframe. |
height | Inteiro | A altura do modal iframe. |
Ocorrências de eventos
Para enviar ocorrências de um determinado tipo de evento, faça uma solicitação dePOST
aos pontos de extremidade abaixo. A API de eventos do aplicativo inclui pontos de extremidade para enviar ocorrências de eventos únicos e lotes de várias ocorrências de eventos. Para ambos os pontos de extremidade, os dados de ocorrência do evento precisarão ser validados em relação a um esquema de tipo de evento existente, que você especificará com eventTypeName
no corpo do pedido.
Para enviar uma única ocorrência de evento, faça uma solicitação de
POST
para /integrators/timeline/v4/events
.No corpo da solicitação, inclua os dados de ocorrência do evento, cumprindo o esquema definido do tipo de evento.eventTypeName
, que você pode recuperar via API.
Campos marcados com * são obrigatórios.
Campo | Tipo | Descrição |
---|---|---|
eventTypeName * | String | O nome totalmente qualificado do tipo de evento, usado para identificar o evento via API. Esse valor é automaticamente definido pelo HubSpot e pode ser obtido através da API depois da criação do tipo de evento. Este valor não pode ser alterado após a criação. |
objectId * | String | O ID do registro de CRM para associar à ocorrência do evento. Este campo pode ser usado para todos os tipos de registros de CRM e é o identificador recomendado. Saiba mais sobre associação de registro de CRM. |
email | String | Para associações de contato, você pode fornecer o endereço de e-mail do contato a ser associado. Saiba mais sobre associação de registro de CRM. |
utk | String | Para associações de contato, você pode fornecer o token de usuário de um contato existente para associar. Saiba mais sobre associação de registro de CRM. |
domain | String | Para associações de empresa, você pode fornecer o domínio do site de uma empresa existente. Saiba mais sobre associação de registro de CRM. |
timestamp | String | Define a hora da ocorrência do evento (formato ISO 8601). Se não for fornecida, o HubSpot usará como padrão o carimbo de data/hora do envio de dados de ocorrência de evento. |
properties | Objeto | Pares chave-valor de nomes de propriedades e valores de propriedades que você definiu para o tipo de evento. |
extraData | Matriz | Quando incluída, fornece informações adicionais para renderização de linhas do tempo. Deve ser um JSON válido. Saiba mais sobre dados extras em modelos de renderização. |
timelineIFrame | Objeto | Quando incluído, o cartão de linha do tempo conterá um hiperlink que permite que os usuários abram o conteúdo vinculado em um iframe. Saiba mais sobre como usar iframes. |
id | String | Um identificador exclusivo para a ocorrência do evento. Deve ser exclusivo dentro do tipo de evento. Se não for fornecido, o HubSpot gerará um UUID aleatório. Quando houver vários eventos com o mesmo ID, o primeiro será aceito e todos os outros serão rejeitados. |

Associação de registro de CRM
Cada ocorrência de evento deve ser associada a um registro de CRM, com o tipo de objeto de CRM definido pelo esquema de tipo de evento. A API de eventos de aplicativo inclui vários campos para associar dados de ocorrência de evento com registros de CRM. Para todos os objetos de CRM compatíveis, recomendamos usar o campoobjectId
. No entanto, há algumas situações em que outros campos devem ser usados.
utk
/email
: se você não souber o ID do contato, use o campoutk
e/ouemail
para identificação. Fornecer esses dois identificadores também permite criar e atualizar contatos. Por exemplo:- Se
utk
corresponde a um contato existente, masemail
não corresponde, o HubSpot atualizará o contato com o novo endereço de e-mail. - Se nenhum
objectId
for fornecido, a ocorrência do evento será associada a um contato existente que corresponda aoutk
/email
, ou HubSpot criará um contato se nenhuma correspondência for encontrada. - Observe que o
utk
sozinho não pode criar novos contatos. Você deve sempre incluiremail
comutk
para que associação seja adequada.
- Se
domain
: para associações de empresa, você deve fornecer oobjectId
, mas você também pode incluirdomain
para atualizar a propriedade dedomain
daquela empresa.