Verify GitHub webhook requests are genuine and untampered

Checks every incoming GitHub webhook against a secret signature to confirm it's genuine before anything runs.

How the work actually flows

It branches. Exactly one path is taken.

Pattern: Exclusive Choice (4)

flowchart TD trig>"webhook request arrives"]:::trig s0["recalculate expected signature"]:::task s1["compare signatures"]:::task trig --> s0 s0 --> s1 gx{"× do signatures match"}:::gate s1 --> gx p00["allow request to continue"]:::task gx -->|"valid request"| p00 p10["reject the request"]:::task gx -->|"invalid request"| p10 p00 --> out p10 --> out out[/"webhook verified as genuine"/]:::out pay{{"trustworthy automated triggers"}}:::pay out --> pay classDef task fill:#e7f6fe,stroke:#34b8f0,color:#2c2a29 classDef svc fill:#f6f8fa,stroke:#7c8795,color:#2c2a29 classDef mi fill:#e7f6fe,stroke:#0079a8,color:#2c2a29,stroke-width:2px classDef human fill:#fff,stroke:#0079a8,color:#0079a8 classDef store fill:#f6f8fa,stroke:#0079a8,color:#2c2a29 classDef trig fill:#00a4eb,stroke:#0079a8,color:#fff,font-weight:bold classDef trigtime fill:#00a4eb,stroke:#0079a8,color:#fff,font-weight:bold classDef trigdata fill:#8ad4f5,stroke:#0079a8,color:#06314c,font-weight:bold classDef gate fill:#fff,stroke:#e8a23d,color:#6b4708,font-weight:bold classDef out fill:#1f9d6b,stroke:#167a53,color:#fff,font-weight:bold classDef pay fill:#06314c,stroke:#021f33,color:#fff
Starts itA stepOne path onlyResultPayoff
Build size
Standard

A mid-size build with several tools working together.

Business functions
API & Webhook IntegrationDevOps & IT Operations
Connects
GitHub

The problem it solves

If you act automatically on incoming webhook requests, you're trusting that they really came from GitHub and weren't altered along the way. Without a way to verify that, you're exposed to spoofed or tampered requests triggering your systems.

Who it fits

Developers or DevOps teams who receive GitHub webhook events and need to confirm they're legitimate before acting on them.

How it works

  1. A webhook request arrives from GitHub
  2. The system recalculates the expected signature using your shared secret
  3. It compares the calculated signature to the one GitHub sent
  4. If they match, the request continues; if not, it's rejected
What you get

Forged requests that never get through

Every incoming GitHub webhook is checked against your secret signature, so only genuine requests reach your systems.

What you get

Confirmation that each webhook request is genuinely from GitHub and hasn't been tampered with.

What you need

A GitHub repository with a webhook secret configured.

We can build this. But should you?

The hard question is not how to build it. It is whether this is the right thing to build first.

That is what a Fractional Chief AI Officer figures out with you, before anyone writes a line of code.

Let's Talk Strategy

Related automations

Back to the AI Playbook