HubSpot
set_hubspotConecta o link permanente já publicado ao HubSpot. Uma conexão por link, method oauth ou private_app; conectar por um método substitui o outro. OAuth: authorize:true devolve authorizeUrl (503 config_missing sem HUBSPOT_CLIENT_ID e HUBSPOT_CLIENT_SECRET); o usuário autoriza e o retorno traz code e state. App privado: token pat-… (Development → Legacy apps → Private → Auth → Show token). Escopos dos dois: crm.objects.contacts.read, crm.objects.contacts.write, crm.schemas.contacts.read e crm.schemas.contacts.write. Cada lead.created busca o contato pelo e-mail e atualiza só as propriedades mapeadas, ou cria se não existir. O e-mail fica na propriedade email. O padrão manda nome, telefone E.164, tour, UTMs e o texto e a data do consentimento LGPD em propriedades guiaflow_*. mapping troca o nome interno; string vazia desliga o campo. A credencial fica cifrada e a resposta só traz tokenLast4, method e oauthAvailable. remove:true apaga (OAuth revoga o refresh). sendTest:true grava o contato teste@guiaflow.pro. Falhas usam a mesma fila e o mesmo corte de 20 tentativas do webhook.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | Código OAuth devolvido pelo HubSpot. Use junto com state. Substitui um token de app privado. | |
| state | No | state da authorizeUrl. Amarra o code a este tour. | |
| token | No | Token do app privado do HubSpot (pat-…). Substitui uma conexão OAuth. A resposta nunca devolve o token inteiro. | |
| remove | No | ||
| tourId | Yes | id do tour (de create_tour ou list_tours). | |
| enabled | No | ||
| mapping | No | Nome interno da propriedade no HubSpot para cada campo. Padrão guiaflow_* . Escopos do app: crm.objects.contacts.read crm.objects.contacts.write crm.schemas.contacts.read crm.schemas.contacts.write. | |
| sendTest | No | Cria ou atualiza o contato teste@guiaflow.pro. | |
| authorize | No | Devolve authorizeUrl, redirectUri e scopes. Não conecta. 503 se o OAuth não está configurado. |