SuiteCheckoutLogin WhatsAppUpsellPreçosFAQDocs
Documentação

Univer Checkout

Tudo que você precisa pra instalar, configurar e dominar o checkout que vende quando todos os outros falham.

2 etapas, single-page

Identificação e pagamento numa tela só. Sem redirects. Carrega em <1s.

Login passwordless

OTP via WhatsApp ou magic-link por email. Cliente nunca esquece senha.

Tracking de funil

Tempo por etapa, abandono, heatmap de campos, UTM completo. Sem GA.

Upsell 1-clique

Cobra cartão salvo do cliente sem ele redigitar nada. Mercado Pago.

Visão geral

O Univer Checkout substitui o checkout padrão do WooCommerce por uma experiência otimizada pra conversão no mercado brasileiro. Foi construído pra ser ultra-leve, single-page e plug-and-play: você instala, configura SMTP e gateway, e o resto funciona.

Diferente de page builders que tentam fazer tudo, o Univer é opinionado: a UX foi desenhada pra reduzir atrito do cliente brasileiro (CPF, CEP, parcelamento, OTP por WhatsApp) e tudo que distrai foi removido.

Plug-and-play de verdade

Após ativar o plugin, o checkout entra automaticamente. Não precisa reconfigurar páginas, shortcodes ou trocar template.

Instalação

  1. 1Faça upload do plugin
    Suba a pasta univer-checkout pra /wp-content/plugins/ via FTP, ou instale o ZIP em Plugins → Adicionar → Enviar plugin.
  2. 2Ative
    Em Plugins, clique em "Ativar" no card do Univer Checkout. As tabelas auxiliares são criadas automaticamente.
  3. 3Configure
    Vá em Univer Checkout no menu admin e revise: tema, cores, SMTP, OTP, gateway.
  4. 4Teste em uma compra real
    Faça um pedido com valor baixo pra validar o fluxo end-to-end, especialmente a primeira parcela e o magic-link de email.

Requisitos

WordPressdefault: 6.0+
Testado até 6.7
WooCommercedefault: 8.0+
HPOS compatível. Testado até 10.3
PHPdefault: 7.4+
Recomendado 8.1+
Mercado Pagodefault: 7.x+
Plugin oficial. Necessário pra save-card e upsell
Cloudflare Worker
Opcional. Necessário só pra OTP via WhatsApp
Wallet plugin
Opcional. Auto-detecta UniverWallet, TeraWallet, WPS, Flintop

Plugins a remover

O Univer Checkout substitui completamente o checkout do Woo. Pra evitar conflitos, desative ou remova:

Conflito garantido

Plugins de campos do checkout sobrescrevem nossos campos e quebram o validator. Use só o Univer Checkout.

  • Plugins de campos do checkout — Checkout Field Editor, WC Checkout Manager
  • Auto-completar de endereço de terceiros — já incluído via API ViaCEP
  • SMTP plugins (WP Mail SMTP, Easy SMTP) — desnecessário, temos SMTP nativo
  • PIX manual com QR estático — temos PIX dinâmico via Mercado Pago

Single-page em 2 etapas

O fluxo foi desenhado pra reduzir atrito ao mínimo. O cliente vê uma página dividida em 2 passos curtos:

  1. 1Identificação
    O cliente informa email ou CPF. Se já houver conta, o sistema oferece login passwordless (WhatsApp ou magic-link, dependendo se ele tem telefone cadastrado). Se for novo, segue cadastro inline. Sem senha.
  2. 2Endereço + Pagamento
    CEP auto-completa endereço (via ViaCEP). Cliente escolhe forma de pagamento (cartão, PIX, boleto), preenche o necessário e confirma. Tudo na mesma página, sem refresh.

Login InteligenteBR · PRO

O cliente nunca precisa criar senha. O Univer Checkout reconhece se o email já está cadastrado e oferece duas formas de autenticação passwordless:

OTP via WhatsApp

Um código de 6 dígitos é enviado via WhatsApp pelo seu próprio número (via WAHA + Cloudflare Worker). Validade configurável (default 5 min). Funciona melhor pro Brasil — taxa de entrega superior a SMS.

Magic-link por email

