Webhook Email Forwarder

A simple, elegant solution for debugging webhooks by forwarding them directly to your email

Version 1.0 | Made with ❤️ by Andy Dixon

Overview

This webhook service captures incoming HTTP requests and forwards complete request details (headers, body, metadata) to your specified email address.

Email Delivery

Receive webhook data directly in your inbox

Secure

Email validation and XSS protection built-in

Instant

Real-time webhook processing and forwarding

How It Works

  1. You configure a third-party service to send webhooks to this URL with your email encoded in the path
  2. When a webhook request arrives, the service captures all request data
  3. The complete request details are formatted into a readable HTML email
  4. The email is sent to your specified address
  5. A confirmation response is returned to the webhook sender
Perfect for: Debugging webhooks, testing integrations, monitoring API callbacks, and understanding third-party service payloads.

Usage

Basic URL Format

The URL format is simple - just append your URL-encoded email address to the domain:

https://webhooks.dixon.cx/{email-address}

URL Encoding Your Email

The @ symbol must be URL-encoded as %40:

Original Email
john@example.com
Webhook URL
webhooks.dixon.cx/john%40example.com

Example Requests

cURL - POST Request with JSON

curl -X POST https://webhooks.dixon.cx/test%40example.com \ -H "Content-Type: application/json" \ -d '{"event": "user.created", "user_id": 12345}'

cURL - GET Request with Parameters

curl https://webhooks.dixon.cx/test%40example.com?event=test&id=123

JavaScript - Fetch API

fetch('https://webhooks.dixon.cx/test%40example.com', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ event: 'order.completed', order_id: 'ORD-789', total: 99.99 }) });

Python - Requests Library

import requests response = requests.post( 'https://webhooks.dixon.cx/test%40example.com', json={'event': 'payment.received', 'amount': 250.00}, headers={'X-Custom-Header': 'MyValue'} ) print(response.text)
Important: Make sure to URL-encode your email address. Most programming languages and tools have built-in functions for this (e.g., encodeURIComponent() in JavaScript, urllib.parse.quote() in Python).

What to Expect

Immediate HTTP Response

When your webhook is successfully received, you'll get an immediate response:

HTTP 200 OK
Webhook received and forwarded to: test@example.com Request data: Array ( [event] => test [id] => 123 )

Email Contents

Within moments, you'll receive a styled HTML email containing:

Request Timestamp

Exact date and time when the webhook was received

Request Information

IP address, HTTP method (GET/POST/etc), and Content-Type

Request Headers

All HTTP headers sent with the request

Request Body

Complete raw body content (JSON, XML, form data, etc.)

PHP Variables

Parsed GET, POST, REQUEST, and FILES superglobals for easy access

Subject Line: Emails arrive with the subject "‼️ Webhook Request Received - [timestamp]" for easy filtering and identification.

Error Handling

Invalid Email Address

If the email address in the URL is invalid or missing, you'll receive:

HTTP 400 Bad Request
Invalid email address provided in URL path.
Validation: The service validates email addresses using PHP's built-in FILTER_VALIDATE_EMAIL filter to ensure proper formatting.

Security Features

Privacy Note: Anyone with your webhook URL can send data to your email address. Only use this service for testing and debugging purposes. Do not use for sensitive production data without additional authentication.

Supported Features

HTTP Methods
  • GET
  • POST
  • PUT
  • PATCH
  • DELETE
  • Any custom method
Content Types
  • application/json
  • application/x-www-form-urlencoded
  • multipart/form-data
  • text/plain
  • text/xml
  • Any custom content type

GitHub Webhook Parser

Get beautifully formatted emails specifically designed for GitHub webhooks with enhanced event details.

How to Use

Simply add /github to the end of your webhook URL:

https://webhooks.dixon.cx/{email-address}/github

URL Format Examples

Standard Webhook
webhooks.dixon.cx/john%40example.com
GitHub Webhook
webhooks.dixon.cx/john%40example.com/github

Supported GitHub Events

The GitHub parser provides enhanced formatting for these event types:

📤 Push Events

Displays branch, commit count, and individual commit messages with authors.

🔀 Pull Request Events

Shows PR number, title, state, branches, and direct link to the PR.

📝 Issue Events

Displays issue number, title, state, and link to the issue.

🚀 Release Events

Shows release tag, name, and direct link to the release page.

All Events Supported: Even if an event isn't specifically formatted above, the parser will display it in a clean, structured format showing all webhook data.

Setting Up in GitHub

To configure a GitHub webhook:

  1. Go to your repository settings → Webhooks → Add webhook
  2. Set the Payload URL to: https://webhooks.dixon.cx/your%40email.com/github
  3. Set Content type to: application/json
  4. Choose which events to receive (or select "Send me everything")
  5. Click "Add webhook"
Subject Line: GitHub webhook emails arrive with event-specific subject lines like "📤 GitHub push - username/repo" or "🔀 GitHub pull_request (opened) - username/repo" for easy filtering.
Tip: Use email plus addressing like you+github%40example.com to easily filter GitHub webhooks in your inbox.

Common Use Cases

Debugging

See exactly what data third-party services are sending to your webhooks

Integration Testing

Test webhook integrations before implementing full handlers

Monitoring

Monitor webhook activity and payload changes over time

Documentation

Capture real examples for API documentation

Development

Quickly test webhook flows during development

Troubleshooting

Diagnose issues with webhook payloads and headers

Tips & Best Practices

Email Filtering

Create an email filter for the subject line "‼️ Webhook Request Received" to organize incoming webhooks in your inbox.

Use Plus Addressing

Use email plus addressing (e.g., yourname+github%40gmail.com) to track which services are sending webhooks.

Timestamp in Emails

Check the "Date Received" field in emails to verify webhook timing and debug delivery delays.

Parse the Body

The raw body section contains the exact payload - perfect for copying into your code for testing.

Quick Start

Get started in 3 simple steps:

1
Encode Your Email

Replace @ with %40 in your email address

2
Configure Webhook

Use webhooks.dixon.cx/{your-email} as the webhook URL

3
Check Your Inbox

Receive detailed webhook data instantly in your email

Try it now!
curl -X POST https://webhooks.dixon.cx/YOUR-EMAIL-HERE \ -d '{"test": "Hello World!"}'

Built with PHP and ADHD medication

© 2025-2026 Andy Dixon | webhooks.dixon.cx