Notifications
The notification system runs at the plugin level and periodically scans your vault for tracker data. When alert conditions are met, it sends notifications through your configured channels.
Enable notifications
Section titled “Enable notifications”- Open Settings > Postpartum Tracker > Notifications.
- Toggle Enable notifications on.
- Set the Check interval (how often to scan, in minutes; default: 1).
- Choose the Notification type: in-app, system, or both.
Alert types
Section titled “Alert types”Feeding reminders
Section titled “Feeding reminders”Fires when the time since the last completed feeding exceeds the configured threshold (default: 3 hours). No alert fires if a feeding is actively in progress.
Toggle: Feeding reminder enabled
The interval adjusts automatically based on your baby’s age: 2 hours (days 0-7), 2.5 hours (days 8-28), 3 hours (day 29+). You can override this with a custom value in settings.
Medication dose ready
Section titled “Medication dose ready”For each enabled medication in your configuration, checks the time since the last dose. Fires within a 5-minute window after the minimum interval elapses.
Toggle: Medication dose ready alerts
Alternating medication schedule
Section titled “Alternating medication schedule”Tracks the Tylenol + Ibuprofen alternating pattern. Fires 3 hours after the most recent pain medication, suggesting you take the other one.
Toggle: Alternating medication alerts
Library tracker reminders
Section titled “Library tracker reminders”Smart modules from the tracker library (sleep, pumping, bowel movements, mood, temperature) have their own reminder intervals. These fire automatically when enabled.
| Module | Default interval |
|---|---|
| Sleep | 3 hours |
| Pumping | 3 hours |
| Bowel movements | 24 hours |
| Mood check-in | 8 hours |
| Temperature | Configurable |
Notification channels
Section titled “Notification channels”In-app toast
Section titled “In-app toast”A fixed-position notification appears in the bottom-right corner of the Obsidian window. Each toast includes:
- Title and message
- Dismiss button
- Snooze menu with options: 15 minutes, 30 minutes, 1 hour, 2 hours
Snooze state is stored in localStorage and persists across sessions.
System notifications
Section titled “System notifications”Uses the Web Notification API to show desktop notifications. The plugin requests permission on first use.
Webhooks (push notifications)
Section titled “Webhooks (push notifications)”Send push notifications to your phone via external services. Enable multiple services simultaneously — each person sharing a vault can use their preferred service.
| Service | Platform | Alarm loop? | DND bypass? | Cost |
|---|---|---|---|---|
| Pushover | Android + iOS | Yes (retry until ack) | Yes (Critical Alerts) | $4.99 one-time |
| ntfy.sh | Android + iOS | Android only | Android only | Free |
| Gotify | Android | No | No | Free (self-hosted) |
What works when Obsidian is closed?
Section titled “What works when Obsidian is closed?”| Feature | Obsidian open | Obsidian in background | Obsidian closed |
|---|---|---|---|
| In-app toast | Yes | No | No |
| ntfy push | Yes | Yes | Yes |
| ntfy scheduled reminder | Yes | Yes | Yes (server-side) |
| Pushover push | Yes | Yes | Yes |
| Pushover scheduled reminder | Yes | Maybe* | No (in-process timer) |
| Todoist reminder | Yes | Yes | Yes (independent) |
* Pushover reminders use in-process timers. They fire if Obsidian stays alive in background, but the OS may kill it.
To configure:
- Enable Webhook notifications.
- Toggle on the services you want (ntfy, Pushover, Gotify, or Custom).
- Fill in the required fields (topic name, API keys, etc.).
- Click Send test to verify connectivity.
ntfy payload format
Section titled “ntfy payload format”The plugin sends JSON to the ntfy server root URL (e.g., https://ntfy.sh) with the topic in the body:
{ "topic": "my-baby-alerts-abc123", "title": "Feeding reminder", "message": "Last feeding was 3.5 hours ago", "priority": 5, "tags": ["baby_bottle"]}| Alert level | ntfy priority | Behavior |
|---|---|---|
| Info | 2 (low) | Silent notification |
| Warning | 3 (default) | Normal sound |
| Urgent | 5 (max) | Overrides DND (Android) |
Gotify payload format
Section titled “Gotify payload format”{ "title": "Feeding reminder", "message": "Last feeding was 3.5 hours ago", "priority": 5}The plugin auto-appends /message to your Gotify server URL if not already present.
| Alert level | Gotify priority |
|---|---|
| Info | 2 |
| Warning | 5 |
| Urgent | 8 |
Pushover payload format
Section titled “Pushover payload format”Pushover uses URL-encoded form data with your app token and user key:
| Alert level | Pushover priority | Behavior |
|---|---|---|
| Info | 0 (normal) | Standard notification |
| Warning | 1 (high) | Bypasses quiet hours |
| Urgent | 2 (emergency) | Retries every 60s until acknowledged |
Scheduled reminders
Section titled “Scheduled reminders”When you log a feeding or medication dose, the plugin can immediately schedule a future push notification at the expected next reminder time:
- ntfy: Uses server-side scheduled delivery (
In:header) — works even after closing Obsidian. - Pushover: Uses in-process timeout — only works while Obsidian is open. Pair with Todoist for offline reliability.
Toggle: Schedule reminders on log (enabled by default for ntfy).
Suppressing notifications
Section titled “Suppressing notifications”When Todoist integration is active and creating tasks for alerts, you may want to suppress in-app toasts to avoid duplicate reminders. Enable Suppress toasts when Todoist handles reminders in the Todoist settings section.
How scanning works
Section titled “How scanning works”The notification check loop:
- Runs on the configured interval (default: every minute).
- Scans all markdown files in the vault for
postpartum-trackercode blocks. - Aggregates tracker data across all code blocks.
- Evaluates each alert condition against the aggregated data.
- Fires new notifications and clears resolved ones.
- Triggers Todoist sync if enabled.
This means alerts work even if you have multiple tracker code blocks across different notes — all data is considered.