Link único enviado por email. Cliente clica e entra. Útil pra quem não responde no WhatsApp ou tem segundo número.

Settings de auth

auth_methoddefault: both
whatsapp / email / both — qual canal oferecer no fluxo
enable_instant_logindefault: true
Liga o passwordless inteiro (toggle global)
auto_create_accountdefault: false
Cria conta WP automaticamente para emails novos. DoS-mitigation default false
auto_login_newdefault: true
Já loga o cliente após cadastro inline
role_profissionaldefault: profissional
Role atribuída quando cliente declara ser profissional
role_homecaredefault: homecare
Role pra cliente final (homecare)
User_Guard — roles privilegiadas bloqueadas

Magic-link e OTP são bloqueados pra contas com roles administrator, editor, author, contributor, shop_manager, super_admin — ou qualquer role com uma das capabilities manage_options, edit_users, list_users, delete_users, manage_woocommerce, edit_others_posts, edit_pages, manage_categories, install_plugins, edit_theme_options. Defesa em camadas contra account takeover via canal lateral. Você pode estender (em qualquer direção) com o filter univer_checkout_user_is_privileged.

Hardening anti-DoS

Magic-link com rate-limit por subnet /24 IPv4 + cap global de 50 auto-creates por hora. OTP com rate-limit por IP (60/min) e por número.

Pagamento

Cartão, PIX e boleto via integração nativa com o Mercado Pago oficial. PIX dinâmico (QR e copy-paste), boleto com pré-data automática. Tudo cobrado direto na conta do lojista. Detection de gateway de cartão é via slug (mercado + custom/credit) — extensível pelo filter univer_checkout_is_card_gateway.

Cartão

Save-card opcional. Parcelamento até 12x. Apenas card_id e customer_id opacos do MP + 4 últimos dígitos. Sem PAN, sem CVV.

PIX

QR code dinâmico, expiração configurável. Toggle via enable_native_pix.

Boleto

Pré-data automática. Confirmação via webhook.

Desconto por método

% de desconto independente para PIX e boleto.

enable_native_pixdefault: true
Renderiza QR code + copia-cola direto na página (sem redirect ao MP)

Parcelamento

Configure como o lojista cobra parcelamento BR direto nas settings. As regras são respeitadas em todo lugar — checkout, página de upsell e save-card.

installments_maxdefault: 12
Número máximo de parcelas oferecidas
installments_free_uptodefault: 3
Parcelas sem juros (1x até esse valor)
installments_interestdefault: 1.99
Juros mensal % aplicado a partir da parcela N+1
installments_min_valuedefault: 10.00
Valor mínimo por parcela em BRL
discount_pix_percentdefault: 0
% de desconto pra PIX
discount_boleto_percentdefault: 0
% de desconto pra boleto

Frete

Consome os métodos de envio nativos do WooCommerce e renderiza com presets visuais: prazo, valor e label "Médio/Máximo".

shipping_max_daysdefault: 12
Cap de dias úteis pra "Máximo"
shipping_label_avgdefault: Médio
Label do prazo médio
shipping_label_maxdefault: Máximo
Label do prazo máximo
shipping_aliasesdefault: []
Map de aliases pra renomear "PAC" → "Correios padrão" etc
shipping_strip_parensdefault: true
Remove "(prazo: X dias)" do nome do método

Temas3 temas

Três temas visuais embutidos. Cada um troca apenas tokens CSS — o app JS é o mesmo. Você muda em 1 click sem perder configuração.

Light

Clean, branco, padrão. Recomendado pra lojas neutras.

Black

Premium tipo Linear/Vercel. Tudo escuro. Para marcas premium.

Glass

Aurora gradient + glassmorphism + glow primary. Diferenciado.

Settings de aparência

checkout_themedefault: light
light / black / glass — tema visual base do checkout
theme_color_primary
Override opcional da cor primária do tema (ex: "#7C3AED"). Vazio = usa default do tema
theme_color_primary_dark
Variante mais escura para hover (ex: "#5B21B6"). Vazio = computado a partir de theme_color_primary
logo_url
Logo da loja exibida no resumo do pedido (separado de header_logo_url)
color_primarydefault: #10B981
Cor primária legacy — usada quando nem theme_color_primary nem o tema definem cor
color_primary_darkdefault: #059669
Variante escura legacy
footer_textdefault: Essa compra está sendo feita no Brasil
Texto exibido no rodapé do checkout
custom_css
CSS adicional injetado no checkout (use com parcimônia — pode quebrar layout responsivo)

