Documentation
Troubleshoot missing phone alerts, Topic creation and replies
Check service acceptance, the phone Inbox and system alerts separately. Diagnose Topic creation, subscriptions, daily quotas and an Agent still waiting after a reply.
Updated
Find the last confirmed step
#Use one non-sensitive test message and note its time, App/CLI versions and visible error code. Avoid a burst of resends. Separate service acceptance, device receipt and the displayed system alert.
| Observation | Check first | Expected result |
|---|---|---|
| Send errored or its result is unknown | Original error, connectivity and quota; preserve operation ID | A known rejection or safe recovery of the original send |
| Accepted, absent from phone Inbox | Correct Topic, confirmed follow and foreground refresh | The test appears in the matching phone Topic |
| Present in Inbox, absent from lock screen/banner | System permission, Topic mute, Focus and background push | A new test alerts, or an intentional mute explains it |
The phone sees a message, but no push
#When the message is in the Inbox, check alert settings first and keep the current Topic and identity. After changing a setting, send one new test and note its time and whether the app was backgrounded. Foreground synchronization does not prove that APNs/FCM push succeeded.
- Check Ntfyx system notification permission and the banner, sound and lock-screen options you want.
- Check mute and daily quiet hours inside this Topic, then system Focus/Do Not Disturb. Quiet hours pause alerts while messages and replies continue.
- Open Ntfyx online to synchronize, then background it for a new test. Unlock after restarting. An iPhone before first unlock or a timed-out notification extension may show only a generic encrypted-message alert.
- On Android, check Google Play services, connectivity to Google and the Ntfyx notification channel. Reopen after force-stop. Notification listeners/forwarders can remove alerts; blanket disabling of battery protections is not required.
- If it still fails, report the time and the specific observation “received in phone, no system alert.” Do not include push tokens, message bodies or sending URLs.
Accepted, but missing from the phone
#Open and refresh the matching Topic. Public Topic owners receive directly; other readers must confirm the follow after preview. Reading the webpage does not subscribe the phone. Check whether the follow is paused/unsubscribed or a local block hides the source. For protected messages, match the sender’s local alias with the Topic authorized on the phone.
A newly authorized browser lacking old history is expected.
- For a public send, use public read to match the accepted message id; this establishes cloud readability only. Public content lasts 24 hours, so an empty feed after expiry does not prove earlier rejection.
- For protected CLI messages, run ntfyx topics and ntfyx doctor as the original paired user. Do not copy another user’s credentials to repair a connection.
- Check connectivity and the original service environment. If one foreground refresh still leaves it missing, retain acceptance time and redacted errors for support; renaming, guessing IDs or repeated creation cannot recover it.
ntfyx public read --topic TOPIC_ID --limit 20 --jsonQuota changes, daily limits and pauses
#Use the actual error and phone plan usage; do not treat every failure as “no free Topics left.” Topic count is not a paid tier. Free/Plus/Pro include 100/1,000/20,000 messages per UTC day, with separate Call and question sublimits. Already accepted answers can still finish. A paired CLI can inspect usage; anonymous public senders need the owner to check.
| State / error | Next step |
|---|---|
| quota_switch_in_progress | A free-allowance recovery fix was deployed on 28 October. After network connectivity returns, retry the original operation with its original URL and operation ID. If persistent, report time/version and preserve the Inbox; do not buy again or create a new identity. |
| daily_message_limit | Check the owner’s allowance. Wait for the next UTC day or let the owner decide whether to change plans; avoid retry loops. |
| daily_call_limit / daily_request_limit | That sublimit is exhausted; wait for reset. Do not silently downgrade a question into a notification or treat timeout as Allow. |
| rate_limit / storage_limit | Honor Retry-After when present and reduce frequency. Storage is separate from daily allowance; retain evidence if it persists. |
| Paused Topic or follow | Check whether the user paused it deliberately. Restore that item only when intended; do not create another to bypass the pause. |
ntfyx usage --jsonAnswered, but the Agent did not continue
#A saved phone reply is not an execution receipt. Check whether the original terminal/Agent is still running, then inspect the original request ID. The Source may be offline or revoked, its wait may have ended, or an external operation may have an unknown outcome.
- Use result from the original paired user and CLI environment to inspect the original request. This is a read-only observation; do not add --claim just to test.
- pending means unfinished; answered requires reading the verified decision. Preserve Deny instead of silently replacing the question to seek Allow.
- expired/cancelled/replaced means the original request ended. A phone draft or late answer cannot revive it.
- For a claimed answer or unknown execution outcome, inspect the original task log and target system. One-time claim cannot guarantee exactly-once external effects; do not automatically rerun them.
ntfyx result REQUEST_ID --jsonExpired pairing, offline drafts and browser history
#Pairing codes expire after five minutes. Generate a fresh code on the trusted Source only after the original pairing is known expired or cancelled, and check that phone and Source use the same environment. Offline drafts require connectivity and a fresh state/deadline check before submission. A new browser has independent keys and cannot read earlier messages; “Earlier request updated” does not give it authority to answer an old question.
Do not edit a pairing URL or share its fragment.
When to contact support and what to include
#If the ordered checks still fail, provide App/CLI version, OS, time and timezone, redacted error code and the last confirmed step: accepted, received in phone, no system alert or answer submitted. For a missing creation entry, give the installed version; do not report a pending build’s test result as your own phone result.
Preview any diagnostic report before sending it yourself. Exclude message bodies, answers, Topic links, full sending URLs, tokens, pairing codes, recovery packages and private keys.