A generic Open Journal Systems (OJS) plugin that fires HTTP webhooks when submissions are created and when articles are actually published. Maintained by OJSBR. The full documentation below is in Portuguese.
⬇️ Install package: OJS 3.4 — or browse all Releases.
Plugin genérico para OJS 3.4 que dispara webhooks HTTP quando submissões são criadas e artigos são publicados de fato.
| Recurso | Link |
|---|---|
| Repositório | github.com/OJSBR/ojsbr-webhook |
| Releases (público) | github.com/OJSBR/ojsbr-webhook/releases |
| GitHub Packages | ojsbr-webhook (GHCR) |
| Organização | github.com/OJSBR |
| Branch | Uso |
|---|---|
master |
Desenvolvimento ativo |
stable-3_4_0 |
Compatível com OJS 3.4.x — gera pacote 3.4.build.* no GHCR |
stable-3_5_0 |
(futuro) Compatível com OJS 3.5.x — gera pacote 3.5.build.* |
submission.created— nova submissão criada.publication.created— artigo publicado de fato (não dispara para artigos apenas agendados em edições futuras).
Baixe o .tar.gz na página de Releases (tag 3.4.latest para OJS 3.4):
curl -L -o ojsbr-webhook.tar.gz \
https://github.com/OJSBR/ojsbr-webhook/releases/download/3.4.latest/ojsbrWebhook-3.4.build.7.tar.gzConfira o nome exato do asset em Releases.
tar -xzf ojsbrWebhook-*.tar.gz -C /caminho/do/ojs/plugins/generic/Pacote vinculado ao repositório: github.com/OJSBR/ojsbr-webhook/pkgs/container/ojsbr-webhook. Use a CLI ORAS:
oras pull ghcr.io/ojsbr/ojsbr-webhook:3.4.latest
tar -xzf ojsbrWebhook-*.tar.gz -C /caminho/do/ojs/plugins/generic/Cada branch stable-3_X_0 publica tags {X.Y}.build.{número} e {X.Y}.latest.
O pacote fica em Packages dentro do repositório (não em /orgs/OJSBR/packages/..., que retorna 404). Configurações: Package settings.
Se a opção Public estiver desabilitada, um admin da org precisa liberar em Organization settings → Packages → Package creation → Public.
Substitua /caminho/do/ojs pelo diretório raiz da sua instalação OJS. O arquivo extraído deve ficar em:
plugins/generic/ojsbrWebhook/
Use a branch stable-3_4_0 para instalações OJS 3.4:
git clone --branch stable-3_4_0 --depth 1 https://github.com/OJSBR/ojsbr-webhook.git plugins/generic/ojsbrWebhook- Limpe o cache do OJS.
- Habilite o plugin em Configurações do Website > Plugins > Plugins Genéricos > OJSBR Webhook.
Configure os endpoints em:
Configurações do Website > Plugins > Plugins Genéricos > OJSBR Webhook > Configurações
Cada endpoint pode receber:
- apenas
submission.created; - apenas
publication.created; - ambos os eventos.
Cada linha da tabela possui botão Testar para enviar um payload de exemplo imediatamente.
O plugin salva a lista de endpoints em webhookEndpoints como JSON.
Exemplo:
INSERT INTO plugin_settings (plugin_name, locale, context_id, setting_name, setting_value, setting_type)
VALUES (
'ojsbrwebhookplugin',
'',
0,
'webhookEndpoints',
'[{"url":"https://example.com/webhook/submission","secret":"sub-secret","events":["submission.created"]},{"url":"https://example.com/webhook/publication","secret":"pub-secret","events":["publication.created"]},{"url":"https://example.com/webhook/all","secret":"all-secret","events":["submission.created","publication.created"]}]',
'string'
);O plugin ainda aceita, como fallback, as opções legadas:
webhookUrl: URL que receberá os eventos.webhookSecret: segredo opcional para assinar o payload.
Quando um segredo estiver configurado, o plugin envia:
X-OJSBR-Webhook-Signature: sha256=<hmac>
O HMAC é calculado com hash_hmac('sha256', $body, $secret).
{
"event": "submission.created",
"occurredAt": "2026-05-23T12:00:00+00:00",
"contextId": 1,
"baseUrl": "https://revistaft.com",
"object": {
"id": 123,
"class": "APP\\submission\\Submission",
"submissionId": null,
"contextId": 1,
"data": {}
}
}O plugin registra Submission::add/Submission::insert para novas submissões e Publication::publish para artigos publicados. Quando um artigo é agendado em uma edição futura, o OJS marca a publicação como STATUS_SCHEDULED; o webhook só é enviado quando o status passa a STATUS_PUBLISHED — o que ocorre imediatamente em edições já publicadas ou quando a edição futura é publicada no painel de edições.
Este projeto inclui um servidor Node/Express em test-server/ para visualizar webhooks recebidos em uma tela web (uso local/desenvolvimento).
cd test-server
npm install
npm startAcesse http://localhost:3333 e configure o endpoint no plugin como:
http://host.docker.internal:3333/webhook/ojs
- Desenvolvido e mantido pela OJSBR — plugin autoral.
- Distribuído sob a GNU GPL v3.
Este plugin é distribuído sob a GNU General Public License v3.0 ou posterior.