FCM
Debugging FCM INVALID_ARGUMENT, in order of likelihood
The FCM HTTP v1 API returns INVALID_ARGUMENT for about a dozen unrelated mistakes and tells you almost nothing about which one you made. Here is the list, ordered by how often it is actually the cause.