[COMMUNITY PROJECT] Desktop Push Notifications for AppSheet (Multi-App Support & Background Webhooks)

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! :wink:

1 Like

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”: “:red_exclamation_mark:”,

“url_clic”: " "

}

Try :

{
“title”: “:red_exclamation_mark: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

Capture d'écran 2025-12-05 195423

In addition to not receiving the notification, it also doesn’t register in the history.

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 :

:one: Go to your Bot

Url

https://sendnotificationtotopic-(PII Removed by Staff).europe-west9.run.app

Http Verb

Post

:two: copy and paste THIS json :down_arrow:

{
"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"
}

:three: 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.

2 Likes

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.

1 Like

[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” :ghost:

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.local was actually dead. Notifications were being sent by AppSheet but rejected by the browser.

The Fix: “Zero Trust” Architecture :shield:

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:

  1. Query the live FCM SDK to get the current valid token.
  2. Compare it with our stored token.
  3. Auto-update if they mismatch.

This ensures the connection remains robust without user intervention.

New Feature: Controlling Persistence via Webhook :pushpin:

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): Forces requireInteraction: true in 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 :wrench:

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!

2 Likes