DominaresTools

All tools / Email & messaging

pingrules

Route your app's events to Telegram and email by rules in one file.

Buy pingrules for $99

One payment of $99, plus sales tax where it applies, and every future update. Delivered as a private GitHub repository you're invited to.

See it work

pingrules 1.0.1demo mode
pingrules demo | sed -n '1p;/^5\./,$p'
pingrules demo: nothing leaves this machine; messages are printed where they would be sent.
5. The rules file breaks. The alert still reaches the fallback chat, with the reason.
  -> telegram to 999:
       Event: server_down
       Sent by the fallback path because: the rules could not be read (RulesError: rules.json is not valid JSON: line 1)
       host: web-1
server_down: fallback
  skipped: rules-unreadable (rules.json is not valid JSON: line 1)
  fallback (the rules could not be read (RulesError: rules.json is not valid JSON: line 1)): ok

6. The delivery log keeps no address, chat id, body or payload:
  payment_failed: telegram=ok, email=ok
  payment_failed: nothing sent
  payment_failed: telegram=held, email=ok
  server_down: telegram=ok
  server_down: fallback-telegram=ok
Demo mode, not a live system: pingrules 1.0.1, run on 2026-10-05. The tool's own demo on our test machine; it sends nothing and prints each message where it would have gone; the first line and the last two of its six cases are shown, where the rules file is broken and an alert still goes out.

What it does

pingrules sends your app's events to Telegram and email by a rules file you edit by hand. It reports each delivery leg by leg, and a fallback destination still alerts someone when the rules file itself breaks.

Rules in one file
Recipients, events with declared fields, and rules with conditions and templates. The file is read on every fire, so an edit takes effect at once and a broken file is noticed at once.
Field conditions
Ten operators, all/any, dotted paths into nested payloads, and numeric comparison that fails closed. No code and no regular expression in a condition.
Quiet hours
A window in a named time zone holds Telegram pings, but never the last leg that would reach someone. Urgent events and test fires go through.
Test fire
A real message marked [TEST FIRE], built from sample values and narrowable to one rule or one recipient.
A delivery log with no personal data
A capped JSONL file with the event, rule ids, the result of each leg and a scrubbed error, and never an address, chat id, message or payload.
A fallback that survives a broken file
A Telegram chat or email address set outside the rules, used when the rules cannot be read or every send failed.
Telegram-safe text
Shortens without cutting a tag, closes open tags, escapes values, and explains in words why hand-written HTML would be refused.
Plain about its limits
Nothing is sent without --send, a failed send is a failed send and never a quiet skip, and pingrules does not guarantee anyone reads an alert.

What you get

pingrules 1.0.1: the Python package and the pingrules command, an example rules file, and the full test suite, with 321 automated tests.

A commercial license. Use it and change it in your own projects and your clients' projects. Don't share or resell the source. Read the license.

Every update. New versions land in the same repository; git pull to get them.

Requirements

Python 3.10 or newer. Python 3.10 or newer, standard library only. A Telegram bot token and a Resend API key or an SMTP server to send for real; the demo needs none. tzdata is optional, for systems without a time zone database.

How buying works

  1. Enter your GitHub username. You'll see the account before you pay, so you can check it's yours.
  2. Pay $99, plus any sales tax shown at checkout, on Stripe's checkout page.
  3. Accept the invitation GitHub emails you. Signed in as that account, you'll also find it at github.com/dominares-tools/pingrules/invitations. Invitations expire after 7 days; you can get a new one any time.
  4. Clone and install:
    git clone https://github.com/dominares-tools/pingrules.git

    Private repo: sign in to GitHub on this computer first. Run gh auth login and choose HTTPS, or give git a personal access token when it asks for a password. To use an SSH key instead, clone git@github.com:dominares-tools/pingrules.git.

    python3 -m venv .venv && . .venv/bin/activate
    pip install ./pingrules

Questions

Do I need GitHub?

Yes. Access is a read-only invitation to a private repository, sent to the GitHub account you choose.

Can I get a refund?

Yes, within 14 days, no questions asked. Access ends when the refund goes through. Refund policy.

Who takes the payment?

Payments are handled by Stripe, which works out sales tax. Your receipt and card statement show Link (LINK.COM*), Stripe's checkout service.

Something wrong?

Email support@dominares.org. Every buyer of a tool shares its repository, so support happens by email rather than in GitHub issues.