Pular para o conteúdo

Enviar eventos pelo código do site

Para quem desenvolve o site próprio: como avisar a Bevean de produto visto, carrinho e compra, com o formato aceito de cada evento.

Em site próprio, o script da Bevean carrega os formulários, mas não sabe sozinho qual produto o visitante abriu, o que ele pôs no carrinho ou se comprou. Quem desenvolve o site avisa a Bevean de cada um desses momentos com uma linha de JavaScript — e, com o visitante identificado, os gatilhos de comportamento passam a disparar.

Antes: o código da tag de Site próprio precisa estar em todas as páginas do site. Veja Instalar o script em um site próprio.

Informação:

Loja de plataforma integrada não precisa disto

Nas tags de integração (Shopify, Bagy, Wbuy, VNDA, Wake, Nuvemshop, Loja Integrada e VTEX), o script já envia esses eventos sozinho.

Como enviar um evento

Cada evento é um objeto com o nome do evento em event e os dados em data, enviado com window.bevean.push:

window.bevean = window.bevean || [];
window.bevean.push({
  event: 'product_viewed',
  data: { productId: '123', name: 'Camiseta Azul', price: 89.9 }
});

A primeira linha faz a chamada funcionar mesmo antes de o script terminar de carregar: o evento espera numa fila e sai assim que o script fica pronto. O script envia os eventos em lotes — a cada 2 segundos, ou assim que juntar 5 — e completa sozinho o endereço da página, o horário e quem é o visitante.

Atenção:

Use sempre o formato com event e data

Chamadas como window.bevean.push('product_viewed', dados) ou no formato do Google Analytics (['track', 'product_viewed', dados]) se perdem quando acontecem antes de o script carregar.

Identificar o visitante

As automações só começam para contatos. Enquanto a Bevean não sabe quem é o visitante, os eventos ficam registrados como anônimos e nenhum gatilho dispara para eles.

Como o visitante é identificadoO que acontece
Formulário da Bevean enviado com e-mail ou telefoneO navegador passa a ser daquele contato.
resolveUser no código do script, com e-mailO navegador é ligado ao contato com aquele e-mail. Se não houver, a Bevean cria o contato.
resolveUser só com telefone, ou só com o id do clienteNão identifica. Para o código do site identificar o visitante, o e-mail é obrigatório.

Para usar resolveUser, copie o código na tela da tag e acrescente a função depois da linha platform. Ela devolve os dados do cliente logado no seu site, ou null quando não há ninguém logado:

<script>
(function (w, d, s, src, cfg) {
  w.beveanConfig = cfg;
  w.bevean = w.bevean || [];
  var js = d.createElement(s);
  js.async = true;
  js.src = src;
  d.head.appendChild(js);
})(window, document, 'script', "https://cdn.bevean.ai/tracker/bevean.sdk.js", {
  publicKey: "pk_bevean_...",
  platform: "core",
  resolveUser: function () {
    var cliente = window.clienteLogado; // o objeto que o seu site expõe
    if (!cliente || !cliente.email) return null;
    return {
      userId: String(cliente.id),
      email: cliente.email,
      name: cliente.nome,
      phone: cliente.telefone
    };
  }
});
</script>
RegraPor quê
A função é síncrona: não use await nem devolva uma Promise.Com uma Promise, o visitante fica anônimo.
Todos os valores são texto. Converta o id com String(...).Número no lugar de texto é ignorado.
O e-mail precisa ser válido.Um e-mail inválido faz a Bevean recusar o lote inteiro de eventos.
A função é chamada a cada envio de lote.O visitante que entra na conta no meio da navegação passa a ser identificado a partir do próximo lote.
Informação:

Computador compartilhado

Depois de identificado, o navegador continua ligado ao primeiro contato, mesmo que outra pessoa entre na conta depois.

Os eventos aceitos

A Bevean aceita só os eventos abaixo. Qualquer outro nome faz o lote inteiro ser recusado — inclusive os eventos certos que iam junto com ele.

EventoQuando enviarO que libera
page_viewedA cada página vista. Em site de página única (SPA), a cada troca de tela.Gatilho Página visualizada.
product_viewedAo abrir a página de um produto.Gatilho Produto visualizado. É também a base do Produto abandonado.
category_viewedAo abrir uma categoria ou uma lista de produtos.Gatilho Categoria visualizada.
product_added_to_cartQuando o visitante põe um produto no carrinho.Gatilho Produto adicionado ao carrinho. Cancela o Produto abandonado.
cart_viewedAo abrir o carrinho.Fica no histórico do contato, para condições de automação.
checkout_initiatedQuando o visitante começa a finalizar a compra.Gatilho Carrinho abandonado — veja os limites em Carrinho abandonado em site próprio, abaixo. Cancela o Produto abandonado.
add_payment_infoQuando o visitante escolhe a forma de pagamento.Fica registrado. Não dispara automação.
purchaseNa página de pedido confirmado.Cancela o Produto abandonado. Não vira pedido na Bevean.

form_viewed e form_submitted o script envia sozinho, com os formulários da Bevean. Não envie esses dois pelo código.

Exemplos de cada evento

Os campos são os mesmos em todos os eventos de produto. Nenhum é obrigatório para o evento ser aceito, mas é deles que saem o nome, a foto, o preço e o link do produto nas mensagens.

Página vista

O script completa sozinho o endereço, o caminho e o título da página. Em site de página única (SPA), mande os três a cada troca de tela, porque o script lê o endereço na hora em que o lote sai:

window.bevean.push({
  event: 'page_viewed',
  data: {
    url: 'https://www.sualoja.com.br/camisetas',
    path: '/camisetas',
    title: 'Camisetas | Sua Loja'
  }
});

Produto visto

