Webhook Debugger, Logger & API Mocking Suite
Pricing
from $10.00 / 1,000 captured webhooks
Webhook Debugger, Logger & API Mocking Suite
The ultimate webhook testing suite for developers. Capture, inspect, and replay requests in real-time without tunnels. Features API mocking (custom status/latency), secure forwarding, JSON Schema validation, and live SSE streaming. Perfect for debugging Stripe, GitHub, Shopify & Zapier workflows.
Pricing
from $10.00 / 1,000 captured webhooks
Rating
0.0
(0)
Developer

Ahmed Rehan
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
๐ Webhook Debugger & Logger

A high-performance Apify Actor built for developers to test, inspect, and automate incoming webhooks in real-time.
โก Live Demo (Local)
Run the following command while the Actor is active to see real-time streaming:
$node demo_cli.js
Test and inspect webhooks instantly without running localhost or complex tunneling tools.
Watch the 2-min Narrated Walkthrough
What does it do?
Webhook Debugger generates temporary webhook URLs and logs every incoming request with full details (headers, body, query params). Perfect for testing webhook integrations from Stripe, GitHub, Shopify, or any service.
๐ก Popular Use Cases
- Stripe & PayPal Debugging: Mock successful or failed payment responses to test your order fulfillment logic.
- GitHub CD/CI Testing: Verify complex payloads from CI/CD triggers without waiting for real builds.
- Shopify Webhook Relay: Securely forward Shopify hooks to your local development environment.
- n8n & Zapier Buffer: Acts as a high-performance validator for your automation workflows.
- API Mocking: Simulate slow or faulty 3rd party APIs with custom responses and latency.
Why use Webhook Debugger?
The Problem
Debugging webhooks is painful:
- โ Can't see what data services send
- โ No way to inspect payloads
- โ Localhost tunneling is complicated (ngrok, etc.)
- โ Failed webhook tests require service reconfiguration
The Solution
- Run Webhook Debugger
- Get 3 unique webhook URLs
- Configure service to send to those URLs
- See all requests in real-time
- Export logs as JSON/CSV
No setup required. No localhost tunneling. Takes 30 seconds.
What can this Actor do?
| Feature | Description |
|---|---|
| URL Generation | Generate 1-10 temporary webhook URLs |
| Request Logging | Capture ALL incoming requests (GET, POST, etc.) |
| Full Details | Headers, body, query params, IP, timing |
| Multi-Format | Handles JSON, Text, XML, and Form Data |
| Auto-Cleanup | URLs and data expire automatically (configurable 1-72h) |
| Export | Download logs as JSON or CSV from dataset |
๐ v2.0 Enterprise Features
The Enterprise Update transforms this Actor into a professional API mocking and workflow tool.
๐ก๏ธ Security & Access Control
- API Key Auth: Require a secret token for every incoming webhook.
- IP Whitelisting: Lock down your endpoints to specific IPs or CIDR ranges.
๐ญ API Mocking & Latency
- Custom Responses: Define the exact Body, Headers, and Status Code to return to the sender.
- Latency Simulation: Simulate slow network conditions by delaying responses (up to 10s).
- JSON Schema Validation: Reject invalid payloads automatically and log the errors.
๐ Advanced Workflows
- Real-time Forwarding: Automatically pipe captured webhooks to another destination (e.g., your local dev server).
- Request Replay: Resend any captured event to a new URL using the
/replayAPI.
Input example
Simple mode (basic)
{"urlCount": 3,"retentionHours": 24}
Advanced mode
{"urlCount": 5,"retentionHours": 72,"maxPayloadSize": 10485760,"enableJSONParsing": true}
Output example
JSON format (Dataset)
{"timestamp": "2025-12-19T14:31:45Z","webhookId": "wh_abc123","method": "POST","headers": {"content-type": "application/json","user-agent": "Stripe/1.0"},"body": "{\"type\": \"payment.success\", \"amount\": 9999}","size": 78,"contentType": "application/json","processingTime": 12,"remoteIp": "1.2.3.4"}
CSV Output Format (Preview)
| Timestamp | Webhook ID | Method | Status | Content-Type | Size (B) | Latency (ms) |
|---|---|---|---|---|---|---|
| 2025-12-19 14:31 | wh_abc123 | POST | 200 | application/json | 1,240 | 12 |
| 2025-12-19 14:35 | wh_xyz789 | GET | 401 | - | 0 | 5 |
| 2025-12-19 14:40 | wh_abc123 | POST | 200 | application/x-www-form-urlencoded | 450 | 8 |
How to get started
Step 1: Start the Actor and wait for it to enter "Running" state.
Step 2: Click on the Live View or check the Key-Value Store for the WEBHOOK_STATE key to see your assigned IDs.
Step 3: Use the URL format: https://<actor-run-id>.runs.apify.net/webhook/<id>
Step 4: Configure your service (Stripe, GitHub, etc.) to send to this URL.
Step 5: When webhooks arrive, they'll appear in the Dataset tab in real-time.
Usage Examples
1. Simple GET request
$curl -v https://<ACTOR-RUN-URL>/webhook/wh_abc123?test=true
2. Post JSON data
curl -X POST -H "Content-Type: application/json" \-d '{"event": "user_signup", "userId": "123"}' \https://<ACTOR-RUN-URL>/webhook/wh_abc123
3. Send raw text/XML
curl -X POST -H "Content-Type: text/xml" \-d '<event><type>ping</type></event>' \https://<ACTOR-RUN-URL>/webhook/wh_abc123
4. Upload a small file
$curl --upload-file document.txt https://<ACTOR-RUN-URL>/webhook/wh_abc123
5. Check active webhooks
$curl https://<ACTOR-RUN-URL>/info
Advanced Features
Real-time Log Stream (SSE)
You can stream webhook logs in real-time as they arrive using Server-Sent Events (SSE). This is perfect for terminal monitoring or custom dashboards.
Endpoint: https://<ACTOR-RUN-URL>/log-stream
How to monitor via CLI:
$curl -N https://<ACTOR-RUN-URL>/log-stream
Forced Status Codes
You can force a specific HTTP status response by adding the __status query parameter to your webhook URL.
https://<URL>/webhook/wh_123?__status=401-> Returns 401 Unauthorizedhttps://<URL>/webhook/wh_123?__status=500-> Returns 500 Internal Server Error
Filtering & Querying Logs (API)
You can retrieve and filter logs programmatically via the /logs endpoint.
Endpoint: https://<ACTOR-RUN-URL>/logs
Query Parameters:
webhookId: Filter by a specific ID (e.g.,wh_abc123)method: Filter by HTTP method (e.g.,POST)statusCode: Filter by response code (e.g.,201)contentType: Search for specific content types (e.g.,json)limit: Number of items to return (default: 100)
Example:
$curl "https://<ACTOR-RUN-URL>/logs?method=POST&statusCode=200"
Filtering Logs (Platform)
Apify Datasets support basic filtering via API parameters.
- Newest first: Add
?desc=1 - JSON Clean: Add
?clean=1(omits Apify metadata) - Specific fields: Add
?fields=timestamp,method,body
Integrations (Zapier / Make)
Webhook Debugger is the perfect "safe buffer" for your automations.
Why integrate?
- Logs everything: Even if your Zap fails, you have the raw request in Apify.
- Payload transformation: Apify datasets make it easy to clean/inspect data before it hits your automation.
Setup Guide (Zapier/Make)
- Source: Point your service (Stripe, Shopify, etc.) to the Actor's webhook URL.
- Apify Webhook:
- Go to your Actor's Integrations tab.
- Set up a webhook to trigger on Dataset item created.
- Point this Apify webhook to your Zapier/Make "Catch Webhook" URL.
- Data Flow:
Stripe->Webhook Debugger->Apify Dataset->Zapier. - Benefit: You get real-time logging AND immediate automation trigger.
Pricing
This Actor uses Pay-per-Event (PPE) pricing, meaning you only pay for the requests you actually log:
- $0.01 per webhook request logged
- Batch: 100 webhooks = $1
- Batch: 1,000 webhooks = $10
Compare to ngrok's monthly subscriptions just to get persistent local URLs.
FAQ
Q: How long are webhook URLs valid? A: By default, 24 hours. You can set 1-72 hours in the input.
Q: Will you store my data? A: No. Data is stored only in your Apify dataset (you own this). After the retention period expires, URLs and old requests are cleaned up.
Q: What's the payload size limit? A: 10MB by default to ensure stability. Configurable in input up to 100MB.
Q: Can I use this with Zapier or Make? A: Yes! It's an ideal "safe buffer." You can point your service to this Actor, then use an Apify Webhook to trigger your Zapier/Make flow whenever a new item is added to the dataset.
Q: Can I customize the response headers and body? A: Yes! Enterprise features (v2.0+) allow you to define custom JSON/XML response bodies, arbitrary headers, and even simulate network latency (delay).
Q: Can I validate incoming data? A: Yes. You can provide a JSON Schema in the input parameters, and the Actor will automatically reject invalid requests with a 400 Bad Request.
Q: Can I transform the data before it's saved? A: Yes. Use the Custom Scripting (v2.1+) feature to provide a JavaScript snippet that modifies the event object in real-time.
Troubleshooting
Issue: "Webhook not found or expired"
Solution: Verify the webhook ID is correct. Check the /info endpoint of your running Actor to see active IDs. If it expired, restart the Actor to generate new ones.
Issue: "Script Execution Error"
Solution: Check your customScript for syntax errors. The Actor runs scripts in a secure sandbox with a 1s timeout.
Issue: "JSON Schema Validation Failed"
Solution: The incoming payload did not match your provided schema. Check the /logs or the webhook response for specific validation error details.
Questions?
- ๐ฌ Join the Apify Discord Community
- ๐ Read the Apify SDK Documentation
- ๐ ๏ธ Compare with Webhook.site (Desktop alternative)
- ๐ Open an issue on our GitHub Repository
Developer Support Guarantee: I respond to all comments and bug reports on the Apify console within 24 hours.
Security & Permissions
- Permissions: This Actor runs with Limited Permissions (the safest level).
- Scope: It only accesses its own default dataset (to log webhooks) and key-value store (to manage state).
- Privacy: It cannot access your other Actors, tasks, or datasets. Your data remains completely isolated.
Privacy
We do not store any personal data beyond the raw request payloads you send. All data is kept only for the retention period you configure (default 24โฏh) and is automatically deleted afterwards. No data is shared with third parties.
For more details, see the Apify Privacy Policy.