Yeah, I don’t know what else to do.
I’m testing it on my home computer, which has no restrictions, and even then the notification isn’t arriving. I don’t know what I’m missing.
Hi @ThiagoNilbox,
Since it works on my end and the bot is triggering properly, let’s troubleshoot the “reception” side step-by-step:
1. Check “Do Not Disturb” Mode
Even with no specific restrictions, Windows “Focus Assist” or macOS “Do Not Disturb” often silently blocks notifications. Please verify that your OS is set to allow notifications from Chrome.
2. Re-Subscribe to Each App (Crucial)
When you uninstalled the extension, all local data was wiped. The extension no longer knows which AppIDs you want to listen to.
You must open EACH AppSheet app in your browser at least once to re-subscribe to them with the extension pop up. If the extension doesn’t have the AppID in its “Subscribed” list, it will ignore the incoming webhook.
3. Verify your JSON Payload
Please double-check that your AppSheet Automation is sending the correct JSON structure. Here is the required format with examples:
targetAppId(Mandatory): Must match the ID of the app you are using exactly.title: The header of the notification.body: The main message.icon: The main image (option).url_clic: Optional redirect link
JSON Example:
{
“targetAppId”: “Your_App_ID_Here-123456”,
“title”: “New Order Received”,
“body”: “Order #1024 has been created by John Doe.”,
“icon”: “https://example.com/icon.png”,
“url_clic”: “Login - AppSheet…”
}
Let me know if step #2 was the missing link! ![]()
Steps 1 and 2 verified. Other notifications are arriving, including the signed application notification. This is my JSON:
{
“title”: “New Order Alert”,
“body”: “Order n° <<[id]>> needs approval.”,
“targetAppId”: “3bf8eba0-a530-4161-8367-dc2d7935ca0c”,
“icon”: “
”,
“url_clic”: " "
}
Try :
{
“title”: “New Order Alert”,
“body”: “Order n° <<[id]>> needs approval.”,
“targetAppId”: “3bf8eba0-a530-4161-8367-dc2d7935ca0c”,
“icon”: “https://static.vecteezy.com/ti/vecteur-libre/p1/5439438-exclamation-marks-icon-design-element-logo-element-illustration-exclamation-points-symbol-icon-gratuit-vectoriel.jpg”
}
“icon” must be an url
Still no success.
The JSON looks like this:
{
“title”: “New Order Alert”,
“body”: “Order n° <<[id]>> needs approval.”,
“targetAppId”: “3bf8eba0-a530-4161-8367-dc2d7935ca0c”,
“icon”: “https://static.vecteezy.com/ti/vecteur-libre/p1/5439438-exclamation-marks-icon-design-element-logo-element-illustration-exclamation-points-symbol-icon-gratuit-vectoriel.jpg””,
“url_clic”: " "
}
Copy and paste this one !
{
“title”: “New Order Alert”,
“body”: “Order n° <<[id]>> needs approval.”,
“targetAppId”: “3bf8eba0-a530-4161-8367-dc2d7935ca0c”,
“icon”: “https://static.vecteezy.com/ti/vecteur-libre/p1/5439438-exclamation-marks-icon-design-element-logo-element-illustration-exclamation-points-symbol-icon-gratuit-vectoriel.jpg”,
}
Explains :
Remove exessive " in your image url

There can be no history if there is nothing.
This is the history of notifications received.
Simplify for you tests:
Please follow all these steps :
Go to your Bot
Url
https://sendnotificationtotopic-(PII Removed by Staff).europe-west9.run.app
Http Verb
Post
copy and paste THIS json ![]()
{
"targetAppId": "Your_App_ID_Here",
"title": "New Test",
"body": "This is working !",
"icon": "https://logo-marque.com/wp-content/uploads/2020/09/Google-Logo.png"
}
Go to Settings/Integrations and COPY your App Id
Paste your App Id in Body of your Bot, in place of “Your_App_ID_Here” in the json
I realized my App ID wasn’t enabled.
I enabled it, uninstalled the extension, and closed the browser.
I reopened it, installed it, and it worked!
Thank you for your patience and help with this process.
You came up with a great solution.
Another question.
Do notifications reach any user who has the extension active in the same app?
I edit a line and the notification arrives in another user’s browser, right?
Yes, that is exactly right.
Any browser with the extension installed that has “subscribed” to that specific AppID (by opening the app at least once) will receive the notification.
So if you edit a row and trigger the bot, ALL other users listening to that AppID will get the alert immediately.
And as you noted, the AppSheet app itself does not need to be open in a tab—as long as Chrome is running, it works.
[UPDATE] Solving the “Silent Disconnect” Issue (v1.23)
Hi everyone,
Following the release of the Matek AppSheet Notification extension, we encountered an interesting challenge regarding connection reliability after Chrome updates. I wanted to share how we solved it in version 1.23.
The Problem: “Silent Disconnects” 
Chrome manages extension service workers and local storage in a way that can sometimes invalidate FCM tokens silently after a browser update or a long period of inactivity.
- Result: The extension thought it was connected (green status), but the token stored in
chrome.storage.localwas actually dead. Notifications were being sent by AppSheet but rejected by the browser.
The Fix: “Zero Trust” Architecture 
Instead of trusting the locally stored token blindly, v1.23 implements a self-healing check. Every time the user interacts with the extension (or periodically), we now:
- Query the live FCM SDK to get the current valid token.
- Compare it with our stored token.
- Auto-update if they mismatch.
This ensures the connection remains robust without user intervention.
New Feature: Controlling Persistence via Webhook 
Another frequent request was the ability to control notification duration dynamically. We didn’t want to hardcode this in the extension settings. Instead, we now parse a custom parameter from the JSON payload sent by the AppSheet automation.
How to implement it in your Bot: Simply add a "persistent" key to your JSON body:
{
"title": "New Order Alert",
"body": "Order n° <<[Order ID]>> needs approval.",
"targetAppId": "YOUR_APP_ID_HERE",
"icon": "https://link-to-your-icon.png",
"persistent": "true",
"url_clic": "https://www.appsheet.com/start/YOUR_APP_ID#view=OrderDetail&row=12345"
}
"true"(default): ForcesrequireInteraction: truein the Service Worker. The notification stays until clicked."false": The notification is transient and disappears automatically.
This gives you granular control over urgency directly from your AppSheet logic!
Troubleshooting Tool 
Finally, for edge cases (network changes, VPNs), we added a Repair button in the UI that performs a full clean-up (unsubscribes from FCM, clears local storage, and re-registers), offering a quick fix for users without needing to reinstall.
The update will be deployed on the store in few days.
Feel free to dig into the behavior and let me know if you have any questions about the implementation!




