DEV Community

Cover image for How to Send Alerts from Supabase
Patrik Braborec
Patrik Braborec

Posted on

6 1 1 1 1

How to Send Alerts from Supabase

Sometimes, you may find the need to be notified about changes in your Supabase database as soon as possible. It can be for various reasons. For example, you may want to know if a new user registered, or if a critical business action occurs, such as a user adding an item to their shopping basket. This tutorial outlines a simple way to achieve this using Emitbase (an open-source alert platform for developers).

Prerequisites

Supabase Table and the Requirements for Alerts

For the sake of simplicity, I have a basic table named buyers with the following columns:

  • id (the table's identifier)
  • created_at (the registration time of the user)
  • updated_at (the time of the user's last update)
  • name (the buyer's name)
  • approved (a flag indicating if a user has been approved by an admin and can log into the application)

Example of Supabase table

I want to receive a Slack message when the following events occur:

  1. A new buyer registers within the last five minutes.
  2. The 'buyers' table contains any rows where the 'approved' column has a 'FALSE' value.

Step 1: Create a New Emitbase Project

$ npx emitbase init <your-project-name>
Enter fullscreen mode Exit fullscreen mode

Step 2: Set Up Your profiles.yml

First, create a credentials file:

$ touch profiles.yml
Enter fullscreen mode Exit fullscreen mode

In the profiles.yml file, please define your credentials:

emitbase:
  databases:
    dev:
      host: <database-host>
      database: <database-name>
      port: <database-port>
      user: <database-username>
      password: <database-password>

  notifications:
    dev:
      slack:
        port: <slack-port>
        channel: <slack-channel>
        signingSecret: <slack-signing-secret>
        token: <slack-token>

  target: dev
Enter fullscreen mode Exit fullscreen mode

Check the Integration with Slack documentation page for more information about Slack credentials.

Step 3: Create Necessary Thresholds for Alerts

The first threshold must track whether a new buyer has registered within the last five minutes:

new_users:
  expression: SELECT * FROM buyers WHERE created_at >= NOW() - INTERVAL '5 minutes'
  cron: '* * * * *'
Enter fullscreen mode Exit fullscreen mode

The second threshold must track whether the 'buyer' table contains any rows where the approved value is FALSE.

unapproved_users:
  expression: 'SELECT * FROM buyers WHERE approved = FALSE'
  cron: '* * * * *'
Enter fullscreen mode Exit fullscreen mode

Step 4: Create Alerts Messages

For new users:

new_users:
  slack:
    message: 'You have new users who have registered on the platform! πŸš€'
Enter fullscreen mode Exit fullscreen mode

For unapproved rows:

unapproved_users:
  slack:
    message: 'πŸ“£ We have some unapproved users! Take a look!'
Enter fullscreen mode Exit fullscreen mode

Step 5: Build and Run Emitbase

To run the project, it is necessary to build a Docker image:

$ docker build -t emitbase .
Enter fullscreen mode Exit fullscreen mode

Then, you can just run it and wait for notification on your slack! πŸŽ‰

$ docker run -it emitbase
Enter fullscreen mode Exit fullscreen mode

Showcase

The following images show messages in Slack. It's really simple; you can set up your alerts in minutes!

Example of Slack messages from Emitbase

Conclusion

For more information, please refer to the entire Emitbase documentation. If you encounter any issues, please feel free to create an issue. Lastly, if you appreciate Emitbase and would like to show your support, please give it a star on GitHub. Thank you!

Heroku

Amplify your impact where it matters most β€” building exceptional apps.

Leave the infrastructure headaches to us, while you focus on pushing boundaries, realizing your vision, and making a lasting impression on your users.

Get Started

Top comments (0)

nextjs tutorial video

Youtube Tutorial Series πŸ“Ί

So you built a Next.js app, but you need a clear view of the entire operation flow to be able to identify performance bottlenecks before you launch. But how do you get started? Get the essentials on tracing for Next.js from @nikolovlazar in this video series πŸ‘€

Watch the Youtube series

πŸ‘‹ Kindness is contagious

Explore a trove of insights in this engaging article, celebrated within our welcoming DEV Community. Developers from every background are invited to join and enhance our shared wisdom.

A genuine "thank you" can truly uplift someone’s day. Feel free to express your gratitude in the comments below!

On DEV, our collective exchange of knowledge lightens the road ahead and strengthens our community bonds. Found something valuable here? A small thank you to the author can make a big difference.

Okay