Webhook Debugger, Logger & API Mocking Suite avatar
Webhook Debugger, Logger & API Mocking Suite
Under maintenance

Pricing

from $10.00 / 1,000 captured webhooks

Go to Apify Store
Webhook Debugger, Logger & API Mocking Suite

Webhook Debugger, Logger & API Mocking Suite

Under maintenance

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

Ahmed Rehan

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

๐Ÿš€ Webhook Debugger & Logger

Dashboard Mockup

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.

  • 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

  1. Run Webhook Debugger
  2. Get 3 unique webhook URLs
  3. Configure service to send to those URLs
  4. See all requests in real-time
  5. Export logs as JSON/CSV

No setup required. No localhost tunneling. Takes 30 seconds.

What can this Actor do?

FeatureDescription
URL GenerationGenerate 1-10 temporary webhook URLs
Request LoggingCapture ALL incoming requests (GET, POST, etc.)
Full DetailsHeaders, body, query params, IP, timing
Multi-FormatHandles JSON, Text, XML, and Form Data
Auto-CleanupURLs and data expire automatically (configurable 1-72h)
ExportDownload 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 /replay API.

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)

TimestampWebhook IDMethodStatusContent-TypeSize (B)Latency (ms)
2025-12-19 14:31wh_abc123POST200application/json1,24012
2025-12-19 14:35wh_xyz789GET401-05
2025-12-19 14:40wh_abc123POST200application/x-www-form-urlencoded4508

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 Unauthorized
  • https://<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)

  1. Source: Point your service (Stripe, Shopify, etc.) to the Actor's webhook URL.
  2. 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.
  3. Data Flow: Stripe -> Webhook Debugger -> Apify Dataset -> Zapier.
  4. 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?

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.