Watching Loyalty Popups That Appear Right After Login
Loyalty and points popups fired on login steal focus, hide balances from screen readers, and trap keyboard users. What to watch for in these post login interruptions.
Logging in should end at the account page. Instead, on many stores, it ends in a popup: points balance, a tier celebration, a spin or scratch mechanic for a reward. The popup fires a second or two after the page loads, takes focus without warning, and for a screen reader user it can erase the sense of where they just landed.
Timing is the problem as much as content. WCAG 2.2.1 is about timing, 2.4.3 about focus order, and 3.2.1 says a change of context should not happen just because an element received focus or the page settled. A delayed modal that was not triggered by the users last action fails that spirit even when each button inside it is labelled.
What the interruption does
A keyboard user who has started tabbing through their account page gets pulled back to a dialog they did not open. If the dialog has no proper focus management, closing it may return focus to the top of the page rather than to where they were. Do that twice in a session and people stop logging in, which the store reads as disengagement.
For screen reader users the balance itself is often an image or a canvas animation. The number of points, the only fact the popup exists to deliver, may be the one thing never announced. The celebration is visual only, and the information is trapped inside it.
What to watch in production
Log in on a test account with a keyboard only, and time what happens. Note when the popup fires, whether focus moved, whether there is a labelled close button, whether escape closes it, and where focus lands afterwards. Then do the same with a screen reader and write down whether the points balance was ever spoken.
Watch for stacking. Loyalty popup, cookie banner, and a chat prompt can all fire on the same login, in sequence, each stealing focus from the last. Individually each team calls theirs compliant. Together they make the page unusable, and only a production watch sees the collision.
Calmer patterns that still work
Show the points balance as a normal, persistent part of the account page, announced as text. If a tier genuinely changed, a status region that announces the change without moving focus does the job and respects 4.1.3.
If a dialog is unavoidable, open it from a user action, trap focus correctly while it is open, label every control, and return focus to the triggering point on close. Those are not extras. That is the minimum for a modal, and most loyalty widgets do not meet it.
Related reading
If this topic is useful, these earlier guides go deeper on connected questions: Watching Countdown Timers and Live Sale Clocks, Watching Age Verification Prompts for Barriers That Lock People Out, and Watching Gift Card Purchase Flows for Quiet Breakage.
Frequently asked questions
Are popups after login automatically an accessibility failure?
Not automatically, but a delayed popup that moves focus without a user action, cannot be closed by keyboard, or hides its main information from screen readers fails several WCAG criteria in practice.
How should a points balance be presented?
As ordinary text in the account page, in the heading structure or a status region, so it is announced and remains available. A balance shown only inside an animation or image is not available to everyone.
Does escape have to close a dialog?
A modal dialog should be dismissible by keyboard, and escape is the expected convention. Focus must also return to where the user was, not to the top of the page.
What is the best alternative to a celebratory popup?
A persistent, announced update on the account page itself. It informs without interrupting, and it is still there when the user goes looking for it later.