Zum Hauptinhalt springen
Última modificação: 8 de outubro de 2025
Veja abaixo informações de referência para criar cartões de aplicativo

Estrutura do projeto

No contexto de um projeto, os componentes do cartão de aplicativo são definidos em um diretório cards em app/. O diretório cards deve conter:
  • Um arquivo de definição de esquema JSON para cada tipo de cartão (*-hsmeta.json).
  • Um arquivo React que renderiza o frontend do cartão. Ele pode ser um arquivo .jsx ou .tsx.
  • Um arquivo package.json para lidar com as dependências necessárias.
project-folder/
└── src/
    └── app/
        ├── app-hsmeta.json
        └── cards/
            └── my-app-card-hsmeta.json
            └── my-app-card.jsx
            └── package.json

Esquema do cartão de aplicativo

No arquivo de configuração do *-hsmeta.json para seu cartão de aplicativo, inclua as propriedades abaixo.
{
  "uid": "example-card",
  "type": "card",
  "config": {
    "name": "Hello Example App",
    "description": "A description of the card's purpose.",
    "location": "crm.record.tab",
    "entrypoint": "/app/cards/ExampleCard.jsx",
    "objectTypes": [
      "contacts"
    ]
  }
}

Campos marcados com * são obrigatórios.

CampoTipoDescrição
uid*StringO identificador exclusivo do cartão. Ele pode ser qualquer string, mas deve identificar o aplicativo de uma maneira significativa. O HubSpot identificará o cartão por esse ID para que você possa alterar o título do cartão sem remover dados do histórico ou de estado, como a posição no registro de CRM.
typeStringO tipo de componente, que deve ser card neste caso.
configObjetoUm objeto que contém detalhes de configuração.
name*StringO título do cartão, exibido na interface do usuário do HubSpot.
descriptionStringUma descrição do cartão.
previewImageObjetoUm objeto que contenha os campos file e altText. O campo file é o caminho relativo para a imagem de visualização. As extensões de arquivo válidas são png, jpeg, jpg ou gif. O tamanho máximo do arquivo é 5,0 MB. O campo altText é uma breve descrição da imagem.
entrypoint*StringO caminho de arquivo do código do React de frontend do cartão.
location*crm.record.tab | crm.record.sidebar | crm.preview |helpdesk.sidebarOnde o cartão aparece na interface do usuário do HubSpot. Você só pode especificar um valor de local, mas algumas combinações location e objectTypes resultam em suporte a vários locais. Consulte a seção Locais com suporte para obter mais detalhes.
objectTypes*MatrizOs tipos de registros de CRM em que o cartão aparecerá. Consulte a seção Objetos com suporte abaixo para obter mais detalhes.

Objetos com suporte

Na matriz objectTypes do arquivo de configuração *-hsmeta.json do cartão, especifique os tipos de registros de CRM em que o cartão aparecerá. Veja abaixo os objetos do CRM atualmente compatíveis, seu valor de objectType e o escopo mínimo a adicionar ao seu aplicativo.
Para objetos padrão do HubSpot, os valores de objectType não fazem distinção entre maiúsculas e minúsculas e tanto singular quanto plural são aceitos. Por exemplo, "CONTACT" e "contacts" são ambos válidos.
ValorobjectType do objeto do CRMEscopo relacionado
ContatosCONTACTcrm.objects.contacts.read
EmpresasCOMPANYcrm.objects.companies.read
NegóciosDEALScrm.objects.deals.read
TicketsTICKETStickets
Objeto personalizadop_objectName (diferencia maiúsculas de minúsculas)crm.objects.custom.read
Objetos de aplicativoapp_object_uidConsulte escopos de objetos de aplicativo
Além disso, os seguintes objetos do CRM são compatíveis se eles forem ativados na biblioteca de objetos:
Valor doobjectType objeto do CRMEscopos relacionados
CompromissosAPPOINTMENTScrm.objects.appointments.read
CursosCOURSEScrm.objects.courses.read
ListagensLISTINGScrm.objects.listings.read
ServiçosSERVICEScrm.objects.services.read

Locais compatíveis

No campo location do arquivo de configuração de *-hsmeta.json do cartão, especifique onde o cartão será exibido no HubSpot. Veja abaixo os locais compatíveis no momento.
Se você personalizou a coluna do meio, precisará personalizar a visualização da coluna do meio para tornar visíveis as extensões recém-criadas.
  • crm.preview: exibe o cartão de aplicativo no painel de visualização que você pode acessar em todo o CRM. Ao usar este local, a extensão estará disponível ao visualizar o objectTypes especificado no arquivo de configuração JSON. Isso inclui a visualização de registros nas páginas de registro do CRM, páginas de índice, exibições de quadro e a ferramenta de listas. Saiba mais sobre como personalizar visualizações.
  • helpdesk.sidebar: exibe o cartão nas barras laterais do ticket no help desk. Isso inclui o painel de visualização do ticket na página inicial do help desk e a barra lateral direita da exibição do ticket no help desk. Para adicionar um cartão a esse local, você precisará definir suas configurações de help desk.
Ao criar uma extensão para este local, você também precisará garantir que o arquivo de configuração JSON do aplicativo inclui tickets na matriz scopes e que o arquivo de configuração JSON do cartão inclui tickets no campo objectTypes.

Construção do frontend do React

A interface do usuário de um cartão de aplicativo é criada por um arquivo de componente do React, .jsx ou .tsx. Este arquivo fica no diretório cards/ ao lado do arquivo JSON de configuração do cartão (*-hsmeta.json). No arquivo de configuração do cartão, você especifica o caminho do arquivo React no campo entrypoint. Veja abaixo um exemplo de um cartão de aplicativo simples, que inclui Componentes da interface Text e Button para renderizar o conteúdo do cartão, além de um componente Flex para gerenciar layout.
import React from 'react';
import { Text, Button, Flex, hubspot } from '@hubspot/ui-extensions';

// Define the extension to be run within the Hubspot CRM
hubspot.extend(() => <Extension />);

// Define the Extension component
const Extension = () => {
  return (
    <Flex direction="column" gap="medium">
      <Text>
        This is a simple getting started UI extension with static text.
      </Text>
      <Button onClick={() => console.log('Button clicked!')}>Click me!</Button>
    </Flex>
  );
};
Veja a documentação de referência a seguir para criar a aparência e a funcionalidade do cartão:

Gerenciamento de dependências

Você pode incluir dependências para seu cartão de aplicativo em um arquivo package.json no diretório cards/. Por padrão, ao adicionar um cartão de aplicativo por meio do comando hs project add, um arquivo package.json será criado para você com as seguintes dependências:
  • @hubspot/ui-extensions
  • react
  • typescript
Para instalar dependências para componentes do projeto com um arquivo package.json, você pode executar o comando hs project install-deps no diretório do projeto.
{
  "name": "hubspot-example-extension",
  "version": "0.1.0",
  "license": "MIT",
  "dependencies": {
    "@hubspot/ui-extensions": "latest",
    "react": "^18.2.0"
  },
  "devDependencies": {
    "typescript": "^5.3.3"
  }
}
I