Okta Verify push notifications not arriving on enrolled devices
This runbook is for developers and support engineers diagnosing why Okta Verify push prompts stop reaching already-enrolled phones. It walks from the cheapest checks to the invasive ones: org-side push delivery, device OS notification state, network filtering, time drift, and re-enrollment, with concrete verification steps at each stage.
TL;DR — If Okta Verify push prompts are not arriving on already-enrolled devices, the fastest wins are: confirm the user can still receive a push challenge from the admin side, then check the phone’s OS-level notification permission and battery/background restrictions for Okta Verify. If pushes are generated in the org but never shown on the device, the most common fixes are re-enabling notifications/background app activity, removing network filtering/VPN, or re-enrolling the factor after confirming the device clock is sane. Reading time: ~6 min
The scenario
It’s Tuesday at 3:40 PM and your team’s login traffic is fine except for one ugly class of failures: users who were working this morning now say Okta Verify stopped prompting entirely. They tap "Send push" again and again, then fall back to SMS or get locked out because policy requires Okta Verify. The devices are already enrolled, there was no app deploy on your side, and the first thing you hear is "the app is installed, I’m just not getting anything." You need to separate org-side delivery problems from device-side notification problems fast.
Symptoms
- User sees repeated MFA prompts with no phone notification after clicking Send push.
- User reports Okta Verify opens normally, but no new approval request appears.
- Sign-in page may show messages like:
Push sentDidn't receive a push? Try againYour verification request has expired
- Admin/system logs show push challenge events without a corresponding success/approval event.
- Device symptoms commonly reported:
- Notifications disabled for Okta Verify
- App set to restricted battery/background mode
- Corporate VPN or filtering app enabled
- Device clock visibly wrong by minutes
- Network tests from the device’s browser may work for general internet, while push still fails because APNs/FCM delivery or app background execution is blocked.
- Re-enrollment often immediately restores push delivery when the device token or app registration is stale.
Likely causes
| Cause | How common | Quick check |
|---|---|---|
| OS notifications or background activity disabled for Okta Verify | Very common | On the phone: Settings → Apps → Okta Verify → Notifications / Battery |
| Device network path blocks push delivery (VPN, DNS filter, captive portal, firewall) | Common | Toggle Wi‑Fi off and retry on cellular |
| Stale or broken device/app registration; factor needs re-enrollment | Common | Admin console/system log: trigger a push and see challenge created but never delivered/approved |
| Device time drift or OS power-saving state breaks challenge handling | Occasional | On the phone: enable automatic date/time and disable Low Power/Battery Saver, then retry |
| User is on the wrong enrolled device or app clone/work profile | Occasional | Compare the device shown in the user’s enrolled factors with the phone in hand |
| Org-side service issue or policy/routing change prevents usable push challenge | Less common | Admin/system log: verify push challenge events for multiple users fail in the same time window |
Step-by-step diagnosis
-
Confirm this is really a push-delivery problem, not bad credentials or a different factor path.
- Action: have the user start a fresh sign-in and choose Okta Verify push explicitly.
- What indicates the problem: the sign-in page says
Push sentor equivalent, but nothing appears on the device within 10-20 seconds. - Jump to: Step 2.
-
Check whether the failure is isolated or org-wide.
- Action: in your admin console, open the user’s recent authentication/system log entries and compare with one known-good user in the same time window.
- What indicates the problem: if multiple users across devices/providers all show push challenges initiated but no approvals, treat it as org-side and jump to Fixes → Org-side service issue or policy/routing change prevents usable push challenge. If only one/few users are affected, continue.
-
Verify the phone can display notifications for Okta Verify.
- Action on iPhone:
Settings → Notifications → Okta VerifyandSettings → General → Background App Refresh. - Action on Android:
Settings → Apps → Okta Verify → NotificationsandSettings → Apps → Okta Verify → Battery. - What indicates the problem: notifications are off, previews are suppressed in a way your users interpret as "nothing arrived," Background App Refresh is off, or battery is set to
Restricted/Optimizedaggressively enough to suppress background delivery. - Jump to: Fixes → OS notifications or background activity disabled for Okta Verify.
- Action on iPhone:
-
Rule out network filtering in one move.
- Action: disconnect corporate VPN on the phone, switch from Wi‑Fi to cellular, and retry one push.
- What indicates the problem: push arrives immediately on cellular but not on Wi‑Fi/VPN.
- Jump to: Fixes → Device network path blocks push delivery (VPN, DNS filter, captive portal, firewall).
-
Check time sync and power-saving state.
- Action on iPhone:
Settings → General → Date & Time → Set Automatically; also disable Low Power Mode. - Action on Android:
Settings → System → Date & time → Set time automatically; disable Battery Saver and any vendor-specific sleep/deep optimization for the app. - What indicates the problem: the device clock is wrong by more than a minute, or push starts working immediately after disabling battery saver.
- Jump to: Fixes → Device time drift or OS power-saving state breaks challenge handling.
- Action on iPhone:
-
Confirm the user is holding the enrolled device instance.
- Action: compare the enrolled factor/device details in the user record with the actual phone. Watch for work profile clones, restored phones, or users who changed devices without re-enrolling.
- What indicates the problem: the enrolled device metadata does not match the current handset, or the app was restored from backup onto a new phone.
- Jump to: Fixes → User is on the wrong enrolled device or app clone/work profile.
-
If the org generates pushes but this device never receives them, re-enroll the factor.
- Action: remove the existing Okta Verify enrollment for that user/device in the admin console, then have the user enroll again by scanning the new QR code / activation flow.
- What indicates the problem: re-enrollment restores push immediately.
- Jump to: Fixes → Stale or broken device/app registration; factor needs re-enrollment.
Fixes
OS notifications or background activity disabled for Okta Verify
- iPhone:
Settings → Notifications → Okta Verify → Allow Notifications = OnSettings → General → Background App Refresh → OnSettings → Focusand verify no Focus mode is suppressing the app unexpectedly.
- Android:
Settings → Apps → Okta Verify → Notifications → AllowSettings → Apps → Okta Verify → Battery → Unrestricted(wording varies by vendor)- In vendor dashboards like Samsung/Xiaomi/OnePlus, remove the app from sleep/deep sleep lists.
- If the user installed a work-profile copy and a personal copy, keep only the enrolled instance active for sign-in.
- Verify it worked: send one fresh push; the notification should appear within 10-20 seconds without opening the app manually.
Device network path blocks push delivery (VPN, DNS filter, captive portal, firewall)
- On the device, disconnect VPN and retry on cellular. If that fixes it, narrow the blocker:
- Disable private DNS / encrypted DNS profile temporarily.
- Remove or pause content-filtering/security apps.
- Reconnect to Wi‑Fi only and test again.
- On managed networks, allow outbound connectivity required for mobile push ecosystems and avoid TLS interception for mobile push traffic. If your firewall team needs proof, capture a before/after test from the user perspective rather than guessing.
- Useful desktop-side sanity check for captive portal or broken egress from the same Wi‑Fi:
curl -I https://example.com
Typical captive-portal shape:
HTTP/1.1 302 Found
Location: http://wifi-login.local/portal
That does not prove APNs/FCM are blocked, but it does prove the network is not clean.
- Verify it worked: push fails on Wi‑Fi/VPN and succeeds on cellular before the fix; after network changes, it succeeds on the original network too.
Stale or broken device/app registration; factor needs re-enrollment
⚠️ Removing a user’s enrolled factor can lock them out if they have no backup factor. Confirm they have another allowed sign-in method or perform the reset while they are with you.
- In the admin console, open the user record and remove/reset the existing Okta Verify enrollment for the affected device.
- Have the user:
- Open Okta Verify.
- Remove the old account entry if it remains.
- Start a fresh sign-in/enrollment and scan the newly issued QR code / activation flow.
- Do not restore the app from an old device backup and assume push registration survived; treat restored devices as new enrollments.
- Verify it worked: the first post-enrollment test push arrives immediately and the approval event appears in the user’s auth/system log.
Device time drift or OS power-saving state breaks challenge handling
- iPhone:
Settings → General → Date & Time → Set Automatically = On- Disable
Low Power Mode
- Android:
Settings → System → Date & time → Set time automatically = On- Disable
Battery Saver Settings → Apps → Okta Verify → Battery → Unrestricted
- If the device is managed by MDM, check whether a compliance or battery policy is forcing restricted background execution.
- Verify it worked: after correcting time and disabling power-saving restrictions, a fresh push appears without opening the app.
User is on the wrong enrolled device or app clone/work profile
- Compare the enrolled device shown in the user’s factor list with the physical phone: model, last used timestamp, and whether the app instance is in a work profile.
- If the user changed phones, migrated via backup, or has both personal/work copies, remove the stale enrollment and enroll the current app instance only.
- On Android, check
Settings → Passwords & accountsand work profile app lists for duplicate Okta Verify installations. - Verify it worked: the enrolled device metadata now matches the handset in hand, and a test push lands on that exact app instance.
Org-side service issue or policy/routing change prevents usable push challenge
- Check your admin/system logs for a burst of push initiation events with no approvals across many users.
- Review any recent authentication policy changes that altered factor requirements or routing, especially if users are being sent to a factor they cannot complete.
- If the issue is widespread and started suddenly with no device commonality, escalate through your vendor support channel with:
- affected usernames count
- first failure timestamp with timezone
- one successful and one failed event sample
- device OS versions and whether both iOS and Android are affected
- Short-term mitigation: allow a backup factor for impacted users while push is investigated.
- Verify it worked: multiple users on different networks/devices can receive and approve push again, and approval events resume in logs.
Prevention
- Add a synthetic MFA canary account and test push every 5-10 minutes from a real device on a managed network and a cellular network. Alert if challenge creation occurs without approval inside your expected window.
- Require at least one backup factor in policy so re-enrollment is not a lockout event. Put the check in your onboarding automation/runbook: no user should have only one enrolled factor.
- Document mobile OS settings in MDM baselines for the authenticator app: notifications allowed, background refresh enabled, and battery optimization excluded. Example Android enterprise policy intent:
{
"packageName": "com.okta.android.auth",
"permissionGrants": [
{"permission": "android.permission.POST_NOTIFICATIONS", "policy": "GRANT"}
],
"batteryOptimization": "EXEMPT"
}
- Add network validation for managed Wi‑Fi/VPN changes: before rollout, test a real phone receiving push on the candidate network. Do not rely on browser-only checks.
- Flag restored/replaced devices for re-enrollment in your support workflow. If a user says "new phone" or "restored from backup," skip generic debugging and go straight to factor verification/re-enrollment.
- Monitor auth/system log ratios: push initiated vs push approved per hour. A sudden drop in approvals with stable sign-in volume is your early warning that delivery broke before the helpdesk queue explodes.
This article was written by an AI system and published pending human review. Verify anything you intend to act on.
Have a project in mind?
Get an instant AI price estimate for it, or talk directly to our team.
One email a month on what we learn building with AI