Override de cor primária — exemplo

Override opcional preserva o tema. Útil pra adequar à identidade visual da loja sem trocar o tema inteiro.

// Settings → Aparência
theme_color_primary:      "#7C3AED"  // botões / accents
theme_color_primary_dark: "#5B21B6"  // hover

O topo do checkout é totalmente configurável: cor de fundo, logo, subtítulo, padding e tamanho da logo.

header_background_color
Cor de fundo do header (vazio = transparente, herda do tema)
header_logo_url
Logo do header (PNG/SVG/WEBP)
header_subtitle
Texto debaixo do logo (ex: "Compra segura · BR")
header_subtitle_colordefault: #ffffff
Cor do subtítulo
header_subtitle_font_sizedefault: 14
Tamanho do subtítulo em px
header_subtitle_font_weightdefault: 500
Peso da fonte do subtítulo (100–900)
header_padding_topdefault: 36
Padding superior em px
header_padding_bottomdefault: 32
Padding inferior em px
header_logo_max_heightdefault: 64
Altura máxima da logo em px
header_logo_max_widthdefault: 0
Largura máxima da logo em px (0 = ilimitado, mantém ratio)

Trust badges & bullets

Bullets aparecem abaixo do checkout pra reforçar credibilidade. Os defaults vêm prontos:

  • Produto em estoque, envio rápido
  • Compra 100% segura e criptografada
  • Suporte humano por WhatsApp

Trust badges (Site Blindado, Reclame Aqui, Visa Verified) podem ser inseridos via array trust_badges com URL da imagem e link.

Página de obrigado

Após o pagamento, o plugin sobrescreve completamente o template order-receiveddo WC (e do tema) com um bundle Preact próprio. Isso evita os blocos parasitas dos temas ("Comprar de novo" do Woodmart, "custo do parcelamento", etc) e garante visual coeso com o checkout. O theme escolhido (light/black/glass) é estendido automaticamente pra cá.

O cliente acessa via order_key na URL — mesmo modelo de auth que o WC usa pra guest checkouts, então não precisa estar logado. É também onde o upsell 1-clique aparece.

thankyou_color_bgdefault: #FAF7F1
Cor de fundo da página
thankyou_color_textdefault: #1A1611
Cor do texto principal
thankyou_color_accentdefault: #8C6929
Accent (links, destaques)
thankyou_cta_bg_startdefault: #C49643
Início do gradient do botão
thankyou_cta_bg_enddefault: #A87A2A
Final do gradient do botão
thankyou_check_colordefault: #B58A3C
Cor do círculo de confirmação

Tracking analíticoPRO

Toda sessão de checkout é instrumentada — sem cookies de terceiros, sem GA. Os dados ficam no seu próprio banco, em tabelas dedicadas.

Tempo por etapa

Quanto tempo cada cliente passa em "identificação" vs "pagamento".

Funil de conversão

Visitas → preencheram → confirmaram → pagaram. Drop-off por etapa.

Heatmap de campos

Quais campos são preenchidos com erro, retried ou abandonados.

UTM completo

source/medium/campaign/term/content preservados pela sessão.

tracking_enableddefault: true
Liga/desliga ingest de eventos
event_retention_daysdefault: 90
Dias antes de purge automático
exclude_admin_sessionsdefault: true
Ignora admins logados (mantém métricas limpas)
admin_ipsdefault: []
Allowlist de IPs/CIDR pra excluir (ex: 10.0.0.0/8)
Privacy-first

Sem cookies de terceiros. Sem GA. Sem Meta Pixel. Os dados são seus. /events tem cap de 32KB por payload e 50 events por batch.

Recuperação de carrinho

Sessão sem conclusão é marcada como abandoned após N minutos (default 30) por um cron próprio do plugin. A partir daí, a sessão fica disponível na tabela univer_sessions com todos os dados do cliente — email, telefone, carrinho, UTMs — pra você integrar com o seu canal de recuperação.

