Webhooks & APIIntegrations

GitHub

Trigger Wexio flows from GitHub events (PRs, issues, pushes, deploys)

GitHub signs webhook bodies with HMAC-SHA256 in X-Hub-Signature-256 (hex-encoded, prefixed with sha256=). Wexio's GitHub preset configures exactly that.

Provider docs: Setting up webhooks in GitHub

Setup

1. Wexio connection

New connection → Inbound → GitHub preset. Prefills:

FieldValue
Auth modeGENERIC_HMAC_SHA256
Signature header nameX-Hub-Signature-256
EncodingHex
Prefixsha256=

2. Configure the GitHub webhook

On the GitHub repository (or organisation) → Settings → Webhooks → Add webhook.

FieldValue
Payload URLThe Wexio endpoint URL
Content typeapplication/json
SecretA strong secret you pick — paste the same value into Wexio's Signing secret field
EventsPick individual events or "Send me everything"

3. Contact resolution

GitHub events are typically not tied to messaging contacts. Common patterns:

  • Static recipient — route every event to a specific ops contact. Use a flow variable lookup rather than contact resolution.
  • Author emailEmail + $.sender.email (only works when the user's email is public in their GitHub profile).

4. Bind a flow

Add a Webhook Received trigger and branch on {{webhook.action}} or the event type (read from the X-GitHub-Event header — not in the body).

GitHub puts the event type in the X-GitHub-Event header, not the body. If you need to branch on event type, include it in the variable namespace by capturing X-GitHub-Event via a custom upstream (n8n proxy) — or use the action field in the body, which is available for most events.

Example — PR Merged → Team Slack

  • GitHub event: pull_request, action: closed with merged: true
  • Wexio connection resolves to a shared team contact
  • Flow: Webhook Received → Condition on {{webhook.pull_request.merged}} EQUALS true → Text to a shared Telegram channel

Troubleshooting

SymptomFix
Signature mismatchEnsure the secret is exactly the same string in GitHub and Wexio
IDENTIFIER_NOT_FOUNDGitHub events rarely carry a Wexio contact identifier — use a static-contact pattern instead

On this page