Patent Publication Number: US-10333933-B2

Title: Communicating notifications from a third party system to online system users via the online system

Description:
CROSS REFERENCE TO RELATED APPLICATIONS 
     This application is a continuation of U.S. application Ser. No. 14/641,295, filed Mar. 6, 2015, which is incorporated by reference in its entirety. 
    
    
     BACKGROUND 
     This disclosure relates generally to communicating content to online system users, and more specifically to identifying users to receive content from a third party system based on information maintained by an online system. 
     An online system, such as a social networking system, allows its users to connect to and communicate with other online system users. Users may create profiles on an online system that are tied to their identities and include information about the users, such as interests and demographic information. The users may be individuals or entities such as corporations or charities. Because of the increasing popularity of online systems and the increasing amount of user-specific information maintained by online systems, an online system provides an ideal forum for third party systems to distribute content to users. For example, third party systems may communicate messages identifying products or services by presenting content to online system users via an online system. 
     However, many applications executing on client devices and presenting content to users process content received by a client device to identify unwanted messages, for example, by applying one or more filters to the received content. Based on application of the filters, certain content may be stored instead of presented to a user by the client device. For example, content from a third party system satisfying certain filter criteria is placed in a particular folder of the application, while other content that does not satisfy the certain filter criteria is presented to the user by the application. However, filtering of content may generate false positives that erroneously prevent presentation of content by an application. 
     Certain applications present notifications to a user when the application receives content from a third party system. A notification is presented by a client device executing the application to indicate that the application has received content, prompting a user to access the application and view the content. For example, a notification presents a visual indication on a client device that an application has received content to cause a user to access the application and view the content. To regulate information presented by a client device, a user authorizes an application to present notifications via the client device, which limits the type and number of notifications presented by the client device. While notifications allow a third party system to increase the likelihood of a user viewing content, because many third party systems maintain a limited amount of information associated with users, limiting the ability of the third party system to select to receive various content. This reduces the amount and type of content identified to a user via notifications associated with applications. 
     SUMMARY 
     An online system, such as a social networking system, maintains a user profile associated with each user of the online system. A user profile associated with a user includes information describing the user (e.g., demographic information), and may be associated with actions performed by the user as well as connections between the user and additional users of the online system. Additionally, a user of the online system may authorize communication between a client device associated with the user and a third party system, allowing content to be communicated between the client device and the third party system. For example, the third party system communicates notifications to one or more client devices associated with users of the third party system. A notification is information from the third party system presented by a client device authorized by its associated user to communicate with the third party system. For example, a notification from the third party system is presented by a client device executing an application associated with the third party system to indicate the application has received content from the third party system, prompting a user to access the application and view the content. The notification may include the content from the third party system or a subset of the content from the third party system. Alternatively, the notification may be a prompt that retrieves content from the third party system when the user interacts with the prompt. In various embodiments, the third party system maintains limited information associated with the user, which limits the ability of the third party system to identify various sets of users having different characteristics. 
     To allow a third party system to more particularly identify sets of users for distributing content, the online system receives data from a third party system identifying users of the online system who have authorized communication with the third party system. In various embodiments, the online system receives a device identifier of a client device from the third party system and information associated with the third party system authorizing communication between the client device corresponding to the device identifier and the third party system. The online system identifies a user profile maintained by the online system including the device identifier and stores the information authorizing communication between the client device corresponding to the device identifier and the third party system in the user profile. Storing the information authorizing communication between the client device and the third party system allows the online system to identify users who have authorized communication with the third party system. For example, the online system receives a token from the third party system authorizing communication between a client device and the third party system and a device identifier associated with the token. The online system then stores the token in a user profile maintained by the online system that includes the device identifier. 
     Based on information associated with its users, the online system may transmit notifications from the third party system to various users of the online system. Because the online system maintains various types of information associated with its users, the online system may identify users based on criteria specified by the third party system and communicate notifications from the third party system to users satisfying the criteria, allowing the third party system to more particularly identify users to receive notifications without allowing the third party system to access information associated with the users by the online system. By transmitting notifications for the third party system to the identified users, the online system maintains the privacy of its users from the third party system. Hence, the online system receives a request from the third party system to communicate a notification to users of the online system satisfying at least a threshold number of criteria included in the request. The criteria specify one or more characteristics of users eligible to be presented with a notification included in the request or otherwise identified by the third party system. Associating different criteria with different notifications allows the third party system to customize presentation of various notifications to users of the online system who authorized communication with the third party system and who have specific characteristics, allowing notifications including different content to be presented to users of the online system. 
     The online system identifies user profiles associated with its users that include information authorizing communication between the third party system and a client device corresponding to a device identifier in the user profile and selects a set of the identified user profiles associated with characteristics satisfying at least the threshold number of criteria included in the request. The notification is communicated by the online system to client devices associated with users associated with the set of identified user profiles. For example, the online system transmits the notification to a client device corresponding to a device identifier in an identified user profile that is associated with information authorizing communication between a client device and the third party system. In some embodiments, the online system communicates a confirmation to the third party system that the notifications have been sent to users associated with the identified user profiles. The online system may select a communication channel used to communicate a notification to a user associated with an identified user profile. For example, the online system retrieves information form an identified user profile specifying one or more communication channel preferences or describing usage histories of various communication channels by the user associated with the identified user profile and selects a communication channel for transmitting the notification to the user based on the information retrieved from the identified user profile. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a block diagram of a system environment in which an online system operates, in accordance with an embodiment. 
         FIG. 2  is a block diagram of an online system, in accordance with an embodiment. 
         FIG. 3  is an interaction diagram of a method for communicating notifications from a third party system to users via an online system, in accordance with an embodiment. 
     
    
    
     The figures depict various embodiments for purposes of illustration only. One skilled in the art will readily recognize from the following discussion that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles described herein. 
     DETAILED DESCRIPTION 
     System Architecture 
       FIG. 1  is a block diagram of a system environment  100  for an online system  140 , such as a social networking system. The system environment  100  shown by  FIG. 1  comprises one or more client devices  110 , a network  120 , one or more third-party systems  130 , and the online system  140 . In alternative configurations, different and/or additional components may be included in the system environment  100 . The embodiments described herein can be adapted to social networking systems as well. 
     The client devices  110  are one or more computing devices capable of receiving user input as well as transmitting and/or receiving data via the network  120 . In one embodiment, a client device  110  is a conventional computer system, such as a desktop or a laptop computer. Alternatively, a client device  110  may be a device having computer functionality, such as a personal digital assistant (PDA), a mobile telephone, a smartphone or another suitable device. A client device  110  is configured to communicate via the network  120 . In one embodiment, a client device  110  executes an application allowing a user of the client device  110  to interact with the online system  140 . For example, a client device  110  executes a browser application to enable interaction between the client device  110  and the online system  140  via the network  120 . In another embodiment, a client device  110  interacts with the online system  140  through an application programming interface (API) running on a native operating system of the client device  110 , such as IOS® or ANDROID™. 
     The client devices  110  are configured to communicate via the network  120 , which may comprise any combination of local area and/or wide area networks, using both wired and/or wireless communication systems. In one embodiment, the network  120  uses standard communications technologies and/or protocols. For example, the network  120  includes communication links using technologies such as Ethernet, 802.11, worldwide interoperability for microwave access (WiMAX), 3G, 4G, code division multiple access (CDMA), digital subscriber line (DSL), etc. Examples of networking protocols used for communicating via the network  120  include multiprotocol label switching (MPLS), transmission control protocol/Internet protocol (TCP/IP), hypertext transport protocol (HTTP), simple mail transfer protocol (SMTP), and file transfer protocol (FTP). Data exchanged over the network  120  may be represented using any suitable format, such as hypertext markup language (HTML) or extensible markup language (XML). In some embodiments, all or some of the communication links of the network  120  may be encrypted using any suitable technique or techniques. 
     One or more third party systems  130  may be coupled to the network  120  for communicating with the online system  140 , which is further described below in conjunction with  FIG. 2 . In one embodiment, a third party system  130  is an application provider communicating information describing applications for execution by a client device  110  or communicating data to client devices  110  for use by an application executing on the client device. In other embodiments, a third party system  130  provides content or other information for presentation via a client device  110 . A third party system  130  may also communicate information to the online system  140 , such as advertisements, content, or information about an application provided by the third party system  130 . 
     In various embodiments, a third party system  130  communicates notifications to one or more client devices  110  associated with users of the third party system  130 . A notification is information from the third party system  130  presented by a client device  110  authorized by its associated user to communicate with the third party system  130 . For example, a notification from the third party system  130  is presented by a client device  110  executing an application associated with the third party system  130  to indicate the application has received content from the third party system  130 , prompting a user to access the application and view the content. The notification may include the content from the third party system  130  or a subset of the content from the third party system  130 . Alternatively, the notification may be a prompt that retrieves content from the third party system  130  when the user interacts with the prompt. For example, a notification presents a visual indication on a client device  110  that an application associated with the third party system  130  has content for presentation to a user to cause the user to access the application associated with the third party system  130  and view the content via the client device  110 . 
     To communicate a notification to a client device  110 , the third party system  130  receives a device identifier associated with the client device  110  and generates information authorizing communication between the client device  110  and the third party system  130 . In some embodiments, the third party system  130  stores the device identifier in association with the information authorizing communication between the client device  110  and the third party system  130 . The third party system  130  communicates the information authorizing communication between the client device  110  and the third party system  130  to the client device, which stores the information. For example, the third party system  130  generates a token associated with a device identifier of a client device  110  and communicates the token to the client device  110  for storage. When the third party system  130  communicates a notification to the client device  110 , the token (or other information authorizing communication between the client device  110  and the third party system  130 ) is included in the notification, allowing the client device  110  to verify the notification is from the third party system  130 ; for example, the client device  110  compares a token in the notification to a token from the third party system  130  stored by the client device  110  to verify the notification is from the third party system  130 . 
       FIG. 2  is a block diagram of an architecture of the online system  140 . The online system  140  shown in  FIG. 2  includes a user profile store  205 , a content store  210 , an action logger  215 , an action log  220 , an edge store  225 , a notification management module  230 , a content selection module  235 , and a web server  240 . In other embodiments, the online system  140  may include additional, fewer, or different components for various applications. Conventional components such as network interfaces, security functions, load balancers, failover servers, management and network operations consoles, and the like are not shown so as to not obscure the details of the system architecture. In one embodiment, the online system  140  is a social networking system. 
     Each user of the online system  140  is associated with a user profile, which is stored in the user profile store  205 . A user profile includes declarative information about the user that was explicitly shared by the user and may also include profile information inferred by the online system  140 . In one embodiment, a user profile includes multiple data fields, each describing one or more attributes of the corresponding online system user. Examples of information stored in a user profile include biographic, demographic, and other types of descriptive information, such as work experience, educational history, gender, hobbies or preferences, location and the like. A user profile may also store other information provided by the user, for example, images or videos. In certain embodiments, images of users may be tagged with information identifying the online system users displayed in an image. A user profile in the user profile store  205  may also maintain references to actions by the corresponding user performed on content items in the content store  210  and stored in the action log  220 . 
     While user profiles in the user profile store  205  are frequently associated with individuals, allowing individuals to interact with each other via the online system  140 , user profiles may also be stored for entities such as businesses or organizations. This allows an entity to establish a presence on the online system  140  for connecting and exchanging content with other online system users. The entity may post information about itself, about its products or provide other information to users of the online system using a brand page associated with the entity&#39;s user profile. Other users of the online system may connect to the brand page to receive information posted to the brand page or to receive information from the brand page. A user profile associated with the brand page may include information about the entity itself, providing users with background or informational data about the entity. 
     The content store  210  stores objects that each represent various types of content. Examples of content represented by an object include a page post, a status update, a photograph, a video, a link, a shared content item, a gaming application achievement, a check-in event at a local business, a brand page, or any other type of content. Online system users may create objects stored by the content store  210 , such as status updates, photos tagged by users to be associated with other objects in the online system  140 , events, groups or applications. In some embodiments, objects are received from third-party applications or third-party applications separate from the online system  140 . In one embodiment, objects in the content store  210  represent single pieces of content, or content “items.” Hence, online system users are encouraged to communicate with each other by posting text and content items of various types of media to the online system  140  through various communication channels. This increases the amount of interaction of users with each other and increases the frequency with which users interact within the online system  140 . 
     Certain objects in the content store  210  may be identified as associated with one or more applications. For example, an object associated with an application is an advertisement identifying the application. As another example, an object associated with a gaming application is a web page describing the gaming application. The web page may include a link for purchasing the gaming application, an image showing the gaming application, text describing installation or use of the gaming application, etc. Alternatively and additionally, an object related to an application may be group associated with the application and including one or more users of the online system  140 . As another example, an object identifies an item for use within the application as well as a price specifying an amount of compensation to a third party system  130  associated with the application to allow a user to use the item when interacting with the application. For example, an object identifies a virtual currency spent within an application to provide a user with additional features as well as an amount of actual currency provided to a third party system  130  associated with the application to obtain the virtual currency. However, any other suitable type of object may be associated with an application and maintained in the content store  210 . For example, content posted to the online system  140  identifying an application or relating to the application is identified as associated with the application or an invitation related to the application are identified as associated with the application. In various embodiments, an application identifier specifying an application is associated with an object associated with the application to allow the online system  140  to identify objects associated with the application. 
     The action logger  215  receives communications about user actions internal to and/or external to the online system  140 , populating the action log  220  with information about user actions. Examples of actions include adding a connection to another user, sending a message to another user, uploading an image, reading a message from another user, viewing content associated with another user, and attending an event posted by another user. In addition, a number of actions may involve an object and one or more particular users, so these actions are associated with those users as well and stored in the action log  220 . 
     The action log  220  may be used by the online system  140  to track user actions on the online system  140 , as well as actions on third party systems  130  that communicate information to the online system  140 . Users may interact with various objects on the online system  140 , and information describing these interactions is stored in the action log  220 . Examples of interactions with objects include: commenting on posts, sharing links, checking-in to physical locations via a mobile device, accessing content items, and any other suitable interactions. Additional examples of interactions with objects on the online system  140  that are included in the action log  220  include: commenting on a photo album, communicating with a user, establishing a connection with an object, joining an event, joining a group, creating an event, authorizing an application, using an application, expressing a preference for an object (“liking” the object), and engaging in a transaction. Additionally, the action log  220  may record a user&#39;s interactions with advertisements on the online system  140  as well as with other applications operating on the online system  140 . In some embodiments, data from the action log  220  is used to infer interests or preferences of a user, augmenting the interests included in the user&#39;s user profile and allowing a more complete understanding of user preferences. 
     The action log  220  may also store user actions taken on a third party system  130 , such as an external website, and communicated to the online system  140 . For example, an e-commerce website may recognize a user of an online system  140  through a social plug-in enabling the e-commerce website to identify the user of the online system  140 . Because users of the online system  140  are uniquely identifiable, e-commerce web sites, such as in the preceding example, may communicate information about a user&#39;s actions outside of the online system  140  to the online system  140  for association with the user. Hence, the action log  220  may record information about actions users perform on a third party system  130 , including webpage viewing histories, advertisements that were engaged, purchases made, and other patterns from shopping and buying. 
     In one embodiment, the edge store  225  stores information describing connections between users and other objects on the online system  140  as edges. Some edges may be defined by users, allowing users to specify their relationships with other users. For example, users may generate edges with other users that parallel the users&#39; real-life relationships, such as friends, co-workers, partners, and so forth. Other edges are generated when users interact with objects in the online system  140 , such as expressing interest in a page on the online system  140 , sharing a link with other users of the online system  140 , and commenting on posts made by other users of the online system  140 . 
     In one embodiment, an edge may include various features each representing characteristics of interactions between users, interactions between users and objects, or interactions between objects. For example, features included in an edge describe rate of interaction between two users, how recently two users have interacted with each other, the rate or amount of information retrieved by one user about an object, or the number and types of comments posted by a user about an object. The features may also represent information describing a particular object or user. For example, a feature may represent the level of interest that a user has in a particular topic, the rate at which the user logs into the online system  140 , or information describing demographic information about a user. Each feature may be associated with a source object or user, a target object or user, and a feature value. A feature may be specified as an expression based on values describing the source object or user, the target object or user, or interactions between the source object or user and target object or user; hence, an edge may be represented as one or more feature expressions. 
     The edge store  225  also stores information about edges, such as affinity scores for objects, interests, and other users. Affinity scores, or “affinities,” may be computed by the online system  140  over time to approximate a user&#39;s interest in an object or in another user in the online system  140  based on the actions performed by the user. A user&#39;s affinity may be computed by the online system  140  over time to approximate a user&#39;s interest in an object, a topic, or another user in the online system  140  based on actions performed by the user. Computation of affinity is further described in U.S. patent application Ser. No. 12/978,265, filed on Dec. 23, 2010, U.S. patent application Ser. No. 13/690,254, filed on Nov. 30, 2012, U.S. patent application Ser. No. 13/689,969, filed on Nov. 30, 2012, and U.S. patent application Ser. No. 13/690,088, filed on Nov. 30, 2012, each of which is hereby incorporated by reference in its entirety. Multiple interactions between a user and a specific object may be stored as a single edge in the edge store  225 , in one embodiment. Alternatively, each interaction between a user and a specific object is stored as a separate edge. In some embodiments, connections between users may be stored in the user profile store  205 , or the user profile store  205  may access the edge store  225  to determine connections between users. 
     The notification management module  230  receives data from a third party system  130  identifying users of the online system  140  who have authorized communication between the users and a third party system  130 . In various embodiments, the notification management module  230  receives a device identifier of a client device  110  from the third party system  130  and information associated with the third party system  130  authorizing communication between the client device  110  corresponding to the device identifier and the third party system  130 . The notification management module  230  retrieves a user profile from the user profile store  205  including the device identifier and stores the information authorizing communication between the client device  110  corresponding to the device identifier and the third party system  130  in the user profile, allowing the online system  140  to identify users who have authorized communication with the third party system  130 . For example, the notification management module  230  receives a token from the third party system  130  authorizing communication between a client device  110  and the third party system  130  and a device identifier associated with the token. The notification management module  230  identifies a user profile including the device identifier and stores the token in the identified user profile. 
     Alternatively, the notification management module  230  receives an application-specific identifier of a user of an application associated with the third party system  130  from the third party system  130  and information associated with the third party system  130  authorizing communication between the application corresponding to the device identifier and the third party system  130  when the user corresponding to the application-specific identifier accesses the application. The notification management module  230  retrieves a user profile from the user profile store  205  including the application-specific identifier and stores the information authorizing communication between the application-specific identifier and the third party system  130  in the user profile, allowing the online system  140  to identify users who have authorized communication with the third party system  130  via the application and correspond to the application-specific identifier. Examples of application-specific identifiers are described in U.S. patent application Ser. No. 14/458,210, filed on Aug. 12, 2014, which is hereby incorporated by reference in its entirety. For example, the notification management module  230  receives a token from the third party system  130  authorizing communication between a client device  110  and the third party system  130  and an application-specific identifier associated with the token. The notification management module  230  identifies a user profile including or associated with the application-specific identifier and stores the token in the identified user profile. Storing application-specific identifiers in association with information authorizing communication between the client device  110  executing the application and the third party system  130  allows the online system  140  to regulate communication of notifications to a client device  110  executing the application based on the user accessing the application (e.g., when a user associated with the application-specific identifier associated with the information authorizing communication between the client device  110  accesses the application, notifications are communicated, but are not communicated when a user associated with a different application-specific identifier accesses the application). Additionally, the notification management module  230  may receive a combination of an application-specific identifier and a device identifier from the third party system  130  and information authorizing communication between the third party system  130  and an application when the user corresponding to the application-specific identifier accesses the application via a client device  110  corresponding to the device identifier. The online system  140  then stores the information authorizing communication between the third party system  130  and the application-specific identifier executing on the client device  110  corresponding to the device identifier in a user profile including the application-specific identifier and the device identifier. 
     In addition to storing information authorizing communication between users of the online system  140  and the third party system  130 , the notification management module  230  may transmit notifications from the third party system  130  to various users of the online system  140 . Because the online system  140  maintains various types of information associated with its users, the notification management module  230  allows the third party system  130  to leverage information associated with users by the online system  140  to distribute notifications to users. However, the notification management module  230  maintains the privacy of the online system users by transmitting notifications from the third party system  130  to online system users rather than allowing the third party system  130  to access information associated with users by the online system  140  or identifying online system users satisfying specified criteria to the third party system  130 . Hence, the notification management module  230  receives a request from the third party system  130  to communicate a notification to users of the online system  140  satisfying at least a threshold number of criteria included in the request. One or more criteria may be included in the request or may be communicated to the notification management module  230  by the third party system  130  for storage by the notification management module  230  in association with the third party system  130 . The criteria specify one or more characteristics of users eligible to be presented with a notification included in the request or otherwise identified by the third party system  130 . Associating different criteria with different notifications allows the third party system  130  to tailor presentation of various notifications to users of the online system  130  who authorized communication with the third party system  130  and who have specific characteristics, allowing notifications including different content to be presented to users of the online system  140  having different characteristics. For example, criteria specify demographic information, connections, or actions associated with a user. In some embodiments, criteria may be associated with multiple notifications from the third party system  130 . 
     In one embodiment, criteria may specify actions or types of connections between a user and another user or an object of the online system  140 . Criteria may also specify interactions between a user and objects performed external to the online system  140 , such as on the third party system  130 . For example, criteria identifies users that have taken a particular action, such as sending a message to another user, using an application, joining a group, leaving a group, joining an event, generating an event description, purchasing or reviewing a product or service using an online marketplace, requesting information from a third-party system  130 , or any other suitable action. Including actions in criteria allows the third party system  130  to further refine users eligible to be presented with various notifications. As another example, the criteria identifies users having a connection to another user or object or having a particular type of connection to another user or object. 
     The notification management module  230  identifies user profiles from the user profile store  205  including information authorizing communication between the third party system  130  and a client device  110  corresponding to a device identifier in the user profile and selects a set of the identified user profiles associated with characteristics satisfying at least the threshold number of criteria included in the request. The notification is communicated by the notification management module  230  to client devices  110  associated with users associated with the set of identified user profiles. For example, the notification management module  230  transmits the notification to a client device  110  corresponding to a device identifier in an identified user profile that is associated with information authorizing communication between a client device  110  and the third party system  130 ; however, the notification management module  230  does not transmit the notification to client devices  110  that do not correspond to the device identifier associated with information authorizing communication between the client device  110  and the third party system. As another example, the notification management module  230  transmits the notification to one or more client devices  110  on which a user corresponding to an application-specific identifier associated with information authorizing communication between the application and the third party system  130  accesses an application. Additionally, the notification management module  230  transmits the notification to a client device  110  corresponding to a device identifier associated with information authorizing communication with the client device  130  and executing an application corresponding to an application-specific identifier associated with the information authorizing communication between the client device  110  and the third party system  130 . In some embodiments, the online system  140  communicates a confirmation to the third party system  130  that the notifications have been sent to users associated with the identified user profiles. Additionally, the notification management module  230  may select a communication channel used to communicate a notification to a user associated with an identified user profile. For example, the notification management module  230  retrieves information from an identified user profile specifying one or more communication channel preferences or describing usage histories of various communication channels by the user associated with the identified user profile and selects a communication channel for transmitting the notification to the user based on the information retrieved from the identified user profile. As an example, the notification management module  230  identifies a preference for a specific communication channel from the identified user profile and transmits the notification to the user via the specific communication channel to increase the likelihood of the user viewing or accessing the notification. Selection of user profiles and communication of a notification to users associated with the selected user profiles is further described below in conjunction with  FIG. 3 . 
     The content selection module  235  selects one or more content items for communication to a client device  110  to be presented to a viewing user. Content items eligible for presentation to the viewing user are retrieved from the content store  210 , or from another source, by the content selection module  235 , which selects one or more of the content items for presentation to the viewing user. A content item eligible for presentation to the viewing user is a content item associated with at least a threshold number of targeting criteria satisfied by characteristics of the viewing user or is a content item that is not associated with targeting criteria. In various embodiments, the content selection module  235  includes content items eligible for presentation to the viewing user in one or more selection processes, which identify a set of content items for presentation to the viewing user. For example, the content selection module  235  determines a measure of relevance of various content items to the user based on characteristics associated with the user by the social networking system  140  based on the user&#39;s affinity for different content items and selects content items for presentation to the user based on the determined measures of relevance. As an additional example, the content selection module  235  selects content items having the highest measures of relevance or having at least a threshold measure of relevance for presentation to the user. Alternatively, the content selection module  235  ranks content items based on their associated measures of relevance and selects content items having the highest positions in the ranking or having at least a threshold position in the ranking for presentation to the user. 
     Content items selected for presentation to the user may include ad requests or other content items associated with bid amounts. The content selection module  235  uses the bid amounts associated with various content items when selecting content for presentation to the viewing user. In various embodiments, the content selection module  235  determines an expected value associated with various content items based on their bid amounts and selects content items associated with a maximum expected value or associated with at least a threshold expected value for presentation. An expected value associated with a content item represents an expected amount of compensation to the social networking system  140  for presenting a content item. For example, the expected value associated with an ad request is a product of the ad request&#39;s bid amount and a likelihood of the user interacting with the ad content from the ad request. The content selection module  235  may rank ad requests based on their associated expected values and select ad requests having at least a threshold position in the ranking for presentation to the user. In some embodiments, the content selection module  235  may rank both content items and ad requests in a unified ranking based on bid amounts associated with ad requests and measures of relevance associated with content items and ad requests. Based on the unified ranking, the content selection module  235  selects content for presentation to the user. Selecting ad requests and other content items through a unified ranking is further described in U.S. patent application Ser. No. 13/545,266, filed on Jul. 10, 2012, which is hereby incorporated by reference in its entirety. 
     In various embodiments, the content selection module  235  presents content to a user through a feed including multiple content items. For example, the feed includes content items describing actions performed by users of the online system  140  as well as ad content from one or more ad requests selected for presentation to a user. The content selection module  235  may also determine the order in which selected content items or advertisements are presented via the feed. For example, the content selection module  235  orders content items or advertisements in the feed based on likelihoods of the user interacting with various content items or ad requests. 
     The web server  240  links the online system  140  via the network  120  to the one or more client devices  110 , as well as to the one or more third party systems  130 . The web server  240  serves web pages, as well as other content, such as JAVA®, FLASH®, XML and so forth. The web server  240  may receive and route messages between the online system  140  and the client device  110 , for example, instant messages, queued messages (e.g., email), text messages, short message service (SMS) messages, or messages sent using any other suitable messaging technique. A user may send a request to the web server  240  to upload information (e.g., images or videos) that are stored in the content store  210 . Additionally, the web server  240  may provide application programming interface (API) functionality to send data directly to native client device operating systems, such as IOS®, ANDROID™, WEBOS® or BlackberryOS. 
     Communicating Notifications from a Third Party System via an Online System 
       FIG. 3  is an interaction diagram of a method for communicating notifications from a third party system  130  to users via an online system  140 . In other embodiments, the method may include different and/or additional steps than those shown in  FIG. 3 . Additionally, steps of the method may be performed in different orders than the order described in conjunction with  FIG. 3 . 
     The online system  140  maintains  305  user profiles associated with each user of the online system  140 . A user profile associated with a user by the online system  140  includes declarative information about the user that was explicitly shared by the user and may also include information inferred by the online system  140 . Examples of information stored in a user profile include biographic, demographic, and other types of descriptive information, such as work experience, educational history, gender, hobbies or preferences, location and the like. Additionally, a user profile includes a device identifier associated with a user that identifies a client device  110  associated with the user. For example, the device identifier is an alphanumeric string associated with a client device  110  and uniquely identifying the client device  110 . The device identifier may be an electronic serial number (ESN), an international mobile station equipment identity (IMEI) number, or other information uniquely identifying a client device  110 . However, any suitable information uniquely identifying a client device  110  associated with a user may be included in the user profile. Multiple device identifiers may be included in a user profile to identify different client devices  110  associated with a user. In some embodiments, the device identifier is included in a user profile based on information received by the online system  140  when the user installs an application associated with the online system  140  on a client device  110 . Information received by the online system  140  when the user installs the application associated with the online system  140  includes the device identifier associated with the client device  110  and information identifying the user to the online system  140  (e.g., a user name or other information used by the online system  140  to identify the user). The online system  140  retrieves a user profile associated with the information identifying the user to the online system  140  and stores the device identifier associated with the client device  110  in the user profile. In various embodiments, the online system  140  receives an application-specific identifier associated with the user by the application when the user installs the application on a client device  110  and stores the application-specific identifier in the user profile. 
     When a user of the online system  140  authorizes  310  communication between a client device  110  and a third party system  130 , the client device  110  requests  315  information authorizing communication between the third party system  130  and the client device  110  from the client device  110 . For example, when a user of the client device  110  authorizes  310  an application associated with a third party system  130  to present notifications to the user via the client device  110 , the client device  110  requests  315  information authorizing communication between the third party system  130  and the client device  110  from the third party system  130 . When requesting information authorizing communication between the third party system  130 , the client device  110  includes a device identifier associated with the client device  110  in the request communicated to the third party system  130 . In some embodiments, the client device  110  requests  315  information authorizing communication between the third party system  130  and an application-specific identifier or between the third party system  130  and a combination of a device identifier and an application-specific identifier. The device identifier and/or the application-specific identifier is included in the request communicated to the third party system in the preceding examples. The third party system  130  generates the information authorizing communication between the third party system  130  and the client device  110  and communicates  320  the information to the client device  110 , which locally stores the information authorizing communication between the third party system  130  and the client device  110 . For example, the third party system  130  generates a token based at least in part on the device identifier and communicates  320  the token to the client device  110  for storage and association with the application associated with the third party system  130 . In other embodiments, the third party system  130  generates the token based at least in part on the application-specific identifier or on the combination of the application-specific identifier and the device identifier. Additionally, the third party system  130  stores  325  the information authorizing communication between the client device  110  and the third party system  130  in association with the device identifier associated with the client device  110 . 
     After storing  325  information authorizing communication between various client devices  110  and the third party system  130 , the third party system  130  communicates  330  information identifying one or more device identifiers associated with client devices  110  and authorizing communication between the client devices  110  and the third party system  130 . In various embodiments, the third party system  130  communicates  330  device identifiers each associated with information authorizing communication between a client device  110  corresponding to the device identifier to the online system  140 . For example, the third party system  130  communicates  330  pairings of device identifiers and tokens, where a device identifier is associated with a token (or other information authorizing communication between the client device  110  corresponding to the device identifier and the third party system  130 ) to the online system  140 . In some embodiments, the third party system  130  communicates the device identifiers and information authorizing communication between client devices  110  and the third party system  130  after storing at least a threshold number of device identifiers. Alternatively, the third party system  130  communicates a device identifier and information authorizing communication between the third party system  130  and a client device  110  corresponding to the device identifier to the online system  140  after storing  325  the device identifier and the information authorizing communication between the third party system  130  and the client device  110  corresponding to the device identifier to the online system  140 . 
     The online system  140  identifies  335  user profiles maintained  305  by the online system  140  that each include a device identifier included in the information received from the third party system  130 . If a user profile includes multiple device identifiers, the online system  140  identifies a user profile having at least one device identifier matching a device identifier included in the information received from the third party system  130 . In some embodiments, the user profile associates a type with various device identifiers (e.g., primary, secondary, etc.) and identifies  335  user profiles having a device identifier associated with a specific type and matching a device identifier included in the information received from the third party system  130 . For each identified user profile, the online system  140  stores  340  information authorizing communication between the third party system  130  and a client device  110  corresponding to a device identifier included in the information received from the third party system  130 . As an example, the online system  140  stores  340  a token associated with a device identifier an identified user profile including the device identifier. Storing  340  information authorizing communication between the third party system  130  and a client device  110  in user profiles maintained  305  by the online system  140  allows the online system  140  to identify users of the online system  140  who have authorized communication between the third party system  130  and a client device  110 . In other embodiments, the online system  140  stores  340  a token associated with an application-specific identifier in user profiles maintained by the online system  140  identify users of applications who have authorized communication between the third party systems  130  and an application or stores  340  a token associated with a combination of application-specific identifier and a device identifier to identify users who have authorized communication between the third party system  130  and an account used to access an application executing on a specific client device  130 . 
     With information identifying online system users who authorized communication between the third party system  130  and client devices  110  associated with the users maintained by the online system  140 , information associated with the online system users  140  by the online system  140  may be used by the third party system  130  to communicate notifications to the online system users. The third party system  130  communicates  345  a request to the online system  140  including a notification and criteria specifying characteristics of users to receive the request; hence, the notification is to be communicated to users of the online system  140  having characteristics satisfying at least a threshold number of the criteria included in the request. Criteria included in the request from the third party system  130  may identify demographic characteristics (e.g., location, age, occupation, educational history, gender, etc.), actions (e.g., sharing a content item with an additional user, indicating a preference for a content item, providing a comment associated with a content item), performed within a specified time interval, connections between a user and additional users or objects, or any other suitable information associated with users. Various combinations of information associated with the users may be specified by the request, allowing the third party system  130  to define an audience of users having specific characteristics specified by the request to receive the notification. 
     After receiving the request, the online system  140  selects  350  a set of user profiles, where each user profile in the set is associated with criteria satisfying at least a threshold number of the criteria in the request and includes information authorizing communication between the third party system  130  and a client device  110  corresponding to a device identifier included in the user profile (or including information authorizing communication between the third party system  130  and an application-specific identifier used to access an application associated with the third party system  130 , or including information authorizing communication between the third party system  130  and a combination of a device identifier and an application-specific identifier). For example, if the request includes criteria specifying an age range of 18-25, a gender of male, and a location of Raleigh, N.C., the online system  140  selects  350  user profiles including information identifying male users between 18-25 and a location of Raleigh, N.C. that also include information authorizing communication between the third party system  130  and a client device  110  corresponding to one or more device identifiers included in the user profile. In other examples, the criteria identify one or more types of actions performed by online system users within a specified time interval, identify combinations of demographic information and actions associated with users, or identify any other suitable information to identify online system users. The online system  140  then transmits  355  the notification to client devices  110  associated with users included in the identified set of user profiles. The notification transmitted  355  to a client device  110  includes the information authorizing communication between the client device  110  and the third party system  130  as well as content, allowing the client device  110  to verify the notification is associated with the third party system through the information authorizing communication between the client device  110  and the third party system  130 . Hence, the online system  140  determines whether a user profile associated with a user includes information authorizing communication between the third party system  130  and a client device  110  corresponding to a device identifier in the user profile and also is associated with at least a threshold number of characteristics satisfying criteria included in the request. If the online system  140  determines the user profile associated with the user includes information authorizing communication between the third party system  130  and the client device  110  corresponding to the device identifier in the user profile and also is associated with at least a threshold number of characteristics satisfying criteria included in the request, the online system  140  transmits  355  the notification to the client device  110  corresponding to the device identifier. The online system  140  may communicate a confirmation to the third party system  130  after transmitting  355  notifications to the client devices  110  associated with users in the identified set of user profiles or may communicate a confirmation to the third party system  130  after transmitting  335  notifications to client devices  110  associated with different users in the identified set of user profiles. However, the online system  140  may communicate a confirmation to the third party system after any transmission of the notifications by the online system  140  satisfies any suitable criteria. 
     In some embodiments, the online system  140  determines a type of communication channel used to transmit  355  the notification to various users. For example, the online system  140  identifies a communication channel specified by a user profile in the set of user profiles and transmits  355  the notification to a client device corresponding to a client device identifier in the user profile via the communication channel specified by the user profile. Example communication channels include e-mail, text messaging, multimedia messaging, voice messaging, and push notification messaging. Accounting for information in a user profile identifying a communication channel allows the online system  140  to communicate the notification to a user through a communication channel most likely to be accessed by the user. The online system  140  may reformat the notification included in the request for communication via the identified communication channel or may request a reformatted notification from the third party system  130  based on the identified communication channel and transmits  355  the reformatted notification to the client device  110  when it is received from the third party system  130 . Alternatively, the online system  140  transmits  355  the notification to the client device  110  using a communication channel specified by the third party system  130  in the request. 
     SUMMARY 
     The foregoing description of the embodiments has been presented for the purpose of illustration; it is not intended to be exhaustive or to limit the patent rights to the precise forms disclosed. Persons skilled in the relevant art can appreciate that many modifications and variations are possible in light of the above disclosure. 
     Some portions of this description describe the embodiments in terms of algorithms and symbolic representations of operations on information. These algorithmic descriptions and representations are commonly used by those skilled in the data processing arts to convey the substance of their work effectively to others skilled in the art. These operations, while described functionally, computationally, or logically, are understood to be implemented by computer programs or equivalent electrical circuits, microcode, or the like. Furthermore, it has also proven convenient at times, to refer to these arrangements of operations as modules, without loss of generality. The described operations and their associated modules may be embodied in software, firmware, hardware, or any combinations thereof. 
     Any of the steps, operations, or processes described herein may be performed or implemented with one or more hardware or software modules, alone or in combination with other devices. In one embodiment, a software module is implemented with a computer program product comprising a computer-readable medium containing computer program code, which can be executed by a computer processor for performing any or all of the steps, operations, or processes described. 
     Embodiments may also relate to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, and/or it may comprise a general-purpose computing device selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a non-transitory, tangible computer readable storage medium, or any type of media suitable for storing electronic instructions, which may be coupled to a computer system bus. Furthermore, any computing systems referred to in the specification may include a single processor or may be architectures employing multiple processor designs for increased computing capability. 
     Embodiments may also relate to a product that is produced by a computing process described herein. Such a product may comprise information resulting from a computing process, where the information is stored on a non-transitory, tangible computer readable storage medium and may include any embodiment of a computer program product or other data combination described herein. 
     Finally, the language used in the specification has been principally selected for readability and instructional purposes, and it may not have been selected to delineate or circumscribe the inventive subject matter. It is therefore intended that the scope of the patent rights be limited not by this detailed description, but rather by any claims that issue on an application based hereon. Accordingly, the disclosure of the embodiments is intended to be illustrative, but not limiting, of the scope of the patent rights, which is set forth in the following claims.