Como disparar lembretes

O plugin não envia emails de recuperação automaticamente — ele expõe os dados pro seu CRM/email tool de preferência (Brevo, ActiveCampaign, RD Station, FluentCRM, Univer Loyalty etc). Cenário típico:

  1. 1Plugin marca sessão como abandonada
    Cron univer_checkout_abandonment_scan roda e atualiza status = abandoned nas sessões inativas há mais de N minutos.
  2. 2Você consome a tabela univer_sessions
    Via SQL direto, REST custom ou hook do seu CRM. Os campos relevantes: email, phone, cart_total, utm_*, last_step.
  3. 3Dispara o lembrete
    Email transacional (SMTP nativo do próprio plugin já serve), WhatsApp via WAHA, ou via integração nativa com Univer Loyalty / Univer Tracker.
abandon_after_mindefault: 30
Minutos de inatividade pra marcar sessão como abandoned
event_retention_daysdefault: 90
Dias antes do sweep purgar sessões/events antigos
Roadmap — disparo automático

Versões futuras vão incluir templates de email/WhatsApp embutidos com timers configuráveis (1h, 24h, 3 dias) e cupom de incentivo automático. Por enquanto, o plugin entrega os dados e você escolhe a ferramenta de envio.

Upsell pós-compra 1-cliquePRO

Depois do pagamento aprovado, oferece um produto extra na página de obrigado. Cliente clica em "Quero também" e o cartão salvo é cobrado sem redigitar nada.

  1. 1Save-card opt-in
    No checkout original, o cliente concorda em salvar o cartão (token Mercado Pago).
  2. 2Thankyou injector
    Página de obrigado mostra a oferta de upsell.
  3. 31-clique → Mercado Pago
    Backend chama API do MP com token salvo + idempotency-key. Pedido criado em < 800ms.
  4. 4Cart price override
    Se o produto tem preço diferenciado pro upsell, sobrescreve no carrinho.

Modos:

  • auto — sistema escolhe melhor produto baseado no carrinho do pedido principal (default)
  • fixed — produto único definido nas settings
  • off — desabilita upsell na página

Cupom via URL

Aplica cupom automaticamente quando o cliente chega via link com o parâmetro ?coupon=:

// Exemplo: BLACKFRIDAY aplicado automaticamente
https://sualoja.com.br/checkout/?coupon=BLACKFRIDAY

Funciona com qualquer cupom criado em WooCommerce → Cupons. Se inválido/expirado, é ignorado silenciosamente.

enable_coupon_urldefault: true
Liga/desliga a aplicação automática de cupom via parâmetro ?coupon=

Pontos / Loyalty

Sistema de pontos opcional integrado ao checkout. Mostra "Você ganhará X pontos nesta compra!" abaixo do total e grava pontos na finalização.

points_enableddefault: false
Liga sistema de pontos
points_ratedefault: 1
Pontos ganhos por R$ gasto
points_labeldefault: pontos
Label customizado ("Lizzcoins", "stars" etc)
points_messagedefault: Você ganhará {points} {label}…
Mensagem com placeholders

Mercado Pago

Integração nativa com o plugin oficial woocommerce-mercadopago. Necessário pra save-card, upsell 1-clique e parcelamento BR completo. PIX e boleto funcionam pelo gateway nativo do MP.

Hardening de produção

API do MP roda com retry exponencial (250ms / 1s) em 502/503/504. Idempotency-key é UUID v4 RFC4122-compliant — duplo-clique nunca gera 2 cobranças.

SMTP nativo

Envio de emails (magic-link, recibo, recuperação) sem depender de plugins extras tipo WP Mail SMTP. Configure direto nas settings:

smtp_enableddefault: false
Liga o SMTP nativo
smtp_host
Host SMTP (ex: smtp.gmail.com)
smtp_portdefault: 587
Porta SMTP
smtp_encryptiondefault: tls
tls / ssl / none
smtp_authdefault: true
Exige autenticação. Desligue só pra relay interno
smtp_username
Usuário SMTP
smtp_password
Senha SMTP (criptografada via libsodium em rest)
smtp_from_email
Email de remetente
smtp_from_name
Nome do remetente
Pré-flight openssl

