Quando escolher a publicação por webhook?
O webhook liga o SORANK a um site personalizado ou a uma automatização capaz de receber um artigo e publicá-lo. É a opção indicada quando já dispõe desse sistema de publicação ou quando a sua equipa pode implementá-lo. O funcionamento compreende três etapas: o SORANK prepara o artigo, transmite-o à sua integração e, em seguida, a sua integração publica-o no seu site. Uma vez configurado este percurso, pode enviar os artigos a partir do SORANK ou utilizar o calendário para automatizar a sua geração e envio. Com o contrato de atualização descrito nesta página, pode também enviar uma nova versão para o artigo existente. Por exemplo, uma modificação preparada no editor é enviada para o seu site quando clica em Enviar a atualização do artigo. Se pretender que o SORANK gira também o alojamento do blog, escolha antes o blog alojado. Se o seu CMS dispõe de um conector nativo, utilize o percurso apresentado em publicar e exportar.Atualizar um webhook existente
Após a atualização do seu servidor, o SORANK deteta automaticamente o suporte a atualizações na próxima publicação ou reenvio, caso a sua integração ainda seja reconhecida como legacy. O SORANK enviawebhook.test; uma falha na deteção não impede a entrega habitual.
Para acionar a deteção imediatamente, sem desligar o seu webhook:
- Abra as definições da integração webhook no SORANK.
- Mantenha o mesmo URL e o mesmo secret.
- Clique em Guardar.
webhook.test com um estado HTTP 2xx e este JSON na raiz:
article_url não prova que o seu servidor aceita article.updated. A deteção não recupera retroativamente os URLs em falta: cada publicação concluída deve devolver o seu próprio article_url de acordo com o contrato abaixo.
Não tem uma integração SORANK nativa para o seu CMS? O conector Webhook permite-lhe enviar os seus artigos gerados para qualquer URL, Zapier, Make, n8n ou um endpoint personalizado no seu próprio site desenvolvido, para que possa publicar o seu conteúdo onde precisar.
Como funciona
Quando publica um artigo no SORANK, enviamos um pedido POST com uma carga útil JSON estruturada para o URL que configurou. O seu endpoint ou ferramenta de automatização pode então processar a carga útil e criar a publicação no seu blog, no seu site personalizado ou em qualquer outra ferramenta que aceite pedidos HTTP recebidos.⚠️ Importante: o webhook envia apenas os dados, é você quem os publica
Este é o ponto mais importante a compreender sobre o conector Webhook. Da nossa parte, o SORANK agrupa tudo o que precisa no JSON (título, slug, corpo HTML completo, meta-descrição, imagens, idioma e muito mais) e envia-o para o seu URL. Assim que este JSON é enviado com sucesso, o SORANK marca a entrega como bem-sucedida. Este estado de “sucesso” confirma uma única coisa: os dados saíram do SORANK e o seu endpoint os aceitou. Um simples aviso de receção histórico não confirma a publicação. Com o contrato versão 2 abaixo, uma resposta concluída comarticle_url confirma imediatamente a publicação no SORANK; o seu código continua a ser responsável pela publicação efetiva no seu CMS.
Ou seja, o webhook é apenas um mecanismo de entrega de dados. Recebê-lo, analisá-lo e publicá-lo no seu CMS é da sua inteira responsabilidade. Se o artigo não aparecer apesar de uma entrega bem-sucedida, verifique a receção, o processamento, a publicação e a resposta devolvida. O estado de entrega por si só não permite identificar a causa.
Etapa 1: abrir a integração Webhook
- No menu lateral, abra Definições e depois Plataformas de publicação.
- Desça até ao cartão Webhook e clique em Conectar o seu site.

Etapa 2: configurar o seu endpoint
- Cole o seu URL de destino no campo Webhook URL (por exemplo, um catch hook do Zapier, um webhook do Make ou o endpoint do seu próprio servidor).
- Se desejar, adicione um Secret token caso o seu endpoint necessite de autenticação. O SORANK irá incluí-lo como token
Bearerno cabeçalhoAuthorizationpara que o seu servidor possa verificar que a chamada provém do SORANK. - Clique em Test para enviar uma carga útil de exemplo (tipo de evento
webhook.test) e confirmar que o seu endpoint responde corretamente. - Clique em Save webhook para ativar a integração.

