> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Notification click-through rate (CTR)

> Troubleshoot and improve push notification click-through rate (CTR) in OneSignal. Covers how CTR is calculated, common causes of drops, reporting methodology, and tactics to improve engagement.

Click-through rate (CTR) measures how many push notifications users clicked, divided by how many were successfully delivered to the push provider (APNs, FCM). OneSignal calculates CTR as:

```
CTR = (Clicks / Delivered) × 100
```

For canonical metric definitions, see the [Metrics glossary](./analytics-metrics-glossary). To view CTR across channels over time, see [Engagement Trends](./engagement-analytics).

A click is the user tapping the notification to open your app or a landing page. CTR does **not** count:

* Swiping the notification away
* Tapping **Dismiss**
* Clearing the notification tray or Notification Center

## Troubleshoot low CTR

Work through these causes in order. Each one can change either the numerator (clicks) or the denominator (delivered) and produce what looks like a CTR drop.

<AccordionGroup>
  <Accordion title="When did the drop start?">
    Identify the exact date the drop began and the window you're comparing against. CTR is not comparable when you send at a different volume, to different segments, or to a different subscriber count. Pick two windows with similar send volume and targeting before drawing conclusions.
  </Accordion>

  <Accordion title="What are you measuring?">
    Marketing, transactional, and API-triggered messages typically have very different CTR baselines. Compare like with like:

    * Segment your reports by message type or label before comparing.
    * Confirm you are comparing CTR across the same channels (Push only, vs Push + Email blended).
    * Confirm you are using the same denominator across reports — [Delivered](./analytics-metrics-glossary), not Sent.
  </Accordion>

  <Accordion title="Who are you targeting?">
    Over time, users acquire new devices and your Subscription list grows. Old, unreachable Subscriptions continue to count in Sent and Delivered but never click.

    * Clean up stale records using [Delete users](./delete-users).
    * Review the segments used around the date of the drop. A broader segment usually lowers CTR; a narrower one usually raises it.

    <Note>
      Free plans can target up to 10,000 Web Push subscribers. No limit on mobile app Subscriptions. If you have more than 10,000 web push subscribers on a Free plan, you may be sending to older devices. [See pricing](https://onesignal.com/pricing).
    </Note>
  </Accordion>

  <Accordion title="Did your sending patterns change?">
    Changes in send volume, cadence, or audience affect CTR:

    * Sending more API-triggered messages and fewer campaign messages typically lowers CTR because transactional content has different click behavior.
    * Expanding the target segment lowers CTR; tightening it usually raises CTR.
    * Increasing frequency without a content reason often lowers CTR. Users may perceive frequent, unrelated content as spam.

    A common remedy is to target users by topic. On Web, use the [Category Slidedown prompt](./permission-requests) and group users into [Segments](./segmentation) by interest.
  </Accordion>

  <Accordion title="What are you sending?">
    Content quality drives clicks more than any other lever. Review:

    * [Notification appearance](./push) — icons, images, and large media.
    * [Message personalization](./message-personalization) — per-user content with Liquid and Data Tags.
    * [Multi-language messaging](./multi-language-messaging) — localize for every language your audience speaks.
    * [Using emojis in push notifications](https://onesignal.com/blog/how-to-use-emojis-push-notifications/).
  </Accordion>

  <Accordion title="How many notifications are you sending?">
    Excessive sends drive opt-outs and lower CTR. There is no universal limit — frequency tolerance varies by platform, vertical, and content type. If you send multiple notifications per day with content unrelated to the user's interests, expect CTR to decline. Use segmentation and frequency capping to keep the cadence aligned with user expectations.
  </Accordion>

  <Accordion title="How are you gathering the data?">
    Confirm the reporting source. OneSignal reports CTR in the [Dashboard](./analytics-overview), on individual [Push message reports](./push-notification-message-reports), and aggregated in [Engagement Trends](./engagement-analytics). You can also export [Audience Activity](./push-notification-message-reports#audience-activity) to see which Subscriptions registered a click. If you compare OneSignal CTR to a third-party analytics tool, the numbers will differ because click attribution models differ.
  </Accordion>

  <Accordion title="Did anything change in your app or site?">
    Code-level changes can silently suppress click tracking.

    * **OneSignal is not active on every page (Web).** Include OneSignal on all or most pages of the site so the SDK can register clicks after a redirect or navigation.
    * **Multiple service workers (Web).** Additional service workers (for example, a PWA service worker) can interfere with push delivery and click tracking. See [OneSignal service worker](./onesignal-service-worker). After consolidating, users must return to the site for the OneSignal service worker to register.
    * **Android Notification Service Extension calling `complete(null)`.** This suppresses the OneSignal-managed notification. If you display your own notification with the Android API, OneSignal cannot record the click. See [Mobile service extensions](./service-extensions). iOS does not allow apps to suppress remote notifications this way, so this cause is Android-only.
    * **Mobile SDK initialization.** Confirm OneSignal initializes per the [Mobile SDK setup](./mobile-sdk-setup) guide for your platform.
  </Accordion>
</AccordionGroup>

## Improve CTR

Push CTR varies widely by platform (Android, iOS, Web), vertical (news, games, travel, ecommerce), message type, and country. Rather than chasing an industry average, compare your sends to your own historical baseline. Focus on three levers:

* **Relevance.** Send content that matches what the user opted in for. On Web, use the [Category Slidedown prompt](./permission-requests) to capture interest at opt-in. On mobile, use [Data Tags](./add-user-data-tags) and [Segments](./segmentation) to target by behavior.
* **Timing.** Use [Intelligent Delivery](https://onesignal.com/blog/increase-open-rates-by-up-to-23-percent-with-intelligent-delivery) to send at each user's most active hour.
* **Content.** Add visual and contextual flair with images, emojis, and per-user [personalization](./message-personalization).

Additional reading:

* [6 best practices for push notifications](https://onesignal.com/blog/6-best-practices-for-push-notifications)
* [Best practices for news publications: push notification frequency and content](https://onesignal.com/blog/news-publishers-5-best-practices-for-sending-push-notifications)

## FAQ

### Why is my CTR different in OneSignal than in my analytics tool?

OneSignal calculates CTR against **Delivered** (notifications accepted by APNs or FCM). Third-party analytics tools typically attribute based on session starts, deep link clicks, or app opens within a window, which can produce higher or lower numbers. Compare the same event definition across tools before concluding the numbers conflict.

### Does CTR count dismissals or swipes?

No. CTR counts only explicit taps on the notification that launch your app or landing page. Swipes, **Dismiss** taps, and clearing the notification tray are not counted.

### Why did my Delivered count drop without a Sent drop?

Delivered decreases when push providers (APNs, FCM) reject more notifications, when more Subscriptions are frequency capped, or when more Subscriptions became unreachable since the last send. A lower Delivered count increases CTR if clicks stay constant — a "CTR increase" here can actually mean your audience shrank.

### Do iOS Focus modes affect CTR?

Yes, indirectly. Focus modes hide notifications from the user but do not prevent delivery. The notification is counted as Delivered but the user may never see it, which lowers CTR. The same applies when Android users mute a [notification channel](./android-notification-categories).

### How do I see CTR on a specific message?

Open the message in **Sent Messages** and review the [Push message report](./push-notification-message-reports). For trend comparisons across sends, use [Engagement Trends](./engagement-analytics).

### How do I measure CTR for data-only notifications?

Data-only (silent) notifications have no UI, so they do not generate clicks. Exclude them from CTR reporting, or label them distinctly so they don't skew your overall CTR.

## Related

<Columns cols={2}>
  <Card title="Metrics glossary" icon="book" href="./analytics-metrics-glossary">
    Canonical definitions for Sent, Delivered, Clicked, and every other metric.
  </Card>

  <Card title="Engagement Trends" icon="chart-mixed" href="./engagement-analytics">
    Aggregate CTR and delivery trends across channels.
  </Card>

  <Card title="Push message reports" icon="file-chart-column" href="./push-notification-message-reports">
    Per-send delivery, confirmed receipt, and click breakdowns.
  </Card>

  <Card title="Message personalization" icon="wand-magic-sparkles" href="./message-personalization">
    Increase relevance with Liquid, Data Tags, and user properties.
  </Card>

  <Card title="Segmentation" icon="filter" href="./segmentation">
    Target users by behavior and interest to raise CTR.
  </Card>

  <Card title="Mobile service extensions" icon="mobile" href="./service-extensions">
    Avoid common click-tracking pitfalls on iOS and Android.
  </Card>
</Columns>
