liiight/notifiers

The easy way to send notifications

Python

2,737

547 commits

updated Oct 10, 2026

See the code

README

Full logo

Tests PyPi version Supported Python versions License Status Docker image RTD Paypal PyPI Downloads pre-commit X (formerly Twitter) Follow

See changelog for recent changes

Got an app or service, and you want to enable your users to use notifications with their provider of choice? Working on a script and you want to receive notification based on its output? You don't need to implement a solution yourself, or use individual provider libs. A one stop shop for all notification providers with a unified and simple interface.

Supported providers

Pushover, SimplePush, Slack, Gmail, Email (SMTP), Telegram, Pushbullet, Join, Zulip, Twilio, Pagerduty, Mailgun, StatusPage.io, iCloud, VictorOps (Splunk), Notify

Advantages

  • Spend your precious time on your own code base, instead of chasing down 3rd party provider APIs. That's what we're here for!
  • With a minimal set of well known and stable dependencies (requests, pydantic and click) you're better off than installing 3rd party SDKs.
  • A unified interface means that you already support any new providers that will be added, no more work needed!
  • Thorough testing means protection against any breaking API changes. We make sure your code your notifications will always get delivered!

Installation

Requires Python 3.10 or newer.

As a library, add it to your project with uv:

$ uv add notifiers

To use the CLI, run it with uvx without installing anything:

$ uvx notifiers --help

Or install the notifiers command once:

$ uv tool install notifiers

Via pip:

$ pip install notifiers

Via homebrew:

$ brew install notifiers

Or run the CLI with Docker:

$ docker run --rm ghcr.io/liiight/notifiers pushover notify --user foo --token baz "This is so easy!"

Basic Usage

>>> from notifiers import get_notifier
>>> p = get_notifier('pushover')
>>> p.required
{'required': ['user', 'message', 'token']}
>>> p.notify(user='foo', token='bar', message='test')
<Response,provider=Pushover,status=Success, errors=None>

Or:

>>> from notifiers import notify
>>> notify('pushover', user='foo', token='bar', message='test')
<Response,provider=Pushover,status=Success, errors=None>

From CLI

$ uvx notifiers pushover notify --user foo --token baz "This is so easy!"

Or, after uv tool install notifiers:

$ notifiers pushover notify --user foo --token baz "This is so easy!"

As a logger

Directly add to your existing stdlib logging:

>>> import logging
>>> from notifiers.logging import NotificationHandler

>>> log = logging.getLogger(__name__)

>>> defaults = {
        'token': 'foo',
        'user': 'bar'
    }
>>> hdlr = NotificationHandler('pushover', defaults=defaults)
>>> hdlr.setLevel(logging.ERROR)

>>> log.addHandler(hdlr)
>>> log.error('And just like that, you get notified about all your errors!')

Mentions

Road map

  • Many more providers!
  • Low level providers (Amazon SNS, Google FCM, OS Toast messages) via extra dependencies

See Docs for more information

Donations

If you like this and want to buy me a cup of coffee, please click the donation button above or click this link ☕

Code of Conduct

Everyone interacting in the Notifiers project's codebases, issue trackers and chat rooms is expected to follow the PyPA Code of Conduct.

notifications
notification-service
notifier
pypi
python
python3

liiight/notifiers

The easy way to send notifications

Python

2,737

547 commits

updated Oct 10, 2026

See the code

README

Full logo

Tests PyPi version Supported Python versions License Status Docker image RTD Paypal PyPI Downloads pre-commit X (formerly Twitter) Follow

See changelog for recent changes

Got an app or service, and you want to enable your users to use notifications with their provider of choice? Working on a script and you want to receive notification based on its output? You don't need to implement a solution yourself, or use individual provider libs. A one stop shop for all notification providers with a unified and simple interface.

Supported providers

Pushover, SimplePush, Slack, Gmail, Email (SMTP), Telegram, Pushbullet, Join, Zulip, Twilio, Pagerduty, Mailgun, StatusPage.io, iCloud, VictorOps (Splunk), Notify

Advantages

  • Spend your precious time on your own code base, instead of chasing down 3rd party provider APIs. That's what we're here for!
  • With a minimal set of well known and stable dependencies (requests, pydantic and click) you're better off than installing 3rd party SDKs.
  • A unified interface means that you already support any new providers that will be added, no more work needed!
  • Thorough testing means protection against any breaking API changes. We make sure your code your notifications will always get delivered!

Installation

Requires Python 3.10 or newer.

As a library, add it to your project with uv:

$ uv add notifiers

To use the CLI, run it with uvx without installing anything:

$ uvx notifiers --help

Or install the notifiers command once:

$ uv tool install notifiers

Via pip:

$ pip install notifiers

Via homebrew:

$ brew install notifiers

Or run the CLI with Docker:

$ docker run --rm ghcr.io/liiight/notifiers pushover notify --user foo --token baz "This is so easy!"

Basic Usage

>>> from notifiers import get_notifier
>>> p = get_notifier('pushover')
>>> p.required
{'required': ['user', 'message', 'token']}
>>> p.notify(user='foo', token='bar', message='test')
<Response,provider=Pushover,status=Success, errors=None>

Or:

>>> from notifiers import notify
>>> notify('pushover', user='foo', token='bar', message='test')
<Response,provider=Pushover,status=Success, errors=None>

From CLI

$ uvx notifiers pushover notify --user foo --token baz "This is so easy!"

Or, after uv tool install notifiers:

$ notifiers pushover notify --user foo --token baz "This is so easy!"

As a logger

Directly add to your existing stdlib logging:

>>> import logging
>>> from notifiers.logging import NotificationHandler

>>> log = logging.getLogger(__name__)

>>> defaults = {
        'token': 'foo',
        'user': 'bar'
    }
>>> hdlr = NotificationHandler('pushover', defaults=defaults)
>>> hdlr.setLevel(logging.ERROR)

>>> log.addHandler(hdlr)
>>> log.error('And just like that, you get notified about all your errors!')

Mentions

Road map

  • Many more providers!
  • Low level providers (Amazon SNS, Google FCM, OS Toast messages) via extra dependencies

See Docs for more information

Donations

If you like this and want to buy me a cup of coffee, please click the donation button above or click this link ☕

Code of Conduct

Everyone interacting in the Notifiers project's codebases, issue trackers and chat rooms is expected to follow the PyPA Code of Conduct.

notifications
notification-service
notifier
pypi
python
python3

Project health

Overall

3.0/10

Maintained

0/10

Code review

2/10
OpenSSF Scorecard

Latest release

2.0.0 · Oct 10, 2026

Releases this year

1

Significant stargazers

Thomas J. Fan

686 followers · starred Mar 2018

Kevin Deldycke

2,207 followers · starred Apr 2019

daniel gratzer

498 followers · starred Dec 2017

Chase Sterling

65 followers · starred Aug 2017