BACKGROUNDThis specification relates to information presentation.
The Internet provides access to a wide variety of resources. For example, video and/or audio files, as well as web pages for particular subjects or particular news articles, are accessible over the Internet. Access to these resources presents opportunities for other content (e.g., advertisements) to be provided with the resources. For example, a web page can include slots in which content can be presented. These slots can be defined in the web page or defined for presentation with a web page, for example, along with search results.
Content item slots can be allocated to content sponsors as part of a reservation system, or in an auction. For example, content sponsors can provide bids specifying amounts that the sponsors are respectively willing to pay for presentation of their content. In turn, an auction can be run, and the slots can be allocated to sponsors according, among other things, to their bids and/or the relevance of the sponsored content to content presented on a page hosting the slot or a request that is received for the sponsored content. The content can then be provided to the user on any devices associated with the user such as a home personal computer (PC), a smartphone, a laptop computer, or some other user device.
SUMMARYIn general, one innovative aspect of the subject matter described in this specification can be implemented in methods that include a computer-implemented method for providing content. The method includes receiving login credentials provided by a user when communicating through a first user device. The method further includes creating a temporal identifier for the user based at least in part on the login credentials and a temporary key. The method further includes providing the temporal identifier to the first user device in the form of a cookie. The method further includes, subsequently, but prior to an expiration of the temporary key, receiving login credentials provided by the user when communicating through a second different user device. The method further includes re-creating the temporal identifier for the user based at least in part on the login credentials and the temporary key. The method further includes providing the temporal identifier to the second different user device in the form of a cookie. The method further includes receiving a first request from one device of the first user device or the second different user device including receiving the temporal identifier. The method further includes storing the temporal identifier and an identifier associated with the one device. The method further includes subsequently receiving a second request from another of the first user device or the second different user device including receiving the temporal identifier. The method further includes linking a device identifier for the first user device and second different user device in association with the temporal identifier based on the received second request. The method further includes using the linking to respond to the second request or to perform another action.
In general, another innovative aspect of the subject matter described in this specification can be implemented in methods that include a computer-implemented method for providing content. The method includes registering a user in association with a first device including creating a temporal identifier based at least in part on login credentials provided by the user and a temporary key, and providing the temporal identifier for storage at the first device. The method further includes subsequently registering the user in association with a second different device including regenerating the temporal identifier and providing the temporal identifier for storage on the second different device. The method further includes receiving a request from a device wherein the request includes the temporal identifier. The method further includes storing the temporal identifier and a device identifier associated with the device that generated the request. The method further includes subsequently receiving a second request from a second different device wherein the second request includes the temporal identifier. The method further includes linking the first device and the second different device using the temporal identifier and in response to the second request. The method further includes using the linking to respond to the second request or to perform another action.
These and other implementations can each optionally include one or more of the following features. Registering the user can further include receiving the login credentials from the user. The temporary key can have a predetermined expiration, and subsequently registering the user can include determining whether the predetermined expiration has occurred, and when not, recreating the temporal identifier using the login credentials and the temporary key. Creating the temporal identifier can further creating the temporal identifier based at least in part on an identifier assigned to a user associated with the login credentials. Storing the temporal identifier can further storing the temporal identifier and the device identifiers in a data structure that is indexed by the temporal identifier. Only one of the first device or second different device may be a mobile device. The first request can be received from the first device, and the second request can be received from the second different device. Using the linking can include using the linking for one or more of cross-device conversion tracking, cross-device frequency capping, or content selection. Using the linking can include using the linking to select content to deliver to the user in response to the second request. The temporal identifier can include an anonymous tinyhash for differentiating multiple users of a shared device, and the anonymous tinyhash can be unique to a particular one of the multiple users.
In general, another innovative aspect of the subject matter described in this specification can be implemented in computer program products that include a computer program product tangibly embodied in a computer-readable storage device and comprising instructions. The instructions, when executed by one or more processors, cause the processor to: register a user in association with a first device including creating a temporal identifier based at least in part on login credentials provided by the user and a temporary key, and provide the temporal identifier for storage at the first device; subsequently register the user in association with a second different device including regenerating the temporal identifier and provide the temporal identifier for storage on the second different device; receive a request from a device wherein the request includes the temporal identifier; store the temporal identifier and a device identifier associated with the device that generated the request; subsequently receive a second request from a second different device wherein the second request includes the temporal identifier; link the first device and the second different device using the temporal identifier and in response to the second request; and use the linking to respond to the second request or to perform another action.
These and other implementations can each optionally include one or more of the following features. Registering the user further can includes receiving the login credentials from the user. The temporary key can have a predetermined expiration, and subsequently registering the user can include determining whether the predetermined expiration has occurred, and when not, recreating the temporal identifier using the login credentials and the temporary key. Creating the temporal identifier can include creating the temporal identifier based at least in part on an identifier assigned to a user associated with the login credentials. Storing the temporal identifier can include storing the temporal identifier and the device identifiers in a data structure that is indexed by the temporal identifier.
In general, another innovative aspect of the subject matter described in this specification can be implemented in systems, including a system comprising one or more processors and one or more memory elements including instructions. The instructions, when executed, cause the one or more processors to: register a user in association with a first device including creating a temporal identifier based at least in part on login credentials provided by the user and a temporary key, and provide the temporal identifier for storage at the first device; subsequently register the user in association with a second different device including regenerating the temporal identifier and provide the temporal identifier for storage on the second different device; receive a request from a device wherein the request includes the temporal identifier; store the temporal identifier and a device identifier associated with the device that generated the request; subsequently receive a second request from a second different device wherein the second request includes the temporal identifier; link the first device and the second different device using the temporal identifier and in response to the second request; and use the linking to respond to the second request or to perform another action.
These and other implementations can each optionally include one or more of the following features. Registering the user further can includes receiving the login credentials from the user. The temporary key can have a predetermined expiration, and subsequently registering the user can include determining whether the predetermined expiration has occurred, and when not, recreating the temporal identifier using the login credentials and the temporary key. Storing the temporal identifier can include storing the temporal identifier and the device identifiers in a data structure that is indexed by the temporal identifier.
Particular implementations may realize none, one or more of the following advantages. Content sponsors can specify that campaigns (e.g., advertising campaigns) are to gather and use information about linked devices for the same user to perform cross-device conversion tracking, cross-device frequency capping, and/or content selection. Users who optionally allow their devices to be linked can receive content that is more interesting and relevant.
The details of one or more implementations of the subject matter described in this specification are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages of the subject matter will become apparent from the description, the drawings, and the claims.
BRIEF DESCRIPTION OF THE DRAWINGSFIG. 1 is a block diagram of an example environment for delivering content.
FIGS. 2A and 2B collectively show an example of a system for linking user devices.
FIG. 2C shows an example graph that represents linked devices.
FIG. 3A is a flowchart of an example of a process for registering and linking devices associated with a user and using the linking to perform an action.
FIG. 3B is a flowchart of an example of a process for linking devices associated with a user and using the linking to perform an action.
FIG. 4 is a block diagram of an example computer system that can be used to implement the methods, systems and processes described in this disclosure.
Like reference numbers and designations in the various drawings indicate like elements.
DETAILED DESCRIPTIONThis document describes methods, processes and systems for using temporal identifiers to link multiple devices associated with a user, and using the linking to perform an action. For example, when a user logs into a user service from a first device (e.g., the user's home PC), a system can determine a temporal identifier using the user's login credentials and a computed temporary key (e.g., ephemeral key). The temporal identifier can be stored on the first device, e.g., for later use in making requests for content. Subsequently, when the user logs into the user service from a second different device (e.g., the user's smartphone), the temporal identifier can be re-generated using the user's login credentials and the temporary key. The same temporal identifier can be stored on the second different device, e.g., for later use in making requests for content. The temporal key can have a predetermined expiration, such that requests that are received (even from the same user) will not produce the temporal identifier once the expiration has occurred. Subsequently, one of the user's devices (e.g., the user's home PC) can send a request for content, such as when the user is using a browser or is on a web page that requests content. The request can include a copy of the temporal identifier stored on the user's device. Upon receipt of the request, the system can store the temporal identifier with an identifier for the particular device of the user (e.g., the user's home PC). Another one of the user's devices (e.g., the user's smartphone) can send a request for content, e.g., when the user is using a browser or is on a web page that requests content. The request can include a copy of the temporal identifier stored on the user's device. Upon receipt of the request, the system can associate an identifier for the particular device of the user (e.g., the user's smartphone) with the device identified to be associated with the temporal identifier (e.g., the user's home PC). The user's devices can be linked based on the stored temporal identifier.
In some implementations, each temporal identifier is anonymous and cannot be used to determine, for example, the identity of the user from whom the temporal identifier is produced. For example, each temporal identifier can be generated from a one-way hash of the user's login credentials in combination with a temporary key (e.g., ephemeral key). Temporal identifiers are also temporal, e.g., the temporary identifier may be produced only for a limited period of time, such as to enable a user to join user devices within a predetermined time period.
Information about linked devices for a given user can be used in different ways, such as in cross-device conversion tracking, cross-device frequency capping, selection of content, or in other ways. In conversion tracking, for example, a conversion on the user's second different device can be tracked to (e.g., associated with) presentation of content on the user's first device. In frequency capping, for example, impressions of content items presented to a user can be capped across all of the user's linked devices. In an example involving the selection of content, the system can select content to present to a user's second different device based on information regarding the user (e.g., profile information) and the presentation of content on other linked devices.
FIG. 1 is a block diagram of anexample environment100 for delivering content. Theexample environment100 includes acontent management system110 for selecting and providing content in response to requests for content. Theexample environment100 includes anetwork102, such as a local area network (LAN), a wide area network (WAN), the Internet, or a combination thereof. Thenetwork102 connectswebsites104,user devices106, content sponsors108 (e.g., advertisers),publishers109, and thecontent management system110. Theexample environment100 may include many thousands ofwebsites104,user devices106, content sponsors108 andpublishers109.
In some implementations, theexample environment100 further includes auser login service120 that can provide, for any particular user, access to the user's Web services, e-mail, social networks, business applications or other resources. For example, theuser login service120 can receive login requests from the user, such as through a Web browser or other application running on any device associated with the user. The login request can include, for example, the user's login ID (e.g., a unique identifier, an email address, a phone number, or any other identifier for the user that can be used for verifying the user at login).
In some implementations, thecontent management system110 includes plural engines. A temporarykey generator121, for example, can generate the temporary key, such as a random ephemeral key or other key that can be used to generate temporal identifiers. Atemporal identifier generator122 can generate a temporal identifier, for example, based on information from a user's login credentials and the temporary key (e.g., ephemeral key). In some implementations, the temporal identifier is anonymous (e.g., not usable to derive a user identifier). The temporal identifier that is generated and re-generated for the same user within a particular time period is the same, and this equality is used to establish a linking of the devices associated with a user. A linkingengine123 can be used to look up information about linked devices for a particular user, e.g., based on linked device information stored in auser devices registry124. Each entry in theuser devices registry124 can include, for example, a temporal identifier and one or more device identifiers. Linking can be realized, for example, by indexing theuser devices registry124 using temporal identifiers. In this example each entry includes the one or more devices that share a given temporal identifier. Alternatively, theuser devices registry124 can include plural entries, with each entry only including a temporal identifier and a single identifier for a device from which the temporal identifier was received. In this second example, entries having the same temporal identifier can represent the linking of the corresponding devices (e.g., two or more ofuser devices106 associated with a user). Given a first user device for a particular user, for example, the linkingengine123 can look up additional devices that are linked to the first device.
Awebsite104 includes one ormore resources105 associated with a domain name and hosted by one or more servers. An example website is a collection of web pages formatted in hypertext markup language (HTML) that can contain text, images, multimedia content, and programming elements, such as scripts. Eachwebsite104 can be maintained by a content publisher, which is an entity that controls, manages and/or owns thewebsite104.
Aresource105 can be any data that can be provided over thenetwork102. Aresource105 can be identified by a resource address that is associated with theresource105. Resources include HTML pages, word processing documents, portable document format (PDF) documents, images, video, and news feed sources, to name only a few. The resources can include content, such as words, phrases, images, video and sounds, that may include embedded information (such as meta-information hyperlinks) and/or embedded instructions (such as JavaScript scripts).
Auser device106 is an electronic device that is under control of a user and is capable of requesting and receiving resources over thenetwork102.Example user devices106 include personal computers (PCs), televisions with one or more processors embedded therein or coupled thereto, set-top boxes, mobile communication devices (e.g., smartphones), tablet computers and other devices that can send and receive data over thenetwork102. Auser device106 typically includes one or more user applications, such as a web browser, to facilitate the sending and receiving of data over thenetwork102.
Auser device106 can requestresources105 from awebsite104. In turn, data representing theresource105 can be provided to theuser device106 for presentation by theuser device106. The data representing theresource105 can also include data specifying a portion of the resource or a portion of a user display, such as a presentation location of a pop-up window or a slot of a third-party content site or web page, in which content can be presented. These specified portions of the resource or user display are referred to as slots (e.g., ad slots).
To facilitate searching of these resources, theenvironment100 can include asearch system112 that identifies the resources by crawling and indexing the resources provided by the content publishers on thewebsites104. Data about the resources can be indexed based on the resource to which the data corresponds. The indexed and, optionally, cached copies of the resources can be stored in anindexed cache114.
User devices106 can submitsearch queries116 to thesearch system112 over thenetwork102. In response, thesearch system112 accesses the indexedcache114 to identify resources that are relevant to thesearch query116. Thesearch system112 identifies the resources in the form ofsearch results118 and returns the search results118 to theuser devices106 in search results pages. Asearch result118 can be data generated by thesearch system112 that identifies a resource that is responsive to a particular search query, and includes a link to the resource. In some implementations, the search results118 include the content itself, such as a map, or an answer, such as in response to a query for a store's products, phone number, address or hours of operation. In some implementations, thecontent management system110 can generatesearch results118 using information (e.g., identified resources) received from thesearch system112. Anexample search result118 can include a web page title, a snippet of text or a portion of an image extracted from the web page, and the URL of the web page. Search results pages can also include one or more slots in which other content items (e.g., ads) can be presented. In some implementations, slots on search results pages or other web pages can include content slots for content items that have been provided as part of a reservation process. In a reservation process, a publisher and a content item sponsor enter into an agreement where the publisher agrees to publish a given content item (or campaign) in accordance with a schedule (e.g., provide 1000 impressions by date X) or other publication criteria. In some implementations, content items that are selected to fill the requests for content slots can be selected based, at least in part, on priorities associated with a reservation process (e.g., based on urgency to fulfill a reservation).
When aresource105, search results118 and/or other content are requested by auser device106, thecontent management system110 receives a request for content. The request for content can include characteristics of the slots that are defined for the requested resource or search results page, and can be provided to thecontent management system110.
For example, a reference (e.g., URL) to the resource for which the slot is defined, a size of the slot, and/or media types that are available for presentation in the slot can be provided to thecontent management system110. Similarly, keywords associated with a requested resource (“resource keywords”) or asearch query116 for which search results are requested can also be provided to thecontent management system110 to facilitate identification of content that is relevant to the resource orsearch query116.
Based at least in part on data included in the request, thecontent management system110 can select content that is eligible to be provided in response to the request (“eligible content items”). For example, eligible content items can include eligible ads having characteristics matching the characteristics of ad slots and that are identified as relevant to specified resource keywords or search queries116. In some implementations, the selection of the eligible content items can further depend on user signals, such as demographic signals and behavioral signals. Other information, such as user identifier information that is associated with the linkings described above, can be used and/or evaluated when selecting eligible content.
Thecontent management system110 can select from the eligible content items that are to be provided for presentation in slots of a resource or search results page based at least in part on results of an auction (or by some other selection process). For example, for the eligible content items, thecontent management system110 can receive offers fromcontent sponsors108 and allocate the slots, based at least in part on the received offers (e.g., based on the highest bidders at the conclusion of the auction or based on other criteria, such as those related to satisfying open reservations). The offers represent the amounts that the content sponsors are willing to pay for presentation (or selection) of their content with a resource or search results page. For example, an offer can specify an amount that a content sponsor is willing to pay for each 1000 impressions (i.e., presentations) of the content item, referred to as a CPM bid. Alternatively, the offer can specify an amount that the content sponsor is willing to pay (e.g., a cost per engagement) for a selection (i.e., a click-through) of the content item or a conversion following selection of the content item. For example, the selected content item can be determined based on the offers alone, or based on the offers of each content sponsor being multiplied by one or more factors, such as quality scores derived from content performance, landing page scores, and/or other factors.
A conversion can be said to occur when a user performs a particular transaction or action related to a content item provided with a resource or search results page. What constitutes a conversion may vary from case-to-case and can be determined in a variety of ways. For example, a conversion may occur when a user clicks on a content item (e.g., an ad), is referred to a web page, and consummates a purchase there before leaving that web page. A conversion can also be defined by a content provider to be any measurable or observable user action, such as downloading a white paper, navigating to at least a given depth of a website, viewing at least a certain number of web pages, spending at least a predetermined amount of time on a web site or web page, registering on a website, experiencing media, or performing a social action regarding a content item (e.g., an ad), such as republishing or sharing the content item. Other actions that constitute a conversion can also be used.
In some implementations, determining that a conversion has occurred can be facilitated using information about a user's linkeduser devices106. For example, after a content item (e.g., an advertisement) is presented to a user on a first device (e.g., the user's home PC), information about the user's linked devices can be used to determine that a conversion has later occurred for the same user on a different device (e.g., the user's smartphone).
For situations in which the systems discussed here collect and/or use personal information about users, the users may be provided with an opportunity to enable/disable or control programs or features that may collect and/or use personal information (e.g., information about a user's social network, social actions or activities, a user's preferences or a user's current location). For example, users can have the opportunity to control whether or not certain ones of their devices are linked and/or how the linking is used. In addition, certain data may be anonymized in one or more ways before it is stored or used, so that personally identifiable information associated with the user is removed. For example, a user's identity may be anonymized so that the no personally identifiable information can be determined for the user, or a user's geographic location may be generalized where location information is obtained (such as to a city, ZIP code, or state level), so that a particular location of a user cannot be determined.
FIGS. 2A and 2B collectively show an example of asystem200 for linkinguser devices106. For example, theuser devices106 used by a user201 (e.g., Adam) may include afirst device106a(e.g., Adam's home PC), a seconddifferent device106b(e.g., a mobile computing device such as Adam's smartphone), a thirddifferent device106c(e.g., Adam's work laptop computer), and/orother user devices106. In some implementations, based on information about the linked devices, thesystem200 can be used for conversion tracking across theuser devices106. For example, a conversion by Adam may be tracked on the seconddifferent device106bafter content is provided to Adam on thefirst device106a. Information about linked devices can also be used for other purposes, including, for example, frequency capping, content selection, merging/migrating profiles, and other purposes. In frequency capping, for example, impressions can be capped for a particular user using the linking information, e.g., to consider all of a user's linked devices when capping the impressions of content provided to that user. In an example related to content selection, content that is served, e.g., by thecontent management system110, to any one of theuser devices106 associated with Adam can depend on information (e.g., interests, etc.) for Adam fromother user devices106 that are linked and associated with Adam. In an example of using linking information for merging/migrating profiles, thecontent management system110 can combine Adam's profile information associated withdevices106aand106b(e.g., for a combined profile), or populate or update profile information on a new device associated with Adam. For example, each of Adam's linkeddevices106a-106ccan inherit profile information from other linked device(s).
In some implementations, thesystem200 can use different phases for creating the linking information and subsequently using the linking information. For example,FIG. 2A depicts example events that can be part of a creation phase, e.g., in which temporal identifiers used in thesystem200 are created by thecontent management system110 and stored onuser devices106.FIG. 2B depicts example events that can be part of a usage phase, e.g., in which the temporal identifiers are used, including using the linking to respond to a request from auser device106 or to perform some other action. During the creation phase, users need not perform any specific content-related actions in order to be registered. For example, logging into theuser login service120 is sufficient for registering theuser201 by way of assigning atemporal identifier206. Creation phases are user-specific and can cover a period of time. As such, a creation phased associated with user Adam can typically cover a different time period as a creation phase associated with a different user Betty.
Registering theuser201 in association with multiple devices can occur throughout the creation phase. For example, the thirddifferent device106ccan be registered when theuser201 logs into theuser login service120 usinglogin credentials204c. Similarly,other user devices106 associated with theuser201 can be registered during the same creation phase. In some implementations, the creation phase can last a predetermined period of time (e.g., a set number of hours or days). In some implementations, the creation phase can end, for example, after a predetermined time has elapsed since the last registration for a given user has occurred.
Referring toFIG. 2A, thecontent management system110 can register theuser201 in association with thefirst device106a. Registering theuser201 can include creating thetemporal identifier206 based at least in part on the login credentials204 (e.g., thelogin credentials204aprovided by the user201) and a temporary key210 (e.g., ephemeral key). For example, thecontent management system110 can create thetemporal identifier206 and provide thetemporal identifier206 to thefirst device106afor storage on that device.
In some implementations, registration can occur, for example, after thecontent management system110 receives thelogin credentials204 associated with theuser201. For example, theuser201 may be using thefirst device106ato log into thenetwork102 using theuser login service120. In this example, thecontent management system110 can create thetemporal identifier206afor storage on thefirst device106a. To create thetemporal identifier206a, for example, thecontent management system110 can use information from thelogin credentials204aand the generated temporary key210 (e.g., ephemeral key). For example, thetemporal identifier206acan be generated using a combination of a hashed version of a user identifier for the user and thetemporary key210. In some implementations, thetemporal identifier206a, although stored on thefirst device106a, is not stored at this time on thecontent management system110.
In some implementations, the user201 (e.g., Adam) can log into theuser login service120 using thefirst device106a(e.g., Adam's home PC) usinglogin credentials204athat can include, for example, a user login identifier that identifies Adam to theuser login service120. For example, the user login identifier can include Adam's login ID (e.g., Adam Jones) or other login credentials that are included in a login request that is received by theuser login service120. In some implementations, a login request can include or be associated with an anonymous identifier (e.g., in a cookie, a browser cookie, etc.) that is associated with thefirst device106a. Anonymous identifiers can be used, for example, to avoid storing personally identifiable information that may include a login identifier associated with the user, the user's email address, the user's phone number, and so on. In some implementations, encryption can be used to facilitate the generation of identifiers, keys and/or other data elements used in linking devices.
In some implementations, thetemporary key210 can be a random key that is generated, for example, by thecontent management system110. In some implementations, once the creation phase ends, thetemporary key210 can be irrevocably destroyed, which can prevent the subsequent reproduction of thetemporal identifier206. As such, destruction of thetemporary key210 prevents registration of other devices within the current phase.
In some implementations, thetemporary key210 can have a predetermined expiration. Registering a user (including initially and subsequently) can include determining whether the predetermined expiration has occurred. When thetemporary key210 is determined not to be expired, thecontent management system110 can re-create thetemporal identifier206 using thelogin credentials204 and thetemporary key210. In some implementations, expiration of thetemporary key210 can signal an end to the creation phase (associated with a user and associated devices). In some implementations, expiration of thetemporary key210 can be facilitated using timestamps. For example, when a timestamp is too old, it can be used to invalidate or expire thetemporary key210.
In some implementations, the temporal identifier can include an anonymous identifier (e.g., a tinyhash) that can be used for differentiating multiple users of a shared device. For example, the anonymous identifier can be unique to a particular one of the multiple users. In some implementations, the tinyhash can be a 16-bit one-way hash of a user identifier used to log into theuser login service120. Other mechanisms can also be used so that the tinyhash is unique to each user yet can also prevent the reverse identification of the user identifier. The tinyhash can also prevent collisions (e.g., duplicatetemporal identifiers206 for more than one user) on devices that are shared by a small number of users. Further, detecting that there is a large number of different tinyhashes associated with the same device can signal that the device is a highly-shared and/or public device. This information can be used, for example, to filter groups (e.g., graphs) that represent devices that are linked and/or other relationships.
In some implementations, the tinyhash can be large enough, for example, to distinguish a small number of users using the same device while being small enough, for example, to prevent the identification of users in a large collection of devices. The tinyhash can be used to differentiate a small number of users sharing a device (e.g., each user can have a different tinyhash). Tinyhashes can also be used to detect public devices. For example, if too many tinyhashes exist on one device, then the device may be assumed to be public. Tinyhashes can be used to define different groups of devices, e.g., when the tinyhashes are used during member graph traversal.
In some implementations, the temporal identifier can be computed using a hash function of a user identifier or some other suitable identifier included in or associated with the user's login credentials. For example, a temporal identifier Xifor a given time interval i can be given by:
Xi=h(G,Ei) (1)
where G is a user identifier (e.g., a login identifier), Eiis thetemporary key210 or some other ephemeral key that is valid for the time interval i, and h(G,Ei) is a hash function of the user identifier G that uses Eias a salt value. As Eichanges over time, so does the value of Xi.
Subsequent to the registration of theuser201 in association with thefirst device106a, thecontent management system110 can register thesame user201 in association with a seconddifferent device106b. This registration can include regenerating thetemporal identifier206 for user. Each time that thecontent management system110 generates/re-generates thetemporal identifier206, for example, while thetemporary key210 is not expired and remains unchanged, thetemporal identifier206 that is generated is the same as before. For example, if registration of theuser201 in association with the seconddifferent device106boccurs within a short time frame since the registration of theuser201 in association with thefirst device106a, then thetemporal identifiers206 are the same. Specifically, thetemporal identifier206athat is stored on thefirst device106amatches thetemporal identifier206bgenerated in this subsequent registration and provided for storage on the seconddifferent device106b. The fact that thetemporal identifiers206aand206bmatch is what is relied upon in the usage phase to link thedevices106aand106b.
At this time, during the creation phase, even though theuser201 is registered in association withdevices106aand106b, thetemporal identifiers206aand206bmay not yet be stored in theuser devices registry124. This can occur, for example, during the usage phase described below with reference toFIG. 2B.
Referring now toFIG. 2B, a description follows of example events that can be part of the usage phase, e.g., in which the temporal identifiers are used to link devices and for other purposes. For example, the usage phase can include linking the temporal identifiers and using the linking to respond to a request from auser device106 or to perform some other action. In some implementations, the linking can be used to track a conversion on one device that is associated with presenting content on another device. For example, after an advertisement is presented to the user201 (e.g., Adam) on thefirst device106a, the linking can be used to track a conversion by Adam on the seconddifferent device106b. The conversion can be, for example, some user action performed by Adam, such as making a purchase of the advertised product, navigating to a landing page associated with the advertisement, completing a registration, or some other user action that constitutes a conversion.
In the usage phase, for example, thecontent management system110 can receive a request from one of theuser devices106 and that includes a temporal identifier. For example, thecontent management system110 can receive arequest212afrom thefirst device106a. Therequest212a, for example, can be a request for content, such as a request for an advertisement to fill anadvertisement slot216a, or a request for some other type of content. Therequest212acan include thetemporal identifier206aassociated with Adam that was stored on thefirst device106aduring the creation phase. In response to therequest212a, thecontent management system110 can provide content item(s)220a, e.g., an advertisement matching the request (e.g., a camera advertisement).
As part of linking thefirst device106aand subsequent user devices associated with Adam in the current creation phase, thecontent management system110 can store thetemporal identifier206awith adevice identifier208aassociated with thefirst device106athat generated therequest212a. In some implementations, thetemporal identifier206aand thedevice identifier208acan be stored (e.g., in a row) in theuser devices registry124. In the current example, the linking ofdevices106aand106bhas yet to occur, as there is just one entry in theuser devices registry124 that includes thetemporal identifier206athat corresponds to a group of logins by Adam in the current creation phase.
Subsequently, e.g., within a few minutes to a few days, thecontent management system110 can receive arequest212bfrom the seconddifferent device106b. Therequest212bcan include thetemporal identifier206b, which is identical to thetemporal identifier206a. Thisrequest212bmay occur, for example, when Adam is using his smartphone to follow up, e.g., to act upon the advertisement seen earlier on thefirst device106a. For example, therequest212bcan be a request for a product purchase web site associated with the advertised camera.
The first device and the second different device are linked using the temporal identifier and, in this example, in response to the second request. For example, the linking of thedevices106aand106bcan occur because entries for those devices in theuser devices registry124 have the matchingtemporal identifier206aand206b. As additional requests other thanrequests212aand212bare received from other registered devices associated with Adam, thecontent management system110 can also link those devices, e.g., by storing and linking additional entries in theuser devices registry124.
Other user devices may be linked as well using theuser devices registry124. For example, theuser devices registry124 can include an entry (or be included in the indexed entry) for another one of Adam'suser devices106, e.g., identified bydevice identifier208c(e.g., “C”) and having atemporal identifier206c. In another example, two of User Betty'suser devices106 can be linked in theuser devices registry124 using entries that includetemporal identifiers206d-206eanddevice identifiers208d-208e. In these examples, devices are only linked if thetemporal identifiers206 match other entries.
The linking is used to respond to the second request or to perform another action. For example, based on the linking, thecontent management system110 can use the information about the linkeddevices106aand106bin some way. In the example associated with conversion tracking, thecontent management system110 can indicate that a conversion has occurred for Adam, e.g., if therequest212bis associated with a conversion associated with therequest212a. For example, therequest212bcan be associated with a camera-related web page for making a purchase of the advertised camera, navigating to a landing page associated with the advertised camera, or completing a registration on a web page associated with the camera.
In some implementations, a graph can be used to represent linked devices. For example, each vertex in the graph can represent a specific device, and each edge in the graph can represent a connection between two connected vertices. In some implementations, an edge can be labeled with a tinyhash associated with the user for which the devices are linked.
FIG. 2C shows an example graph230 (e.g., a jumble member graph) that represents linked devices232a-232h. For example, when a link is discovered between two devices, a tinyhash of the user can be recorded along with the link. Thegraph230 includesedges232 and234 annotated by tinyhashes234 h1and tinyhashes236 h2. For example, if users U1 and U2 share devices A and B, it is possible to form two links between A and B, one annotated by a tinyhash for U1, and the other by a tinyhash for U2. This can allow different views of membership by considering tinyhashes during traversal of the graph. For example, groups can be identified starting from member A (e.g., represented bynode232a) in one of the following modes or in other ways.
In a first (e.g., strict)mode240, for example shown as a dotted line, traversing the graph can consider only a single tinyhash (e.g., h2depicted). Discovery of devices can follow edges annotated with tinyhash h2. For example, conceptually, this is equivalent to: “We know who the user is (h2), and we only want devices we know that user has used.”
In a second (e.g., conservative)mode238, for example shown as a dashed line, traversing thegraph230 can consider any path that has a consistent tinyhash, but it can be any tinyhash. This can includestrict mode240 devices (e.g., all devices reachable by following edges annotated with h2), but it can also include all devices that can be found by traversing h1. This is similar to thestrict mode240, except there is no assumption about who the current user is (e.g., the user can be either h1or h2).
In a third (e.g., an aggressive) mode (e.g., the entire graph230), tinyhashes can be ignored completely, and the graph can be traversed without respect to the user. For example, if a married couple shares a desktop computer, but both have exclusive use of their respective mobile devices, the two phones can be considered to be linked, even though neither of the couple has used the other's mobile device. In thegraph230, this would connectnodes232aand232g, based on following a path that includes both h1and h2.
FIG. 3A is a flowchart of an example of aprocess300 for registering and linking devices associated with a user and using the linking to perform an action. In some implementations, thecontent management system110 and/or theuser login service120 can perform steps of theprocess300 using instructions that are executed by one or more processors.FIGS. 1-2B are used to provide example structures for performing the steps of theprocess300.
A user is registered in association with a first device, including creating a temporal identifier based at least in part on login credentials provided by the user and a temporary key (302). The temporal identifier is provided for storage at the first device. For example, referring toFIG. 2A, thecontent management system110 registers the user201 (e.g., Adam) in association with thefirst device106a(e.g., Adams home PC). Thecontent management system110 can register Adam using information from Adam'slogin credentials204athat Adam uses to log into theuser login service120. The registration can include generating thetemporal identifier206ausing information from thelogin credentials204aand thetemporary key210, as described above.
In some implementations, creating the temporal identifier includes creating the temporal identifier based at least in part on an identifier assigned to a user associated with the login credentials. For example, thetemporal identifier generator122 can generate thetemporal identifier206ausing Adam's login ID or some other identifier associated with Adam that is used for logging into theuser login service120.
The user is subsequently registered in association with a second different device, including regenerating the temporal identifier (304). The temporal identifier is provided for storage on the second different device. As an example, thecontent management system110 can register the same user Adam in association with the seconddifferent device106b(e.g., Adam's smartphone). The subsequent registration includes the re-generation of thetemporal identifier206 for storage on the seconddifferent device106b. In this way, thetemporal identifiers206aand206bare identical, provided Adam has logged into theuser login service120 within the same creation phase, e.g., while the temporary key is still valid and unexpired. While the user Adam is registered in this way, the registration is actually anonymous, as the registration relies on thetemporal identifier206 and not any information that can be traced to Adam per se.
A request is received from a device, where the request includes the temporal identifier (306). For example, thecontent management system110 can receive therequest212afrom thefirst device106a. Therequest212acan include thetemporal identifier206a.
The temporal identifier is stored, and a device identifier associated with the device that generated the request is stored (308). For example, thecontent management system110 can store thetemporal identifier206aand an identifier (e.g., “A”) that uniquely identifies thefirst device106a. In some implementations, storing thetemporal identifier206acan include storing thetemporal identifier206aand the device identifier (e.g., “A”) in a data structure, e.g., theuser devices registry124, that is indexed by the temporal identifier. Other ways to store the information can be used.
A second request is subsequently received from a second different device, where the second request includes the temporal identifier (310). For example, thecontent management system110 can receive therequest212bfrom the seconddifferent device106b(e.g., Adam's smartphone). Therequest212bcan include thetemporal identifier206bthat was stored on the seconddifferent device106b(e.g., Adam's smartphone) during the creation phase.
The first device and the second different devices are linked using the temporal identifier and in response to the second request (312). For example, thecontent management system110 can store thetemporal identifier206band an identifier (e.g., “B”) that uniquely identifies the seconddifferent device106b. Storage of the information can be, for example, in theuser devices registry124.Devices106aand106bare now linked, for example, because entries for thetemporal identifiers206aand206bare identical in theuser devices registry124 that includedevice identifiers208aand208b. Other user devices106 (e.g., a thirddifferent device106c) can also be linked if corresponding entries in theuser devices registry124 includetemporal identifiers206 that are identical totemporal identifiers206aand206b.
The linking is used to respond to the second request or to perform another action (314). For example, because thedevices106aand106bare linked (e.g., associated with the user Adam), thecontent management system110 can use the linking information in various ways. In some implementations, thecontent management system110 can use the linking information for cross-device conversion tracking purposes. For example, thecontent management system110 can use information about therequest212b, thecontent item220b, and/or subsequent user actions to determine, for example, that a conversion associated with thecontent item220ahas occurred. In some implementations, thecontent management system110 can use the linking information for frequency capping purposes. For example, thecontent management system110 can select thecontent item220bbased on information about the number of times, if any, that thecontent item220bhas been provided to Adam. In some implementations, thecontent management system110 can use the linking information for content selection. For example, thecontent item220bcan be selected, at least in part, for presentation on the seconddifferent device106busing information about Adam (e.g., user preferences) that are available from thefirst device106a.
FIG. 3B is a flowchart of an example of aprocess320 for linking devices associated with a user and using the linking to perform an action. In some implementations, thecontent management system110 and/or theuser login service120 can perform steps of theprocess320 using instructions that are executed by one or more processors.FIGS. 1-2B are used to provide example structures for performing the steps of theprocess320.
Login credentials are received (322). The login credentials are provided by a user when communicating through a first user device. For example, thecontent management system110 can receivelogin credentials204aprovided by the user201 (e.g., Adam) using thefirst device106a. Adam can provide thelogin credentials204a, for example, when logging into theuser login service120.
A temporal identifier is created for the user based at least in part on the received login credentials and a temporary key (324). As an example, thetemporal identifier generator122 can create thetemporal identifier206 using, for example, the receivedlogin credentials204aand thetemporary key210. The temporarykey generator121, for example, can generate thetemporary key210.
The temporal identifier is provided to the first user device in the form of a cookie (326). Thecontent management system110, for example, can provide thetemporal identifier206ain the form of a cookie for storage on thefirst device106a.
Subsequently, but prior to an expiration of the temporary key, login credentials that are provided by the user when communicating through a second different user device are received (328). For example, thecontent management system110 can receivelogin credentials204bprovided by the user201 (e.g., Adam) using the seconddifferent device106b. Thelogin credentials204acan be provided by Adam, for example, when Adam logs into theuser login service120.
The temporal identifier is re-created for the user based at least in part on the login credentials and the temporary key (330). For example, thetemporal identifier generator122 can use thelogin credentials204band thetemporary key210 to re-create the sametemporal identifier206. For example, the value of thetemporal identifier206 is the same as that created in response to the receivedlogin credentials204aprovided by Adam using thefirst device106a. Thetemporal identifier206 is the same because thelogin credentials204aand204bare the same, and the calculatedtemporary key210 is the same as before (e.g., from the same creation phase).
The temporal identifier is provided to the second different user device in the form of a cookie (332). For example, thecontent management system110 can provide thetemporal identifier206bin the form of a cookie for storage on the seconddifferent device106b.
A first request is received from one device of the first user device or the second different user device, including receiving the temporal identifier (334). As an example, thecontent management system110 can receive therequest212afrom thefirst device106aor therequest212bfrom the seconddifferent device106b. Therequest212acan include thetemporal identifier206aor206b, respectively. If other devices associated with Adam have also been registered during the current creation phase, the request received at this time can be received from one of those devices instead. In each of these examples, thetemporal identifier206 is the same.
The temporal identifier and an identifier associated with the one device are stored (336). As an example, thecontent management system110 can store thetemporal identifier206aand an identifier (e.g., “A” that identifies thefirst device106a) in theuser devices registry124.
Subsequently, a second request is received from another of the first user device or the second different user device, including receiving the temporal identifier (338). For example, thecontent management system110 can receive the other one of therequest212b(or therequest212a), e.g., whichever one was not received at (334). The receivedrequest212b(or request212a) can include thetemporal identifier206b(or thetemporal identifier206a) that was stored on the seconddifferent device106b(or thefirst device106a) during the creation phase.
A device identifier for the first user device and second different user device are linked in association with the temporal identifier based on the received second request (340). For example,devices106aand106bare linked in theuser devices registry124 because thetemporal identifiers206aand206bare identical in entries that includedevice identifiers208aand208b. Other user devices106 (e.g., a thirddifferent device106c) can also be linked if corresponding entries in theuser devices registry124 includetemporal identifiers206 that are identical totemporal identifiers206aand206b.
The linking is used to respond to the second request or to perform another action (342). For example, the linking information can be used to perform cross-device conversion tracking, cross-device frequency capping, or content selection as described above.
FIG. 4 is a block diagram ofcomputing devices400,450 that may be used to implement the systems and methods described in this document, as either a client or as a server or plurality of servers.Computing device400 is intended to represent various forms of digital computers, such as laptops, desktops, workstations, personal digital assistants, servers, blade servers, mainframes, and other appropriate computers.Computing device400 is further intended to represent any other typically non-mobile devices, such as televisions or other electronic devices with one or more processors embedded therein or attached thereto.Computing device450 is intended to represent various forms of mobile devices, such as personal digital assistants, cellular telephones, smartphones, and other similar computing devices. The components shown here, their connections and relationships, and their functions, are meant to be exemplary only, and are not meant to limit implementations of the inventions described and/or claimed in this document.
Computing device400 includes aprocessor402,memory404, astorage device406, a high-speed interface408 connecting tomemory404 and high-speed expansion ports410, and alow speed interface412 connecting tolow speed bus414 andstorage device406. Each of thecomponents402,404,406,408,410, and412, are interconnected using various busses, and may be mounted on a common motherboard or in other manners as appropriate. Theprocessor402 can process instructions for execution within thecomputing device400, including instructions stored in thememory404 or on thestorage device406 to display graphical information for a GUI on an external input/output device, such asdisplay416 coupled tohigh speed interface408. In other implementations, multiple processors and/or multiple buses may be used, as appropriate, along with multiple memories and types of memory. Also,multiple computing devices400 may be connected, with each device providing portions of the necessary operations (e.g., as a server bank, a group of blade servers, or a multi-processor system).
Thememory404 stores information within thecomputing device400. In one implementation, thememory404 is a computer-readable medium. In one implementation, thememory404 is a volatile memory unit or units. In another implementation, thememory404 is a non-volatile memory unit or units.
Thestorage device406 is capable of providing mass storage for thecomputing device400. In one implementation, thestorage device406 is a computer-readable medium. In various different implementations, thestorage device406 may be a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid state memory device, or an array of devices, including devices in a storage area network or other configurations. In one implementation, a computer program product is tangibly embodied in an information carrier. The computer program product contains instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer- or machine-readable medium, such as thememory404, thestorage device406, or memory onprocessor402.
Thehigh speed controller408 manages bandwidth-intensive operations for thecomputing device400, while thelow speed controller412 manages lower bandwidth-intensive operations. Such allocation of duties is exemplary only. In one implementation, the high-speed controller408 is coupled tomemory404, display416 (e.g., through a graphics processor or accelerator), and to high-speed expansion ports410, which may accept various expansion cards (not shown). In the implementation, low-speed controller412 is coupled tostorage device406 and low-speed expansion port414. The low-speed expansion port, which may include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet) may be coupled to one or more input/output devices, such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, e.g., through a network adapter.
Thecomputing device400 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as astandard server420, or multiple times in a group of such servers. It may also be implemented as part of arack server system424. In addition, it may be implemented in a personal computer such as alaptop computer422. Alternatively, components fromcomputing device400 may be combined with other components in a mobile device (not shown), such asdevice450. Each of such devices may contain one or more ofcomputing device400,450, and an entire system may be made up ofmultiple computing devices400,450 communicating with each other.
Computing device450 includes aprocessor452,memory464, an input/output device such as adisplay454, acommunication interface466, and atransceiver468, among other components. Thedevice450 may also be provided with a storage device, such as a microdrive or other device, to provide additional storage. Each of thecomponents450,452,464,454,466, and468, are interconnected using various buses, and several of the components may be mounted on a common motherboard or in other manners as appropriate.
Theprocessor452 can process instructions for execution within thecomputing device450, including instructions stored in thememory464. The processor may also include separate analog and digital processors. The processor may provide, for example, for coordination of the other components of thedevice450, such as control of user interfaces, applications run bydevice450, and wireless communication bydevice450.
Processor452 may communicate with a user throughcontrol interface458 anddisplay interface456 coupled to adisplay454. Thedisplay454 may be, for example, a TFT LCD display or an OLED display, or other appropriate display technology. Thedisplay interface456 may comprise appropriate circuitry for driving thedisplay454 to present graphical and other information to a user. Thecontrol interface458 may receive commands from a user and convert them for submission to theprocessor452. In addition, anexternal interface462 may be provided in communication withprocessor452, so as to enable near area communication ofdevice450 with other devices.External interface462 may provide, for example, for wired communication (e.g., via a docking procedure) or for wireless communication (e.g., via Bluetooth or other such technologies).
Thememory464 stores information within thecomputing device450. In one implementation, thememory464 is a computer-readable medium. In one implementation, thememory464 is a volatile memory unit or units. In another implementation, thememory464 is a non-volatile memory unit or units.Expansion memory474 may also be provided and connected todevice450 throughexpansion interface472, which may include, for example, a subscriber identification module (SIM) card interface.Such expansion memory474 may provide extra storage space fordevice450, or may also store applications or other information fordevice450. Specifically,expansion memory474 may include instructions to carry out or supplement the processes described above, and may include secure information also. Thus, for example,expansion memory474 may be provide as a security module fordevice450, and may be programmed with instructions that permit secure use ofdevice450. In addition, secure applications may be provided via the SIM cards, along with additional information, such as placing identifying information on the SIM card in a non-hackable manner.
The memory may include for example, flash memory and/or MRAM memory, as discussed below. In one implementation, a computer program product is tangibly embodied in an information carrier. The computer program product contains instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer- or machine-readable medium, such as thememory464,expansion memory474, or memory onprocessor452.
Device450 may communicate wirelessly throughcommunication interface466, which may include digital signal processing circuitry where necessary.Communication interface466 may provide for communications under various modes or protocols, such as GSM voice calls, SMS, EMS, or MMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others. Such communication may occur, for example, through radio-frequency transceiver468. In addition, short-range communication may occur, such as using a Bluetooth, WiFi, or other such transceiver (not shown). In addition,GPS receiver module470 may provide additional wireless data todevice450, which may be used as appropriate by applications running ondevice450.
Device450 may also communicate audibly usingaudio codec460, which may receive spoken information from a user and convert it to usable digital information.Audio codec460 may likewise generate audible sound for a user, such as through a speaker, e.g., in a handset ofdevice450. Such sound may include sound from voice telephone calls, may include recorded sound (e.g., voice messages, music files, etc.) and may also include sound generated by applications operating ondevice450.
Thecomputing device450 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as acellular telephone480. It may also be implemented as part of asmartphone482, personal digital assistant, or other similar mobile device.
Various implementations of the systems and techniques described here can be realized in digital electronic circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and/or combinations thereof. These various implementations can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.
These computer programs (also known as programs, software, software applications or code) include machine instructions for a programmable processor, and can be implemented in a high-level procedural and/or object-oriented programming language, and/or in assembly/machine language. As used herein, the terms “machine-readable medium” “computer-readable medium” refers to any computer program product, apparatus and/or device (e.g., magnetic discs, optical disks, memory, Programmable Logic Devices (PLDs)) used to provide machine instructions and/or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term “machine-readable signal” refers to any signal used to provide machine instructions and/or data to a programmable processor.
To provide for interaction with a user, the systems and techniques described here can be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user and a keyboard and a pointing device (e.g., a mouse or a trackball) by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback); and input from the user can be received in any form, including acoustic, speech, or tactile input.
The systems and techniques described here can be implemented in a computing system that includes a back end component (e.g., as a data server), or that includes a middleware component (e.g., an application server), or that includes a front end component (e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the systems and techniques described here), or any combination of such back end, middleware, or front end components. The components of the system can be interconnected by any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include a local area network (“LAN”), a wide area network (“WAN”), and the Internet.
The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
While this specification contains many specific implementation details, these should not be construed as limitations on the scope of any inventions or of what may be claimed, but rather as descriptions of features specific to particular implementations of particular inventions. Certain features that are described in this specification in the context of separate implementations can also be implemented in combination in a single implementation. Conversely, various features that are described in the context of a single implementation can also be implemented in multiple implementations separately or in any suitable subcombination. Moreover, although features may be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination may be directed to a subcombination or variation of a subcombination.
Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of various system components in the implementations described above should not be understood as requiring such separation in all implementations, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.
Thus, particular implementations of the subject matter have been described. Other implementations are within the scope of the following claims. In some cases, the actions recited in the claims can be performed in a different order and still achieve desirable results. In addition, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve desirable results. In certain implementations, multitasking and parallel processing may be advantageous.