Skip to main content

Email Notifier Service

email-notifier-service resolves email destinations and delivers notifications for the email channel. With app.sentinel, it also holds external watchdogs and sends a Down or Recovered alert by email.

HTTP serves POST /watchdogs/{name}/heartbeat. Without app.sentinel that route answers 404. Health in Compose stays the Kontiki registry live probe.

What it does

  • Load email endpoints from YAML (app.endpoints).
  • Expose the email channel catalog (RPC get_notification_channel_catalog).
  • Consume email.alerting.notification.requested.
  • Resolve destination using configured endpoint_key.
  • Format alert notifications as multipart plain + HTML (same structured layout as Telegram: event_type banner, humanized attributes, Message when body adds info). Subject is the banner label.
  • Send email through configured SMTP.
  • When app.sentinel is set, accept watchdog heartbeats and send a structured Down or Recovered mail on the watchdog’s endpoint.
  • Mark the instance degraded on repeated SMTP failures (@degraded_on); alert-delivery failures surface through Kontiki exception / alerting.

Stack

  • Config: stack/notifiers/email.yaml (demo ships app.endpoints.inbox → MailHog)
  • Local SMTP: MailHog (mailhog:1025, UI http://127.0.0.1:8025)
  • Matching subscriptions: stack/subscription.yaml (core) or stack/subscription.demo.yaml (demo).

Message formatting

Alert notifications (context.kind = alert or a non-empty category) are rendered as multipart/alternative:

  • Subject: humanized event_type (falls back to last category segment)
  • text/plain: banner, attribute rows in producer insertion order, optional Message: when body differs from title, optional Details link
  • text/html: same layout plus severity icon on the banner

Non-alert messages keep title as subject and title/body as content.

Shared parsing lives in boomerang.services.notifiers.common.structured_alert (also used by the Telegram notifier).

Event flow

Consumes:

  • email.alerting.notification.requested

Behavior:

  • parse payload as NotificationRequest,
  • resolve address from configured endpoint,
  • format plain + HTML body,
  • send via SMTP (failures propagate as Kontiki exceptions).

External sentinel

Optional. POST /watchdogs/{name}/heartbeat with Authorization: Bearer <token> refreshes one watchdog. A matching token on a known name answers 204. A missing or wrong token answers 401. An unknown name, or no app.sentinel section, answers 404.

Down and Recovered are structured alerts (category kontiki.sentinel). The subject is Down (critical) or Recovered (low). The heartbeat name is the Watchdog attribute. They are sent through the endpoint named by endpoint_key. They do not go through the bus.

Keys and state machine: docs/configuration.md.

Metadata

Release files for boomerang-email-notifier 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for boomerang-email-notifier 1.0.0
File Interpreter ABI Platform
boomerang_email_notifier-1.0.0-py3-none-any.whl Python 3 none any Details

Release files / boomerang_email_notifier-1.0.0-py3-none-any.whl

Download URL boomerang_email_notifier-1.0.0-py3-none-any.whl
Size 58.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5ec9d221ae6625ff295fe7cfd0d7e7c7026d52edffcc4d88085194068766122d
BLAKE2b-256 checksum
How to use checksums
9ad2e17be21a953107437b01137a25c1ba347f5356854f23099cd9e0ef8cd846
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.0.0 This release

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page