Push frequency capping limits how many push notifications a single user can receive in a rolling minute, hour, day, or week window — useful when multiple teams, Journeys, or automated triggers risk over-messaging the same user.
Frequency capping limits how many push notifications a single user can receive in a rolling time window (per minute, hour, day, or week). Use it to prevent over-messaging when multiple teams, Journeys, or automated triggers send to the same user.
Frequency capping is available on select paid plans.
Each delivered push “ages out” of the user’s rolling window when the configured time period has elapsed since that push was sent. Once the user has received the maximum number of notifications inside the window, OneSignal drops any additional sends until older notifications age out.Example: Frequency cap of 3 notifications per 24 hours.
Time
Action
Notifications in window
Delivered?
Day 1, 9:00 AM
Send Notification 1
1
Yes
Day 1, 1:00 PM
Send Notification 2
2
Yes
Day 1, 5:00 PM
Send Notification 3
3
Yes
Day 2, 8:00 AM
Send Notification 4
3 (cap reached)
No
Day 2, 9:00 AM
Notification 1 ages out (24h elapsed)
2
—
Day 2, 9:01 AM
Send Notification 5
3
Yes
Day 2, 10:00 AM
Send Notification 6
3 (cap reached)
No
Day 2, 11:00 AM
Send Notification 7
3 (cap reached)
No
Day 2, 1:00 PM
Notification 2 ages out (24h elapsed)
2
—
Day 2, 2:00 PM
Send Notification 8
3
Yes
Notifications 4, 6, and 7 are dropped because the user’s rolling 24-hour window already holds three notifications at the moment each is sent.
“Per day” refers to a rolling 24-hour window, not a calendar day. If a user receives a message at 6:45 PM, that notification stays in their window until 6:45 PM the next day. Sends in that interval count toward the cap and may be dropped.
Frequency capping applies to push notifications only. It does not apply to email, SMS, or in-app messages.
It applies to all push sources — Create notification API, Journeys, and manual dashboard sends.
Messages blocked by the cap are dropped, not queued. They are never retried.
For example, with a cap of 2 per day, if a user has already received two API pushes, a Journey push later that day is dropped unless the sender explicitly overrides the cap (see Override frequency capping).
Override frequency capping on a per-message basis when a send must reach the user even if the cap is reached.
Dashboard
API
In the message’s Delivery Schedule, select Override frequency capping settings.
Using the Create push notification API, set enable_frequency_cap to false to bypass the cap for that message. Omit it or set to true to apply normal capping.
Does frequency capping apply to email, SMS, or in-app messages?
No. The cap configured under Settings > Push & In-app > Frequency Capping only limits push notifications. Email, SMS, and in-app messages have their own delivery controls and aren’t affected.
Yes. Setting enable_frequency_cap to false (or selecting the dashboard override) lets that message reach the user, but it still counts in the rolling window and can push later messages past the cap.
Why is the parameter named enable_frequency_cap if I set it to false to deliver?
The parameter controls whether the cap applies to the message. Setting it to false means “do not apply the cap to this message” — the cap is disabled for that one send. The user-level cap configured in the dashboard remains active for every other send.
Smooth out the rate at which notifications go out across your audience — separate from per-user capping.
Journeys overview
Multi-step automated messaging. Journey sends respect frequency capping unless they explicitly override it.
Create push notification
REST API for sending pushes. Set enable_frequency_cap to false to override the cap per message.
View message
Retrieve per-message stats, including the number of users capped or overridden.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"OneSignal","description":"OneSignal is a platform for sending push notifications, emails, in-app messages, and SMS campaigns via a single API, Journey Builder, and a dashboard.","colors":{"primary":"#3A3DB3","light":"#E54B4D","dark":"#3A3DB3"},"logo":{"light":"https://mintcdn.com/onesignal/yJcueeDCO7UpHnnY/logo/OneSignal-Logo.svg?fit=max\u0026auto=format\u0026n=yJcueeDCO7UpHnnY\u0026q=85\u0026s=1fcfb6fef6d820fd9d99c74850711107","dark":"https://mintcdn.com/onesignal/s4WC_KzLxf8ornqq/logo/OneSignal-Logo-White.svg?fit=max\u0026auto=format\u0026n=s4WC_KzLxf8ornqq\u0026q=85\u0026s=2573a53b5aea961e18c82b3af8f31925"},"favicon":"https://mintcdn.com/onesignal/SGduBFHpiRdg5l6h/favicon.ico?fit=max\u0026auto=format\u0026n=SGduBFHpiRdg5l6h\u0026q=85\u0026s=c0a99fadc0553c658a83741c5611cef4","api":{"examples":{"languages":["curl","typescript","python","php","go","ruby","java","csharp","rust"],"autogenerate":true}},"navbar":{"links":[{"href":"mailto:support@onesignal.com","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://dashboard.onesignal.com"}},"footer":{"socials":{"github":"https://github.com/OneSignal","linkedin":"https://linkedin.com/company/onesignal","youtube":"https://www.youtube.com/@onesignalofficial/playlists"}},"seo":{"metatags":{"apple-mobile-web-app-title":"OneSignal Docs"}},"fonts":{"family":"Nunito Sans"},"styling":{"eyebrows":"breadcrumbs","latex":true},"integrations":{"ga4":{"measurementId":"G-2DGWL0VYP5"},"posthog":{"apiKey":"phc_vZpvE0f5eyzcOt30FHer34yddVmNdo9kmlMVRBzLMtn","apiHost":"https://eu.i.posthog.com","sessionRecording":true}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"navigation":{"languages":[{"language":"en","href":"docs/en/home"},{"language":"cn","href":"docs/cn/home"},{"language":"ko","href":"docs/ko/home"},{"language":"ja","href":"docs/ja/home"},{"language":"tr","href":"docs/tr/home"},{"language":"pt-BR","href":"docs/pt-BR/home"},{"language":"es","href":"docs/es/home"},{"language":"fr","href":"docs/fr/home"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"onesignal","hasAudioNarration":false,"actualSubdomain":"onesignal","customDomains":["documentation.onesignal.com"],"gitSource":{"type":"github","owner":"onesignal","repo":"mintlify-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae27970d56b3c07efab0978","collectionId":"6235cce9-b779-4b7f-8fb0-f4b3f7de838d","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae27970d56b3c07efab0978"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae27970d56b3c07efab0978","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"en","tag":"User Guides","count":201},{"language":"es","tag":"Guías del Usuario","count":178},{"language":"fr","tag":"Guides utilisateur","count":178},{"language":"ja","tag":"ユーザーガイド","count":178},{"language":"ko","tag":"사용자 가이드","count":178},{"language":"pt-BR","tag":"Guia do Usuário","count":178},{"language":"tr","tag":"Kullanıcı Kılavuzları","count":178},{"language":"cn","tag":"用户指南","count":176},{"language":"en","tag":"Message channels","count":90},{"language":"es","tag":"Canales de mensajería","count":84},{"language":"fr","tag":"Canaux de messagerie","count":84},{"language":"ja","tag":"メッセージングチャネル","count":84},{"language":"ko","tag":"메시지 채널","count":84},{"language":"pt-BR","tag":"Canais de mensagem","count":84},{"language":"tr","tag":"Mesaj kanalları","count":84},{"language":"cn","tag":"消息渠道","count":83},{"language":"default","tag":"API Reference","count":68},{"language":"default","tag":"API reference","count":64},{"language":"en","tag":"Analytics \u0026 Integrations","count":53},{"language":"es","tag":"Analítica \u0026 Integraciones","count":52},{"language":"fr","tag":"Analyses et intégrations","count":52},{"language":"ja","tag":"分析 \u0026 統合","count":52},{"language":"ko","tag":"분석 \u0026 통합","count":52},{"language":"pt-BR","tag":"Análises \u0026 Integrações","count":52},{"language":"tr","tag":"Analitik ve Entegrasyonlar","count":52},{"language":"cn","tag":"分析和集成","count":51},{"language":"cn","tag":"开发者指南","count":48},{"language":"es","tag":"Guías del desarrollador","count":48},{"language":"fr","tag":"Guides développeur","count":48},{"language":"ja","tag":"開発者ガイド","count":48},{"language":"ko","tag":"개발자 가이드","count":48},{"language":"tr","tag":"Geliştirici Kılavuzları","count":48},{"language":"pt-BR","tag":"Guia de desenvolvedor","count":47},{"language":"en","tag":"Developer Guides","count":46},{"language":"en","tag":"Integrations","count":37},{"language":"es","tag":"Integraciones","count":37},{"language":"fr","tag":"Intégrations","count":37},{"language":"ja","tag":"統合","count":37},{"language":"ko","tag":"통합","count":37},{"language":"pt-BR","tag":"Integrações","count":37},{"language":"tr","tag":"Entegrasyonlar","count":37},{"language":"cn","tag":"集成","count":36},{"language":"en","tag":"Tutorials","count":35},{"language":"cn","tag":"推送通知","count":31},{"language":"cn","tag":"OneSignal 作为目的地","count":31},{"language":"en","tag":"Push","count":31},{"language":"en","tag":"OneSignal as destination","count":31},{"language":"es","tag":"Push notificaciones","count":31},{"language":"es","tag":"OneSignal como destino","count":31},{"language":"fr","tag":"Push","count":31},{"language":"fr","tag":"OneSignal comme destination","count":31},{"language":"ja","tag":"プッシュ通知","count":31},{"language":"ja","tag":"OneSignal as 宛先","count":31},{"language":"ko","tag":"푸시","count":31},{"language":"ko","tag":"OneSignal을 데이터 목적지로 사용","count":31},{"language":"pt-BR","tag":"Push notificações","count":31},{"language":"pt-BR","tag":"OneSignal como destino","count":31},{"language":"tr","tag":"Anlık bildirimler","count":31},{"language":"tr","tag":"OneSignal hedef","count":31},{"language":"cn","tag":"移动SDK","count":25},{"language":"en","tag":"Mobile SDKs","count":25},{"language":"es","tag":"SDKs móviles","count":25},{"language":"fr","tag":"SDK mobiles","count":25},{"language":"ja","tag":"モバイルSDK","count":25},{"language":"ko","tag":"모바일 SDKs","count":25},{"language":"pt-BR","tag":"SDKs móveis","count":25},{"language":"tr","tag":"Mobil SDK'lar","count":25},{"language":"cn","tag":"教程","count":24},{"language":"es","tag":"Tutoriales","count":24},{"language":"fr","tag":"Tutoriels","count":24},{"language":"ja","tag":"チュートリアル","count":24},{"language":"ko","tag":"튜토리얼","count":24},{"language":"pt-BR","tag":"Tutoriais","count":24},{"language":"tr","tag":"Eğitimler","count":24},{"language":"en","tag":"Email","count":19},{"language":"cn","tag":"移动SDK设置","count":18},{"language":"es","tag":"Configuración del SDK móvil","count":18},{"language":"fr","tag":"Configuration SDK mobile","count":18},{"language":"ja","tag":"モバイルSDKセットアップ","count":18},{"language":"ko","tag":"모바일 SDK 설정","count":18},{"language":"pt-BR","tag":"Configuração do SDK móvel","count":18},{"language":"tr","tag":"Mobil SDK kurulumu","count":18},{"language":"default","tag":"Messages","count":9},{"language":"default","tag":"Users","count":9},{"language":"default","tag":"Organization","count":9},{"language":"default","tag":"Journeys","count":8},{"language":"default","tag":"Deprecated","count":6},{"language":"default","tag":"Templates","count":6},{"language":"default","tag":"Subscriptions","count":6},{"language":"default","tag":"Segments","count":5}]},"assistantConfig":{"enableStarterQuestions":false,"deflection":{"enabled":true,"email":"support@onesignal.com","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"docs/en/frequency-capping","slug":"/docs/en/frequency-capping","pageMetadata":{"title":"Push frequency capping","description":"Push frequency capping limits how many push notifications a single user can receive in a rolling minute, hour, day, or week window — useful when multiple teams, Journeys, or automated triggers risk over-messaging the same user.","keywords":["frequency capping","rate limit","rolling window","push notifications","over-messaging","delivery controls"],"href":"/docs/en/frequency-capping"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Push frequency capping limits how many push notifications a single user can receive in a rolling minute, hour, day, or week window — useful when multiple teams, Journeys, or automated triggers risk over-messaging the same user.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,hr:`hr`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Card,CodeBlock,Columns,Frame,Heading,Note,OptimizedImage,Step,Steps,Tab,Table,Tabs}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Columns)_missingMdxReference(`Columns`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Frequency capping limits how many push notifications a single user can receive in a rolling time window (per minute, hour, day, or week). Use it to prevent over-messaging when multiple teams, Journeys, or automated triggers send to the same user.`}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Frequency capping is available on select `,_jsx(_components.a,{href:`https://onesignal.com/pricing`,children:`paid plans`}),`.`]})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`how-frequency-capping-works`,children:`How frequency capping works`}),`\n`,_jsx(_components.p,{children:`Each delivered push “ages out” of the user’s rolling window when the configured time period has elapsed since that push was sent. Once the user has received the maximum number of notifications inside the window, OneSignal drops any additional sends until older notifications age out.`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Example:`}),` Frequency cap of `,_jsx(_components.strong,{children:`3 notifications per 24 hours`}),`.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Time`}),_jsx(_components.th,{children:`Action`}),_jsx(_components.th,{children:`Notifications in window`}),_jsx(_components.th,{children:`Delivered?`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Day 1, 9:00 AM`}),_jsx(_components.td,{children:`Send Notification 1`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`1`}),_jsx(_components.td,{children:`Yes`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Day 1, 1:00 PM`}),_jsx(_components.td,{children:`Send Notification 2`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`2`}),_jsx(_components.td,{children:`Yes`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Day 1, 5:00 PM`}),_jsx(_components.td,{children:`Send Notification 3`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`3`}),_jsx(_components.td,{children:`Yes`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Day 2, 8:00 AM`}),_jsx(_components.td,{children:`Send Notification 4`}),_jsx(_components.td,{children:`3 (cap reached)`}),_jsx(_components.td,{children:`No`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Day 2, 9:00 AM`}),_jsx(_components.td,{children:`Notification 1 ages out (24h elapsed)`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`2`}),_jsx(_components.td,{children:`—`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Day 2, 9:01 AM`}),_jsx(_components.td,{children:`Send Notification 5`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`3`}),_jsx(_components.td,{children:`Yes`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Day 2, 10:00 AM`}),_jsx(_components.td,{children:`Send Notification 6`}),_jsx(_components.td,{children:`3 (cap reached)`}),_jsx(_components.td,{children:`No`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Day 2, 11:00 AM`}),_jsx(_components.td,{children:`Send Notification 7`}),_jsx(_components.td,{children:`3 (cap reached)`}),_jsx(_components.td,{children:`No`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Day 2, 1:00 PM`}),_jsx(_components.td,{children:`Notification 2 ages out (24h elapsed)`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`2`}),_jsx(_components.td,{children:`—`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Day 2, 2:00 PM`}),_jsx(_components.td,{children:`Send Notification 8`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`3`}),_jsx(_components.td,{children:`Yes`})]})]})]}),`\n`,_jsx(_components.p,{children:`Notifications 4, 6, and 7 are dropped because the user’s rolling 24-hour window already holds three notifications at the moment each is sent.`}),`\n`,_jsx(Note,{children:_jsx(_components.p,{children:`“Per day” refers to a rolling 24-hour window, not a calendar day. If a user receives a message at 6:45 PM, that notification stays in their window until 6:45 PM the next day. Sends in that interval count toward the cap and may be dropped.`})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`when-to-use-frequency-capping`,children:`When to use frequency capping`}),`\n`,_jsx(_components.p,{children:`Frequency capping is most useful when messaging volume can grow without coordination:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Complex campaign environments`}),` — large organizations with multiple teams or overlapping marketing campaigns.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`High-frequency triggers`}),` — systems that send notifications from frequent events (stock price updates, automated news alerts, etc.).`]}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`what-gets-capped`,children:`What gets capped`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Frequency capping applies to `,_jsx(_components.strong,{children:`push notifications only`}),`. It does not apply to email, SMS, or in-app messages.`]}),`\n`,_jsxs(_components.li,{children:[`It applies to all push sources — Create notification API, `,_jsx(_components.a,{href:`/docs/en/journeys-overview`,children:`Journeys`}),`, and manual dashboard sends.`]}),`\n`,_jsxs(_components.li,{children:[`Messages blocked by the cap are `,_jsx(_components.strong,{children:`dropped`}),`, not queued. They are never retried.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`For example, with a cap of 2 per day, if a user has already received two API pushes, a Journey push later that day is dropped unless the sender explicitly overrides the cap (see `,_jsx(_components.a,{href:`#override-frequency-capping`,children:`Override frequency capping`}),`).`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`how-to-enable-frequency-capping`,children:`How to enable frequency capping`}),`\n`,_jsx(_components.p,{children:`Configure frequency capping at the app level from the OneSignal dashboard.`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{children:_jsxs(_components.p,{children:[`Navigate to `,_jsx(_components.strong,{children:`Settings > Push \u0026 In-app > Frequency Capping`}),`.`]})}),_jsxs(Step,{children:[_jsx(_components.p,{children:`Set the maximum number of messages a user can receive in your chosen time window (per minute, hour, day, or week).`}),_jsx(Frame,{caption:`Notifications can be capped at any number per any time frame.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/onesignal/9_Q1FZLh6C0BFLq-/images/docs/ca59ff47b3c7bd4fe834d818299d7365957de85d86b1b5577b111dcbbef4bfdd-Screenshot_2025-04-16_at_12.07.24_PM.png?fit=max\u0026auto=format\u0026n=9_Q1FZLh6C0BFLq-\u0026q=85\u0026s=d2d6528f4b6cc767fca4c20eef01dfe1`,alt:`Frequency capping settings in the OneSignal dashboard, with fields for maximum messages and a selectable time window.`,\"data-og-width\":`2394`,width:`2394`,\"data-og-height\":`1520`,height:`1520`,\"data-path\":`images/docs/ca59ff47b3c7bd4fe834d818299d7365957de85d86b1b5577b111dcbbef4bfdd-Screenshot_2025-04-16_at_12.07.24_PM.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onesignal/9_Q1FZLh6C0BFLq-/images/docs/ca59ff47b3c7bd4fe834d818299d7365957de85d86b1b5577b111dcbbef4bfdd-Screenshot_2025-04-16_at_12.07.24_PM.png?w=280\u0026fit=max\u0026auto=format\u0026n=9_Q1FZLh6C0BFLq-\u0026q=85\u0026s=fa2bf68041e8324cc98ff4dd2bf2c3a5 280w, https://mintcdn.com/onesignal/9_Q1FZLh6C0BFLq-/images/docs/ca59ff47b3c7bd4fe834d818299d7365957de85d86b1b5577b111dcbbef4bfdd-Screenshot_2025-04-16_at_12.07.24_PM.png?w=560\u0026fit=max\u0026auto=format\u0026n=9_Q1FZLh6C0BFLq-\u0026q=85\u0026s=51a24be4f632591374d3f6789ebaa855 560w, https://mintcdn.com/onesignal/9_Q1FZLh6C0BFLq-/images/docs/ca59ff47b3c7bd4fe834d818299d7365957de85d86b1b5577b111dcbbef4bfdd-Screenshot_2025-04-16_at_12.07.24_PM.png?w=840\u0026fit=max\u0026auto=format\u0026n=9_Q1FZLh6C0BFLq-\u0026q=85\u0026s=6bbd947b9281e5bd011f2b59f597aa98 840w, https://mintcdn.com/onesignal/9_Q1FZLh6C0BFLq-/images/docs/ca59ff47b3c7bd4fe834d818299d7365957de85d86b1b5577b111dcbbef4bfdd-Screenshot_2025-04-16_at_12.07.24_PM.png?w=1100\u0026fit=max\u0026auto=format\u0026n=9_Q1FZLh6C0BFLq-\u0026q=85\u0026s=f2fdba3bcafcc1b08c51524bb656a9a3 1100w, https://mintcdn.com/onesignal/9_Q1FZLh6C0BFLq-/images/docs/ca59ff47b3c7bd4fe834d818299d7365957de85d86b1b5577b111dcbbef4bfdd-Screenshot_2025-04-16_at_12.07.24_PM.png?w=1650\u0026fit=max\u0026auto=format\u0026n=9_Q1FZLh6C0BFLq-\u0026q=85\u0026s=37dfc394d2be800367afe76623ddf35c 1650w, https://mintcdn.com/onesignal/9_Q1FZLh6C0BFLq-/images/docs/ca59ff47b3c7bd4fe834d818299d7365957de85d86b1b5577b111dcbbef4bfdd-Screenshot_2025-04-16_at_12.07.24_PM.png?w=2500\u0026fit=max\u0026auto=format\u0026n=9_Q1FZLh6C0BFLq-\u0026q=85\u0026s=0ed8e326a7a2616913521d7dbef0f500 2500w`})})]})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`override-frequency-capping`,children:`Override frequency capping`}),`\n`,_jsx(_components.p,{children:`Override frequency capping on a per-message basis when a send must reach the user even if the cap is reached.`}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`Dashboard`,id:`dashboard`,children:[_jsxs(_components.p,{children:[`In the message’s `,_jsx(_components.strong,{children:`Delivery Schedule`}),`, select `,_jsx(_components.strong,{children:`Override frequency capping settings`}),`.`]}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/onesignal/0qspEXXeJ8zJbkJ-/images/docs/81e1bd0-Screenshot_2022-11-16_at_3.14.52_PM.png?fit=max\u0026auto=format\u0026n=0qspEXXeJ8zJbkJ-\u0026q=85\u0026s=876b3661b21dbdcb5ec1c00920b2912d`,alt:`Delivery Schedule section of the push composer with the 'Override frequency capping settings' option selected.`,\"data-og-width\":`2102`,width:`2102`,\"data-og-height\":`642`,height:`642`,\"data-path\":`images/docs/81e1bd0-Screenshot_2022-11-16_at_3.14.52_PM.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onesignal/0qspEXXeJ8zJbkJ-/images/docs/81e1bd0-Screenshot_2022-11-16_at_3.14.52_PM.png?w=280\u0026fit=max\u0026auto=format\u0026n=0qspEXXeJ8zJbkJ-\u0026q=85\u0026s=9133d91ba935afdae47a768520671d28 280w, https://mintcdn.com/onesignal/0qspEXXeJ8zJbkJ-/images/docs/81e1bd0-Screenshot_2022-11-16_at_3.14.52_PM.png?w=560\u0026fit=max\u0026auto=format\u0026n=0qspEXXeJ8zJbkJ-\u0026q=85\u0026s=334b89850e35eb325b108a9e029d7988 560w, https://mintcdn.com/onesignal/0qspEXXeJ8zJbkJ-/images/docs/81e1bd0-Screenshot_2022-11-16_at_3.14.52_PM.png?w=840\u0026fit=max\u0026auto=format\u0026n=0qspEXXeJ8zJbkJ-\u0026q=85\u0026s=c7f8529702de28b9ccda5bd04e0c3255 840w, https://mintcdn.com/onesignal/0qspEXXeJ8zJbkJ-/images/docs/81e1bd0-Screenshot_2022-11-16_at_3.14.52_PM.png?w=1100\u0026fit=max\u0026auto=format\u0026n=0qspEXXeJ8zJbkJ-\u0026q=85\u0026s=99bac94228641921a574f2711afeee69 1100w, https://mintcdn.com/onesignal/0qspEXXeJ8zJbkJ-/images/docs/81e1bd0-Screenshot_2022-11-16_at_3.14.52_PM.png?w=1650\u0026fit=max\u0026auto=format\u0026n=0qspEXXeJ8zJbkJ-\u0026q=85\u0026s=cc9786e164ae3b71ee5da6fe6a14f88a 1650w, https://mintcdn.com/onesignal/0qspEXXeJ8zJbkJ-/images/docs/81e1bd0-Screenshot_2022-11-16_at_3.14.52_PM.png?w=2500\u0026fit=max\u0026auto=format\u0026n=0qspEXXeJ8zJbkJ-\u0026q=85\u0026s=4d4337773a699cff6423886eef6fb924 2500w`})})]}),_jsxs(Tab,{title:`API`,id:`api`,children:[_jsxs(_components.p,{children:[`Using the `,_jsx(_components.a,{href:`/reference/push-notification`,children:`Create push notification API`}),`, set `,_jsx(_components.code,{children:`enable_frequency_cap`}),` to `,_jsx(_components.code,{children:`false`}),` to bypass the cap for that message. Omit it or set to `,_jsx(_components.code,{children:`true`}),` to apply normal capping.`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`3`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"enable_frequency_cap\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`notes-on-overriding`,children:`Notes on overriding`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Frequency capping must be enabled in the dashboard for this override to have any effect.`}),`\n`,_jsxs(_components.li,{children:[`Overridden messages still `,_jsx(_components.strong,{children:`count toward the cap`}),`, so they affect whether future messages are delivered to the same user.`]}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`reporting`,children:`Reporting`}),`\n`,_jsx(_components.p,{children:`When frequency capping is enabled, you can monitor its impact in two places:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Dashboard message reports`}),` — each message’s delivery stats show the number of users skipped because of the cap.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.a,{href:`/reference/view-message`,children:`View message API`})}),` — returns the same per-message capped and overridden counts.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Each message has one of two related statuses:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Capped`}),` — frequency capping was applied; the response includes the number of users skipped.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Overridden`}),` — frequency capping is enabled for the app but was overridden for this message.`]}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`faq`,children:`FAQ`}),`\n`,_jsx(Heading,{level:`3`,id:`what-time-windows-are-supported`,children:`What time windows are supported?`}),`\n`,_jsx(_components.p,{children:`Per minute, per hour, per day (rolling 24 hours), and per week (rolling 7 days). All windows are rolling — they don’t reset on calendar boundaries.`}),`\n`,_jsx(Heading,{level:`3`,id:`does-frequency-capping-apply-to-email-sms-or-in-app-messages`,children:`Does frequency capping apply to email, SMS, or in-app messages?`}),`\n`,_jsxs(_components.p,{children:[`No. The cap configured under `,_jsx(_components.strong,{children:`Settings > Push \u0026 In-app > Frequency Capping`}),` only limits push notifications. Email, SMS, and in-app messages have their own delivery controls and aren’t affected.`]}),`\n`,_jsx(Heading,{level:`3`,id:`what-happens-to-messages-that-exceed-the-cap`,children:`What happens to messages that exceed the cap?`}),`\n`,_jsx(_components.p,{children:`They are dropped, not queued. A push that would put the user past the cap is silently skipped for that subscription and never retried.`}),`\n`,_jsx(Heading,{level:`3`,id:`do-overridden-messages-count-toward-future-caps`,children:`Do overridden messages count toward future caps?`}),`\n`,_jsxs(_components.p,{children:[`Yes. Setting `,_jsx(_components.code,{children:`enable_frequency_cap`}),` to `,_jsx(_components.code,{children:`false`}),` (or selecting the dashboard override) lets that message reach the user, but it still counts in the rolling window and can push later messages past the cap.`]}),`\n`,_jsxs(Heading,{level:`3`,id:`why-is-the-parameter-named-enable_frequency_cap-if-i-set-it-to-false-to-deliver`,children:[`Why is the parameter named `,_jsx(_components.code,{children:`enable_frequency_cap`}),` if I set it to `,_jsx(_components.code,{children:`false`}),` to deliver?`]}),`\n`,_jsxs(_components.p,{children:[`The parameter controls whether the cap `,_jsx(_components.strong,{children:`applies`}),` to the message. Setting it to `,_jsx(_components.code,{children:`false`}),` means “do not apply the cap to this message” — the cap is disabled for that one send. The user-level cap configured in the dashboard remains active for every other send.`]}),`\n`,_jsx(Heading,{level:`3`,id:`where-can-i-see-how-many-sends-were-capped`,children:`Where can I see how many sends were capped?`}),`\n`,_jsxs(_components.p,{children:[`In any message’s delivery report (dashboard) or in the `,_jsx(_components.a,{href:`/reference/view-message`,children:`View message API`}),` response. Both surface the same per-message `,_jsx(_components.strong,{children:`Capped`}),` and `,_jsx(_components.strong,{children:`Overridden`}),` totals.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`related-pages`,children:`Related pages`}),`\n`,_jsxs(Columns,{cols:2,children:[_jsx(Card,{title:`Throttling`,icon:`gauge-high`,href:`/docs/en/throttling`,children:_jsx(_components.p,{children:`Smooth out the rate at which notifications go out across your audience — separate from per-user capping.`})}),_jsx(Card,{title:`Journeys overview`,icon:`route`,href:`/docs/en/journeys-overview`,children:_jsx(_components.p,{children:`Multi-step automated messaging. Journey sends respect frequency capping unless they explicitly override it.`})}),_jsx(Card,{title:`Create push notification`,icon:`paper-plane`,href:`/reference/push-notification`,children:_jsxs(_components.p,{children:[`REST API for sending pushes. Set `,_jsx(_components.code,{children:`enable_frequency_cap`}),` to `,_jsx(_components.code,{children:`false`}),` to override the cap per message.`]})}),_jsx(Card,{title:`View message`,icon:`chart-simple`,href:`/reference/view-message`,children:_jsx(_components.p,{children:`Retrieve per-message stats, including the number of users capped or overridden.`})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Push frequency capping","description":"Push frequency capping limits how many push notifications a single user can receive in a rolling minute, hour, day, or week window — useful when multiple teams, Journeys, or automated triggers risk over-messaging the same user.","keywords":["frequency capping","rate limit","rolling window","push notifications","over-messaging","delivery controls"],"href":"/docs/en/frequency-capping"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"How frequency capping works","slug":"how-frequency-capping-works","depth":2,"children":[]},{"title":"When to use frequency capping","slug":"when-to-use-frequency-capping","depth":2,"children":[]},{"title":"What gets capped","slug":"what-gets-capped","depth":2,"children":[]},{"title":"How to enable frequency capping","slug":"how-to-enable-frequency-capping","depth":2,"children":[]},{"title":"Override frequency capping","slug":"override-frequency-capping","depth":2,"children":[{"title":"Notes on overriding","slug":"notes-on-overriding","depth":3,"children":[]}]},{"title":"Reporting","slug":"reporting","depth":2,"children":[]},{"title":"FAQ","slug":"faq","depth":2,"children":[{"title":"What time windows are supported?","slug":"what-time-windows-are-supported","depth":3,"children":[]},{"title":"Does frequency capping apply to email, SMS, or in-app messages?","slug":"does-frequency-capping-apply-to-email-sms-or-in-app-messages","depth":3,"children":[]},{"title":"What happens to messages that exceed the cap?","slug":"what-happens-to-messages-that-exceed-the-cap","depth":3,"children":[]},{"title":"Do overridden messages count toward future caps?","slug":"do-overridden-messages-count-toward-future-caps","depth":3,"children":[]},{"title":"Why is the parameter named enable_frequency_cap if I set it to false to deliver?","slug":"why-is-the-parameter-named-enable_frequency_cap-if-i-set-it-to-false-to-deliver","depth":3,"children":[]},{"title":"Where can I see how many sends were capped?","slug":"where-can-i-see-how-many-sends-were-capped","depth":3,"children":[]}]},{"title":"Related pages","slug":"related-pages","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/onesignal/e069c1b9f3157e14/hotjar-koala.js","/_mintlify/custom/onesignal/3e5d03885ab32f49/intercom.js","/_mintlify/custom/onesignal/dbb7af4794d1b586/munchkin-marketo.js"],"subdomain":"onesignal","siteName":"OneSignal","title":"Push frequency capping - OneSignal","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/docs/en/frequency-capping","matchLevel":0},"cn":{"href":"/docs/cn/frequency-capping","matchLevel":1},"ko":{"href":"/docs/ko/frequency-capping","matchLevel":1},"ja":{"href":"/docs/ja/frequency-capping","matchLevel":1},"tr":{"href":"/docs/tr/frequency-capping","matchLevel":1},"pt-BR":{"href":"/docs/pt-BR/frequency-capping","matchLevel":1},"es":{"href":"/docs/es/frequency-capping","matchLevel":1},"fr":{"href":"/docs/fr/frequency-capping","matchLevel":1}}},"lastModified":"2026-05-11T19:28:29.435Z","originalFileLocation":"docs/en/frequency-capping.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Push frequency capping limits how many push notifications a single user can receive in a rolling minute, hour, day, or week window — useful when multiple teams, Journeys, or automated triggers risk over-messaging the same user.\">\u003cmeta data-mint-head name=\"application-name\" content=\"OneSignal\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Push frequency capping - OneSignal\">\u003cmeta data-mint-head property=\"og:description\" content=\"Push frequency capping limits how many push notifications a single user can receive in a rolling minute, hour, day, or week window — useful when multiple teams, Journeys, or automated triggers risk over-messaging the same user.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"OneSignal\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://documentation.onesignal.com/docs/en/frequency-capping\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://onesignal.mintlify.app/_mintlify/api/og/v2?division=Push+features\u0026amp;title=Push+frequency+capping\u0026amp;description=Push+frequency+capping+limits+how+many+push+notifications+a+single+user+can+receive+in+a+rolling+minute%2C+hour%2C+day%2C+or+week+window+%E2%80%94+useful+when+multiple+teams%2C\u0026amp;theme=8d648f04f85028b307bd669b\u0026amp;signature=9b0652d675d41d73081edf4ce883b7475ba2137d2ae655a413518541be94724d\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Push frequency capping - OneSignal\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Push frequency capping limits how many push notifications a single user can receive in a rolling minute, hour, day, or week window — useful when multiple teams, Journeys, or automated triggers risk over-messaging the same user.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://onesignal.mintlify.app/_mintlify/api/og/v2?division=Push+features\u0026amp;title=Push+frequency+capping\u0026amp;description=Push+frequency+capping+limits+how+many+push+notifications+a+single+user+can+receive+in+a+rolling+minute%2C+hour%2C+day%2C+or+week+window+%E2%80%94+useful+when+multiple+teams%2C\u0026amp;theme=8d648f04f85028b307bd669b\u0026amp;signature=9b0652d675d41d73081edf4ce883b7475ba2137d2ae655a413518541be94724d\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"OneSignal Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#3A3DB3\">\u003clink data-mint-head rel=\"canonical\" href=\"https://documentation.onesignal.com/docs/en/frequency-capping\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/en/frequency-capping.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://documentation.onesignal.com/docs/en/frequency-capping\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh\" href=\"https://documentation.onesignal.com/docs/cn/frequency-capping\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ko\" href=\"https://documentation.onesignal.com/docs/ko/frequency-capping\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ja\" href=\"https://documentation.onesignal.com/docs/ja/frequency-capping\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"tr\" href=\"https://documentation.onesignal.com/docs/tr/frequency-capping\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"pt-BR\" href=\"https://documentation.onesignal.com/docs/pt-BR/frequency-capping\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"es\" href=\"https://documentation.onesignal.com/docs/es/frequency-capping\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"fr\" href=\"https://documentation.onesignal.com/docs/fr/frequency-capping\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://documentation.onesignal.com/docs/en/frequency-capping\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://documentation.onesignal.com/#organization\",\"name\":\"OneSignal\",\"url\":\"https://documentation.onesignal.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/onesignal/yJcueeDCO7UpHnnY/logo/OneSignal-Logo.svg?fit=max\u0026auto=format\u0026n=yJcueeDCO7UpHnnY\u0026q=85\u0026s=1fcfb6fef6d820fd9d99c74850711107\"}},{\"@type\":\"WebSite\",\"@id\":\"https://documentation.onesignal.com#website\",\"name\":\"OneSignal\",\"url\":\"https://documentation.onesignal.com\",\"publisher\":{\"@id\":\"https://documentation.onesignal.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://documentation.onesignal.com/docs/en/frequency-capping#webpage\",\"url\":\"https://documentation.onesignal.com/docs/en/frequency-capping\",\"name\":\"Push frequency capping\",\"description\":\"Push frequency capping limits how many push notifications a single user can receive in a rolling minute, hour, day, or week window — useful when multiple teams, Journeys, or automated triggers risk over-messaging the same user.\",\"dateModified\":\"2026-05-11T19:28:29.435Z\",\"isPartOf\":{\"@id\":\"https://documentation.onesignal.com#website\"},\"breadcrumb\":{\"@id\":\"https://documentation.onesignal.com/docs/en/frequency-capping#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://documentation.onesignal.com/docs/en/frequency-capping#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Message channels\",\"item\":\"https://documentation.onesignal.com/docs/en/channel-setup\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Push\",\"item\":\"https://documentation.onesignal.com/docs/en/push\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Push features\",\"item\":\"https://documentation.onesignal.com/docs/en/notification-icons\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Push frequency capping\",\"item\":\"https://documentation.onesignal.com/docs/en/frequency-capping\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://documentation.onesignal.com/docs/en/frequency-capping#article\",\"headline\":\"Push frequency capping\",\"name\":\"Push frequency capping\",\"description\":\"Push frequency capping limits how many push notifications a single user can receive in a rolling minute, hour, day, or week window — useful when multiple teams, Journeys, or automated triggers risk over-messaging the same user.\",\"url\":\"https://documentation.onesignal.com/docs/en/frequency-capping\",\"mainEntityOfPage\":{\"@id\":\"https://documentation.onesignal.com/docs/en/frequency-capping#webpage\"},\"dateModified\":\"2026-05-11T19:28:29.435Z\",\"keywords\":\"frequency capping, rate limit, rolling window, push notifications, over-messaging, delivery controls\",\"publisher\":{\"@id\":\"https://documentation.onesignal.com/#organization\"},\"isPartOf\":{\"@id\":\"https://documentation.onesignal.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"OneSignal\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"OneSignal","nav":{"global":null,"languages":[{"language":"en","tabs":[{"tab":"Home","pages":[{"title":"Home","href":"/docs/en/home"}]},{"tab":"User Guides","groups":[{"group":"First steps \u0026 settings","pages":[{"title":"Getting started with OneSignal","href":"/docs/en/quickstart-guide"},{"group":"OneSignal dashboard","pages":[{"title":"Apps, Organizations, \u0026 Accounts","href":"/docs/en/apps-organizations"},{"title":"Team members","href":"/docs/en/manage-team-members"},{"title":"Keys \u0026 IDs","href":"/docs/en/keys-and-ids"},{"title":"Audit logs","href":"/docs/en/audit-logs"},{"title":"Usage \u0026 billing","href":"/docs/en/billing-faq"},{"title":"Disabled apps \u0026 organizations","href":"/docs/en/disabled-apps"}]},{"title":"Migrating to OneSignal","href":"/docs/en/migrating-to-onesignal"}]},{"group":"Message channels","pages":[{"title":"Channel setup","href":"/docs/en/channel-setup"},{"group":"Push","pages":[{"title":"Push overview","href":"/docs/en/push"},{"group":"Mobile push","pages":[{"title":"Mobile push setup","href":"/docs/en/mobile-push-setup"},{"title":"Prompt for push permissions","href":"/docs/en/prompt-for-push-permissions"},{"title":"iOS provisional push notifications","href":"/docs/en/ios-provisional-push-notifications"},{"title":"Android notification categories","href":"/docs/en/android-notification-categories"},{"title":"Data \u0026 background notifications","href":"/docs/en/data-notifications"},{"title":"VoIP push notifications","href":"/docs/en/voip-notifications"}]},{"group":"Web push","pages":[{"title":"Web push setup","href":"/docs/en/web-push-setup"},{"title":"Web permission prompts","href":"/docs/en/permission-requests"},{"title":"Web push FAQ","href":"/docs/en/web-push-setup-faq"},{"title":"Web push browser behavior","href":"/docs/en/browser-behavior-and-unsubscribes"},{"title":"OneSignal WordPress plugin setup for web push","href":"/docs/en/wordpress"},{"title":"WordPress troubleshooting","href":"/docs/en/troubleshooting-wordpress-web-push"},{"title":"Shopify web push integration","href":"/docs/en/shopify"}]},{"group":"Push features","pages":[{"title":"Notification icons","href":"/docs/en/notification-icons"},{"title":"Notification images \u0026 rich media","href":"/docs/en/rich-media"},{"title":"Notification sounds","href":"/docs/en/notification-sounds"},{"title":"Notification badges","href":"/docs/en/badges"},{"title":"Action buttons for push notifications","description":"Add interactive action buttons to your push notifications on iOS, Android, and the web. Learn setup via Dashboard \u0026 API, supported platforms, click handling, icons, and event tracking.","href":"/docs/en/action-buttons"},{"title":"Push frequency capping","href":"/docs/en/frequency-capping"},{"title":"Push throttling","description":"Push throttling controls how fast OneSignal delivers push notifications, helping you manage server load and avoid performance issues during high-volume sends.","href":"/docs/en/throttling"},{"title":"iOS: Focus modes and interruption levels","href":"/docs/en/ios-focus-modes-and-interruption-levels"},{"title":"iOS: Relevance score","href":"/docs/en/ios-relevance-score"}]},{"group":"Push analytics \u0026 troubleshooting","pages":[{"title":"Push message reports","href":"/docs/en/push-notification-message-reports"},{"title":"Confirmed receipt","href":"/docs/en/confirmed-delivery"},{"title":"Notification click-through rate (CTR)","href":"/docs/en/notification-ctr"},{"title":"Mobile push: Notifications not shown or delayed","href":"/docs/en/notifications-show-successful-but-are-not-being-shown"},{"title":"Web push: Notifications not shown","href":"/docs/en/notifications-not-shown-web-push"},{"title":"Notification Images Not Showing","href":"/docs/en/notification-images-not-showing"},{"title":"Duplicated notifications","href":"/docs/en/duplicated-notifications"},{"title":"FCM expired token FAQ","href":"/docs/en/fcm-expired-token-faq"}]}]},{"group":"In-app messages","pages":[{"title":"In-app overview","href":"/docs/en/in-app-messages-setup"},{"title":"In-app triggers","href":"/docs/en/iam-triggers"},{"title":"In-app click actions","href":"/docs/en/iam-click-actions"},{"group":"In-app design","pages":[{"title":"Design in-app messages with drag-and-drop","href":"/docs/en/design-your-in-app-message"},{"title":"Design in-app messages with HTML","href":"/docs/en/design-your-in-app-message-with-html"},{"title":"In-app message templates \u0026 quickstarts","href":"/docs/en/in-app-html-templates"},{"title":"In-app message JavaScript API reference","href":"/docs/en/in-app-message-api"}]},{"title":"In-app message reports","href":"/docs/en/in-app-message-reports"},{"title":"In-app troubleshooting","href":"/docs/en/in-app-message-troubleshooting"}]},{"group":"Email","pages":[{"title":"Email overview","href":"/docs/en/email-messaging"},{"group":"Email setup","pages":[{"title":"Email setup","href":"/docs/en/email-setup"},{"title":"Email DNS configuration","href":"/docs/en/email-dns-configuration"},{"title":"Senders","href":"/docs/en/senders"},{"title":"BCC emails","href":"/docs/en/email-bcc"},{"title":"Transactional emails","href":"/docs/en/setup-transactional-emails"},{"title":"Create a custom email unsubscribe page","href":"/docs/en/create-custom-unsubscribe-page"}]},{"group":"Email deliverability \u0026 analytics","pages":[{"title":"Email message reports","href":"/docs/en/email-message-reports"},{"title":"Email deliverability","href":"/docs/en/email-deliverability"},{"title":"Deliverability insights by inbox provider","href":"/docs/en/email-deliverability-insights"},{"title":"Email reputation best practices","href":"/docs/en/email-reputation-best-practices"},{"title":"Email address validation","href":"/docs/en/email-address-validation"},{"title":"Email warm-up","href":"/docs/en/email-warm-up"},{"title":"Google Postmaster Tools","href":"/docs/en/google-postmaster-tools"},{"title":"Suppressions","href":"/docs/en/suppressions"},{"title":"Email troubleshooting","href":"/docs/en/email-troubleshooting"}]},{"group":"Design your emails","pages":[{"title":"Design emails with drag-and-drop","href":"/docs/en/design-emails-with-drag-and-drop"},{"title":"Design emails with HTML","href":"/docs/en/design-emails-with-html"},{"title":"Email unsubscribe links \u0026 headers","href":"/docs/en/unsubscribe-links-email-subscriptions"},{"title":"Email template forwarding","href":"/docs/en/email-template-forwarding"}]}]},{"group":"SMS \u0026 RCS","pages":[{"title":"SMS, MMS, and RCS overview","href":"/docs/en/sms-messaging"},{"title":"Rich Communication Services (RCS)","href":"/docs/en/rcs-messaging"},{"group":"SMS setup","pages":[{"title":"SMS setup","href":"/docs/en/sms-setup"},{"title":"Sender resource applications and country requirements","sidebarTitle":"Sender resource applications","href":"/docs/en/sms-registration-requirements"},{"title":"SMS opt-in and collection","href":"/docs/en/sms-opt-in-and-collection"},{"title":"SMS consent keyword management","href":"/docs/en/sms-consent-keyword-management"},{"title":"SMS keywords","href":"/docs/en/keywords"}]},{"group":"SMS messaging","pages":[{"title":"Promotional messaging","href":"/docs/en/sms-promotional-messaging"},{"title":"Transactional messaging","href":"/docs/en/sms-transactional-messaging"},{"title":"One-time passwords (OTP)","sidebarTitle":"One-time passwords","href":"/docs/en/sms-verify"},{"title":"Composing messages","href":"/docs/en/sms-composing-messages"},{"title":"SMS message reports","href":"/docs/en/sms-message-reports"}]}]},{"group":"Live Activities","pages":[{"title":"Live Activities","href":"/docs/en/live-activities"},{"title":"Live Activities analytics","href":"/docs/en/live-activities-analytics"}]},{"group":"Features","pages":[{"title":"A/B testing","href":"/docs/en/ab-testing"},{"title":"Multi-language messaging","href":"/docs/en/multi-language-messaging"},{"title":"Brand Kit","href":"/docs/en/brand-kit"},{"group":"Personalization","pages":[{"title":"Personalization","href":"/docs/en/message-personalization"},{"title":"Using Liquid syntax","href":"/docs/en/using-liquid-syntax"},{"title":"Data feeds","href":"/docs/en/data-feeds"},{"title":"Personalize with Custom Events","href":"/docs/en/personalization-custom-event"},{"title":"Personalize with properties","href":"/docs/en/personalization-properties-and-tags"},{"title":"Personalize messages with API custom_data","href":"/docs/en/personalization-api-custom-data"},{"title":"Dynamic Content with CSV","href":"/docs/en/dynamic-content"}]},{"group":"URLs, Links, \u0026 Deep Links","pages":[{"title":"URLs, links, \u0026 deep links","href":"/docs/en/links"},{"title":"Deep linking","href":"/docs/en/deep-linking"},{"title":"Email unsubscribe links \u0026 headers","href":"/docs/en/unsubscribe-links-email-subscriptions"}]},{"title":"Retargeting messages","href":"/docs/en/retargeting"},{"title":"Templates","href":"/docs/en/templates"},{"title":"Labels","href":"/docs/en/labels"}]}]},{"group":"Journeys","pages":[{"title":"Journeys overview","href":"/docs/en/journeys-overview"},{"group":"Journey features","pages":[{"title":"Journey settings","href":"/docs/en/journeys-settings"},{"title":"Journey messages","href":"/docs/en/journeys-messages"},{"title":"Journey message A/B testing","sidebarTitle":"A/B testing","tag":"BETA","href":"/docs/en/journeys-ab-testing"},{"title":"Journey actions","href":"/docs/en/journeys-actions"},{"title":"Journey webhooks","href":"/docs/en/journeys-webhook"},{"title":"Send WhatsApp Messages via Journey Webhooks","href":"/docs/en/sending-whatsapp-messages-via-journey-webhooks"},{"title":"Managing journeys","href":"/docs/en/managing-journeys"},{"title":"Journey version history","tag":"NEW","href":"/docs/en/journeys-version-history"},{"title":"Journey analytics","href":"/docs/en/journeys-analytics"}]},{"title":"Journey examples","href":"/docs/en/journeys-examples"},{"title":"Control Journey membership with tags","href":"/docs/en/journeys-membership-tags"}]},{"group":"OneSignal AI","pages":[{"title":"OneSignal AI","tag":"BETA","href":"/docs/en/onesignal-ai"},{"title":"OneSignal AI skills","sidebarTitle":"Skills","tag":"BETA","href":"/docs/en/onesignal-ai-skills"},{"title":"OneSignal Home","href":"/docs/en/onesignal-home"},{"title":"OneSignal MCP Server","href":"/docs/en/model-context-protocol"},{"title":"OneSignal AI data practices","mode":"frame","href":"/docs/en/ai-data-practices"},{"title":"AI message composer","href":"/docs/en/ai-message-composer"},{"title":"OneSignal Slack Agent","hidden":true,"tag":"BETA","href":"/docs/en/slack-agent"}]},{"group":"Audience \u0026 events","pages":[{"title":"Segments","href":"/docs/en/segmentation"},{"title":"User-based segmentation","tag":"BETA","href":"/docs/en/user-based-segmentation"},{"group":"Users \u0026 Subscriptions","pages":[{"title":"Users","href":"/docs/en/users"},{"title":"Subscriptions","href":"/docs/en/subscriptions"},{"title":"Sessions","href":"/docs/en/sessions"},{"title":"User and Subscription Profiles","href":"/docs/en/user-subscription-profiles"},{"title":"Aliases","href":"/docs/en/aliases"},{"title":"Test users","href":"/docs/en/test-users"},{"title":"Delete users","href":"/docs/en/delete-users"}]},{"group":"Events","pages":[{"title":"Message events","href":"/docs/en/message-events"},{"title":"Session events","href":"/docs/en/session-events"},{"group":"Custom events","pages":[{"title":"Custom events","href":"/docs/en/custom-events"},{"title":"Custom event best practices","href":"/docs/en/custom-event-best-practices"},{"title":"Custom event storage and retention","href":"/docs/en/custom-event-storage"}]}]},{"group":"Tags","pages":[{"title":"Tags","href":"/docs/en/add-user-data-tags"},{"title":"Tags: Time Operators","href":"/docs/en/time-operators"}]},{"title":"Import","href":"/docs/en/import"}]},{"group":"Analytics \u0026 Integrations","pages":[{"group":"Analytics","pages":[{"title":"Analytics overview","href":"/docs/en/analytics-overview"},{"title":"Metrics glossary","href":"/docs/en/analytics-metrics-glossary"},{"title":"Goals","sidebarTitle":"Goals","tag":"BETA","href":"/docs/en/goals"},{"title":"Exporting data","href":"/docs/en/exporting-data"},{"title":"Template analytics","href":"/docs/en/template-analytics"},{"title":"Conversion metrics","href":"/docs/en/conversion-metrics"},{"title":"Engagement trends","href":"/docs/en/engagement-analytics"},{"title":"Subscription trends","href":"/docs/en/subscription-trends"},{"title":"Sessions volume","href":"/docs/en/sessions-volume"},{"group":"Retention metrics","pages":[{"title":"Retention metrics","href":"/docs/en/retention-metrics"},{"title":"Interpreting retention curves","href":"/docs/en/interpreting-retention-curves"}]},{"title":"Custom Outcomes","href":"/docs/en/custom-outcomes"}]},{"group":"Event Streams","pages":[{"title":"Event Streams","href":"/docs/en/event-streams"},{"title":"Event Stream data reference","sidebarTitle":"Event Stream data","href":"/docs/en/event-streams-data"},{"title":"In-app message event streams","href":"/docs/en/iam-event-streams"},{"title":"Google Sheets integration with Event Streams","href":"/docs/en/google-sheets-integration-with-event-streams"}]},{"group":"Integrations","pages":[{"title":"Integrations overview","href":"/docs/en/integrations"},{"title":"Data warehouse, DMP, \u0026 CRM integration","href":"/docs/en/database-dmp-crm-integration"},{"group":"OneSignal as data source","pages":[{"title":"Amplitude","href":"/docs/en/amplitude"},{"title":"Databricks","href":"/docs/en/databricks"},{"title":"Google BigQuery","href":"/docs/en/bigquery"},{"title":"Mixpanel","href":"/docs/en/mixpanel"},{"title":"Snowflake","href":"/docs/en/snowflake"},{"title":"Segment (Twilio)","href":"/docs/en/segment-onesignal-integration"}]},{"group":"OneSignal as destination","pages":[{"title":"Adobe Audience Manager","href":"/docs/en/adobe-audience-manager"},{"title":"AlloyDB","href":"/docs/en/alloydb"},{"title":"Amazon Athena","href":"/docs/en/amazon-athena"},{"title":"Amazon S3","href":"/docs/en/s3"},{"title":"Amplitude","href":"/docs/en/amplitude"},{"title":"Apache Kafka","href":"/docs/en/kafka"},{"title":"Amazon Redshift","href":"/docs/en/amazon-redshift"},{"title":"Azure Synapse","href":"/docs/en/azure-synapse"},{"title":"ClickHouse","href":"/docs/en/clickhouse"},{"title":"Confluent Cloud","href":"/docs/en/confluent-cloud"},{"title":"Databricks","href":"/docs/en/databricks"},{"title":"Elasticsearch","href":"/docs/en/elasticsearch"},{"title":"Google BigQuery","href":"/docs/en/bigquery"},{"title":"Google Cloud SQL","href":"/docs/en/google-cloud-sql"},{"title":"Google Sheets","href":"/docs/en/google-sheets"},{"title":"Greenplum","href":"/docs/en/greenplum"},{"title":"HubSpot","href":"/docs/en/hubspot"},{"title":"Materialize","href":"/docs/en/materialize"},{"title":"Microsoft Fabric","href":"/docs/en/microsoft-fabric"},{"title":"Mixpanel","href":"/docs/en/mixpanel"},{"title":"MotherDuck","href":"/docs/en/motherduck"},{"title":"MySQL","href":"/docs/en/mysql"},{"title":"PostgreSQL","href":"/docs/en/postgresql"},{"title":"Pub/Sub","href":"/docs/en/google-pubsub"},{"title":"SingleStore","href":"/docs/en/singlestore"},{"title":"Snowflake","href":"/docs/en/snowflake"},{"title":"SQL Server","href":"/docs/en/sql-server"},{"title":"Starburst Enterprise","href":"/docs/en/starburst-enterprise"},{"title":"Starburst Galaxy","href":"/docs/en/starburst-galaxy"},{"title":"Trino","href":"/docs/en/trino"},{"title":"Segment (Twilio)","href":"/docs/en/segment-onesignal-integration"}]},{"group":"Attribution","pages":[{"title":"RevenueCat","href":"/docs/en/revenuecat"},{"title":"Adjust","href":"/docs/en/adjust"},{"title":"BlueConic","href":"/docs/en/blueconic"}]},{"title":"Building an integration with OneSignal: partner guide","href":"/docs/en/building-an-integration-with-onesignal-partner-guide"}]}]},{"group":"Privacy \u0026 Security","pages":[{"group":"Security credentials","pages":[{"title":"SOC 2 Type II","href":"/docs/en/soc-2-type-ii"},{"title":"ISO 27001","href":"/docs/en/iso27001"},{"title":"HIPAA","href":"/docs/en/hipaa"}]},{"group":"Data privacy \u0026 regulatory compliance","pages":[{"title":"GDPR \u0026 Individual Rights","href":"/docs/en/gdpr-compliance"},{"title":"EU-US Data Privacy Framework","href":"/docs/en/eu-us-data-privacy-framework"},{"title":"Email regulatory compliance","href":"/docs/en/email-compliance"},{"title":"SMS regulatory compliance","href":"/docs/en/sms-regulatory-compliance"},{"title":"Apple App Privacy Requirements","href":"/docs/en/apple-app-privacy-requirements"},{"title":"Google Play Data Safety Requirements","href":"/docs/en/google-play-data-safety-requirements"},{"title":"Data collection \u0026 security FAQs","href":"/docs/en/data-questions"},{"title":"Data collected by the OneSignal SDK","href":"/docs/en/data-collected-by-the-onesignal-sdk"},{"title":"Handling personal data","href":"/docs/en/handling-personal-data"},{"title":"Data taxonomy","href":"/docs/en/data-taxonomy"},{"title":"OneSignal AI data practices","mode":"frame","href":"/docs/en/ai-data-practices"}]},{"group":"Authentication","pages":[{"title":"2-step authentication","href":"/docs/en/2-step-authentication"},{"title":"Single Sign-On (SSO)","href":"/docs/en/sso"}]}]}]},{"tab":"Developer Guides","pages":[{"title":"Developer Guides","href":"/docs/en/developers"}]},{"tab":"Tutorials","pages":[{"title":"Tutorials","href":"/docs/en/tutorials"}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/reference/rest-api-overview"}]},{"tab":"Release Notes","pages":[{"title":"Release Notes","href":"/release-notes/changelog"}]},{"tab":"Customer Success Hub","pages":[{"title":"Customer Success Hub","href":"/docs/en/customer-success-hub"}]}],"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://onesignal.com/blog"},{"anchor":"GitHub","icon":"github","href":"https://github.com/OneSignal"},{"anchor":"YouTube","icon":"youtube","href":"https://www.youtube.com/@onesignalofficial/playlists"}]}},{"language":"cn","pages":[{"title":"cn","href":"/docs/cn/frequency-capping"}]},{"language":"ko","pages":[{"title":"ko","href":"/docs/ko/frequency-capping"}]},{"language":"ja","pages":[{"title":"ja","href":"/docs/ja/frequency-capping"}]},{"language":"tr","pages":[{"title":"tr","href":"/docs/tr/frequency-capping"}]},{"language":"pt-BR","pages":[{"title":"pt-BR","href":"/docs/pt-BR/frequency-capping"}]},{"language":"es","pages":[{"title":"es","href":"/docs/es/frequency-capping"}]},{"language":"fr","pages":[{"title":"fr","href":"/docs/fr/frequency-capping"}]}]},"title":"Push frequency capping - OneSignal","buildId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","deploymentId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-DYplxqhs.js","DynamicMarkdown-Cc6AuSHS.js","zoom-image-lightbox-BNnMwe0F.js","lightbox-handle-r17bVUz3.js"]}