What rich push adds
A standard push is a title and a line of text. Rich push adds a media layer: a product image, a GIF,
action buttons (buy, save, learn more), and on modern devices a carousel or a short video.
In e-commerce the difference is decisive: a price dropped notification and the same notification
carrying a photograph of the specific product the person looked at yesterday are two different
experiences.
Implementation
iOS, through a notification service extension
On iOS, rich push requires a notification service extension — a separate module in the app. When the
device receives a push flagged mutable-content: 1, iOS runs the extension, which downloads the
media from the URL in the payload and attaches it before display.
{
"aps": {
"alert": { "title": "Price drop", "body": "Nike Air Max sneakers" },
"mutable-content": 1
},
"image_url": "https://cdn.example.com/products/nike-air-max.jpg"
}
Without the extension, mutable-content is ignored and the notification appears without the image.
Android, natively through FCM
Android supports rich push natively: the image is passed in the image field of the notification
payload. No extension is needed.
The components
| Element | iOS | Android | Use in e-commerce |
|---|---|---|---|
| Product image | Yes (via extension) | Yes | A viewed or recommended product |
| Action buttons | Yes (up to 4) | Yes (up to 3) | Buy, save, dismiss |
| GIF animation | No | Yes | Dynamic banners, announcements |
| Video | Yes (via extension) | Yes | Product demonstration |
| Carousel | Not natively | Custom | A set of similar products |
Personalization is the point
The scenarios where rich push earns its cost:
- A price drop on a viewed product — the image of that specific item from the person’s history
- Cart recovery — a photo of the item in the cart plus a complete the order button
- A recommendation after the last purchase — complete the look with an accessory image
- A personal promotion — a banner with the person’s name and an individual offer
For those, the payload is generated dynamically on the server per user rather than taken from one
template.
Common mistakes
- Ignoring the notification service extension. Sending an image URL with no extension on iOS
delivers a notification with no picture, and the error only surfaces in testing. - Heavy images. iOS gives the extension a limited window to fetch media. If the file is large or
the network is slow, it times out and no image appears. Keep JPEGs under about 500 KB. - One image for everyone. Without personalization, rich push loses its main advantage and becomes
an expensive banner.