Canais de notificação
Um canal é um destino para alertas. Adicione quantos precisar, e depois vincule aos monitores individuais (ou a todos os monitores por padrão).
Canais vs. substituições de monitor
Canais são definidos a nível da organização. Cada canal pode ser marcado como o padrão — o que significa que os novos monitores enviam para ele automaticamente. Em qualquer monitor específico você pode substituir o padrão e escolher um subconjunto personalizado.
Slack
- No Slack, vá em
Apps → Incoming Webhooks → Add to Slacke selecione o canal que deve receber os alertas. - Copie a URL do webhook fornecida pelo Slack.
- No Page Deltas, abra a página
Canais,Adicionar um canal, escolhaSlack, cole a URL e salve. - Clique em
Enviar testepara confirmar se a mensagem chega ao canal certo no Slack.
Discord
No servidor do Discord, abra Configurações do Servidor → Integrações → Webhooks → Novo Webhook. Copie a URL e cole num novo canal do Discord no Page Deltas.
Microsoft Teams
No Teams, clique com o botão direito do mouse no canal de destino, Conectores → Incoming Webhook → Configurar. Nomeie como Page Deltas, salve e copie a URL para o Page Deltas.
Adicione o endereço do destinatário. Enviaremos primeiro um e-mail de verificação a esse endereço — o canal fica no estado de pendente de verificação e não receberá alertas até o destinatário confirmar. O envio de e-mails parte de um domínio verificado nosso. Para envio de equipe, utilize um alias de grupo ao invés de adicionar contas individuais, uma por vez.
Webhook genérico
Use isto quando quiser impulsionar o seu próprio sistema através de alertas (Linear, Jira, um Lambda, um Slack-via-bot, etc.).
Payload
O corpo (body) é um objeto JSON plano. Novos campos podem ser adicionados ao longo do tempo, portanto ignore chaves desconhecidas em vez de rejeitá-las.
POST <your URL>
Content-Type: application/json
X-Signature: sha256=<hex>
{
"event": "change.detected",
"monitor_id": "...",
"monitor_url": "https://example.com/pricing",
"monitor_name": "Competitor pricing page",
"change_id": "...",
"detected_at": "2026-06-01T12:00:00Z",
"summary": "Pro plan increased from $29 to $39/month.",
"before_screenshot_url": "https://.../before.png",
"after_screenshot_url": "https://.../after.png",
"dashboard_url": "https://app.pagedeltas.com/monitors/..."
}Verificação da assinatura (HMAC)
Cada solicitação contém o cabeçalho X-Signature no formato sha256=<hex>, em que o valor é o HMAC-SHA256 do corpo da solicitação bruto utilizando o segredo do seu canal — mostrado apenas na hora da criação. Não há componente de timestamp.
# Node.js example
import crypto from "node:crypto";
function verify(req, rawBody, secret) {
const header = req.headers["x-signature"]; // "sha256=<hex>"
const expected =
"sha256=" +
crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
return crypto.timingSafeEqual(
Buffer.from(header),
Buffer.from(expected),
);
}Entrega e falhas
| Comportamento | Detalhes |
|---|---|
| Tentativas | Cada alerta é enviado em tentativa única por canal. Atualmente não há repetições automáticas — certifique-se de que o destinatário responda rapidamente e ignore duplicatas preventivamente. |
| Falhas | Uma resposta que não seja 2xx ou problema na rede define a entrega como falha. O monitor não sofre pausa devido a falhas na entrega. |
| Auditoria | Cada tentativa (sucesso ou falha, e com código de status HTTP) fica registrada no lado do servidor em log de envio. |
Melhores práticas
- Use um canal para um canal do Slack do workspace — não reutilize o webhook em várias salas do Slack.
- Para monitores muito ativos, envie para um canal dedicado do Slack ao invés do movimentado #general.
- Para avisos vitais, combine dois canais que possuam métodos diferentes (ex. Slack + email) garantindo que, se ocorrer uma falha do Slack, não esconda uma grande mudança.