Push credentials
Upload your APNs .p8 key and FCM service-account JSON so userGist can deliver pushes on your behalf.
Credentials belong to each customer app. Upload the Apple/Firebase credentials for your app and register a phone with notification permission and push consent. Confirm delivery by receiving a test notification on that phone.
Apple (APNs .p8)
userGist uses Auth Keys (.p8), not certificates. They're rotatable, don't expire, and a single key can power multiple bundle IDs in the same team.
Generate the key
- 1
Apple Developer → Keys
- 2
Enable APNs
Check Apple Push Notifications service (APNs). Optionally restrict it to your apps' Team.
- 3
Download the .p8
You only get one chance to download. Save it to your secrets manager too.
Upload to userGist
App settings → Push → Apple → Upload key.
| Field | Where to find it |
|---|---|
Key (paste .p8 contents) | The file you just downloaded. |
| Key ID | Apple Developer Keys list. |
| Team ID | Top-right corner of Apple Developer. |
| Bundle ID | Your iOS app's bundle identifier. |
| Environment | sandbox for development builds; production for TestFlight and App Store builds. |
Saving checks the credential format and stores it; it does not contact APNs to validate delivery. Use Send test in onboarding push setup or a user's profile to test with a registered phone. The device token's environment must match the signed build's APNs environment.
Rotate
Generate a new .p8, upload it as a new credential, delete the old one. There's no service interruption — credentials are picked per-delivery.
Android (FCM service account)
Generate the JSON
- 1
Open Firebase project settings
console.firebase.google.com → your project → ⚙ → Project settings.
- 2
Service accounts → Generate new private key
A JSON downloads. Treat it like a password.
Upload to userGist
App settings → Push → Android → Upload JSON.
userGist parses the file and shows:
- The resolved project ID — must match your Android app's
google-services.json. - The service account email.
Rotate
Generate a fresh JSON in Firebase, upload it, delete the old one in userGist (and in Firebase).
Storage
We store the .p8 and the JSON encrypted at rest. The dashboard returns credential metadata, not the saved secrets.