> For the complete documentation index, see [llms.txt](https://help.twinr.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.twinr.dev/push/firebase-push-notification/enable-push-notification.md).

# Enable Push Notification

Connect your Firebase project and turn push notifications on.

Push notifications are delivered through Firebase, Google's messaging service. You create a Firebase project, download two config files, and upload them to Twinr. After that your app can receive notifications and every campaign type becomes available.

## 1. Get your Firebase files

You need two config files from a Firebase project — `google-services.json` for Android and `GoogleService-Info.plist` for iOS — plus a service account key if you plan to send campaigns from Engage.

{% content-ref url="/pages/eR5rJ6bhgjaMaS03dlEN" %}
[Firebase Setup](/push/firebase-push-notification/firebase-setup.md)
{% endcontent-ref %}

{% hint style="success" %}
Already set up [Firebase Analytics](/native-integrations/firebase-analytics.md)? Both files are shared — they will show as uploaded here already, and you can skip to step 2.
{% endhint %}

## 2. Turn it on in Twinr

Open **Push → Firebase Notifications** and switch on **Enable push notifications**.

<figure><img src="https://3731994945-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MlBy5z08zL1UoCwNqmg%2Fuploads%2Fgit-blob-61ce8be23fb69423cf2b935b9057d784537c28f8%2Fpush-firebase-setup.png?alt=media" alt="The Firebase Notifications screen showing the enable toggle, the three config file fields, and the Android notification icon settings"><figcaption></figcaption></figure>

Upload your files:

| Field                        | Required | What it is                                                                                       |
| ---------------------------- | -------- | ------------------------------------------------------------------------------------------------ |
| **GoogleService-Info.plist** | Yes      | The iOS config file from your Firebase project.                                                  |
| **google-services.json**     | Yes      | The Android config file.                                                                         |
| **Firebase secret key**      | Optional | Needed only if you subscribe to App Sessions and run campaigns from [Engage](/push/overview.md). |

{% hint style="info" %}
The **Firebase secret key** is what lets Twinr send on your behalf. Without it your app can still receive notifications you send from the Firebase console, but Engage campaigns have no way to deliver. If you plan to use Engage at all, add it now — see [Firebase Setup](/push/firebase-push-notification/firebase-setup.md) for how to generate it.
{% endhint %}

## 3. Set the Android notification icon

Optional, and worth the two minutes.

Some Android devices do not show your app icon properly in the status bar — you get a grey square or a blank. Uploading a dedicated notification icon avoids it.

| Setting               | What to supply                                               |
| --------------------- | ------------------------------------------------------------ |
| **Icon**              | A **white logo on a transparent PNG**, up to **96 × 96 px**. |
| **Background colour** | The colour shown behind the white logo.                      |

{% hint style="warning" %}
It must be white on transparent. Android discards all other colour in this icon and keeps only the shape, so a full-colour logo arrives as a solid blob.
{% endhint %}

iOS uses your app icon and needs nothing here.

Click **Save as draft** when you are done.

## 4. Check it works

Install a build on a real device and accept the notification prompt when it appears.

{% hint style="info" %}
**Twinr Preview cannot receive your push notifications.** They are addressed to your app, so testing needs a real build — an APK on Android, or TestFlight on iOS.
{% endhint %}

The quickest test is a [One Time Campaign](/push/one-time-campaigns.md) sent to yourself.

## What next

* **Customers who said no** — see [Push Permission Reminder](/push/push-permission-reminder.md).
* **Notifications missed and lost** — give them an inbox with [Native Notification Screen](/push/native-notification-screen.md).
* **Something to send** — see [Overview](/push/overview.md).

## Troubleshooting

| Problem                                | Where to look                                                                                                                        |
| -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| No notifications arrive at all         | Check the bundle ID and package name in Firebase match your Twinr app, and that you are testing a build made after push was enabled. |
| Engage campaigns never deliver         | The **Firebase secret key** is missing.                                                                                              |
| A grey or blank icon in the status bar | Upload a white-on-transparent notification icon.                                                                                     |
| Nothing arrives in Preview             | Expected — Preview cannot receive them. Use a real build.                                                                            |
