SharePointVault ~/gotchas/graph ⌕ Search 404 pages, error messages, scripts…Ctrl K ★ Star
M↓ README.mdM↓ teams-message-sent-as-user-does-not-notify-sender.md
sharepoint-vault›gotchas›graph›teams-message-sent-as-user-does-not-notify-sender.mdhistoryedit on GitHub
● GOTCHAgraph· 2 min read

A Teams message posted in the user's name doesn't notify that user

applies to: Microsoft Graph v1.0 (delegated ChatMessage.Send / ChannelMessage.Send), Microsoft Teams, SPFxreviewed: 2026-11-10#graph#teams#chatmessage#adaptive-cards#notifications#spfx

When your app posts to Teams with a delegated token (POST /chats/{id}/messages, ChatMessage.Send), the message is authored by the signed-in user. Teams treats it as their own message: it lands in the chat but doesn't ring, badge or toast for them (measured in the self chat; it's the same rule as for any message you type yourself). The user's chat with themselves (48:notes) accepts the POST and shows the card, even though we found no Microsoft Learn page documenting that id. If a user says "the card didn't arrive", read the message back and hand them its webUrl before you debug delivery; if they need an alert, raise it from your app.

Zpráva, kterou appka pošle do Teams s delegovaným tokenem (ChatMessage.Send), je zprávou přihlášeného uživatele – Teams ji doručí, ale jemu samotnému nezazvoní ani neblikne (změřeno v chatu se sebou; stejně jako u zprávy, kterou napíše sám). Chat se sebou 48:notes POST přijme a kartu zobrazí, přestože jsme to id v dokumentaci Microsoft Learn nenašli. Když uživatel hlásí „karta nepřišla“, zprávu nejdřív zpětně přečtěte a dejte mu její webUrl; upozornění pak musí dát appka sama.

Symptom

An SPFx web part sends an Adaptive Card to the user's self chat:

POST https://graph.microsoft.com/v1.0/chats/48:notes/messages
{ "body": { "contentType": "html", "content": "<attachment id=\"x\"></attachment>" },
  "attachments": [{ "id": "x", "contentType": "application/vnd.microsoft.card.adaptive", "content": "{...}" }] }

Graph answers 201 Created, the app says "sent" — and the user reports they don't see anything in Teams. Nothing blinks in the chat list, no toast, no activity.

What is actually going on

  1. Delivery works. GET /chats/48:notes/messages/{id} returns the message right after the POST, and the POST response carries a webUrl (https://teams.microsoft.com/l/message/48:notes/<id>). Opening it shows the rendered card.
  2. No alert for the author. The message's from is the signed-in user. Teams doesn't alert you about messages you authored — measured in the self chat. In a group chat or channel expect the same for the sender (not measured here).
  3. So "I can't see it" usually means "I didn't get an alert, so I looked in the wrong place".

Fix

  • Verify instead of guessing. For a test send, read the message back (GET .../messages/{id}) and show the user the webUrl as an "Open in Teams" link. 201 alone only tells you Graph accepted the request.
  • Notify from your app, not from Teams. If the app is open while it sends (SPFx usually is), use the browser's Notification API: ask for permission only from a click, skip it inside the Teams host, skip it when the page is visible and focused, and open the webUrl on click.
  • Teams activity-feed notifications (sendActivityNotification) need a Teams app whose manifest webApplicationInfo points at your own Entra app, installed for the user. SPFx Graph calls go through a shared SharePoint principal, so this is not verified to work from SPFx — prototype before you promise it.

See also

Was this helpful?ask or add your experience on GitHub →
Saved you an hour? A star on GitHub helps other SharePoint people find the vault.★ Star on GitHub
last reviewed: 2026-11-10last updated: 2026-11-10historyedit on GitHubview source