Azure Notification Hubs FCM v1: Portal Test Send shows "0 passed, 0 failed" and metric "FCMv1 Invalid Notification Format" — Firebase Console works with same token

Zuozhen 20 Reputation points
2026-07-07T12:22:04.8433333+00:00

Summary

We are integrating Azure Notification Hubs (FCM v1) for Android push in a React Native (Expo) app. Firebase Console test campaigns deliver notifications successfully to the same device using the same FCM registration token. Azure Notification Hubs does not — Portal Test Send reports success but 0 passed / 0 failed with an empty results table, and our hub metrics show FCMv1 Invalid Notification Format (Sum) spikes.

We need guidance on: (1) correct Portal Test Send usage for FCM v1 with a raw device token vs tag-based registrations, (2) the exact JSON body Azure expects for FCM v1 (Portal vs Direct Send vs SDK), and (3) whether our observed metrics indicate payload format issues vs credential/registration issues.


Environment

| Item | Value |

|------|--------|

| Notification Hub namespace | <our-namespace> (test/staging ring) |

| Notification Hub name | <our-hub-name> |

| Resource group | <our-resource-group> |

| Subscription | <redacted — standard Azure subscription> |

| Firebase / GCP project | <our-firebase-project-id> |

| Android package | <our.android.package.name> |

| Client SDK | expo-notifications → raw FCM registration token (not Expo Push Token) |

| Backend (planned) | @azure/notification-hubs SDK — direct send via { deviceHandle: fcmToken }, no NH registrations/installations |

| PNS config | Azure Portal → Notification Hub → Google (FCMv1) (not legacy GCM/FCM) |


Problem

  1. Firebase Console (same Firebase project, Cloud Messaging compose / test campaign) → notification arrives on device
  2. Azure Portal → Test Send (platform Android (FCM v1)) → toast says test message sent successfully, but result is {0 passed, 0 failed} and the Results table is empty
  3. Metrics on our hub → FCMv1 Invalid Notification Format (Sum) shows non-zero counts over 24h ❌
  4. We do not consistently see FCMv1 Authorization Errors in the same period (credentials may be partially OK; format/targeting may be wrong).

What we have already verified

A. Google Cloud / Firebase side

  • Firebase Cloud Messaging API (fcm.googleapis.com) is enabled for our GCP project.
  • FCM registration token is valid — proven by successful delivery from Firebase Console using the same token.
  • Service account configured in Azure NH FCMv1 settings: <firebase-adminsdk-xxxxx>@<project-id>.iam.gserviceaccount.com
    • Role: Firebase Admin SDK Administrator Service Agent (default Firebase Admin SDK SA).
    • We have not added extra roles (e.g. Firebase Cloud Messaging Admin) yet.

B. Azure Notification Hub side

  • Configured under Google (FCMv1) with Project ID, Client Email, and Private Key from the Firebase service account JSON (not legacy Server Key / GCM/FCM API key page).
  • Legacy Google (GCM/FCM) page is not used.

Azure Notification Hubs
Azure Notification Hubs

An Azure service that is used to send push notifications to all major platforms from the cloud or on-premises environments.


Answer accepted by question author
Venkatesan S 10,750 Reputation points Microsoft External Staff Moderator
2026-07-07T15:04:40.4633333+00:00

Hi @Zuozhen ,

Thanks for reaching out in Microsoft Q&A forum,

Based on the information provided, the issue appears to be related to a targeting issue in the Portal Test Send and a separate FCM v1 payload format issue, rather than a credential issue.

In Azure Notification Hubs, Send to Tag Expression is meant for Notification Hubs tags, not for a raw FCM registration token. So if you paste the FCM token there and the hub has no registration or installation that matches that token as a tag, the send can complete with 0 passed / 0 failed and an empty results table. That behavior is expected and does not mean the FCM token itself is invalid.

The other signal, FCMv1 Invalid Notification Format, strongly suggests that at least some of the payloads sent to the hub were not in the correct FCM v1 shape. For FCM v1, the payload needs to use the top-level message wrapper. Legacy payloads such as a top-level notification object without message can trigger this metric. Your newer examples that use message.notification are the right direction.

  • Portal Test Send is not the right way to test a raw FCM token unless that token exists as a tag or registration in Notification Hubs.
  • Direct Send through your backend is the correct model for your architecture, where the raw FCM token is used as the device handle.
  • The Invalid Notification Format metric points more to payload structure issues than to authentication, especially since Firebase Console can already deliver to the same device token successfully.

Because Firebase Console delivery works with the same token, and you are not seeing strong authorization failures in Notification Hubs, credentials are less likely to be the primary problem. The more likely causes are using the token in the wrong portal field and earlier sends using legacy or malformed FCM payloads.

Recommended next step: validate the backend direct-send flow with a minimal FCM v1 payload like this:

{
  "message": {
    "notification": {
      "title": "Azure NH test",
      "body": "Hello"
    }
  }
}

If that succeeds, you can then add android.data fields as needed.

Reference:

Kindly let us know if the above helps or you need further assistance on this issue.

Please do not forget to 210246-screenshot-2021-12-10-121802.pngand “up-vote” wherever the information provided helps you, this can be beneficial to other community members.

Was this answer helpful?

3 people found this answer helpful.

0 additional answers

Sort by: Most helpful

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.