Launch special — let's split the check with SPLITCHECK for 50% off

GitHub fixture

push

Fires on any push to the repository — branches, tags, force pushes. Includes the list of commits in the push, the head/before SHAs, and the pusher.

When does it fire?

A `git push` to any ref. For deletes, `deleted: true`. For force pushes, `forced: true` and `before` will be unreachable from `after`.

Request headers

Content-Type: application/json
X-GitHub-Event: push
X-GitHub-Delivery: 33b1d5e8-cd99-12e4-92cd-5d3678ec1f8e
X-Hub-Signature-256: sha256=391e2df4569fdb4d2e6e7e9bd1f63cf7b6d8e2a6d8e1c0b2a3d4f5e6c7b8a9d1

Payload

{
  "ref": "refs/heads/main",
  "before": "f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5b4a3f2e1",
  "after": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0",
  "forced": false,
  "deleted": false,
  "commits": [
    {
      "id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0",
      "message": "feat: add webhook fixture library",
      "author": {
        "name": "Octocat",
        "email": "[email protected]",
        "username": "octocat"
      },
      "added": [
        "web/src/pages/Fixtures.tsx"
      ],
      "modified": [
        "web/src/main.tsx"
      ],
      "removed": [],
      "timestamp": "2026-05-13T12:00:00Z"
    }
  ],
  "pusher": {
    "name": "octocat",
    "email": "[email protected]"
  },
  "repository": {
    "id": 99999,
    "full_name": "ozers/hooksense",
    "default_branch": "main"
  }
}

Key fields

  • ref

    Full ref name (refs/heads/main, refs/tags/v1.2.3). Filter by prefix to handle branches vs tags.

  • forced

    true if force-push — your CI may want to reject these on protected branches.

  • commits

    Array of commits in the push. Up to 20 — use head_commit + Git API for larger pushes.

Test it with cURL

Replace your-endpoint with your HookSense endpoint slug — or any URL you want to test against.

curl -X POST https://hooksense.com/w/your-endpoint \
  -H "Content-Type: application/json" \
  -H "X-GitHub-Event: push" \
  -H "X-GitHub-Delivery: 33b1d5e8-cd99-12e4-92cd-5d3678ec1f8e" \
  -H "X-Hub-Signature-256: sha256=391e2df4569fdb4d2e6e7e9bd1f63cf7b6d8e2a6d8e1c0b2a3d4f5e6c7b8a9d1" \
  -d '{
  "ref": "refs/heads/main",
  "before": "f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5b4a3f2e1",
  "after": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0",
  "forced": false,
  "deleted": false,
  "commits": [
    {
      "id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0",
      "message": "feat: add webhook fixture library",
      "author": {
        "name": "Octocat",
        "email": "[email protected]",
        "username": "octocat"
      },
      "added": [
        "web/src/pages/Fixtures.tsx"
      ],
      "modified": [
        "web/src/main.tsx"
      ],
      "removed": [],
      "timestamp": "2026-05-13T12:00:00Z"
    }
  ],
  "pusher": {
    "name": "octocat",
    "email": "[email protected]"
  },
  "repository": {
    "id": 99999,
    "full_name": "ozers/hooksense",
    "default_branch": "main"
  }
}'

Capture this in HookSense

Fire the cURL above at your HookSense endpoint and inspect the request in real time — with headers, body, signature verification, and replay.

Get a free endpoint

More GitHub fixtures