Vídeo é o canal mais subutilizado do varejo digital. A Widde Pro transforma
qualquer loja em uma vitrine interativa: vídeos shoppable, provador
virtual com AI e lives, instalados em minutos com um único script.
Plataforma operacionalÚltima atualização · Abr 2026CDN · cdn.widde.io
01 Instalação
A Widde Pro é distribuída como um único script CDN baseado em Web Components.
Cole-o uma vez no template da loja — todos os blocos passam a funcionar e a
configuração visual fica no painel administrativo.
Snippet único
Insira a tag abaixo logo antes do fechamento da </body>,
ou use a área de scripts globais da sua plataforma (VTEX, Shopify, Nuvemshop etc.).
Os blocos configurados no painel da Widde aparecem automaticamente nas
páginas correspondentes. Não é necessário alterar templates de produto
nem mexer no JavaScript do tema.
Modo debug · ambientes não-produção
Por padrão a Widde só carrega em domínios de produção, para não interferir em
stagings. Para forçar o carregamento durante testes, adicione o parâmetro
widde-local-debug à URL:
bash
https://staging.minhaloja.com/?widde-local-debug
→ Sobre a versão
A versão fixa no path do CDN garante estabilidade de produção. A Widde
publica avisos de atualização pelo painel sempre que uma nova versão LTS
é liberada.
02 Blocos
Blocos são Web Components que você cola no HTML da loja para exibir
vídeos. A configuração visual — cores, espaçamento, dimensões — fica toda no
painel Widde:
nada de tocar no código depois da instalação.
widde-pro-highlights
Destaques
Vídeos no estilo stories do Instagram. Ótimo para promoções,
lançamentos, categorias e variações de produto.
Vitrine horizontal de vídeos. Indicado para storytelling, coleções
curadas e conteúdo sequencial.
homecategoriaPDP
html
<widde-pro-carousel></widde-pro-carousel>
widde-explorer
Explorar
Página completa de descoberta no estilo explore do Instagram.
Veja a solução Explorar para detalhes da experiência.
página dedicadahomepreview
html
<widde-explorer></widde-explorer>
Para uma versão compacta com pré-visualização:
html
<widde-explorer-preview></widde-explorer-preview>
→ Onde colar
Cada bloco pode ser inserido no template da loja ou via construtor da plataforma
(VTEX IO, seções do Shopify, blocos do Nuvemshop etc.). Os Web Components só
renderizam quando o script Widde já carregou — não é preciso configurar ordem
de carregamento.
Como inserir os destaques de produto
A implementação é simples e depende de alguém com acesso ao código da loja —
tipicamente o desenvolvedor da plataforma. Basta adicionar a tag no HTML da
página de produto (PDP), no local exato onde os destaques
devem aparecer.
A posição da tag no template define exatamente onde o conteúdo será renderizado.
Use a tag apenas em páginas de produto — ou em locais onde faça sentido exibir destaques contextuais ao item visualizado.
O desenvolvedor da plataforma saberá identificar o arquivo/template correto (PDP, product page, product-template etc.) conforme o tema ou framework em uso.
03 Video Commerce · Formatos
A Widde disponibiliza quatro formatos de widget de vídeo que podem ser
distribuídos pela loja. Cada formato tem um papel diferente — bolinha flutuante,
fileira de destaques na home, miniaturas dentro da PDP e carrossel de coleções —
e pode ser customizado visualmente pelo lojista.
ViewType · Story
Story
Bolinha flutuante fixa no canto inferior esquerdo, acompanha o scroll em qualquer página da loja.
Storyfloating · bottom-left1 coleção
ViewType · Highlight
Destaque da loja
Sequência de círculos horizontais na home. Similar aos Stories do Instagram —
cada círculo abre uma coleção diferente.
Highlightshapper: circleN coleções
ViewType · HighlightTwo / Three
Destaque de produto
Vídeos exibidos como miniaturas dentro da galeria da PDP, ao lado das fotos
do produto. O cliente alterna entre foto e vídeo no mesmo seletor.
HighlightTwoHighlightThreegaleria do produto
ViewType · Carousel
Carrossel
Cards grandes com produto e preço abaixo. Navegação lateral com setas, ideal para
vitrines de coleções com shoppable videos.
CarouselCarouselTwowrapper: product
04 Provador AI
A Widde também oferece o Provador AI — uma solução que permite
ao cliente visualizar como a peça fica em seu próprio corpo antes da compra. O fluxo
abre direto na página de produto, com upload de foto e geração da imagem com IA.
1Ponto de entrada · PDP
Botão "Como fica em mim?"
Exibido logo abaixo do CTA de compra na PDP. Identificado pelo ícone de sparkle (✨)
e pelo estilo secundário (outline preto) para não competir com o botão primário Comprar.
PosiçãoAbaixo do CTA principal de compra
EstiloOutline preto · ícone sparkle
2Drawer aberto · AI
Drawer do Provador AI
Ao clicar no botão, abre um drawer lateral com o fluxo completo: upload da foto do cliente,
geração da imagem via AI usando o produto da PDP, e CTA para adicionar à sacola.
01Carregue sua foto
02Veja o resultado com IA
03Adicione à sacola
05 Live Commerce
Transmissões ao vivo dentro do e-commerce com chat em tempo real,
cupons de desconto, destaque de produto sincronizado e
contagem de espectadores. A live ocupa o banner principal da loja e se transforma
em mini-player flutuante ao scroll.
1Banner principal
Banner principal
A live ocupa o banner principal da home assim que entra no ar. Mostra contagem de viewers, chat com mensagens fixadas (ex: cupons) e controles de som/fullscreen.
2Mini-player ao scroll
Mini-player flutuante
Quando o cliente faz scroll para fora do banner, a live se transforma em um mini-player no canto inferior direito que continua tocando enquanto ele navega.
3Live em fullscreen
Live em fullscreen
Ao tocar no mini-player ou abrir a live, o player ocupa a tela inteira. Inclui destaque do produto sincronizado pelo apresentador, chat ao vivo e input de mensagem.
Componentes da experiência
●
Pill LIVE + viewers
Indicador ao vivo com bolinha verde e contagem de espectadores em tempo real.
●
Chat ao vivo
Mensagens da loja (com selo de verificado) e dos espectadores aparecem sobrepostas no vídeo.
●
Cupons fixados
A loja pode fixar cupons de desconto e prazo limite no feed do chat.
●
Destaque de produto
O apresentador destaca o produto que está sendo mostrado, com nome e preço sincronizados.
●
Mini-player flutuante
A live continua tocando em um card no canto inferior direito enquanto o cliente navega.
●
Engajamento
Reações em tempo real (likes), input de mensagem e ícone de sacola para acesso rápido.
06 Explorar
Página completa cheia de vídeos no estilo explore do Instagram. Estimula a
descoberta de produtos e funciona em duas variantes: um preview compacto
embutido na home (ou em qualquer categoria) e a página dedicada com busca
e abas de categoria.
O primeiro card ocupa 2× o tamanho dos demais e exibe o produto vinculado com nome, preço e ícones de carrinho/sacola.
●
Grid responsivo
Layout de 4 colunas em desktop que se adapta automaticamente em telas menores, mantendo a hierarquia visual.
●
Busca + categorias
Versão página dedicada inclui campo de pesquisa e abas roláveis com as categorias configuradas pelo lojista.
●
CTA "Ver todos"
O preview compacto traz um botão para abrir a página completa do Explorar e continuar a descoberta.
→ Como inserir
Cole <widde-pro-explorer></widde-pro-explorer> em uma
página dedicada (ex: /explorar) e
<widde-pro-explorer-preview></widde-pro-explorer-preview>
em qualquer ponto da home ou de uma categoria. As coleções, categorias e o tile destaque
são configurados no painel da Widde — sem mexer no código.
07 Integrações
A Widde Pro conecta-se à loja em três pontos críticos: catálogo
(preço/estoque), carrinho (adicionar produto a partir do vídeo)
e analytics (atribuir vendas a quem assistiu e publicar as interações
no Data Layer). Cada bloco abaixo detalha o contrato esperado.
08 Catálogo de Produto
A Widde precisa enxergar o seu catálogo para listar preços, estoques e variações
nos vídeos. Nas plataformas suportadas, o conector é nativo — basta autorizar.
Em sistemas próprios, você expõe um pequeno contrato REST/GraphQL que descrevemos abaixo.
Loja headless ou plataforma sob medida? Implemente o contrato a seguir e nos envie
a URL base. A Widde consome três operações: search,
getById e o webhook onProductUpdate.
Endpoints expostos sob HTTPS, com latência mediana abaixo de 400 ms.
Autenticação por Bearer token ou cabeçalho dedicado.
Webhook onProductUpdate notificando alterações em tempo real.
Imagens em URLs absolutas, públicas, sem expiração curta.
Preços em formato consistente (sempre centavos OU sempre decimal).
→ Como solicitar a homologação
Após implementar o contrato, envie URL base, credenciais e um par de IDs de teste
para contato@widde.io. Nossa equipe valida
em até 3 dias úteis.
09 Carrinho de Compras
Quando o cliente clica em "adicionar ao carrinho" dentro de um vídeo,
a Widde chama a API do carrinho da própria loja, no browser do usuário. A sessão e os
cookies já existentes carregam — nenhum dado pessoal passa pelos nossos servidores.
→ Por que client-side
Manter a chamada no browser preserva o fluxo de checkout da plataforma (cupom, frete,
regras anti-fraude) e dispensa qualquer sincronização de sessão entre Widde e a loja.
Contrato esperado
A loja precisa expor quatro operações acessíveis via JavaScript: ler o carrinho,
adicionar item, remover item e consultar dados de produto. Os tipos abaixo
descrevem o formato esperado.
A nomenclatura é apenas uma sugestão — a única exigência é que sejam acessíveis pelo
browser do cliente, autenticados via cookie de sessão e respondam JSON.
GET
/cart
Retorna o carrinho atual do usuário com itens, totais e moeda.
POST
/cart/items
Adiciona um item ao carrinho. Aceita variant e propriedades customizadas.
Os endpoints precisam aceitar CORS para o domínio da loja, validar CSRF onde
aplicável e responder em JSON com status HTTP semânticos. A homologação inclui
teste de consistência do getCartInfo e da remoção
idempotente de itens.
10 Google Analytics 4
A Widde marca cada sessão que viu vídeo — você ganha uma audiência customizada no
GA4 pronta para campanhas e atribuição. Há dois modos: automático, sem nada para
configurar; ou via Data Layer, quando você quer plugar nos seus dispatchers de GTM.
Modo automático
Habilitado por padrão. Durante a instalação, a Widde cria uma audiência
chamada Widde · Story Viewers dentro do seu GA4 e
passa a separar usuários que assistiram vídeos dos que não assistiram.
Atribuições e relatórios funcionam sem qualquer configuração extra.
→ Pré-requisitos
GA4 já configurado na loja (via gtag.js ou GTM) e
permissão concedida durante o onboarding. Não há flags adicionais no HTML.
Envio via Data Layer
Use este modo quando você já tem um pipeline de eventos no GTM e prefere que
a Widde apenas publique no dataLayer,
deixando para você o disparo do evento em GA4 / outras ferramentas.
Insira a flag abaixo antes da tag de instalação da Widde:
ID interno de rastreio — conecta visualização e conversão.
→ Quer todas as interações?
Este modo publica só o evento de atribuição widde e substitui
o envio automático ao GA4. Para receber play, sacola, checkout, live e provador como
eventos widde_*, sem mudar nada no envio ao
GA4, veja Eventos no Data Layer.
Verificação e problemas comuns
Sintoma
Como diagnosticar
Eventos não chegam no Data Layer
No console do browser, rode window.widdeSendDatalayer.
O retorno precisa ser true e a flag precisa ter sido
definida antes da tag da Widde.
Dimensão customizada não aparece
No GA4, vá em Admin → Definições personalizadas e crie uma dimensão
apontando para o parâmetro widdeUid.
Validação visual
GTM em modo Preview ou GA4 → Real-Time Reports geralmente confirmam o evento
dentro de poucos segundos.
11 Eventos no Data Layer
Os blocos da Widde rodam dentro de um Shadow DOM, que o rastreador de cliques da loja
não consegue inspecionar. Para resolver isso, a própria Widde publica no
dataLayer cada interação relevante (play no vídeo, adicionar à
sacola, checkout, live, provador) já estruturada e com nomes padronizados, pronta para o
seu GTM disparar para o GA4 ou qualquer outra ferramenta.
→ Só acrescenta, não substitui nada
Ligar esta publicação não altera nada do que a Widde já faz: os eventos
continuam indo para os relatórios da Widde e o envio ao Google Analytics 4 continua
exatamente como está configurado hoje. O dataLayer passa a
receber uma cópia das interações, sem dados de usuário.
Duas flags diferentes
Flag
O que publica no Data Layer
Efeito no envio ao GA4
widdeDataLayerEvents (esta seção)
Todas as interações, como eventos widde_*.
Nenhum. O envio ao GA4 e aos relatórios da Widde continua igual.
O script da Widde carrega de forma assíncrona, depois do site. Por isso a
flag não precisa vir antes da tag da Widde: o SDK só lê o valor da flag quando acontece uma
interação, sem ficar monitorando a variável.
Regra
Detalhe
Onde colocar
No <head> do template da loja, ou numa tag
HTML personalizado do GTM com acionador
Inicialização – Todas as páginas. Recomendamos o mais cedo possível na página.
Valor
Exatamente o booleano true. Texto como "true" não ativa.
Definida antes da Widde
Todas as interações são publicadas desde o início.
Definida depois da Widde
As interações dos últimos 30 segundos (até 50) ficam guardadas e são
publicadas junto com a próxima interação, ou quando o visitante sai da página. As
anteriores a isso são descartadas.
Momento do push
Logo depois da interação, quando o navegador fica livre (em até ~1 segundo), para não
atrasar a resposta da página. Se o visitante sair da página antes disso, o push acontece
na hora.
Em todas as páginas
A flag vale para a página atual. Ela precisa estar presente em toda página onde houver blocos da Widde.
Nome do Data Layer
Os eventos vão para window.dataLayer, o nome padrão do GTM.
Se o container usa outro nome, os eventos não chegam até ele.
Desativar
Remova a flag ou defina false: a publicação para nas interações seguintes.
Formato do evento
Cada interação gera dois pushes. O primeiro limpa o objeto
widde: o GTM mantém na memória os dados de pushes anteriores e,
sem esse reset, uma propriedade de um evento poderia aparecer no seguinte. É a mesma
prática que o Google recomenda para o objeto ecommerce.
A mesma informação tem o mesmo nome em todos os produtos: o preço é sempre product_price, venha do vídeo, da live ou do provador.
Preços
Sempre número, com ponto decimal (499.9). Nunca texto formatado.
Propriedade sem valor
Não é enviada. Nunca aparece vazia nem como null.
Momento
No instante da interação, um push por ação.
Configuração no GTM
Acionador
Campo
Valor
Tipo
Evento personalizado
Nome do evento
^widde_
Usar correspondência de regex
Sim
Para acionar um evento específico, use o nome exato, por exemplo
widde_cart_add_item, sem regex.
Variáveis
Crie uma Variável da camada de dados (versão 2) para cada propriedade que for
usar, sempre com o caminho widde.<propriedade>: por
exemplo widde.product_id,
widde.product_price e
widde.widde_product.
Envio para o GA4
Numa tag Google Analytics: evento GA4, use {{Event}}
como nome do evento (repassa o widde_… como está), adicione as
variáveis widde.* como parâmetros e associe ao acionador acima.
→ Não converta em eventos de e-commerce do GA4
Se a loja já dispara add_to_cart ou
begin_checkout, não renomeie os eventos da Widde para esses
nomes: a adição feita pela Widde também passa pelo carrinho da loja, e a mesma ação seria
contada duas vezes. Mantenha os eventos widde_* como eventos
personalizados. É justamente isso que isola o que veio da interação com a Widde.
Privacidade e consentimento
Nenhum evento carrega dados pessoais ou identificadores de usuário: nome, e-mail,
telefone, foto, cookies, IDs de sessão e IDs de cliente do Google Analytics nunca são
publicados. Interações que envolvem dados pessoais, como a captura de leads, também ficam
de fora. A URL da página e o referrer não vão no evento: use as variáveis nativas do GTM
(Page URL, Referrer).
Os eventos não são publicados quando o consentimento de análise é negado,
ou seja, quando o último comando consent do Consent Mode do
Google traz analytics_storage: 'denied'. Sem Consent Mode, a
publicação segue normalmente e as tags do GTM continuam respeitando as regras de
consentimento configuradas por você.
Eventos disponíveis
Todo evento traz widde_product,
event_type, device_type e
timestamp. A tabela de cada produto lista as propriedades
adicionais; o significado de cada uma está no dicionário.
Evento
Quando é emitido
Propriedades
widde_collection_view
O usuário clica em um vídeo da lista de vídeos exibida na página e abre o player em tela cheia: decidiu interagir com os vídeos.
collection_key
widde_story_view
O usuário assiste 3 segundos ou mais de um vídeo. Uma vez por vídeo por página.
story_key, collection_key, format_type, products
widde_story_like
O usuário curte o vídeo (ícone de coração). Descurtir não gera evento.
story_key, collection_key, format_type
widde_story_share
O usuário compartilha o vídeo.
story_key, collection_key, format_type
widde_media_progress
O usuário sai de um vídeo depois de assistir 3 segundos ou mais. Indica quanto foi assistido.
O usuário clica para ir à página do produto a partir do vídeo.
story_key, collection_key, format_type, dados do produto
Para medir a taxa de visitantes que decidiram assistir, combine
widde_collection_view (abriu o player) e
widde_story_view (assistiu de fato) com a contagem de
visitantes da página no GA4.
Os eventos de carrinho só existem no fluxo da Widde: os botões nativos da
página de produto nunca os disparam. Isso permite isolar as adições à sacola que vieram
da interação com os vídeos ou com a live.
Evento
Quando é emitido
widde_cart_product_info
O usuário abre o produto a partir do vídeo ou da live (botão na base do vídeo) e vê a escolha de tamanho/variação. Intenção inicial de compra.
widde_cart_product_info_buy_together
O usuário abre a tela de "compre junto".
widde_cart_add_item
O usuário confirma a adição à sacola depois de escolher a variação. É a adição ao carrinho vinda da Widde.
widde_cart_remove_item
O usuário remove um produto da sacola Widde.
widde_cart_view_list
O usuário abre a lista de itens da sacola.
widde_cart_checkout_start
O usuário clica em finalizar a compra e segue para o checkout.
Propriedades: product_id, product_name,
product_price e product_quantity
(quando houver), mais a origem: story_key,
collection_key, media_key e
format_type nos vídeos, ou live_key na live.
Todos os eventos da live levam live_key. As interações com o
carrinho dentro da live geram os eventos da aba Carrinho.
Evento
Quando é emitido
Propriedades
widde_live_view
O visitante passa a ser contado como espectador da live.
—
widde_live_watch_started
O espectador atinge o tempo mínimo assistindo: 10 segundos no player da página ou 2 segundos em tela cheia.
qualifier_mode, qualifier_seconds
widde_live_watch_ended
A sessão assistida termina: saiu da página, a live acabou ou o player foi fechado.
O espectador envia uma mensagem no chat. O conteúdo da mensagem não é publicado.
—
Todos os eventos do provador levam domain e os dados do produto
da página: product_id, product_name,
product_url, product_category,
product_price, currency e, quando
houver, ab_variant.
Evento
Quando é emitido
Propriedades adicionais
widde_tryon_button_view
O botão do provador é exibido na página do produto.
—
widde_tryon_widget_open
O usuário abre o provador.
—
widde_tryon_photo_sent
O usuário envia a foto para gerar a prova.
—
widde_tryon_result_viewed
O resultado gerado é exibido.
ai_model, image_resolution
widde_tryon_result_rated
O usuário avalia o resultado.
ai_model, image_resolution, rating
widde_tryon_share_opened
O usuário abre as opções de compartilhamento.
share_method
widde_tryon_share_completed
O usuário conclui o compartilhamento.
share_method
widde_tryon_add_to_cart
O usuário adiciona o produto ao carrinho a partir do provador.
cart_flow
Dicionário de propriedades
Os nomes abaixo são estáveis. Novas propriedades podem ser adicionadas no futuro; as
existentes não são renomeadas sem aviso.
Propriedade
Tipo
Descrição
widde_product
texto
Produto Widde que gerou o evento: video, cart, live ou tryon.
event_type
texto
Tipo do evento sem o prefixo widde_ (ex.: cart_add_item).
device_type
texto
mobile, tablet ou desktop.
timestamp
texto
Data e hora da interação, ISO 8601 em UTC.
product_id
texto
ID do produto na plataforma da loja (nos eventos de carrinho, o da variação escolhida).
product_name
texto
Nome do produto.
product_price
número
Preço do produto no momento da interação.
product_url
texto
URL da página do produto.
product_category
texto
Categoria do produto.
product_quantity
número
Quantidade adicionada à sacola.
currency
texto
Moeda do preço, ISO 4217 (ex.: BRL).
products
lista
Produtos associados ao vídeo, cada um com product_id, product_name, product_price e product_url.
story_key
texto
Identificador do vídeo na Widde.
collection_key
texto
Identificador da lista de vídeos (coleção) na Widde.
media_key
texto
Identificador da mídia na Widde.
format_type
texto
Formato do bloco onde o vídeo está: Story, Highlight, HighlightTwo, HighlightThree, Carousel, CarouselTwo, Feed ou Explorer.
live_key
texto
Identificador da live na Widde.
watched_seconds
número
Segundos assistidos.
duration_seconds
número
Duração total do vídeo, em segundos.
qualifier_mode
texto
Modo em que o espectador foi contado como "assistindo": hero (player na página) ou fullscreen (tela cheia).
qualifier_seconds
número
Segundos mínimos exigidos nesse modo.
end_reason
texto
Fim da sessão assistida: pagehide (saiu da página), liveFinished (live acabou) ou dismissed (fechou o player).
coupon_code
texto
Código do cupom exibido na live.
discount_type
texto
percentage (percentual) ou amount (valor fixo).
discount_value
número
Valor do desconto, conforme discount_type.
platform
texto
Plataforma de e-commerce da loja.
coupon_copy_reason
texto
Por que o cupom foi copiado em vez de aplicado: cart-empty, not-applicable, not-found, expired, min-purchase-not-reached, already-used, customer-restricted, unsupported ou transport-error.
domain
texto
Domínio da loja onde o provador está.
ai_model
texto
Modelo de IA que gerou a imagem.
image_resolution
texto
Resolução da imagem gerada.
rating
texto
Avaliação do resultado: like ou dislike.
share_method
texto
Canal de compartilhamento: whatsapp, facebook, x, copy, download ou native.
cart_flow
texto
Como o produto foi adicionado: widde_cart (carrinho Widde) ou native (botão da loja).
ab_variant
texto
Variante de teste A/B da experiência Widde. Não é variante de produto.
Verificação e problemas comuns
Sintoma
Como diagnosticar
Nenhum evento widde_* aparece
No console do browser, rode window.widdeDataLayerEvents:
o retorno precisa ser o booleano true. Confira também se o
Consent Mode não está com analytics_storage negado e se o
container do GTM usa o nome padrão dataLayer.
Conferir os eventos publicados
No console, rode
dataLayer.filter(e => e.event && e.event.indexOf('widde_') === 0).
Propriedade de um evento aparece em outro
Verifique se as variáveis usam o caminho widde.<propriedade>
(versão 2). O reset { widde: null } antes de cada evento
só funciona com variáveis da camada de dados.
Validação visual
No GTM em modo Preview (Tag Assistant), interaja com o bloco Widde: os eventos
widde_* aparecem na linha do tempo, com o objeto
widde na aba Camada de dados.
12 Aplicativos
Em desenvolvimento
Estamos abrindo a Widde Pro para integrações de terceiros via app store.
Conectores de e-mail marketing, CRM, suporte, fidelidade e ferramentas de
atribuição vão poder se plugar diretamente nas coleções de vídeo.
Conector nativo para as principais plataformas do mercado brasileiro e internacional.
Em todas elas, a instalação é plug-and-play: autorize, cole o script e
configure os blocos no painel.