Detalhes do pedido HTTP
Cada webhook que o SORANK envia para o seu endpoint segue o mesmo contrato HTTP. Eis o que o seu servidor irá receber:- Method:
POST - Content-Type:
application/json - User-Agent:
SORANK-Webhook/1.0 - Authorization:
Bearer {webhook_secret}(opcional, enviado apenas se tiver configurado um secret nas definições da sua integração)
User-Agent para identificar o tráfego do SORANK nos seus registos, e verifique o cabeçalho Authorization do seu lado para garantir que o pedido provém do SORANK e não de um chamador desconhecido.
Estrutura da carga útil do webhook
O SORANK utiliza três eventos com o mesmo envelope (event, delivery_id, timestamp, article). Uma única rota POST HTTPS (por exemplo /sorank-webhook) é suficiente: processe cada valor de event nessa rota e verifique o token Authorization se tiver configurado um secret.
Versão 2: publicar, atualizar e devolver o URL
Para ativar a atualização, a sua rota deve responder awebhook.test sem criar conteúdo, com um HTTP 200 e este JSON:
article.published, crie o artigo e guarde a associação entre article.id e o seu identificador no seu CMS. Se esta associação já existir, não crie um duplicado. Para article.updated, localize essa associação e substitua o conteúdo do artigo existente. Se o artigo não for encontrado, devolva um erro, por exemplo HTTP 404: uma atualização nunca deve criar um novo artigo.
Após uma publicação efetivamente concluída, devolva HTTP 200 ou 201 com:
"status": "updated" e o URL público atual. Apenas article_url é pedido, não o URL do sitemap. Forneça um URL HTTPS absoluto no site associado ao perfil SORANK, não o da sua automatização. A resposta deve ser um objeto JSON com menos de 16 KiB; o URL não deve ultrapassar 2 048 caracteres.
Devolva em
article_url o URL canónico HTTPS exato do artigo publicado, idêntico à sua tag <link rel="canonical">. Respeite a presença ou ausência de www e da barra final. Por exemplo, se o URL canónico for https://example.com/blog/meu-artigo, devolva-o sem www. Se for https://www.example.com/blog/meu-artigo/, mantenha tanto www como a barra final. O Sorank usa este URL para acompanhar a indexação no Google Search Console. Não devolva um URL alternativo apenas porque redireciona para o artigo ou apresenta o mesmo conteúdo.status: published ou status: updated e um article_url válido regista imediatamente o URL e apresenta Publicado com a sua ligação, mesmo sem troca de backlinks. O URL deve pertencer ao site do perfil. Estas respostas concluídas não aguardam o verificador periódico. Apenas os recibos accepted ou HTTP 202 ficam pendentes de verificação. Os backlinks são verificados separadamente: confirmar a publicação não prova a presença das ligações nem valida os seus créditos. Se uma atualização falhar, o último URL verificado é conservado. Editar o texto no editor não o envia automaticamente: clique em Enviar a atualização.
Novas tentativas e processamento assíncrono
Utilize o cabeçalhoIdempotency-Key para desduplicar a mesma operação no mesmo instantâneo de artigo e devolver a resposta memorizada. delivery_id identifica apenas cada tentativa. Guarde também a correspondência article.id para impedir criações duplicadas entre operações diferentes. O cabeçalho X-Sorank-Article-Revision permite recusar uma versão antiga recebida após uma versão mais recente.
Se o processamento não estiver concluído, responda HTTP 202 com "sorank_webhook_version": 2, "status": "accepted" e, se conhecido, "article_url". Um 202 nunca confirma a publicação. Para permitir ao SORANK verificar posteriormente esta operação assíncrona, adicione apenas após a sua aplicação efetiva esta etiqueta no HTML público do artigo:
Idempotency-Key recebido. Não o adicione aquando da receção: a página antiga não prova a nova atualização. Sem esta prova, a verificação fica pendente e expira. Se a sua ferramenta não conseguir publicar esta etiqueta, conclua a publicação antes de devolver a resposta 200/201.
Migrar uma integração existente
Uma resposta 200 vazia ou textual continua a ser compatível com a entrega histórica, mas não ativa as atualizações. Adapte a sua rota, clique em Test e depois em Save webhook: o SORANK volta a testar as capacidades do lado do servidor ao guardar. Uma alteração de URL ou de secret invalida as verificações antigas em curso. Para atualizar artigos já publicados, reconstitua a correspondênciaarticle.id do lado do CMS; o SORANK não consegue determiná-la.
Evento: article.published
Acionado sempre que publica um artigo a partir do SORANK. É o evento que o seu endpoint de produção deve processar para criar a publicação no seu CMS ou acionar o seu fluxo de automatização. Evento: webhook.test
Acionado quando clica no botão Test no SORANK para verificar que o seu endpoint está acessível. A carga útil utiliza valores fictícios (id contém apenas zeros, featured_image é omitido, images está vazio) para que a sua integração possa ignorá-la com segurança ou utilizá-la para confirmar a conectividade sem criar uma publicação real. Referência dos campos
- event,
article.published,article.updatedouwebhook.test. Baseie-se neste campo para encaminhar a carga útil. - delivery_id, UUID único para rastrear cada tentativa de entrega. Para desduplicar uma operação, utilize o cabeçalho
Idempotency-Key. - timestamp, carimbo de data/hora ISO 8601 UTC do momento em que o evento foi emitido.
- article.id, identificador único do artigo no SORANK.
- article.title, o H1 / título do artigo.
- article.slug, slug adaptado a URLs, em minúsculas e com hífenes.
- article.meta_description, meta-descrição SEO, pronta a inserir na sua etiqueta
<meta name="description">. - article.focus_keyphrase, expressão-chave alvo principal utilizada para o artigo.
- article.content, corpo completo do artigo em HTML, incluindo títulos, parágrafos, listas e etiquetas de imagens inline.
- article.featured_image, objeto de imagem de destaque com
url,alteplacement. Pode estar presente emarticle.publishedearticle.updated. - article.images, conjunto de imagens adicionais no corpo. Cada entrada inclui
url,alteplacement. Pode estar vazio. - article.word_count, número total de palavras do corpo do artigo.
- article.keyword, idêntico à expressão-chave alvo, mantido como campo separado para integrações retrocompatíveis.
- article.language, etiqueta de idioma BCP 47 (por exemplo
en-US,fr-FR).
Casos de utilização comuns
- Zapier: utilize um acionador “Catch Hook” para transferir os artigos para milhares de aplicações como WordPress, Notion, Airtable ou Google Sheets.
- Make: utilize um módulo Webhooks para criar automatizações de publicação personalizadas em várias etapas.
- n8n: ligue um nó Webhook a um fluxo que cria a publicação no seu CMS headless ou no seu back-office.
- Backend personalizado: envie os artigos diretamente para a sua própria API para publicar num site desenvolvido à medida, num CMS headless como Sanity ou Strapi, ou em qualquer ferramenta interna.
Dicas
- Clique sempre em Test antes de guardar para confirmar que o seu endpoint aceita o pedido e devolve uma resposta 2xx.
- Baseie-se no campo
eventdo lado do servidor para que as chamadaswebhook.testnunca criem publicações reais. - Utilize
Idempotency-Keypara desduplicar uma operação earticle.idpara localizar o mesmo artigo no seu CMS. - Mantenha o seu Secret token privado, verifique o cabeçalho
Authorizationem cada pedido e renove o secret regularmente. - Utilize um endpoint HTTPS para manter os dados dos artigos seguros durante o trânsito.
- Uma vez ligado, cada artigo publicado no SORANK será automaticamente enviado para o seu URL de webhook.
🔄 Por que razão os seus artigos podem não aparecer (causas de falha)
Como o webhook apenas entrega os dados, um “sucesso” no SORANK não garante que o artigo está publicado no seu site. Verifique cada etapa para localizar o bloqueio. Eis os pontos a examinar.Causas do lado da sua integração
- A sua chave de API do CMS é apenas de leitura em vez de leitura e escrita, este é um dos problemas mais frequentes. Se as credenciais que o seu código utiliza para escrever no seu CMS (Sanity, Strapi, Contentful ou qualquer backend headless) apenas dispõem de permissões de consulta / leitura, o seu endpoint receberá o JSON mas falhará silenciosamente ao criar a publicação. Gere uma chave com acesso de escrita e atualize-a na sua integração.
- O seu código recebe o JSON mas nunca o envia para o seu CMS, receber a carga útil representa apenas metade do trabalho. Certifique-se de que o seu endpoint mapeia efetivamente os campos do SORANK e cria a publicação no seu CMS ou na sua base de dados. Registe a carga útil recebida e confirme que a sua chamada de publicação é executada e bem-sucedida.
- O mapeamento dos campos está incorreto, se o seu código espera nomes de campos diferentes dos presentes na carga útil, a publicação pode ser criada vazia ou rejeitada. Verifique que está a ler
article.title,article.slug,article.content, etc., exatamente como documentado acima. - O seu endpoint devolve um 2xx mas gera um erro posteriormente, se acusar a receção do pedido antes de o processar de forma assíncrona, uma falha posterior na sua lógica de publicação não será visível para o SORANK. Consulte os seus próprios registos de servidor para as detetar.
Causas do lado da entrega
- O seu endpoint de webhook deixou de responder (servidor offline), coloque o seu servidor novamente online e verifique que o URL responde normalmente.
- O URL do webhook foi alterado mas não foi atualizado no SORANK, atualize o URL nas definições de integração do SORANK.
- Regenerou o seu secret de webhook do seu lado, atualize o secret no SORANK para que corresponda ao que o seu servidor espera agora no cabeçalho
Authorization. - O seu endpoint devolve um erro que o SORANK não consegue interpretar, consulte os seus registos de servidor para identificar o problema e corrija-o do lado do seu webhook.
- Uma firewall no seu servidor bloqueia os nossos pedidos, adicione os endereços IP do SORANK à lista autorizada da sua firewall, ou autorize o User-Agent
SORANK-Webhook/1.0. - O seu endpoint demora mais de 30 segundos a responder, otimize o seu endpoint para responder mais rapidamente, ou acuse a receção do pedido imediatamente e processe-o de forma assíncrona.

