HookInspector
HookInspector
Capture, inspect, and replay incoming webhooks with ease for faster debugging.
Solo developers and small teams building SaaS products or integrations frequently encounter a major headache when dealing with third-party webhooks (e.g., Stripe, GitHub, Shopify, Twilio). Debugging these incoming requests is notoriously difficult. Developers often resort to exposing their local environment using tunneling tools like ngrok, which can be slow, unreliable, and prone to losing critical payload data upon server restarts. Without a persistent history, recreating specific scenarios or inspecting subtle changes between webhook invocations becomes a time-consuming manual process, involving copying raw JSON into external formatters. This leads to hours wasted per week (an estimated 5-10 hours for complex integrations) in setup, re-triggering events, and back-and-forth communication with teammates about specific payloads, significantly delaying feature development and increasing frustration.
HookInspector provides a dedicated, persistent service for capturing, inspecting, and managing all your incoming webhook requests. Users generate unique, permanent webhook URLs for their projects. When a third-party service sends a webhook, HookInspector captures the full request (headers, body, query parameters) and stores it securely. The intuitive web UI offers real-time display of incoming requests, syntax-highlighted JSON inspection with collapsible sections, powerful search and filtering capabilities, and a detailed history. Our unique 'Replay' feature allows developers to re-send any captured webhook payload to a different target URL (e.g., their local development server or a staging environment), drastically simplifying testing of edge cases and specific scenarios. HookInspector eliminates the need for ephemeral tunnels and manual parsing, offering a collaborative workspace to share specific webhook payloads with a simple link, accelerating integration debugging from hours to minutes.
Tech Stack
System Architecture
āāāāāāāāāāāāāāāāāāā
ā Client ā
ā (Web Browser) ā
āāāāāāāāāāā¬āāāāāāāā
ā HTTP/S
ā
āāāāāāāāāāā¼āāāāāāāāāāāāāāāāāā
ā Next.js Application ā
ā (Frontend & API Routes) ā
āāāāāāāāāāā¬āāāāāāāāā¬āāāāāāāāā
ā ā API Calls
ā ā
āāāāāāāāāāā¼āāāāāāāāā¼āāāāāāāāāāāāāāāāāā
ā Supabase (PostgreSQL DB) ā
ā (Auth, Webhook Endpoints, Requests)ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā² ā²
ā ā Stripe (Payments)
ā ā Resend (Emails)
ā ā
āāāāāāāāāāā“āāāāāāāāāāā“āāāāāāāāāāāāāāāāāā
ā External Services & Webhooks ā
ā (Stripe, GitHub, Shopify, etc.) ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāDatabase Schema
CREATE TABLE users (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), -- Supabase manages this mostly
email TEXT UNIQUE NOT NULL,
created_at TIMESTAMPTZ DEFAULT now(),
-- Stripe customer ID, for subscription management
stripe_customer_id TEXT
);
CREATE TABLE projects (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
user_id UUID REFERENCES users(id) ON DELETE CASCADE,
name TEXT NOT NULL,
description TEXT,
created_at TIMESTAMPTZ DEFAULT now(),
updated_at TIMESTAMPTZ DEFAULT now()
);
CREATE TABLE webhook_endpoints (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
project_id UUID REFERENCES projects(id) ON DELETE CASCADE,
name TEXT NOT NULL,
-- The unique slug forms part of the URL, e.g., hookinspector.com/webhook/slug
slug TEXT UNIQUE NOT NULL,
-- Optional secret for webhook validation
secret TEXT,
created_at TIMESTAMPTZ DEFAULT now(),
updated_at TIMESTAMPTZ DEFAULT now()
);
CREATE INDEX idx_webhook_endpoints_project_id ON webhook_endpoints(project_id);
CREATE INDEX idx_webhook_endpoints_slug ON webhook_endpoints(slug);
CREATE TABLE webhook_requests (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
endpoint_id UUID REFERENCES webhook_endpoints(id) ON DELETE CASCADE,
method TEXT NOT NULL, -- e.g., 'POST', 'GET'
headers JSONB NOT NULL DEFAULT '{}',
body JSONB NOT NULL DEFAULT '{}', -- Store as JSONB for efficient querying
query_params JSONB NOT NULL DEFAULT '{}',
received_at TIMESTAMPTZ DEFAULT now(),
-- To allow sharing specific requests without exposing user/project info
share_token TEXT UNIQUE
);
CREATE INDEX idx_webhook_requests_endpoint_id ON webhook_requests(endpoint_id);
CREATE INDEX idx_webhook_requests_received_at ON webhook_requests(received_at DESC);API Endpoints
/api/webhook/:slugCaptures and stores an incoming webhook request for a given endpoint slug./api/projectsRetrieves a list of all projects for the authenticated user./api/projectsCreates a new project for the authenticated user./api/projects/:projectId/endpointsRetrieves all webhook endpoints associated with a specific project./api/projects/:projectId/endpointsCreates a new webhook endpoint within a project, generating a unique slug./api/endpoints/:endpointIdRetrieves details of a specific webhook endpoint./api/endpoints/:endpointIdDeletes a webhook endpoint and all associated requests./api/endpoints/:endpointId/requestsRetrieves a paginated list of all captured requests for a specific webhook endpoint./api/requests/:requestIdRetrieves the full details (headers, body, query params) of a specific captured webhook request./api/requests/:requestId/replayReplays a captured webhook request to a user-specified target URL./api/requests/:requestId/shareGenerates a unique, shareable link for a specific captured webhook request./share/:shareTokenPublic endpoint to view a shared webhook request without authentication.Start Building with AI
Copy this prompt for Cursor, v0, Bolt, or any AI coding assistant
BuilderDaily Team
VerifiedIndie hackers and full-stack engineers creating validated Micro-SaaS blueprints with production-ready tech stacks.
Related Blueprints
More Micro-SaaS ideas you might like to build
MediBrief AI
AI-powered clinical note summarization for healthcare professionals.
AssessGenius AI
Instantly create engaging quizzes from any text using AI.
DevWallet
Automate tracking and optimize your SaaS & cloud spending as a developer.
Gap Alert
Today's gap expires in ~14 hours
Get tomorrow's blueprint delivered to your inbox so you never miss a profitable idea.
(Email delivery launching soon ā sign up to be first!)