window.bevean.push({
  event: 'product_viewed',
  data: {
    productId: '123',
    variantId: '123-AZ-M',
    sku: 'CAM-AZ-M',
    name: 'Camiseta Azul',
    price: 89.9,
    currency: 'BRL',
    image: 'https://www.sualoja.com.br/img/camiseta-azul.jpg',
    url: 'https://www.sualoja.com.br/p/camiseta-azul',
    categoryId: '10',
    category: 'Camisetas',
    brand: 'Sua Marca'
  }
});

Categoria vista

window.bevean.push({
  event: 'category_viewed',
  data: {
    categoryId: '10',
    name: 'Camisetas',
    handle: 'camisetas',
    url: 'https://www.sualoja.com.br/c/camisetas',
    items: [
      { productId: '123', name: 'Camiseta Azul', price: 89.9, url: 'https://www.sualoja.com.br/p/camiseta-azul', image: 'https://www.sualoja.com.br/img/camiseta-azul.jpg' }
    ]
  }
});

Produto adicionado ao carrinho

Mande o carrinho em items e repita os campos do produto que acabou de entrar na raiz de data. É da raiz que a mensagem do gatilho Produto adicionado ao carrinho tira o produto:

window.bevean.push({
  event: 'product_added_to_cart',
  data: {
    productId: '123',
    variantId: '123-AZ-M',
    sku: 'CAM-AZ-M',
    name: 'Camiseta Azul',
    price: 89.9,
    quantity: 2,
    image: 'https://www.sualoja.com.br/img/camiseta-azul.jpg',
    url: 'https://www.sualoja.com.br/p/camiseta-azul',
    cartToken: 'c_abc123',
    value: 179.8,
    currency: 'BRL',
    items: [
      { productId: '123', variantId: '123-AZ-M', sku: 'CAM-AZ-M', name: 'Camiseta Azul', price: 89.9, quantity: 2 }
    ]
  }
});

Carrinho visto

window.bevean.push({
  event: 'cart_viewed',
  data: {
    cartToken: 'c_abc123',
    value: 179.8,
    currency: 'BRL',
    items: [
      { productId: '123', variantId: '123-AZ-M', sku: 'CAM-AZ-M', name: 'Camiseta Azul', price: 89.9, quantity: 2 }
    ]
  }
});

Início da finalização da compra

Envie numa página cujo endereço traga o carrinho de volta: é esse endereço que a mensagem de carrinho abandonado usa como link.

window.bevean.push({
  event: 'checkout_initiated',
  data: {
    value: 179.8,
    currency: 'BRL',
    coupon: 'BEMVINDO10',
    items: [
      { productId: '123', variantId: '123-AZ-M', sku: 'CAM-AZ-M', name: 'Camiseta Azul', price: 89.9, quantity: 2 }
    ]
  }
});

Forma de pagamento escolhida

window.bevean.push({
  event: 'add_payment_info',
  data: {
    value: 179.8,
    currency: 'BRL',
    paymentType: 'pix',
    items: [
      { productId: '123', name: 'Camiseta Azul', price: 89.9, quantity: 2 }
    ]
  }
});

Compra concluída

window.bevean.push({
  event: 'purchase',
  data: {
    transactionId: 'PED-1043',
    value: 179.8,
    currency: 'BRL',
    coupon: 'BEMVINDO10',
    items: [
      { productId: '123', variantId: '123-AZ-M', sku: 'CAM-AZ-M', name: 'Camiseta Azul', price: 89.9, quantity: 2 }
    ]
  }
});

Campos dos produtos

CampoTipoObservação
productIdtextoO identificador do produto no seu site.
variantIdtextoA variação: cor, tamanho.
skutexto—
nametextoO nome que aparece nas mensagens.
pricenúmeroSem símbolo de moeda: 89.9, não 'R$ 89,90'.
quantitynúmero—
currencytexto'BRL'.
imagetextoEndereço completo, começando com https://. Um endereço relativo, começando com /, não mostra a imagem nas mensagens.
urltextoEndereço completo da página do produto.
category, categoryId, brandtexto—

Valores do pedido e do carrinho (value) também são número. Identificadores (transactionId, cartToken) são texto.

Carrinho abandonado em site próprio

O gatilho Carrinho abandonado dispara com o checkout_initiated do seu site, para visitantes identificados. Antes de ativar uma automação com ele, conheça os limites:

Atenção:

A compra do site não conta como pedido

A condição Fez um pedido pago só enxerga pedidos que chegam por integração. O evento purchase não é pedido para a Bevean — então quem comprou no seu site também pode receber a mensagem de carrinho abandonado.

O queEm site próprio
Link do carrinho na mensagemÉ o endereço da página em que o checkout_initiated foi enviado.
Itens e valor do carrinho na mensagemNão aparecem: a Bevean só guarda o carrinho de lojas integradas.

O que impede de funcionar

SintomaCausa provável
Nenhum evento chega, nem os certosAlgum evento do lote tem nome fora da lista, ou o e-mail do resolveUser é inválido. A Bevean recusa o lote inteiro.
Os eventos chegam, mas a automação não começaO visitante não está identificado. Confira o resolveUser ou se o visitante preencheu um formulário da Bevean.
Em site de página única, todos os eventos saem com o mesmo endereçoO script lê o endereço na hora do envio do lote. Mande url, path e title no page_viewed.
A mensagem sai sem foto ou com link erradoUse endereços completos em image e url.

Para conferir os envios, abra as ferramentas de desenvolvedor do navegador, na aba Rede (Network), e filtre por events: cada lote aparece como uma chamada.

Atualizado em

Central de Ajuda — tutoriais e respostas sobre a plataforma.

Digite ao menos duas letras para buscar.