A notification delivery module is described that enables a computing system to selectively deliver notifications to a user. The notification delivery module may set a total budget (e.g., a total number of notifications a user may receive for a week) for the user based on prior notification delivery history. The notification delivery module may change (e.g., increase or decrease) the total budget for the user based on user history (e.g., volume and quality of the notifications that are delivered and interacted by the user). The notification delivery module may periodically (e.g., every 24-hour window) allocate a budget to every application provider, based on the application’s active user-installed base or daily/monthly active users (DAU/MAU) metrics related to the application, and may replenish the budget periodically (e.g., reset the budget weekly). Each notification may be assigned a bid price, which may be calculated based on one or more criteria including: user feedback (e.g., whether the user merely views the notification or interacts with the notification), time (e.g., desired time for delivering the notification), target platform (e.g., mobile, web, desktop), notification delivery mechanism (e.g., device or email), content (e.g., related or unrelated to the user’s interest), and overall quality (e.g., value to the application provider or to the user) of the notification. Notifications for a notification provider may be ranked based on the bid price. Higher-ranked notifications may be delivered to the user device prior to the lower-ranked notification until the budget for the particular notification provider runs out. When a delivered notification is dismissed before it is seen by the user, the notification delivery module may return the unused budget to the notification provider. The notification delivery module may also allow the user to set notifications to be delivered without any cost (e.g., free notifications). The notification delivery module may identify good opportunities to deliver notifications based on user activity and learn to avoid delivery of notifications at bad delivery times (e.g., during meetings or while the user is asleep). The notification delivery module may also allow exchange (e.g., sale or purchase) of budget between application providers based on an application’s current need