Articles › Pushpad, Reengage

Send recurring web notifications to re-engage your users

  • # push-api
  • # web-notifications

Recurring web notifications (e.g. every day, every week, every month, etc.) can be a simple strategy to re-engage your website users.

Here's some examples of recurring notifications:

  • Send a notification every Monday to your blog readers: "Check out the new blog posts"
  • Send a notification every Wednesday about a special discount: "Visit our store on Wednesday from 7PM to 9PM: 10% discount on all products"
  • Send a notification every Sunday to the community members: "See the best posts of the week"
  • Send every day the best posts or deals to a user based on his past history
  • etc.

It's very simple to implement notifications like these that are sent automatically.

Recurring notifications using Zapier (no code)

If you don't want to write code, you can automate the notifications even without technical skills.

For example you can use Zapier (Schedule by Zapier), which allows to automate recurring tasks, like sending the notifications in this case. You can use for example the Pushpad app for Zapier to send recurring notifications from your website.

Recurring notifications using cron jobs

A simple solution is to use cron jobs: most languages / framework / cloud providers allow to configure cron jobs. On Ubuntu servers you can use "cron". Heroku supports the Heroku Scheduler, Scheduled Jobs and Custom Clock Processes. For Ruby on Rails you can use a gem like "whenever", etc.

Here's an example with Rails + "whenever" gem + Pushpad:

# config/schedule.rb

every :monday, at: '8am' do
  runner 'User.reengage'
# app/models/user.rb

def self.reengage
  notification = Pushpad::Notification.new({
    title: "My Blog",
    body: "Check out the new blog posts",
    target_url: "https://example.com"

Add personalization to notifications

The above code will send the same notification to all subscribers.

However it is easy to customize the code to send a personalized message to each user. For example:

# app/models/user.rb

def self.reengage
  User.find_each do |user|
    if user.likes_cats?
      notification = Pushpad::Notification.new({
        body: "Check out the new posts about cats",
        target_url: "https://example.com/posts/cats"
    elsif user.likes_dogs?
      notification = Pushpad::Notification.new({
        body: "Check out the new posts about dogs",
        target_url: "https://example.com/posts/dogs"
    notification.deliver_to user.id

You can also read this related post: how to re-engage inactive users.