Pular para o conteúdo
Templates multicanal

Sua mensagem nos canais certos

Integrar canal por canal vira caro e lento. Com templates, você aprova o conteúdo uma vez e escolhe onde ele vai: SMS, WhatsApp, Telegram, e-mail, push ou RCS. No modelo, cada canal tem interruptor (enabled) e payload próprio; na API, a resposta traz tudo dentro de sms, whatsapp, telegram e email — sem campos planos misturados. Um painel só mostra se chegou, se falhou e quanto custou.

Um modelo · Vários canais · Dados por pessoa · Um painel · Menos integração solta

Multicanal sem repetir trabalho

Um modelo aprovado. Vários canais. Um painel.

Quem recebe quer o aviso no celular, no e-mail ou no WhatsApp. Você liga só os canais que precisa e preenche o texto de cada um. No envio, a lista channels só pode incluir canais habilitados naquele template; nome, pedido e link entram por variáveis. No painel: entregue, erro ou custo por canal.

R$0,05a partir de

O custo depende dos canais usados no disparo. WhatsApp e e-mail R$ 0,05; push R$ 0,01; SMS R$ 0,12; RCS R$ 0,25 — tudo somado com transparência no painel.

Cobrança previsível

Veja o preço por canal antes de mandar. Planeje com o financeiro sem surpresa no fim do mês.

Um jeito só de disparar

Hoje WhatsApp, amanhã SMS, ou os dois juntos. Mesmo fluxo. Sem abrir um projeto novo para cada canal.

Agendamento

Escolha data e hora. O sistema envia na janela certa. Se a rede falhar, há nova tentativa automática.

Jornadas mais simples

Exemplo: lembrete no celular e confirmação no e-mail. Uma regra clara em vez de vários fluxos espalhados no código.

Painel em tempo real

Status e gasto por canal na mesma tela. Ninguém precisa juntar planilha de cada provedor.

Um texto, mil pessoas

Você aprova um modelo. Cada cliente recebe o nome e os dados dele. Sem copiar e colar.

Rastreio completo

Do pedido de envio ao resultado final fica registrado. Suporte e auditoria sabem o que aconteceu.

Troque de canal sem recomeçar

Passou a priorizar WhatsApp em vez de e-mail? Ajuste onde manda. O que já está pronto continua servindo.

Métricas

Número por canal. Sem achismo.

Usa mais de um canal? Então precisa ver custo e entrega separado para cada um. Só assim dá para ver o que funciona e cortar o que não vale a pena.

Quanto custou cada canal

Na mesma campanha, compare SMS e e-mail em reais. Decisão com dado, não com feeling.

O que entregou e o que falhou

Veja taxa de sucesso por canal e por lista. Ajuste mensagem ou público com precisão.

Um saldo, uma visão

Créditos e consumo no mesmo lugar. Acabou a soma manual por canal.

Cada envio com histórico

Do início ao fim fica registrado. O suporte abre o painel e explica ao cliente o que ocorreu. Sem caixa preta.

Agendamento

Envie na hora certa

Combine lembrete no WhatsApp e e-mail no horário que o cliente espera. O fuso é o do seu workspace — não manda de madrugada sem querer.

Horário que o time entende

Agende no fuso do Brasil (ou do seu workspace). Acabou confusão com UTC.

Painel ou código

Quem agenda pela tela e quem agenda por integração usam o mesmo motor.

Pico de volume

Black Friday ou folha de pagamento: você programa; a fila segura o pico.

Dados por pessoa

Personalizado, sem erro manual

O modelo é fixo e aprovado. Nome, pedido e link vêm do seu sistema na hora do envio. Cada um recebe a versão dele. Menos erro humano.

sms: { enabled: true, payload: { content: "…{{nome}}…" } }

Um dado, vários formatos

O mesmo pedido vira linha curta no SMS e texto longo no e-mail. Uma fonte de verdade.

send: { channels: ["sms","email"], variables: { … } }

Quando faltar informação

Defina texto padrão se algum campo vier vazio. A jornada não quebra no meio.

Governança

Respeito a quem recebe

Mais canais não precisam virar mais spam. Separe o que é oferta do que é cobrança ou aviso obrigatório. Respeite opt-out e preferências.

Tipos de mensagem separados

Promoção, transacional e cobrança ficam claros. Menos risco de mandar o tipo errado para a pessoa errada.

Uma pessoa, vários canais

