1 Which app?
2 Which phone should it go to?
Look at the phone — code
Only that one device was pinged. If it buzzed with this code, it is the phone in your hand.
This app can only send its own notifications, so the phone shows its usual text rather than the code. If something arrived just now, that is the device.
Reading the registered devices from the hub…
The hub answered, and has no devices registered at all. Nothing is wrong with the credential — there is simply nobody to send to yet.
Start typing to pick a colleague, or write anything — the name is shared with everyone using this tool. Saving an empty box clears it.
No device matches that filter.
The hub knows a device's id, not whose it is — so the ids stay ids until someone names one. A name is shared: everyone sees it afterwards.
Reading the registered devices… No devices to ping.
Reading the registered devices…
Which phone are you holding?
Each phone gets its own code, so the one that buzzes tells you which it is.
{{code}} is replaced by each phone's own code. The title is always Notification test — CODE.
This app can only send its own notifications, so every phone would show the same text. Use ping on a row in the list instead.
That is more than 50 phones. It would buzz every one of them.
Sent. Type the code showing on your phone:
For an id somebody handed you. Nothing is checked until you send — if the account has no device on this hub, the send is accepted and arrives nowhere.
Sending to
3 What do you want to test?
.
Open the repository.
Regenerate with python3 scripts/build-catalogue.py after a backend adds one.
Loading this app's notifications…
No match.
Values this notification carries
4 Send it, and watch the phone
✓ Accepted by the hub — look at the phone
Accepted is not delivered: the hub took it for delivery. If nothing arrives, the phone is the place to look.
The hub accepted it, but nothing reached a phone
- • The account has no device registered on this hub — check the badge on the row.
- • The app is not installed, or the person is signed out.
- • Signed in to a different environment. A phone on production registers against a production hub and will never see anything sent from here.
- • Notifications are turned off for the app, or the phone is on silent.
Accepted, device looks fine, still nothing on screen
- • Android ignores a repeated id. This tool generates a fresh one on every send, so you never hit that — unless you unticked replace id with a fresh one in the raw payload editor.
- • On an iPhone, only the TestFlight build receives these.
- • Accepted is not delivered. The hub reports that it took the message, nothing more. A rejected device token still reads as accepted here.
These are the two cases from the original QA document, which is kept in the repository as docs/push-payloads-notification-hub-test.md.
On the phone
Tapping it opens .
The wording lives in the app, in the patient's language. What travels is .
Last test
·
Exactly what gets sent
Select a destination in step 2 and this shows exactly what would go to that phone.
Building the payload…
Updates as you choose a notification or fill in a value. The id changes on every send, and payload is a JSON string nested inside the message — deliberate, and what the app parses. Expanding it unpacks those strings so they can be read; The expanded form is for reading only — only the wire form is valid to send, which is what edit and send this instead copies.
Target
· ·
Send a payload by hand
Start from one of the payloads above with edit and send this instead, or paste what a developer gave you. It goes to whoever is selected in step 2, exactly as written — nothing is filled in or corrected for you.
Testing against an emulator instead?
The Android guild keep a harness at scripts/engagement-push.sh that pushes the same notifications straight at a connected device over adb — no hub, no network — and then reads logcat back to tell you what the app did with each one. It also covers deep links, notification buttons and the edge cases a hub cannot produce. This page is the version for everyone else, and the notification list below comes from that same script.
Recent sends (this instance)
·
Nothing sent yet.