Changelog
What shipped, every Tuesday.
Every release in one place. Follow along on GitHub or in Discord.
v2.5.0
Feature
Every delivery now carries an Idempotency-Key header that stays stable across retries and replays. SDKs expose a helper to store and check it.
The key is derived from the event id and preserved on retries, replays and secret rotations. The SDKs ship a small helper that wraps the recommended unique-index pattern for Postgres, MySQL and SQLite.
Existing endpoints need no change; the header is additive.
v2.4.1
Fix
Endpoints with more than 10,000 attempts in a day could show gaps in the timeline. Pagination now streams in order with no missing rows.
The timeline fetched pages by offset, which skipped rows when new attempts arrived mid-scroll. It now uses a cursor on attempt id. No data was lost; only the view was affected.
v2.4.0
Feature
Replay a single event, an endpoint’s backlog or a full hour from the API. Every replay is idempotent and shows up as its own attempt.
The replay endpoints accept an event id, an endpoint id with a time range, or a global time range. Replays respect retention limits per plan and appear in the timeline with a replay badge.
SDKs for TypeScript, Python and Go ship replay helpers in this release.
v2.3.0
Improvement
The retry scheduler now reads Retry-After headers and stretches windows for endpoints that flap. Fewer wasted attempts, faster recovery.
Previously every endpoint shared one exponential schedule. The scheduler now keeps a small per-endpoint model and adjusts delays based on recent behaviour. No configuration is required and existing schedules migrate automatically.
v2.2.0
Feature
Rotate signing secrets with dual signatures for up to seven days. The dashboard shows which endpoints have not switched yet.
During the grace window each request carries signatures for both the old and the new secret. The audit log records the rotation, and alerts fire for endpoints still verifying with the old secret when the window closes.
v2.1.3
Fix
A rate-limited attempt in an ordered queue could hold later events longer than necessary. The queue now honours Retry-After precisely.
Affected queues resumed automatically after the deploy. No events were lost; delivery was delayed by up to the retry window in the worst case.
v2.1.0
Feature
Delivery success rate, attempt latency and queue depth per endpoint, pushed to Datadog every minute on Pro and Scale.
Enable the integration under Settings, paste an API key and pick the tags you want attached. Metrics are namespaced under hookline.* and include endpoint and event name as tags.
v2.0.0
Feature
One spec, one conformance suite, one release train. All three SDKs now ship the same feature set on the same day.
Method names, error types and signature verification are identical across languages. Python verify() now raises on failure; Go clients accept a context. See the migration guide for the two-line changes.
v1.9.2
Fix
Receivers with drifting clocks rejected valid signatures. The default tolerance window is now five minutes and configurable per endpoint.
The previous 60-second window caused spurious verification failures on hosts without NTP. The SDK verify helpers accept a tolerance option, and the dashboard flags endpoints that reject timestamps so you can spot clock drift.
v1.9.0
Improvement
Cap concurrent deliveries per endpoint so a burst never overwhelms a small receiver. Defaults are generous; set a lower limit from endpoint settings.
Limits apply across regions and respect ordering keys. Attempts above the cap queue in order rather than failing, and the health view shows time spent waiting on the limit.
Buy this template
$49