O mesmo contato no WhatsApp, Telegram, SMS e e-mail com histórico ligado. Menos contradição entre canais.

Integração

Você manda. A plataforma distribui.

Seu sistema dispara uma vez. A Notifique coloca na fila, tenta de novo se precisar e avisa o seu CRM. Você não gerencia cada canal na mão.

Aviso automático no seu sistema

Quando entrega ou falha, seu backend ou CRM pode ser avisado. Menos consulta manual.

Código ou painel

Quem programa usa API ou SDK. Quem opera usa a tela. Os dois veem o mesmo template e o mesmo resultado.

O que você ganha em três frases

  • No template você habilita só os canais que existem naquele fluxo; no send, channels lista o que entra naquela rodada (sempre dentro do que está habilitado).
  • Um disparo seu vira envio nos canais que você marcou. Status e fila vêm prontos.
  • Pode usar um canal ou vários no mesmo envio. Você escolhe a cada vez.

Exemplo: código no celular e no e-mail

Primeiro você define o template com cada canal em { enabled, payload }. Depois dispara com channels contendo só um subconjunto dos canais ligados (ex.: SMS e e-mail, sem WhatsApp). Dois códigos diferentes, um gatilho no seu sistema. Detalhes na documentação.

Passo 1 — Criar template (canais e conteúdo por bloco)

TypeScript
// 1) Criar o template — cada canal: { enabled, payload }
// A API devolve enabledChannels e blocos sms | whatsapp | telegram | email (sem smsContent/whatsappContent no root).
await fetch("https://api.notifique.dev/v1/templates", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer sk_live_xxxxx",
},
body: JSON.stringify({
name: "otp_duplo_login",
category: "AUTHENTICATION",
language: "pt_BR",
sms: {
enabled: true,
payload: {
content: "Olá {{nome}}, código SMS: {{otp_mobile}} (válido {{validade_min}} min).",
},
},
whatsapp: {
enabled: true,
payload: {
content: "Olá {{nome}}, código no WhatsApp: {{otp_mobile}}",
},
},
telegram: { enabled: false, payload: {} },
email: {
enabled: true,
payload: {
subject: "Seu código de acesso",
html: "<p>Olá {{nome}}, código: <strong>{{otp_web}}</strong></p>",
},
},
}),
});

Passo 2 — Enviar (channels ⊆ template)

TypeScript
// Backend Node/TS — 2) Disparar (channels ⊆ canais habilitados no template)
const otpMobile = String(Math.floor(100000 + Math.random() * 900000));
const otpWeb = String(Math.floor(100000 + Math.random() * 900000));
await otpStore.save({
userId: "usr_123",
mobileOtp: otpMobile,
webOtp: otpWeb,
expiresAt: new Date(Date.now() + 5 * 60 * 1000),
});
const res = await fetch("https://api.notifique.dev/v1/templates/send", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer sk_live_xxxxx",
},
body: JSON.stringify({
to: ["5511999999999", "[email protected]"],
template: "otp_duplo_login",
// Só canais com enabled: true no template (ex.: não inclua "telegram" se estiver desligado)
channels: ["sms", "email"],
variables: {
nome: "João",
otp_mobile: otpMobile,
otp_web: otpWeb,
validade_min: "5",
},
// instanceId: obrigatório se "whatsapp" ∈ channels e não houver instância padrão
// telegram: { instanceId: "..." } — se "telegram" ∈ channels
// from — se e-mail ∈ channels e não houver domínio padrão
}),
});
if (!res.ok) throw new Error("Falha ao enviar");
const payload = await res.json();
console.log(payload.data?.messageIds);

Quem valida o código

A regra de ‘está certo ou errado’ continua no seu produto. A Notifique só entrega a mensagem.

TypeScript
type ConfirmInput = { userId: string; mobileCode: string; webCode: string };
export async function confirmOtpDual(input: ConfirmInput) {
const current = await otpStore.getByUserId(input.userId);
if (!current) throw new Error("OTP não encontrado");
if (new Date() > current.expiresAt) throw new Error("OTP expirado");
const mobileOk = await verifyHash(input.mobileCode, current.mobileOtpHash);
const webOk = await verifyHash(input.webCode, current.webOtpHash);
if (!mobileOk || !webOk) throw new Error("Códigos inválidos");
await otpStore.consume(input.userId);
return { ok: true, authenticatedAt: new Date().toISOString() };
}

Quer um painel e um fluxo para SMS, WhatsApp, e-mail, push e RCS?