O plugin verifica se a extensão openssl está habilitada. Se faltar, mostra notice no admin (evita falha silenciosa em deploy).

WhatsApp / WAHA

Pra OTP via WhatsApp, configure um Cloudflare Worker próprio que se conecta na sua WAHA (WhatsApp HTTP API). Isso permite envio do seu número oficial sem custos de SMS BR.

  1. 1Suba a WAHA
    Em servidor próprio (Docker recomendado) ou serviço cloud. Configure session com seu número.
  2. 2Deploy Cloudflare Worker
    Use o template fornecido na doc do projeto. Define o segredo HMAC compartilhado.
  3. 3Configure plugin
    Cole a URL do Worker, o segredo HMAC, a URL da WAHA e o nome da session.
waha_worker_url
URL do seu Cloudflare Worker
waha_worker_secret
Segredo HMAC compartilhado entre WP e Worker
waha_api_url
URL pública da sua WAHA
waha_api_key
API key da WAHA
waha_session
Nome da session no WAHA
waha_otp_templatedefault: *{site_name}*\n…
Template da mensagem com placeholders {site_name}, {code}, {expires_minutes}. Default usa formatação WhatsApp (negrito + quebras)
waha_otp_lengthdefault: 6
Dígitos do código
waha_otp_ttldefault: 5
Validade em minutos

Wallet / SaldoBONUS

Feature opcional que permite o cliente usar saldo de carteira (store credit) no checkout. Auto-detecta os providers compatíveis na ativação:

  • UniverWallet — nosso plugin nativo
  • Wallet for WooCommerce (Flintop)
  • TeraWallet
  • WPS Wallet
  • Custom — registre via filter univer_checkout_wallet_balance

Se nenhum provider estiver presente, a feature desativa graciosamente — sem erro, sem UI quebrada. Se você quiser desligar mesmo com provider presente (ex: durante uma campanha), use a setting:

enable_walletdefault: true
Liga/desliga o uso de saldo no checkout. Quando false, a UI de wallet não é renderizada e nenhum saldo é debitado, mesmo com plugin de wallet ativo
Anti-topup

Carrinhos contendo um produto de "recarga de saldo" (top-up) não permitemuso de wallet — evita o loop "pago carteira com carteira". Detecção via filter univer_checkout_cart_contains_topup.

Licenciamento

