Everything your hand-rolled webhook job is missing: HMAC signing, retries with backoff, zero-downtime secret rotation, SSRF protection, and a queryable log of every delivery attempt.
Angarium is a Rails engine. It signs to the Standard Webhooks spec, so your receivers verify with off-the-shelf libraries in any language and you never write verification docs of your own. Works with any ActiveJob backend on Rails 7.1+.
# Gemfile
gem "angarium"
bundle install
bin/rails g angarium:install
bin/rails db:migrate
Any model can own endpoints (an account, team, or user):
class Account < ApplicationRecord
has_many :webhook_endpoints, as: :owner, class_name: "Angarium::Endpoint"
end
# Register an endpoint; the signing secret is generated for you
account.webhook_endpoints.create!(
name: "Production",
url: "https://example.com/webhooks",
subscribed_events: ["invoice.*", "user.created"]
)
# Fan an event out to every subscribed endpoint
Angarium.dispatch("invoice.paid", { id: 123, total: 4200 }, owner: account)
Angarium handles the rest: signing, retries with backoff, Retry-After, dedup-friendly delivery IDs, SSRF checks, and a full attempt log.
Retry-After to delay but never to hammer.