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. 1

    Apple Developer → Keys

  2. 2

    Enable APNs

    Check Apple Push Notifications service (APNs). Optionally restrict it to your apps' Team.

  3. 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.

FieldWhere to find it
Key (paste .p8 contents)The file you just downloaded.
Key IDApple Developer Keys list.
Team IDTop-right corner of Apple Developer.
Bundle IDYour iOS app's bundle identifier.
Environmentsandbox 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. 1

    Open Firebase project settings

    console.firebase.google.com → your project → ⚙ → Project settings.

  2. 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.

What's next