GitHub Action that detects new changelog entries and posts them as structured JSON to a webhook.
- 🎯 Git diff-based - Only parses lines actually added
 - 📝 Structured JSON output with sections and bullets
 - 🚀 Posts to any webhook with custom headers
 - 📋 Supports Keep a Changelog & Conventional Changelog formats
 - 🔧 Configurable glob patterns and entry separators
 
name: Changelog Log
on:
  push:
    branches: [main]
    paths: ["**/CHANGELOG*.md"]
jobs:
  notify:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - uses: lukeocodes/changelog-log@v1
        with:
          webhook_url: ${{ secrets.CHANGELOG_WEBHOOK_URL }}| Input | Required | Default | Description | 
|---|---|---|---|
webhook_url | 
Yes | - | Destination URL for JSON payload | 
file_globs | 
No | CHANGELOG.md,**/... | 
Changelog file patterns to watch | 
entry_separator_regex | 
No | ^##\s+.*$ | 
Regex for entry headers | 
http_method | 
No | POST | 
HTTP method (POST/PUT/PATCH) | 
webhook_headers_json | 
No | - | Extra headers as JSON string | 
extra_body_json | 
No | - | Extra fields to merge into payload | 
include_body_raw | 
No | false | 
Include unparsed entry text | 
log_level | 
No | warn | 
Log level (trace/debug/info/warn/error/fatal) | 
{
  "filePath": "CHANGELOG.md",
  "commit": { "before": "abc123...", "after": "def456..." },
  "header": "## [1.2.3] - 2025-10-17",
  "version": "1.2.3",
  "date": "2025-10-17",
  "sections": {
    "Added": ["New feature X"],
    "Fixed": ["Bug Z"]
  }
}Use extra_body_json to add custom fields to the payload:
- uses: lukeocodes/changelog-log@v1
  with:
    webhook_url: ${{ secrets.WEBHOOK_URL }}
    extra_body_json: '{"project":"myapp","environment":"production"}'This will merge the extra fields into the payload:
{
  "filePath": "CHANGELOG.md",
  "version": "1.2.3",
  "project": "myapp",
  "environment": "production",
  ...
}See CONTRIBUTING.md. Use conventional commits for PRs.
MIT © Luke Oliff