0.0
The project is in a healthy, maintained state
A Rails library for triggering webhooks. Inspired by ActionMailer from Rails
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Development

>= 0

Runtime

~> 0.18.1
~> 7
 Project Readme

ActionWebhook

A Rails-friendly framework for delivering structured webhooks with the elegance of ActionMailer.


📦 Installation

Add this line to your Gemfile:

gem 'action_webhook'

🚀 Usage

  1. Create a webhook class
# app/webhooks/user_webhook.rb

class UserWebhook < ActionWebhook::Base
  # Configure retries specifically for this webhook
  self.max_retries = 5
  self.retry_delay = 10.seconds

  # Define callbacks
  after_deliver :log_success
  after_retries_exhausted :notify_admin

  def created
    @user = User.first
    @timestamp = Time.current

    endpoints = [
      {
        url: 'https://rbaskets.in/2ka8ww5',
        headers: {  # Changed from 'header' to 'headers'
          'Authorization' => 'PKRYigFRa9dRIWFpz7S8CNao2EyTG5nLnr3k8ta85U'  # Changed from symbol to string key
        }
      }
    ]

    deliver(endpoints)
  end

  private

  def log_success(response)  # Only needs one parameter
    Rails.logger.info "Successfully delivered webhook for user #{@user.id}"
  end

  def notify_admin(response)  # Only needs one parameter
    Rails.logger.info "Exhausted webhooks retries for user #{@user.id}"
    # Consider adding more robust failure notification here
    # AdminMailer.webhook_failure_alert(@user.id, response).deliver_later
  end
end
  1. Create the Payload Template
<!-- app/webhooks/user_webhook/created.json.erb -->
{
  "event": "user_created",
  "user_id": "<%= user[:id] %>",
  "email": "<%= user[:email] %>",
  "created_at": "<%= user[:created_at] %>"
}
  1. Trigger the webhook
UserWebhook.created.deliver_now