{"id":112,"date":"2026-09-02T19:21:40","date_gmt":"2026-09-02T22:21:40","guid":{"rendered":"https:\/\/postping.com.br\/blog\/notificacao-automatica-wordpress-tres-canais\/"},"modified":"2026-09-02T19:21:40","modified_gmt":"2026-09-02T22:21:40","slug":"notificacao-automatica-wordpress-tres-canais","status":"publish","type":"post","link":"https:\/\/postping.com.br\/blog\/notificacao-automatica-wordpress-tres-canais\/","title":{"rendered":"Notifica\u00e7\u00e3o autom\u00e1tica no WordPress em tr\u00eas canais diferentes"},"content":{"rendered":"<p>Treze artigos sa\u00edram deste blog entre 19 de agosto e 1\u00ba de setembro de 2026, os quatro \u00faltimos com intervalo de praticamente 24 horas entre um e outro. Dentro do WordPress, cada um deles foi um evento s\u00f3: um post que mudou de estado. O trabalho aparece depois, quando esse evento \u00fanico precisa virar mensagem em canais que n\u00e3o combinaram nada entre si: o Discord aceita quase o texto cru, o Telegram cobra aten\u00e7\u00e3o na pontua\u00e7\u00e3o e o Teams desligou em maio a porta que todo mundo usava, derrubando quem n\u00e3o tinha migrado.<\/p>\n<p>Acompanhamos o mesmo aviso saindo pelos tr\u00eas, com a documenta\u00e7\u00e3o oficial de cada plataforma aberta hoje e os dados deste blog na m\u00e3o. Quem nunca configurou um desses gatilhos encontra a explica\u00e7\u00e3o de base em <a href=\"https:\/\/postping.com.br\/blog\/o-que-e-webhook\/\">o que \u00e9 um webhook<\/a>.<\/p>\n<h2>Seis dos treze posts foram editados depois de j\u00e1 estarem no ar<\/h2>\n<p>D\u00e1 para conferir isso em qualquer blog sem abrir o painel: a API REST do WordPress devolve <code>date_gmt<\/code>, a hora da publica\u00e7\u00e3o, e <code>modified_gmt<\/code>, a da \u00faltima altera\u00e7\u00e3o. Neste blog, seis dos treze artigos t\u00eam o segundo campo maior que o primeiro. Em tr\u00eas deles a diferen\u00e7a passa de 37 horas: o texto ficou no ar quase dois dias antes de algu\u00e9m voltar e corrigir alguma coisa.<\/p>\n<p>Prender o disparo ao salvamento do post significa mandar seis mensagens repetidas em treze publica\u00e7\u00f5es, sem contar autosave e revis\u00e3o, que passam pelo mesmo caminho. O que interessa \u00e9 a transi\u00e7\u00e3o de estado: o post saiu de rascunho, agendado ou pendente e chegou em publicado. O WordPress entrega essa transi\u00e7\u00e3o com o estado anterior e o novo lado a lado, e a compara\u00e7\u00e3o entre os dois \u00e9 a trava inteira. Se o estado anterior j\u00e1 era publicado, n\u00e3o \u00e9 publica\u00e7\u00e3o nova, \u00e9 edi\u00e7\u00e3o, e ningu\u00e9m precisa ser avisado de novo.<\/p>\n<p>O caso agendado \u00e9 o que mais quebra implementa\u00e7\u00e3o caseira. Um post que vai ao ar \u00e0s sete da manh\u00e3 de domingo muda de estado dentro do cron do WordPress, sem navegador aberto, sem requisi\u00e7\u00e3o de ningu\u00e9m. Se o disparo depende de algo que s\u00f3 existe durante a edi\u00e7\u00e3o no painel, o artigo publica e o aviso n\u00e3o sai. Teste exatamente esse cen\u00e1rio antes de confiar na esteira: agende um post para daqui a dois minutos, feche o navegador e volte depois para ver se a mensagem chegou.<\/p>\n<h2>O Discord aceita quase o texto cru<\/h2>\n<p>Dos tr\u00eas canais, o Discord \u00e9 o de menor cerim\u00f4nia. A documenta\u00e7\u00e3o da plataforma \u00e9 expl\u00edcita quanto a isso: os webhooks n\u00e3o exigem um usu\u00e1rio bot nem autentica\u00e7\u00e3o para funcionar. O envio \u00e9 um <code>POST<\/code> para <code>\/webhooks\/{webhook.id}\/{webhook.token}<\/code>, e o segredo \u00e9 a pr\u00f3pria URL. Quem tem a URL manda mensagem no canal, o que tamb\u00e9m define o tamanho do estrago se ela vazar em um reposit\u00f3rio p\u00fablico.<\/p>\n<p>O corpo precisa trazer pelo menos um entre <code>content<\/code>, <code>embeds<\/code>, <code>components<\/code>, <code>file<\/code> e <code>poll<\/code>. Para um aviso de artigo novo, os dois primeiros bastam. O campo <code>content<\/code> aceita at\u00e9 <strong>2.000<\/strong> caracteres, e cada mensagem comporta at\u00e9 <strong>10<\/strong> embeds, aquele bloco com barra colorida na lateral onde cabem t\u00edtulo, descri\u00e7\u00e3o, imagem e link.<\/p>\n<p>Em caso de sucesso, o Discord devolve <code>204 No Content<\/code>, sem corpo nenhum: a mensagem entrou e voc\u00ea n\u00e3o recebe o identificador dela. Se o seu c\u00f3digo precisa guardar esse id para editar ou apagar o aviso depois, o envio tem que ir com <code>wait=true<\/code> na query, e a\u00ed a resposta vira <code>200<\/code> com o objeto da mensagem. Trocar um pelo outro no meio do caminho \u00e9 o tipo de mudan\u00e7a que quebra um integrador silenciosamente, porque o envio continua funcionando e s\u00f3 o p\u00f3s-processamento para.<\/p>\n<p>Quando o limite aparece, vem um <code>429<\/code> com um corpo JSON que traz <code>retry_after<\/code>, o n\u00famero de segundos a esperar antes de tentar de novo. Junto v\u00eam os cabe\u00e7alhos <code>X-RateLimit-Remaining<\/code> e <code>X-RateLimit-Reset-After<\/code>, que dizem quanto sobrou e quando a janela reabre. O teto global documentado \u00e9 de <strong>50<\/strong> requisi\u00e7\u00f5es por segundo, folgad\u00edssimo para quem publica um artigo por dia. O risco real \u00e9 outro: requisi\u00e7\u00f5es inv\u00e1lidas repetidas contam em um balde separado, e chegar a 10.000 delas em 10 minutos rende restri\u00e7\u00e3o tempor\u00e1ria de IP. Um la\u00e7o que insiste em uma URL de webhook apagada chega l\u00e1 sozinho. O significado de cada c\u00f3digo de resposta est\u00e1 destrinchado em <a href=\"https:\/\/postping.com.br\/blog\/erro-webhook-401-404-429\/\">erro de webhook no WordPress<\/a>.<\/p>\n<h2>O Telegram troca o segredo de lugar e cobra pela pontua\u00e7\u00e3o<\/h2>\n<p>No Telegram o desenho muda. O segredo n\u00e3o est\u00e1 em uma URL sorteada por canal, est\u00e1 no caminho da chamada: <code>https:\/\/api.telegram.org\/bot&lt;token&gt;\/sendMessage<\/code>. O mesmo token serve para qualquer conversa em que o bot esteja, o que significa que ele vale mais do que uma URL de webhook do Discord e precisa de tratamento de senha. Os dois par\u00e2metros obrigat\u00f3rios s\u00e3o <code>chat_id<\/code> e <code>text<\/code>, e a documenta\u00e7\u00e3o limita o texto a <strong>4.096<\/strong> caracteres depois do processamento das entidades. O passo a passo de criar o bot e descobrir o identificador do grupo est\u00e1 em <a href=\"https:\/\/postping.com.br\/blog\/bot-telegram-wordpress\/\">bot do Telegram no WordPress<\/a>.<\/p>\n<p>A resposta tamb\u00e9m segue outra l\u00f3gica. O envelope sempre traz o campo booleano <code>ok<\/code>. Deu certo, o conte\u00fado vem em <code>result<\/code>. Deu errado, <code>ok<\/code> vem falso, acompanhado de <code>error_code<\/code> e de uma <code>description<\/code> em texto leg\u00edvel que costuma dizer exatamente o que est\u00e1 errado. Ler apenas o status HTTP e ignorar o corpo \u00e9 o erro mais comum de quem integra o Telegram pela primeira vez, porque a descri\u00e7\u00e3o \u00e9 a parte \u00fatil.<\/p>\n<p>A armadilha que aparece na terceira semana \u00e9 a formata\u00e7\u00e3o. Com <code>parse_mode<\/code> em MarkdownV2, a documenta\u00e7\u00e3o exige escapar qualquer caractere entre os c\u00f3digos 1 e 126 que fa\u00e7a parte da marca\u00e7\u00e3o, incluindo <code>_<\/code>, <code>*<\/code>, <code>[<\/code>, <code>]<\/code>, <code>(<\/code>, <code>)<\/code>, <code>~<\/code>, <code>`<\/code> e <code>&gt;<\/code>. T\u00edtulos de artigo est\u00e3o cheios disso. Um par\u00eantese, um sublinhado no slug, um sinal de maior em uma cita\u00e7\u00e3o e a mensagem inteira volta como erro de parse, n\u00e3o como texto sem negrito. O modo HTML \u00e9 bem menos exigente e resolve a maioria dos avisos de publica\u00e7\u00e3o com <code>&lt;b&gt;<\/code> e <code>&lt;a&gt;<\/code>, desde que <code>&amp;<\/code>, <code>&lt;<\/code> e <code>&gt;<\/code> sejam escapados no texto.<\/p>\n<p>De volume o Telegram n\u00e3o reclama: a documenta\u00e7\u00e3o fala em at\u00e9 30 mensagens por segundo no envio a usu\u00e1rios. Quando o controle de fluxo entra, a resposta traz <code>retry_after<\/code> com o tempo de espera, como no Discord, s\u00f3 que dentro dos par\u00e2metros do erro e n\u00e3o em um cabe\u00e7alho.<\/p>\n<h2>O Teams mudou de porta em maio e n\u00e3o avisou o seu servidor<\/h2>\n<p>Este \u00e9 o canal que quebrou de verdade em 2026. A Microsoft aposentou os conectores do Office 365 dentro do Teams, e depois de v\u00e1rios adiamentos o desligamento aconteceu entre <strong>18 e 22 de maio de 2026<\/strong>. A frase no an\u00fancio oficial n\u00e3o deixa margem: depois dessas datas, os conectores do Office 365 n\u00e3o funcionam mais. Quem tinha um <em>incoming webhook<\/em> antigo colado em um plugin, em um script de deploy ou em um monitor de uptime viu a integra\u00e7\u00e3o parar sem nenhuma mudan\u00e7a do seu lado.<\/p>\n<p>D\u00e1 para ver o estrago em projeto aberto. No reposit\u00f3rio do Home Assistant, uma issue de 3 de junho de 2026 registra que a notifica\u00e7\u00e3o para o Microsoft Teams parou de funcionar em 22 de maio, com a constata\u00e7\u00e3o seca de que a Microsoft finalmente desativou o canal de webhooks obsoleto. Do lado de quem instalou n\u00e3o mudou nada, e a mensagem simplesmente parou de chegar. \u00c9 o cen\u00e1rio exato de quem monta uma esteira de avisos com URL colada e esquece dela.<\/p>\n<p>O caminho de hoje passa pelo aplicativo Workflows, que roda sobre o Power Automate. Voc\u00ea abre o canal, escolhe um modelo de fluxo que responde a uma requisi\u00e7\u00e3o de webhook, salva e copia a URL gerada. A partir da\u00ed, um <code>POST<\/code> com <code>{\"text\": \"...\"}<\/code> j\u00e1 publica no canal, e quem quer um cart\u00e3o formatado envia um Adaptive Card, com <code>type<\/code> igual a <code>message<\/code> e o conte\u00fado dentro de <code>attachments<\/code>. O Microsoft Learn cita dois n\u00fameros que importam para automa\u00e7\u00e3o: o payload n\u00e3o pode passar de <strong>28 KB<\/strong> e mais de quatro requisi\u00e7\u00f5es por segundo derrubam a conex\u00e3o do cliente at\u00e9 a janela reabrir.<\/p>\n<p>Existe uma pegadinha organizacional que n\u00e3o aparece nos limites t\u00e9cnicos, e ela pesa em ag\u00eancia. O fluxo criado no Workflows pertence a uma pessoa, n\u00e3o ao time nem ao canal. Se o dono sai da empresa e ningu\u00e9m foi nomeado copropriet\u00e1rio, o fluxo fica \u00f3rf\u00e3o e o aviso do cliente para de sair sem que ningu\u00e9m tenha mexido em nada. A documenta\u00e7\u00e3o da Microsoft recomenda que administradores adicionem copropriet\u00e1rios justamente para manter a continuidade. Fa\u00e7a isso no dia da cria\u00e7\u00e3o, n\u00e3o no dia em que o aviso sumir.<\/p>\n<h2>Um gatilho, tr\u00eas contratos, tr\u00eas rel\u00f3gios diferentes<\/h2>\n<p>Juntando o que cada plataforma pede para a mesma frase de aviso:<\/p>\n<ul>\n<li>No Discord, uma URL secreta por canal, corpo com <code>content<\/code> ou <code>embeds<\/code>, resposta vazia em caso de sucesso e teto de 2.000 caracteres no texto simples.<\/li>\n<li>No Telegram, um token que vale para todas as conversas do bot, o <code>chat_id<\/code> de cada grupo, teto de 4.096 caracteres e escapes obrigat\u00f3rios se a formata\u00e7\u00e3o for MarkdownV2.<\/li>\n<li>No Teams, uma URL gerada por um fluxo do Power Automate que pertence a um usu\u00e1rio, payload de at\u00e9 28 KB e no m\u00e1ximo quatro requisi\u00e7\u00f5es por segundo.<\/li>\n<\/ul>\n<p>Um blog que publica todo dia gera 30 eventos por m\u00eas, e escrever o disparo \u00e0 m\u00e3o para os tr\u00eas canais multiplica por tr\u00eas a superf\u00edcie que precisa ser vigiada, cada uma com o seu pr\u00f3prio calend\u00e1rio de mudan\u00e7a. O caso do Teams mostra o formato dessa conta: a mudan\u00e7a n\u00e3o veio de quem publica, veio da plataforma, anunciada em um blog de desenvolvedores que ningu\u00e9m acompanha.<\/p>\n<p>Neste blog, os avisos de Discord e Telegram saem pelo pr\u00f3prio Post Ping, que detecta a publica\u00e7\u00e3o sem passo extra para quem escreve e manda o embed com imagem, cor e link para o canal do Discord e a mensagem para o grupo do Telegram. Existe ainda uma verifica\u00e7\u00e3o di\u00e1ria que procura posts publicados que n\u00e3o foram notificados, que \u00e9 a rede de prote\u00e7\u00e3o para o dia em que a plataforma responde erro no minuto exato da publica\u00e7\u00e3o. O Teams n\u00e3o est\u00e1 entre os canais cobertos; ali o caminho continua sendo montar o fluxo no Workflows por fora.<\/p>\n<p>Me\u00e7a o seu caso antes de decidir o que automatizar. Pegue os \u00faltimos vinte posts do seu blog pela API REST, compare <code>date_gmt<\/code> com <code>modified_gmt<\/code> e conte quantos foram editados depois de publicados. Aqui deram seis em treze. Se o seu n\u00famero for parecido, o disparo preso ao salvamento j\u00e1 mandou quase metade das mensagens de novo, e o problema \u00e9 anterior a qualquer discuss\u00e3o sobre qual canal usar.<\/p>\n<p>O Discord aceita 2.000 caracteres, o Telegram 4.096 e o Teams 28 KB. Um evento, tr\u00eas tetos, e nenhuma das tr\u00eas plataformas avisa voc\u00ea quando muda o seu.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Notifica\u00e7\u00e3o autom\u00e1tica no WordPress em tr\u00eas canais: o que Discord, Telegram e Teams exigem do mesmo aviso e por que o Teams parou de funcionar em maio.<\/p>\n","protected":false},"author":1,"featured_media":111,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-112","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-webhooks"],"_links":{"self":[{"href":"https:\/\/postping.com.br\/blog\/wp-json\/wp\/v2\/posts\/112","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/postping.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/postping.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/postping.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/postping.com.br\/blog\/wp-json\/wp\/v2\/comments?post=112"}],"version-history":[{"count":0,"href":"https:\/\/postping.com.br\/blog\/wp-json\/wp\/v2\/posts\/112\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/postping.com.br\/blog\/wp-json\/wp\/v2\/media\/111"}],"wp:attachment":[{"href":"https:\/\/postping.com.br\/blog\/wp-json\/wp\/v2\/media?parent=112"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/postping.com.br\/blog\/wp-json\/wp\/v2\/categories?post=112"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/postping.com.br\/blog\/wp-json\/wp\/v2\/tags?post=112"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}