Eventos (Relay)
Reaja no navegador quando os seus clientes interagem com o orçamento.
A ponte de mensagens
O iframe do Cord Elements foi projetado para nunca isolar o seu site do que acontece dentro dele. Usando uma ponte bidirecional via window.postMessage, o Cord faz o “relay” (retransmissão) dos eventos do cartão diretamente para o seu ambiente window pai.
Isso é muito útil para disparar pixels de analytics (como o Meta Pixel ou o Google Analytics), lançar animações de confete quando uma proposta é aprovada ou redirecionar o usuário para uma página de “Obrigado” depois de um pagamento bem-sucedido.
Ouvir eventos
Você pode ouvir os eventos de forma nativa associando um addEventListener ao nó do DOM do elemento incorporado:
const container = document.querySelector('[data-cord-token]');
container.addEventListener('cord:approved', (event) => {
console.log('The quote was approved!');
console.log('Approved by:', event.detail.signed_by);
});
Dicionário de eventos
Todos os eventos têm o prefixo cord: para evitar colisões de nomes com outras bibliotecas. O detail de cada evento sempre inclui token (o token público do orçamento) e folio (p. ex. "COT-0148"), além dos campos próprios listados abaixo.
Ciclo de vida do componente
cord:ready: Disparado no momento exato em que o SDK termina de renderizar o conteúdo, calcular a altura final e as fontes terminam de carregar.cord:resize: Emitido continuamente cada vez que a altura do iframe muda (útil apenas se você escrever o seu próprio contêiner e não usar oembed.js).cord:viewed: Disparado junto comcord:ready, assim que o orçamento termina de ser renderizado dentro do iframe — é o sinal de que o conteúdo já está visível para a sua página anfitriã. O registro oficial no banco de dados de que o cliente visualizou o orçamento passa por um mecanismo interno independente, que exige que a aba esteja realmente visível (para não contar como “visualização” o próprio vendedor pré-visualizando o link dele); não presuma que os dois acontecem no mesmo instante.
Interação comercial
cord:approved: Emitido no instante em que o usuário aprova os termos da proposta comercial. Devolve nodetaildados úteis como o hash de validação e quem assinou (signed_by).cord:signed: Disparado no MESMO instante quecord:approved, com o mesmodetail(signed_by,hash) — no Cord, aprovar e assinar são uma única ação do cliente, não duas etapas separadas no tempo. Ouça o que for semanticamente mais claro para você; não espere que um “chegue depois” do outro.cord:pay: Emitido quando o usuário clica no botão para iniciar o fluxo de pagamento online (cartão, transferência bancária ou os demais métodos que a empresa tiver habilitados). Odetailtraz aurlabsoluta da página de pagamento. O Cord já a abre em uma janela própria (o pagamento nunca roda dentro do iframe): não navegue a sua página para essa URL, use-a apenas para o seu analytics.cord:rejected: Disparado se o cliente marcar explicitamente a proposta como recusada. Odetailinclui ocomentarioque ele tiver deixado.cord:message: Ativado cada vez que o cliente deixa um comentário geral ou uma contraproposta no chat do orçamento.cord:item_comment: Disparado quando o usuário deixa um comentário específico sobre um item (linha de produto) do orçamento, com oitem_idcorrespondente nodetail.
Status
cord:updated: O orçamento mudou enquanto estava aberto (o vendedor editou itens, valores ou condições). O orçamento já se redesenhou sozinho; use o evento para atualizar o que a sua página mostra ao redor.cord:status_changed: O status mudou (sent,viewed,approved,rejected,paid,expired…). Odetailtraz o novostatus(esaldona fatura).cord:paid: Somente em<cord-invoice>: a fatura foi quitada. Odetailtrazfolio,monedaesaldo.
cord:ready também traz status, moneda e total, para que a sua página desenhe o próprio resumo sem outra chamada.
Modo somente leitura
Se a sua organização não tiver domínios permitidos em Configurações › Gerador de orçamentos incorporável, ou se a página anfitriã não estiver nessa lista, o orçamento é exibido em somente leitura: não oferece aprovar, assinar, pagar nem escrever, e o botão leva ao link público do orçamento em uma nova aba. Nesse modo os eventos chegam sem detail: uma página que não está na sua lista não recebe quem assinou, valores nem a URL de pagamento.
Barra de depuração
Com debug ativo, o Elements desenha no seu site um painel com os eventos do iframe, cada requisição à API com o seu request_id e os avisos de configuração (por exemplo, valores de appearance que o Cord descartou).
<cord-quote token="a1b2c3d4e5f60718" debug></cord-quote>
<!-- ou com embed.js -->
<div data-cord-token="a1b2c3d4e5f60718" data-cord-debug></div>
No React, <CordProvider debug>. O painel só aparece com uma chave pk_test_; com pk_live_ ele se limita a um aviso no console. Sem chave (Web Component ou embed.js), só aparece em localhost ou se a URL tiver ?cord_debug=1, para que um atributo esquecido nunca o mostre aos seus clientes.