Sistema de licença com 3 camadas de gate independentes — defesa em profundidade, nenhuma é suficiente sozinha.

  1. 1Frontend template (priority 98)
    Antes do checkout renderizar, um template_include filter intercepta e mostra a tela de bloqueio se a licença estiver inativa. Mais cedo que qualquer outro plugin no pipeline.
  2. 2REST gate (rest_pre_dispatch)
    Todas as rotas /wp-json/univer/v1/* retornam 503 quando a licença está bloqueada, exceto as rotas /license/* e /cep/* (pra você conseguir reativar).
  3. 3Admin banner
    admin_notices mostra estado da licença em todas as telas do wp-admin com link direto pra reativação.

Verificação criptográfica

Tokens são assinados com Ed25519 (libsodium) e re-verificados a cada read — qualquer tentativa de adulterar o option no DB invalida o token. Domain-binding: o token traz o host de issuance e é rejeitado se mudou.

Heartbeat e grace period

Cron diário chama o licensing server pra revalidar. Se o servidor estiver inalcançável, o site continua funcionando por 7 dias (grace period) com base no último signed_token válido. Após esse prazo, o gate ativa.

Plano de contingência

Se o licensing server ficar fora por >7 dias, o checkout bloqueia. Tenha o canal de suporte em mãos pra reset manual da licença em um cenário catastrófico.

Persistência de settings

Suas settings sobrevivem updates

Ativação NUNCA reseta valores. Migrations só ADICIONAM ou RENAME keys. Backup automático em univer_checkout_settings_backup antes de qualquer renomeação.

Settings ficam em wp_options.univer_checkout_settings. Em cada read, defaults são mergeados atrás dos valores salvos (nunca sobrescrevem). Em cada save, só as keys explícitas são tocadas.

Developer hooks

O Univer Checkout expõe hooks (filters e actions) pra extensão sem precisar fork. Todos seguem o prefixo univer_checkout_*. Use no functions.php do tema ou em um plugin filho.

Filters — comportamento

univer_checkout_user_is_privileged
Override da decisão de bloquear magic-link/OTP. Recebe (bool $is_priv, WP_User|null $user). Retorne true pra forçar bloqueio.
univer_checkout_is_card_gateway
Define se um gateway é "de cartão" (habilita save-card / upsell 1-clique). Recebe (bool $is_card, string $gateway_id)
univer_checkout_wallet_balance
Provider customizado de saldo. Recebe (float $balance, int $user_id). Retorne o saldo final em BRL
univer_checkout_cart_contains_topup
Detecta produto de "recarga de saldo" no carrinho — desabilita uso de wallet pra evitar loop. Recebe (bool $has_topup)
univer_checkout_session_is_bot
Marca session como bot (não vai pra analytics). Recebe (bool $is_bot, string $user_agent)
univer_checkout_skip_admin_session
Força skip de session por critério custom. Recebe (bool $skip, string $client_ip)
univer_checkout_revenue_statuses
Custom set de status que contam como receita nos KPIs. Recebe array de status slugs
univer_checkout_thankyou_pix_data
Modifica os dados de PIX exibidos na thank-you (QR, copia-cola, expiração). Recebe (array $data, WC_Order $order)
univer_checkout_default_country
ISO country code default pra normalização de telefone OTP (default "BR")
univer_checkout_mp_site_id
Override do site_id do Mercado Pago (default "MLB" — Brasil)
univer_checkout_mp_test_mode
Force-override test/prod mode do Mercado Pago. Recebe (bool $is_test)
univer_checkout_points_icon_url
URL do ícone exibido ao lado dos pontos no resumo do pedido
univer_checkout_installments_max
Override do número máximo de parcelas (vence o setting)

Actions — eventos

univer_checkout_wallet_debit
Disparado quando saldo é debitado em uma compra. Recebe (int $user_id, float $amount, int $order_id, WC_Order $order). Útil pra logar histórico ou notificar

Crons agendados

univer_checkout_abandonment_scan
Roda a cada hora. Marca sessões inativas há mais de abandon_after_min como abandoned
univer_checkout_retention_sweep
Roda diariamente. Purga sessions/events com mais de event_retention_days

Tabelas no banco

Prefixo {wp_prefix}_univer_. Todas têm índices estratégicos pra queries de funil e timeline.

univer_sessions
Sessão do checkout (UTM, device, IP hash, status, cart_total)
univer_events
Stream de eventos (step.enter, field.focus, order.submit) com timestamp em ms
univer_step_timings
Tempo de entrada/saída por etapa do funil
univer_field_stats
Heatmap por campo: focus_count, total_ms, error_count
univer_upsell_rules
Regras de upsell (trigger por produto/categoria, oferta, desconto)
univer_saved_cards
Cards salvos no MP pra one-click (mp_customer_id, mp_card_id, last4, brand)
univer_upsell_events
Eventos de upsell (shown / accepted / charged) com order link

REST API

Todos os endpoints ficam sob o namespace /wp-json/univer/v1/. As rotas administrativas exigem capability manage_woocommerce; rotas públicas são protegidas por nonce + rate-limit.

  • POST /checkout/bootstrap · /coupon · /shipping · /submit · /wallet — fluxo do checkout
  • POST /auth/instant-login · /verify · /recover — passwordless
  • POST /events — ingest de eventos (32KB / 50 events por batch)
  • GET /analytics/* — KPIs, funnel, timings, field-stats, sessions (admin only)
  • GET /upsell/offers/{order_id} · POST /upsell/accept — fluxo de upsell 1-clique
  • POST /license/{state|activate|sync|deactivate} — gerência de licença
  • POST /cep/lookup — proxy ViaCEP

LGPD / Uninstall

Quando você desinstala o plugin pelo wp-admin, o uninstall.php é LGPD-aware:

  • Drop de todas as tabelas univer_* (sessions, events, step_timings, field_stats, upsell_rules, saved_cards, upsell_events, otp_codes legacy)
  • Delete de todas as options: univer_checkout_settings, _settings_backup, _settings_version, _db_version, _hash_salt
  • Cancela crons agendados (univer_checkout_abandonment_scan + _retention_sweep)
  • Limpa transients _transient_univer_*, locks univer_lock_* e idempotency keys univer_idem_*
  • Remove user_meta com prefix _univer_ (não toca em billing_* do Woo, esse é histórico do lojista)
  • Remove order_meta com prefix _univer_ em ambos os modelos: HPOS e legacy posts

Após desinstalar, nada do plugin permanece no banco. Zero footprint.

Problemas comuns

Checkout não aparece

Verifique se o WooCommerce está ativo. Em WooCommerce → Status, confirme que a página de Checkout está mapeada e que não há erro de banco. Se persistir, ative WP_DEBUG e cheque wp-content/debug.log.

Magic-link cai em spam

Configure SMTP nativo e use SPF/DKIM no DNS. Sem SMTP, o WordPress usa mail() que é flagged por gmail/outlook.

OTP não chega

Cheque o log do Cloudflare Worker, status da WAHA e formato do número (BR usa 9 dígitos no celular). O plugin tem resolver automático que tenta com e sem o 9.

Save-card falha em produção

Save-card requer Mercado Pago em modo produção (não sandbox) e plugin oficial atualizado. Verifique SANDBOX_MODE nas configurações do MP.

Settings sumiram após update

Não acontece — o framework de persistência preserva tudo. Se você ver default em algum campo, é porque essa key foi adicionada em uma migration nova. Confira o backup em univer_checkout_settings_backup.

FAQ

Funciona com gateway que não seja Mercado Pago?

O fluxo básico (PIX, boleto) funciona com qualquer gateway. As features avançadas (save-card, upsell 1-clique, parcelamento BR completo) só funcionam com o Mercado Pago oficial.

Suporta HPOS?

Sim. custom_order_tables declarado como compatível. Cart/Checkout Blocks são incompatíveis intencionalmente — usamos nosso próprio template otimizado.

Posso desativar o upsell?

Sim. Em Univer Checkout → Recursos, mude upsell_mode pra off.

Tem versão multilíngue?

Versão atual é PT-BR. Strings traduzíveis via load_plugin_textdomain. Roadmap inclui ES-AR/MX e EN-US.

Funciona com cache (WP Rocket, LiteSpeed)?

Sim, mas a página de checkout (e a thank-you) precisam estar na exclude list do seu plugin de cache. O Univer Checkout é uma SPA stateful — cachear o HTML quebra o bootstrap. Configure exclusão dos paths /checkout/* e /order-received/* no WP Rocket / LiteSpeed / Cloudflare Page Rules.

Changelog

2.3.0 atual

  • 3 temas embutidos (Light, Black, Glass)
  • Override opcional da cor primária por tema (theme_color_primary + theme_color_primary_dark)
  • Admin session exclusion — sessões iniciadas por admins logados ou IPs em admin_ips são ignoradas no tracking. Suporta CIDR IPv4/IPv6 (ex: 10.0.0.0/8). Mantém o funil limpo durante testes internos.
  • Backup automático de settings antes de qualquer migration (univer_checkout_settings_backup)

2.1.0

  • Hardening pra venda comercial / plug-and-play
  • Wallet multi-provider auto-detect
  • Settings persistence framework formal
  • DoS hardening em magic-link + /events
  • uninstall.php LGPD-aware (zero footprint)
  • Lazy loading por contexto
  • MP API com retry exponencial

2.0.5

  • OTP fix: REQUEST_TIMEOUT 0.5s → 5s

2.0.4

  • Smart phone resolver no Worker (BR 9-vs-no-9)

2.0.3

  • User_Guard: bloqueia magic-link/OTP pra roles privilegiadas

2.0.2

  • SMTP nativo, OTP via Cloudflare Worker, magic-link via ULAU

2.0.0

  • Upsell pós-compra 1-clique com Mercado Pago save-card
  • Tracking analítico completo (sessions, events, timings, fields, UTM)