Tutorials Push Notification Icon Prioritization System — 4 Fallback Levels Written by Adam Muiz 20 Jul 2026 Updated: 06 Aug 2026 3 min read Have you ever seen push notifications from a website appear with an inappropriate icon? On Windows the bell.svg appears, on mobile the favicon appears. This happens because there is no clear icon priority — the system just sends the default icon configured in settings. However, ideally, notifications about new articles should display a thumbnail of the article, or at least the first image of the article content. Only if it really isn't there, fallback to the default icon or favicon.The problemIn the Browser Push Notifications plugin that I made, the Default Notification Icon configuration can only be filled with one static URL. As a result: All notifications use the same icon (bell.svg)There is no visual context to the promoted articleOn different devices, icons may appear different due to OS fallback 4 Level Fallback SystemThe solution: every time a push notification is sent including an article URL, the system automatically looks for the icon in the following priority order: PrioritySourceExamples 1Article thumbnail/static/img/2026/07/push-thumb-hd.png 2First image in content<img src="..."> 3Default Notification IconSettings CMS → bell.svg 4Website faviconSettings → site_favicon The way it works is simple: when the push notification API receives a request with an article URL, it extracts the slug from the URL, queries the database to find the post, then checks the thumbnail. If there is a thumbnail, use it straight away. Otherwise, regex <img src="..."> from the content to grab the first image. If it's still not there, fallback to configuration.ImplementationOn the /api/push/send.php endpoint, the logic is just a few lines:// Auto-resolve icon: thumbnail → first image → default → favicon if (empty($icon) && $url !== '') { $slug = extract_slug_from_url($url); $post = query_post_by_slug($slug); if ($post->thumbnail) { $icon = $post->thumbnail; } elseif (first_image_from_content($post->content)) { $icon = $first_image; } } if (empty($icon)) { $icon = get_default_icon_setting(); } if (empty($icon)) { $icon = get_favicon_setting(); }With this system, every article published via the scheduler will automatically have its thumbnail appear in the push notification. No additional configuration required — just ensure the push API is called with the correct article URL.ConclusionThis 4-level fallback system ensures push notifications always appear with the relevant icon. The priority of article thumbnails provides better visual context than the same bell icon. And if the article doesn't have a thumbnail at all, there's still a fallback to the website favicon, so it's never empty.The complete code for this plugin can be seen at github.com/adammuizweb/browser-push.