This invention relates generally to online services, and in particular to measuring a user's interaction with content on an external domain, such as an advertisement, accessed from an online service.
Web browsers allow users to browse Internet web pages provided by remote web servers. Generally, each user's browser makes web page requests to the web servers, and in response the web servers obtain the requested web pages and serve those pages back to the user's web browser. The requests and responses often use Hypertext Transport Protocol (HTTP). A typical web page is written in a markup language, such as the Hypertext Markup Language (HTML), and includes a number of embedded objects referenced by respective Uniform Resource Locators (URLs) within the HTML. The HTML of the web page may include many embedded URLs that define other objects within the web page to be obtained by web browser. For example, graphics, images, flash applications, links to other web pages, advertisements, etc. may be defined by embedded URLs. As the web browser encounters objects such as embedded URLs, the web browser repeats the above sequence of processing for the web page in order to obtain each embedded object.
Online services providers often are interested in monitoring activities generated from their web pages. For example, when a user clicks a link embedded on the online services system's web page that takes the user outside of the online service provider's domain into a third party domain, the online services system may want to know how long is spent in the third party domain. There may be various reasons for the desired monitoring, and the online services system can adjust the pricing of, e.g., advertising links if the user behavior is monitored.
Conventional technologies for monitoring and measuring the user's interactions with third-party links and external domain interactions suffer from a variety of deficiencies. For example, conventional technologies require each third party content provider to provide the content, track access, and report to the online services service the results. This process raises two issue: reliability of information from the third party provider and amount of effort required. A third party may pay based on length of time that the user spent on the third party page, e.g., the third party may not pay for lengths shorter than a predetermined threshold. With the third party providing the reporting data, there is a potential for the third party provider to under-report user access to reduce their costs. In addition, the current model requires the third party content provider to provide the platform for the tracking, which requires additional effort and resources.
In addition, some monitoring is performed at the online services system's servers, which may be plural servers that are not necessarily in time synchronization. The difference between timers at different locations may not be an accurate reflection of the time spent away from the servers' domain.
Embodiments of the invention enable more accurate measurements of a user's browsing of a web page on an external domain, e.g., as a result of selection of a link from a web page of an online services system. The time that a user spends away from the online services system's domain may be a good proxy for the time that the user spent on the web page of the external domain, especially where that external web page is a popup window. To measure this time, in accordance with embodiments of the invention, the online services system directs a user's computer to measure the time that the user is away from the domain of the online services system. By using the user's computer to perform this time measurement, errors due to timing by multiple servers that are not in synchronization can be avoided.
In one implementation, the web page from the online services website includes a script that invokes a timer when the browser application navigates from the online services system's page to a page in an external domain. This navigating away from the online services systems web page may be the result of a click on a link on the online services system page. More specifically, when the online services system serves the web page to the user, the user's browser application reads the HTML to render the page, including the script with the timer instruction. When the user leaves the online services system page, the script starts the timer. When the browser returns to a page provided by the online services system (which may not be the same page as originally served to the user computer, the script stops the timer, computes the time that the user spent away from the online services system, and communicates this duration to the online services system.
The figures depict various embodiments of the present invention 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 of the invention described herein.
A user device 110 comprises one or more computing devices that can receive input from a user and can transmit and receive data via the network 140. For example, the user device 110 may be a desktop computer, a laptop computer, a smart phone, a personal digital assistant (PDAs) or any other device including computing functionality and data communication capabilities. The user device 110 is configured to communicate with the third party content providers 120 and the online services system 130 via the network 140, which may comprise any combination of local area and/or wide area networks, using both wired and wireless communication systems.
In one embodiment, the user device 110 displays content by processing a markup language document 116 received from the online services system 130 or third party content provider 120 using a browser application 112. The markup language document 116 identifies content and one or more instructions describing formatting or presentation of the content. By executing the instructions included in the markup language document 116, the browser application 112 displays the identified content using the format or presentation described by the markup language document 116. For example, the markup language document 116 includes instructions for generating and displaying a web page having content provided by the online services system 130 and links to third party content provided by the third party content providers 120. In various embodiments, the markup language document 116 comprises a data file including extensible markup language (XML) data, extensible hypertext markup language (XHTML) data, or other markup language data. The browser application 112 may be any commercially available web browser, e.g., Internet Explorer, Mozilla Firefox, Safari, Opera, or Google Chrome.
The third party content provider 120 comprises one or more web servers including one or more web pages 122, which are communicated to the user device 110 using the network 140. The third party content provider 120 is separate from the online services system 130. For example, the third party content provider 120 is associated with a first domain while online services website is associated with a separate domain according to one embodiment. A web page 122 provided by the third party content provider 120 comprises a markup language document identifying content and including instructions specifying formatting or presentation of the identified content, as described above. The third party content provider 120 may be an advertiser in one embodiment, which third party provides links on the online services system's website linking to the third party content, e.g., for an advertising fee.
The online services system 130 comprises one or more computing devices providing online services to users. In one embodiment, the online services system 130 may provide users 110 a social network with the ability to communicate and interact with other users of the social network. The online services system 130 is further described below in conjunction with
The online services system 130 also is capable of linking a variety of entities. For example, the online services system 130 enables users to interact with each other as well as third party content providers 120 or other entities through an API or other communication channels.
In one embodiment, the online services provider 130 servers web pages 124. A web page 124 may include a link comprising a script with instructions that, when executed by a browser application 112 of a user device 110, invokes a timer on the user device 110 browser to track duration of time spent viewing third party content, as estimated based upon the time duration that the user device 110 was away from the online services system's web page.
According to one embodiment, the online services system 130 and the third party content provider 120 interact with the user device 110 using standard client/server architecture. A client (e.g., user device 110) typically is a process that accesses shared network resources provided by another computer (e.g., online services system 130 and/or third party content provider 120). Servers (e.g., online services system 130 and/or third party content provider 120) typically are remote computers accessible over a communications medium. The server receives requests from the user device 110 and filters electronic information to provide responses to the user device 110.
As described above in conjunction with
The Application Programming Interface (API) request server 220 allows one or more third party content providers 120 to access information from the online services system 130 by calling one or more APIs. The API request server 220 also may allow third party content providers 120 to send information to online services system 130 by calling APIs. For example, a third party content provider 120 sends an API request to the online services system 130 via the network 140 and the API request server 220 receives the API request. The API request server 220 processes the request by calling an API associated with the API request to generate an appropriate response, which the API request server 220 communicates to the third party content provider 120 via the network 140. For example, responsive to an API request, the API request server 220 collects data associated with a user and communicates the collected data to the third party content provider 120.
The action logger 215 is capable of receiving communications from the web server 210 about user actions. The action logger 215 populates the action log 245 with information about user actions, allowing the online services system 130 to track various actions taken by its users inside and outside of the online services system 130. Any action that a particular user takes with respect to another user is associated with each user's profile, e.g., as stored in the user profile store 250. Examples of actions taken by a user within the online services system 130 that are identified and stored may include, for example, adding a connection to another user, sending a message to another user, reading a message from another user, viewing content associated with another user, attending an event posted by another user, or clicking on an advertisement link in the online services system 130 web page. When a user takes an action within the online services system 130, the action is recorded in an action log 245. In one embodiment, the online services system 130 maintains the action log 245 as a database of entries. When an action is taken within the online services system 130, an entry for the action is added to the action log 245.
Additionally, user actions may be associated with an entity outside of the online services system 130, such as a third party content provider 120 that is separate from the online services system 130. For example, the action logger 215 receives data describing a user's interaction with a third party content provider 120 from the web server 210. Examples of scenarios in which a user interacts with an third party content provider 120 include a user expressing an interest in an third party content provider 120 or another entity, a user posting a comment to the online services system 130 that discusses a third party content provider 120 or a web page 122 within the third party content provider 120, a user posting to the online services system 130 a Uniform Resource Locator (URL) or other identifier associated with the third party content provider 120, a user attending an event associated with the third party content provider 120 or any other action by a user that is related to the third party content provider 120. Thus, the action log 240 may include actions describing interactions between an online services system 130 user and an third party content provider 120 that is separate from the online services system 130.
The advertisement engine 225 is hardware, software, firmware, or any combinations thereof for selecting or prioritizing advertisements to be presented to the users 110, e.g., as provided by third party content provider 120. The advertisement engine 225 outputs indexes of one or more advertisements selected for presentation to the users 110. If multiple advertisements are to be presented to the users 110, the advertisement engine 225 can prioritize the advertisements. In one embodiment, advertisements are embedded in the content items served by the online service system 130.
The script engine 230 allows the online services system 130 to embed a timer script in the HTML of pages sent to the user device 110 browser, for rendering therein and invoking a timer in the browser. In response to a user 110 request for a page provided by the online services system 130, the online services system page HTML includes a script for invoking a timer on the user device 110 browser application provided by the script engine 230. The script may take the form of any implementation of the ECMAScript language standard that can be used as a client-side script implemented as part of a web browser, e.g., JavaScript, Jscript, or ActionScript. The script includes a timer function in the HTML of the online services system page that interacts with the document object model of the page to invoke a timer on the browser. The script causes the user device 110 browser, upon detection of navigation away from the online services system page, to starts a timer on the user device 110 browser. The script also causes the user device 110 browser, upon detection of return to a web page provided by the online services system 130, to stop the timer on the user device 110 browser, and to send timer information to the online services system 130. The timer information includes the duration that the user device 110 browser was away from the origin domain as a result of the user selection of the third party link.
The quality engine 235 receives the timer and duration information, from which it determines the quality of the user's interaction with the third party content. The quality engine 235 may determine a quality score based on the duration, and/or may compare the duration to a threshold duration and classify the user's interaction with the third party page based on the comparison. In addition, the quality engine 235 may store the classification and/or score, e.g., in quality score store 260.
The duration information can be used by the quality engine 235 in various ways. For example, if the third party content provider 120 is an advertiser and the link an advertising link, the duration can be used to determine an advertising price for display of the advertising link, to determine whether to charge an advertiser (and how much) for providing the advertising link on the web page, and/or the duration information itself may be provided to the advertiser.
The authorization server 240 enforces one or more privacy settings of the users of the online services system 130. A privacy setting of a user determines how particular information associated with a user can be shared. The privacy setting comprises the specification of particular information associated with a user and the specification of the entity or entities with whom the information can be shared. Examples of entities with which information can be shared may include other users, applications, third party content providers 120 or any entity that potentially can access the information. The information that can be shared by a user comprises user profile information such as a profile photo, phone numbers associated with the user, user's connections, actions taken by the user such as adding a connection, changing user profile information, and the like.
The authorization server 240 contains logic to determine if certain information associated with a user can be accessed by a user's friends, third party content providers 120 and/or other applications and entities. For example, a third party content provider 120 that attempts to access a user's comment about a URL associated with the third party content provider 120 must get authorization from the authorization server 240 to access the user's work phone number. Based on the user's privacy settings, the authorization server 240 determines if another user, a third party content provider 120, an application or another entity is allowed to access information associated with the user, including information about actions taken by the user. For example, the authorization server 245 uses a users privacy setting to determine if the user's comment about a URL associated with the third party content provider 120 can be accessed by the third party content provider 120. This enables a user's privacy setting to specify which other users, or other entities, are allowed to receive data about the user's actions or other data associated with the user.
The online services system 130 stores user profiles describing the users of online services in the user profile store 250. The user profiles include biographic, demographic, and other types of descriptive information, such as work experience, educational history, hobbies or preferences, location, and the like. In addition, information specific to actions of a particular user are stored in the user store 250.
The advertisement store 255 is hardware, software, firmware or a combination thereof for storing advertisements and information related to the advertisements. The advertisement store 255 is communicatively connected to the advertising engine 225 to receive advertisements and other related information from the third party content provider 120. The information related to advertisements includes, for example, the characteristics of the products or services being advertised, the profile of targeted users, the bidding price for advertisement that the advertisers are willing to pay for presenting advertisements, the maximum amount of advertisement fee for a predetermined duration (e.g., daily and monthly), and user feedback responses received for the advertisements.
Measuring User Interaction with Third Party Content
The process begins with a user 110 interacting with an online services system 130. During the course of the interaction, the user 110 views various web pages, e.g., via a browser application executing an HTML document. For each page, the user device 110 transmits, and the online services system 130 receives 310, a request (e.g., an HTTP request) for a page provided by the online services system 130. In response, the online services system 130 provides to 315 the user device 110 the requested online services system page (e.g., via an HTTP response). According to some embodiments, the online services system 130 serves pages in a domain provided by the online services system 130, referred to herein as an origin domain. The pages served by the online services system 130 may be served by a plurality of servers, which may or may not be in time synchronization with each other. Along with the page content, the HTML for the online services system page includes at least one link to third party content (e.g., in the form of an embedded URL), and a script for invoking a timer on the user device 110 browser application as described herein. The script may be any implementation of the ECMAScript language standard that can be used as a client-side script implemented as part of a web browser, e.g., JavaScript, Jscript, or ActionScript. The script includes a timer function in the HTML of the online services system page that interacts with the document object model of the page. The user device 110 browser application then renders 320 the online services system page. An exemplary page 400 is shown in
While the user 110 is viewing the online services system page, the page may include one or more links to content provided by a third party 120. Example links 410 are shown in
The user device 110 browser application renders 345 the third party content based on the response 340. In various embodiments, the third party content is a pop-up, other new window, or navigation to a different web page within the existing window.
Sometime later, the online services system 130 receives 355 a request 355 for an online services system page. The requested 355 page may be the same as the page rendered 320 by the user device 110 browser prior to selecting the third party link, or may be any other page provided by the online services system 130. The online services system 130 sends a response 360 with the requested online services system page to the user device 110 browser, which renders 365 the online services system 130 page. In the case of a third party pop-up window, such as 420 of
From the timer information 375, the online services system 130 determines 380 the quality of the user's interaction with the third party content 340. For example, the online services system 130 may determine a quality score based on the duration, and/or may compare the duration to a threshold duration and classify the user's interaction with the third party page based on the comparison. If a threshold duration is used, it may be determined based on correlation between average duration that user devices are away from the origin domain as a result of selection of third party links and conversion rate for third party content associated with the third party links. For example, a set of third party content visits can be hand annotated into two categories: visits to third party content that led to conversion, and visits that did not. Cross-validation may then be used to find the threshold that maximizes the duration/conversion over the manually annotated set. In addition, the online services system 130 may store the classification and/or score, e.g., in quality score store 260.
The duration information can be used by the online services system 130 in various ways. For example, if the third party content provider 120 is an advertiser and the link is an advertising link, the duration can be used to determine an advertising price for display of the advertising link, to determine whether to charge an advertiser (and how much) for providing the advertising link on the web page, and/or the duration itself may be provided to the advertiser.
The foregoing description of the embodiments of the invention has been presented for the purpose of illustration; it is not intended to be exhaustive or to limit the invention 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 of the invention 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 of the invention 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 of the invention 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 invention 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 of the invention is intended to be illustrative, but not limiting, of the scope of the invention, which is set forth in the following claims.