---
title: Overview
description: Send push notifications to mobile devices
---

Mobile Push is a channel type for sending native push notifications to iOS and Android devices.

## Supported Providers

<Cards>
  <Card title="Apple APNs" href="/docs/channels-providers/mobile-push/apns">
    Push notifications for iOS, iPadOS, macOS, and watchOS
  </Card>
  <Card title="Firebase FCM" href="/docs/channels-providers/mobile-push/fcm">
    Cross-platform push for Android, iOS, and web
  </Card>
</Cards>

## Templates

Mobile push templates use plaintext with Liquid templating for dynamic content.

### Content fields

| Field | Liquid | Description |
|-------|--------|-------------|
| **Title** | Yes | Notification title (required) |
| **Body** | Yes | Notification body text (required) |
| **Subtitle** | Yes | Secondary text below title (iOS only) |
| **Image URL** | Yes | Rich media image. Requires a Notification Service Extension on iOS |
| **Action URL** | Yes | Deep link or URL opened on tap |

### Behavior fields

| Field | Liquid | Description |
|-------|--------|-------------|
| **Sound** | Yes | `"default"` for system sound, or a custom sound filename |
| **Badge Count** | No | App icon badge number. `0` clears it |
| **Category** | Yes | Action button category (iOS `UNNotificationCategory` / Android `click_action`) |
| **Thread ID** | Yes | Groups related notifications together |
| **Collapse ID** | Yes | Replaces pending undelivered notifications with the same ID |
| **Interruption Level** | No | iOS Focus mode behavior: passive, active, time-sensitive, critical |
| **Priority** | No | Delivery urgency: high (immediate) or normal (battery-conscious) |
| **Relevance Score** | No | 0.0–1.0 ranking in iOS Notification Summary |
| **TTL** | No | Seconds to retry delivery if device is offline. `0` = deliver now or drop |
| **Android Channel ID** | Yes | Android 8+ notification channel (must be pre-created in the app) |

Leave behavior fields empty to use the provider's default. Only set them when you need to override.

### Liquid example

```liquid
Title: New message from {{ actor.first_name }}
Body: {{ data.message_preview }}
Thread ID: {{ data.conversation_id }}
Collapse ID: {{ data.conversation_id }}
```

### Available variables

- `recipient.*` - Recipient user data (first_name, last_name, email, phone, etc.)
- `actor.*` - User who triggered the notification
- `data.*` - Custom payload passed when triggering the notiflow
