DOCUMENTATION

Send your first event

Create a project in the dashboard, copy its generated endpoint, and send the first event in under a minute.

Getting started

  1. Create a free account and sign in.
  2. Choose what you monitor and enter a project name.
  3. HookLogs creates the first channel and webhook automatically.
  4. Copy the endpoint or a language snippet, then send it.

Create your first channel and webhook

A channel groups events for one service or project. Each webhook is a cryptographically random public ingestion URL inside that channel. Categories are optional and can organize multiple channels later.

Send your first event

curl
curl -X POST "YOUR_WEBHOOK_URL" -H "Content-Type: application/json" -d '{"event":"player_join","message":"Ahmed joined RP-01","level":"info"}'

Replace YOUR_WEBHOOK_URL with the URL shown in onboarding or the channel page. The generated in-app examples insert your real URL automatically.

Event structure and levels

JSON is optional. When supplied, event becomes the event name, message becomes its summary, and level accepts debug, info, success, warning, error, or critical. Other fields remain available in the payload viewer. The receiver also accepts empty bodies, URL-encoded forms, multipart forms, and raw text.

Authentication

The public ingestion URL is a capability token: treat it like a credential and regenerate it if exposed. Dashboard APIs use secure browser sessions. The v1 automation API uses a revocable Authorization: Bearer hk_live_… key created under API Keys.

Webhook security

Optionally enable HMAC-SHA256. Sign the exact request bytes and send X-Webhook-Signature: sha256=<hex digest>. You may also restrict IPv4/IPv6 source addresses. Common secret headers and structured payload fields are redacted before storage.

Receiver contract and retries

GET, POST, PUT, PATCH, and DELETE are accepted. A stored event returns 202 with X-HookLogs-Event-Id. Send a stable Idempotency-Key on retries; duplicates return the original event ID without storing or billing another event.

Replay

Developer and Pro plans can send a retained event to an explicit public HTTP(S) destination. Review the method, destination, body, and safe header subset before sending. Credentials, redirects, private networks, metadata targets, and nonstandard ports are blocked; each result is logged.

Alerts

Developer and Pro plans can create email or Discord rules by channel, level, threshold, and time window. Delivery attempts are persisted and the scheduled worker retries transient failures.

API keys

Create a key in the dashboard and copy it once. It can list owned channels, webhooks, and channel events through /api/v1. Keys are stored hashed, can be revoked, and are rate-limited.

Rate limits, usage limits, and retention

Receiver rate limits apply by source IP, webhook, and account. Monthly events are reserved atomically. Free includes 25,000 events and 3-day retention; Developer includes 250,000 and 14 days; Pro includes 1,000,000 and 30 days. Oversized bodies return 413; rate or usage limits return 429 with Retry-After.

Troubleshooting

400

Check JSON or multipart syntax.

401

Recompute the HMAC over the exact bytes sent.

403

Check the source IP allowlist or plan access.

404

The endpoint is disabled, invalid, or was regenerated.

413

Reduce the body below the plan limit.

429

Wait for Retry-After or review monthly usage.

Data handling

Payloads are untrusted input and render as escaped text. Avoid secrets in unstructured raw text because it cannot be classified reliably. Retention deletes expired events from the database; deleted data cannot be recovered.