# Webhooks & PR Reviews

Webhooks let Prüfwerk respond to events in your Git repositories automatically. When configured, pushes to your repository trigger scans, and pull requests receive automated security reviews.

## What Webhooks Enable

- **Automatic scans on push** -- every time code is pushed to your default branch, a scan is triggered automatically
- **PR security reviews** -- when a pull request is opened or updated, Prüfwerk scans the changes and posts a review comment summarizing any security findings in the diff

## Finding the Webhook URL and Secret

Each repository in Prüfwerk has its own webhook URL and secret:

1. Go to **Repositories**
2. Click **Edit** on the repository you want to configure
3. In the edit modal, you will find the **Webhook URL** and **Webhook Secret**
4. Copy both values -- you will need them when configuring your Git hosting provider

## Setting Up Webhooks

### Gitea

1. Go to your repository in Gitea
2. Navigate to **Settings > Webhooks > Add Webhook > Gitea**
3. Set the **Target URL** to the webhook URL from Prüfwerk
4. Set the **Secret** to the webhook secret from Prüfwerk
5. Under **Trigger On**, select:
   - **Push Events** -- for automatic scans on push
   - **Pull Request Events** -- for PR security reviews
6. Set the content type to `application/json`
7. Click **Add Webhook**

### GitHub

1. Go to your repository on GitHub
2. Navigate to **Settings > Webhooks > Add webhook**
3. Set the **Payload URL** to the webhook URL from Prüfwerk
4. Set the **Content type** to `application/json`
5. Set the **Secret** to the webhook secret from Prüfwerk
6. Under **Which events would you like to trigger this webhook?**, select **Let me select individual events**, then check:
   - **Pushes** -- for automatic scans on push
   - **Pull requests** -- for PR security reviews
7. Click **Add webhook**

### GitLab

1. Go to your project in GitLab
2. Navigate to **Settings > Webhooks**
3. Set the **URL** to the webhook URL from Prüfwerk
4. Set the **Secret token** to the webhook secret from Prüfwerk
5. Under **Trigger**, check:
   - **Push events** -- for automatic scans on push
   - **Merge request events** -- for PR security reviews
6. Click **Add webhook**

## PR Review Flow

When a pull request (or merge request) is opened or updated, the following happens:

1. Your Git provider sends a webhook event to Prüfwerk
2. Prüfwerk checks out the PR branch and runs a targeted scan on the changed files
3. Findings specific to the changes in the PR are identified
4. Prüfwerk posts a review comment on the PR summarizing:
   - Number of new findings introduced by the changes
   - Severity breakdown
   - Details for each finding including file, line, and remediation guidance

This gives developers immediate security feedback in their pull request workflow, before code is merged.

::: tip
PR reviews focus only on changes introduced in the pull request, not the entire codebase. This keeps reviews relevant and actionable.
:::

## Events to Select

Here is a summary of which events to enable for each feature:

| Feature | Gitea | GitHub | GitLab |
|---------|-------|--------|--------|
| Scan on push | Push Events | Pushes | Push events |
| PR reviews | Pull Request Events | Pull requests | Merge request events |

You can enable one or both depending on your workflow.

::: warning
Make sure the webhook secret matches exactly between your Git provider and Prüfwerk. Requests with an invalid signature are rejected.
:::
