> For the complete documentation index, see [llms.txt](https://docs.codemash.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.codemash.io/cloud/push/integrations.md).

# Integrations

Push delivery providers — APNs, FCM, Safari, VAPID web push, and the Fake sandbox.

> The delivery providers that actually send your push notifications.

*Last updated 2026-09-11 · Applies to any project with the Push module enabled*

## Why it exists

Norbix does not talk to phones directly — nobody does. Apple delivers to iPhones, Google to Android, and each browser has its own web-push service. An integration is the set of credentials that lets Norbix hand your message to one of those services on your behalf. Until one exists and is marked as the default, a template has nowhere to send and a campaign cannot start.

## When you'd use it

* Connecting Apple Push Notification service so your iOS app can be notified.
* Adding Firebase Cloud Messaging for the Android build of the same app.
* Adding the Fake provider on a test project so campaigns can be rehearsed without reaching real devices.

## Where to find it

Push → **Integrations** · `/projects/<project>/push/integrations`

<figure><img src="https://760328771-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LwSkuCpTNI_AerL8J2a%2Fuploads%2Fgit-blob-792c3e4860914d6be799c338792960a40571b957%2Fpush-integrations.jpg?alt=media" alt=""><figcaption><p>Push → Integrations.</p></figcaption></figure>

The list shows each integration's **Integration Name**, **Provider**, **Enabled** state and a **Default** badge ("Default for LIVE"). If several integrations are active but none is the default, a warning asks you to pick one.

## The eight providers

| Provider                                                                       | Reaches                             |
| ------------------------------------------------------------------------------ | ----------------------------------- |
| [Apple Push Notification service](/cloud/push/integrations/providers/apns.md)  | iOS, watchOS, tvOS, macOS apps      |
| [Firebase Cloud Messaging](/cloud/push/integrations/providers/fcm.md)          | Android (and cross-platform) apps   |
| [Safari Push Notifications](/cloud/push/integrations/providers/safari-push.md) | macOS Safari                        |
| [Chrome Plugin Push](/cloud/push/integrations/providers/chrome-plugin.md)      | A Chrome extension you publish      |
| [Chrome Web Push](/cloud/push/integrations/providers/chrome-web.md)            | Chrome browsers                     |
| [Firefox Web Push](/cloud/push/integrations/providers/firefox-web.md)          | Firefox browsers                    |
| [Edge Web Push](/cloud/push/integrations/providers/edge-web.md)                | Microsoft Edge browsers             |
| [Fake Push (Test Me)](/cloud/push/integrations/providers/fake.md)              | Nothing — the built-in test sandbox |

## How to add a provider

Requires a role that carries `…:notifications:push:settings:manage` — normally **Owner** or **Admin**.

1. Open **Push → Integrations** and click **Add New Integration**. The provider gallery opens; providers you already connected are marked.
2. Pick a provider. Each has its own credentials form — the [provider pages](/cloud/push/integrations/providers.md) list every field with an example value.
3. Give the integration a **name** you will recognise in the list, e.g. `iOS production`, and fill the credentials.
4. Click **Create**. The integration is saved, disabled sends are still not possible yet — it has to be the default, or named on a template.
5. Open the saved integration and choose **Set as default**. Defaults are **per environment**, so do it again in LIVE if you set it up in a test environment.
6. Choose **Test**. Norbix sends one real notification through the provider, then asks you to confirm you received it — push is the one channel where the platform cannot tell us whether the message arrived, so a human has to say so. Click **I received the push** to record the test as passed.

**What "working" looks like:** the row shows **Enabled**, carries the **Default for \<environment>** badge, and the last test is recorded as successful.

## Good to know

* Creating an integration sends nothing by itself. It makes the provider available to templates, campaigns and triggers.
* **Default is per environment.** An integration set as default for LIVE is not the default in your test environment, and the other way round.
* Push test results are **human-confirmed**. An untested integration is not broken, it is just unproven — and a test you never confirm stays unproven too.
* One project can hold several integrations at once — a common setup is APNs for iOS and FCM for Android, with the template choosing between them.
* The **Fake** provider is limited to one per project. It has no credentials, no Save button on edit, and no test panel, because there is nothing to test.
* Deleting an integration is refused while a template, campaign or trigger still points at it. Disable it instead — disabling keeps it in the list but takes it out of use.

## Do it in code

{% tabs %}
{% tab title="JavaScript / TypeScript" %}

```ts
const saved = await norbix.hub.notifications.savePushIntegration({
  projectId: '<your-project-id>',
  integration: { provider: 'Fake' },
});

await norbix.hub.notifications.setPushIntegrationAsDefault({
  projectId: '<your-project-id>',
  id: saved.id,
});
```

{% endtab %}

{% tab title="Python" %}

```python
saved = norbix.notifications.save_push_integration(
    projectId="<your-project-id>",
    integration={"provider": "Fake"},
)

norbix.notifications.set_push_integration_as_default(
    saved["id"], projectId="<your-project-id>"
)
```

{% endtab %}

{% tab title="Go" %}

```go
var saved map[string]any
err := c.Hub.Notifications.SavePushIntegration(ctx, map[string]any{
	"projectId":   "<your-project-id>",
	"integration": map[string]any{"provider": "Fake"},
}, &saved)
```

{% endtab %}

{% tab title=".NET" %}
Not available yet — the .NET SDK has no push client methods. Call the REST endpoints below.
{% endtab %}
{% endtabs %}

Reference: [Save Push Integration](/sdks-and-cli/notifications/push/save-push-integration.md) · [Set as default](/sdks-and-cli/notifications/push/set-push-integration-as-default.md) · [Test](/sdks-and-cli/notifications/push/test-push-integration.md) · [Confirm delivery](/sdks-and-cli/notifications/push/confirm-push-integration-human-delivery.md) CLI: no integration commands today.

## API reference

Endpoints: [Get Push Integrations](/api-reference/notifications/push/get-push-integrations.md), [Save Push Integration](/api-reference/notifications/push/save-push-integration.md), [Enable](/api-reference/notifications/push/enable-push-integration.md), [Disable](/api-reference/notifications/push/disable-push-integration.md), [Set as default](/api-reference/notifications/push/set-push-integration-as-default.md), [Test](/api-reference/notifications/push/test-push-integration.md), [Confirm delivery](/api-reference/notifications/push/confirm-push-integration-human-delivery.md), [Delete](/api-reference/notifications/push/delete-push-integration.md).

## Related

[Providers](/cloud/push/integrations/providers.md) · [Templates](/cloud/push/templates.md) · [Campaigns](/cloud/push/campaigns.md) · [Settings](/cloud/push/settings.md)
