Caderno interno · 11/11/2026 · noindex

/// 00 · Avant Energia · forms

O site já captura. O HubSpot ainda não recebe.

Seis Route Handlers postam conversão no RD Station. A UI, o Turnstile e as máscaras BR ficam. O que falta é o portal da Anne e seis GUIDs.

landing-page-next-cloudflareRD → HubSpot Forms API v3Workers prod + staging

O que você precisa

Doze coisas. A Anne manda onze. Uma você decide.

Sem isso o código não liga. Embed nativo do HubSpot não entra: perde a pele Avant, o Turnstile e as máscaras de CNPJ/WhatsApp. O POST continua no Worker, agora contra api.hsforms.com.

01

Convite no HubSpot

Usuário com Super Admin, ou Marketing + Settings. Sem isso você não cria form, propriedade nem Private App.

02

Portal ID (Hub ID)

O número do canto superior. Entra no tracking js.hs-scripts.com/{id}.js e no path do submit.

03

Private App

Nome sugerido avant-energia-landing. Token vai de secret no Worker (prod + staging) e no GitHub Actions. Nunca no cliente.

04

Escopos do app

forms, crm.objects.contacts.read/write, crm.schemas.contacts.read. Write no schema se você for criar as propriedades por API.

05

Seis forms (GUIDs)

Simulação, gerador, blog, contato, calculadora, PaP. Um GUID cada. Marketing → Formulários. UUID na URL depois de /form/.

06

Propriedades de contato

As cf_* do RD não existem no HubSpot. Sem propriedade com o internal name, o campo some em silêncio — o mesmo bug que já vimos no RD.

07

Tipo de inscrição (LGPD)

subscriptionTypeId de e-mail/WhatsApp. Settings → Marketing → E-mail → Tipos de inscrição. Vai no legalConsentOptions.

08

Tracking no domínio

Confirmar avantenergia.com.br e www no código de rastreamento. Cookie hubspotutk (hutk) costura sessão com o POST.

09

Mapa dos vendedores

Alex, Anne, Bruce, Guilherme, Marcelo, Mário, Milena, Rerison, Rômulo, Thyelli. Dropdown custom é mais barato que owner ID.

10

Sandbox ou portal de teste

Se existir, o staging aponta pra ele. Se não, dual-write no portal real com um form “staging” separado.

11

Histórico do RD

Migrar contato antigo é dump CSV, não form. Fora do PR do site. Pergunta: entra agora, depois, ou fica no RD morto?

12

E-mail na calculadora

Hoje é opcional: o Worker inventa {fone}@sem-email.avantenergia.com.br porque o RD exige e-mail. HubSpot também. Anne decide se vira obrigatório.

Três decisões de produto

Isso muda o desenho do form no HubSpot.

PerguntaPadrão que eu fariaPor quê
Embed do HubSpot ou API? API no Worker. UI Avant. Turnstile, máscara, calculadora e PaP GPS não cabem no embed.
Vendedor = owner do HubSpot? Propriedade dropdown vendedor. Owner ID muda quando alguém sai. O select do site já tem os 10 nomes.
Criar empresa (company) junto? Só contato, com company texto. É o que o RD faz hoje. Company object é um segundo PR.
Dual-write RD + HubSpot? Sim, 7–14 dias no staging e 7 em prod. Se o GUID estiver errado, o comercial não fica cego.

Fica. Turnstile, GTM GTM-P4NFJGD6, Meta Pixel, máscaras BR, fila offline do PaP, noindex do staging. O script RD d335luupugsy2.cloudfront.net/…fe3514da-…-loader.js sai no cutover, não no dual-write.

Rascunho · não enviado

Zap pra Anne, se você quiser mandar.

Copia, ajusta o tom, manda você. Eu não envio daqui.

Anne, pra ligar os forms do site no HubSpot eu preciso de vocês:

1. me convidar no portal (super admin ou marketing + settings)
2. o Portal ID
3. uma Private App “avant-energia-landing” (ou me deixa criar) com escopo forms + contacts
4. 6 formulários criados — simulação, gerador, blog, contato, calculadora, pap — e o GUID de cada um
5. as propriedades custom (CNPJ, vendedor, concessionária, valor da conta, desconto, GPS do pap)
6. o tipo de inscrição de comunicação (LGPD)
7. confirmar o tracking em avantenergia.com.br

A cara dos forms do site fica igual. A gente só troca o destino do POST.

Duas decisões: o e-mail na calculadora vira obrigatório? e a gente importa o histórico do RD agora ou só o fluxo novo?

Pesquisa interna · avant-hubspot-forms.sites.gestaobem.com · restage app=avant-hubspot-forms · não mandar pra Anne até o Matheus pedir.