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.