Example: GitHub Webhook

Overview

GitHub signs payloads with X-Hub-Signature-256. Syllecta validates the signature, dedupes events, and forwards normalized payloads so you can react to issue or pull-request activity.

Configure

  1. In Backoffice, add the GitHub provider and store the webhook secret you generate in GitHub settings.
  2. In your GitHub repository → Settings → Webhooks, set the payload URL to https://cloud.syllecta.example/v1/webhooks/github and choose application/json.
  3. Select the events you want (e.g., issues, pull_request).

Example Delivery

POST /v1/webhooks/github
X-Hub-Signature-256: sha256=ab12cd...
X-GitHub-Event: issues
Content-Type: application/json

{
  "action": "opened",
  "issue": {
    "number": 42,
    "title": "Bug report"
  },
  "repository": {
    "full_name": "acme/api"
  }
}

Syllecta responds with:

json
{
  "ok": true
}

and forwards a normalized payload containing provider, type (e.g., issue.opened), timestamps, and the original data.

Callback Handler

ts
app.post("/webhooks/syllecta", express.json(), async (req, res) => {
  const event = req.body;
  if (event.provider === "github" && event.type === "issue.opened") {
    await tracker.createTicket({
      repo: event.data.repository.full_name,
      number: event.data.issue.number,
      title: event.data.issue.title
    });
  }
  res.json({ ok: true });
});

Add branches for any GitHub events you subscribe to and rely on Syllecta to keep signatures, retries, and dedupe consistent.