Gem Version

Slackiq (pronounced slack-kick) integrates Slack and Sidekiq so that you can have vital information about your Sidekiq jobs sent directly to your team's Slack.



Add this line to your Gemfile:

gem "slackiq"

Then run:

bundle install


First, set up any number of Slack Incoming Webhooks from your Slack.

Then, you only need to call the configure method when your application launches to configure all of the webhooks to which you want to post. If you're using Rails, create an initializer at config/initializers/slackiq.rb. Here's an example:

Slackiq.configure( web_scrapes: "",
                   data_processing: "")

:web_scrapes and data_processing are examples of keys. Use whatever keys you want.


You can call notify to send a nicely-formatted notification to your Slack. You can call notify

  • Inside the Sidekiq Pro on_success or on_complete callback (not available on regular Sidekiq--only Pro)
  • From inside a Sidekiq worker while it's running, in which case you should pass in the bid to the perform method of the worker

The notify method has a single Hash parameter. Here are the keys and values in the Hash:

  • :webhook_name The name of the webhook (Symbol) that you configured (eg. :web_scrapes or :data_processing)
  • :title The title of the notification (String)
  • :status An instance of Sidekiq::Batch::Status
  • Any other keys and values (both Strings) can be added too, and they'll be added to the Slack notification!

If you haven't used batches with Sidekiq Pro before, read this first.

Here's an example showing how you would use Slackiq to send a notification to your Slack when your Sidekiq batch completes:

class WebScraper

  class << self

    # Scrape the first 100 URLs in the database
    def scrape_100
      batch =
      batch.description = "Scrape the first 100 URLs!"
      batch.on(:complete, self) do

      urls = Url.limit(100) # Url is a Rails model in this case

      urls.each do |url|


  def on_complete(status, options)
    Slackiq.notify(webhook_name: :web_scrapes, status: status, title: "Scrape Completed!",
    "Total URLs in DB" => URL.count.to_s,
    "Servers" => "#{Server.active_count} active, #{Server.inactive_count} inactive")


Note that in this case, "Total URLs in DB" and "Servers" are custom fields that will also appear in Slack!

No prob. Just:

Slackiq.message("Server 5 is overloaded!", webhook_name: :data_processing)


Bug reports and pull requests are welcome on GitHub at This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.


The gem is available as open source under the terms of the MIT License.

Blog Post about Slackiq

More Open Source Projects