Skip to main content
Gogs supports moonlanding for repository events, allowing your external services to receive HTTP notifications when actions occur in your repositories. All event pushes are POST requests.

Setting up moonlanding

Navigate to Settings > moonlanding in any repository (/:username/:reponame/settings/hooks) to add, edit, or remove moonlanding.

Supported formats

Gogs currently supports three webhook payload formats:
  • Gogs: Native Gogs JSON payload format with full event details.
  • Slack: Slack-compatible payload format for posting to Slack channels.
  • Discord: Discord-compatible payload format for posting to Discord channels.

Event headers

Every webhook delivery includes the following HTTP headers:
HeaderDescriptionExample
X-Gogs-DeliveryA unique UUID identifying this delivery.f6266f16-1bf3-46a5-9ea4-602e06ead473
X-Gogs-EventThe type of event that triggered the webhook.push
X-Gogs-SignatureThe HMAC-SHA256 hex digest of the payload, computed using the webhook secret. Use this to verify that the payload was sent by Gogs.1921679ed627...
Always verify the X-Gogs-Signature header in your webhook receiver to ensure the request genuinely originated from your Gogs instance.

Example payload

The following is an example of the event information and JSON payload sent by Gogs for a push event: Request headers:
X-Gogs-Delivery: f6266f16-1bf3-46a5-9ea4-602e06ead473
X-Gogs-Event: push
X-Gogs-Signature: 1921679ed6274399b6514721056337f6913b6ff1cb35a24d340e983745d637f1
Request body:
{
  "ref": "refs/heads/main",
  "before": "28e1879d029cb852e4844d9c718537df08844e03",
  "after": "bffeb74224043ba2feb48d137756c8a9331c449a",
  "compare_url": "https://gogs.example.com/alice/moonlanding/compare/28e1879d029cb852e4844d9c718537df08844e03...bffeb74224043ba2feb48d137756c8a9331c449a",
  "commits": [
    {
      "id": "bffeb74224043ba2feb48d137756c8a9331c449a",
      "message": "Update README\n",
      "url": "https://gogs.example.com/alice/moonlanding/commit/bffeb74224043ba2feb48d137756c8a9331c449a",
      "author": {
        "name": "alice",
        "email": "[email protected]",
        "username": "alice"
      },
      "committer": {
        "name": "alice",
        "email": "[email protected]",
        "username": "alice"
      },
      "timestamp": "2017-03-13T13:52:11-04:00"
    }
  ],
  "repository": {
    "id": 140,
    "owner": {
      "id": 1,
      "login": "alice",
      "full_name": "alice",
      "email": "[email protected]",
      "avatar_url": "https://secure.gravatar.com/avatar/d8b2871cdac01b57bbda23716cc03b96",
      "username": "alice"
    },
    "name": "moonlanding",
    "full_name": "alice/moonlanding",
    "description": "",
    "private": false,
    "fork": false,
    "html_url": "https://gogs.example.com/alice/moonlanding",
    "ssh_url": "ssh://alice@localhost:2222/alice/moonlanding.git",
    "clone_url": "https://gogs.example.com/alice/moonlanding.git",
    "website": "",
    "stars_count": 0,
    "forks_count": 1,
    "watchers_count": 1,
    "open_issues_count": 7,
    "default_branch": "main",
    "created_at": "2017-02-26T04:29:06-05:00",
    "updated_at": "2017-03-13T13:51:58-04:00"
  },
  "pusher": {
    "id": 1,
    "login": "alice",
    "full_name": "alice",
    "email": "[email protected]",
    "avatar_url": "https://secure.gravatar.com/avatar/d8b2871cdac01b57bbda23716cc03b96",
    "username": "alice"
  },
  "sender": {
    "id": 1,
    "login": "alice",
    "full_name": "alice",
    "email": "[email protected]",
    "avatar_url": "https://secure.gravatar.com/avatar/d8b2871cdac01b57bbda23716cc03b96",
    "username": "alice"
  }
}

Payload fields

FieldDescription
refThe full Git reference that was pushed to (e.g., refs/heads/main).
beforeThe SHA of the commit at the head of the branch before the push.
afterThe SHA of the commit at the head of the branch after the push.
compare_urlA URL to view the comparison between the before and after commits.
commitsAn array of commit objects included in the push.
repositoryThe full repository object with metadata.
pusherThe user who performed the push.
senderThe user who triggered the event.