US20130297776A1 - Techniques for delay processing to support offline hits - Google Patents
Techniques for delay processing to support offline hits Download PDFInfo
- Publication number
- US20130297776A1 US20130297776A1 US13/841,685 US201313841685A US2013297776A1 US 20130297776 A1 US20130297776 A1 US 20130297776A1 US 201313841685 A US201313841685 A US 201313841685A US 2013297776 A1 US2013297776 A1 US 2013297776A1
- Authority
- US
- United States
- Prior art keywords
- tracking data
- analytics tracking
- analytics
- session
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
- 238000012545 processing Methods 0.000 title claims abstract description 28
- 238000000034 method Methods 0.000 title claims description 100
- 238000004891 communication Methods 0.000 claims abstract description 191
- 230000000694 effects Effects 0.000 claims description 35
- 230000000644 propagated effect Effects 0.000 claims description 12
- 238000005516 engineering process Methods 0.000 abstract description 33
- 230000008569 process Effects 0.000 description 78
- 230000002085 persistent effect Effects 0.000 description 22
- 235000014510 cooky Nutrition 0.000 description 17
- 230000004044 response Effects 0.000 description 9
- 238000004590 computer program Methods 0.000 description 8
- 230000009471 action Effects 0.000 description 7
- 230000001902 propagating effect Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000007774 longterm Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- BDEDPKFUFGCVCJ-UHFFFAOYSA-N 3,6-dihydroxy-8,8-dimethyl-1-oxo-3,4,7,9-tetrahydrocyclopenta[h]isochromene-5-carbaldehyde Chemical compound O=C1OC(O)CC(C(C=O)=C2O)=C1C1=C2CC(C)(C)C1 BDEDPKFUFGCVCJ-UHFFFAOYSA-N 0.000 description 2
- 230000004931 aggregating effect Effects 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000002355 dual-layer Substances 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
- G06Q30/0201—Market modelling; Market analysis; Collecting market data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/04—Processing captured monitoring data, e.g. for logfile generation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
Definitions
- Web site analytics involves the analysis and reporting of web site traffic data to an associated publisher.
- a publisher is an entity that owns and/or manages a particular web site. The publisher can monitor web site analytics data related to user visits and links to the web site by using web site analytics tools provided by third parties.
- clients e.g., various web browsers and/or applications
- clients are required to provide local storage in order to persist state information in the aforementioned local storage.
- state information are included in cookies that are maintained and provided by such clients, and the cookies then transmitted to a given web analytics system in order to track sessions, provide information for online marketing campaigns, provide user information, and for tracking other client state information on the publisher's web site.
- certain clients e.g., mobile clients such as mobile applications, users that have disabled cookies, etc.
- support for accessing local storage and/or cookies can vary across different clients, which can increase the difficulty in consistently maintaining state information across different clients. Consequently, existing web site analytics data systems can have difficulty in accurately reporting analytics data across a multitude of clients in view of the aforementioned issues.
- the subject technology provides for a machine-implemented method for processing late and/or out-of-order analytics tracking data communications, the method including: receiving an analytics tracking data communication in which the analytics tracking data communication includes analytics tracking data that includes data for tracking an activity associated with a web site or application; determining a timestamp included in the analytics tracking data from the received analytics tracking data communication; determining if new state changing information is included in the analytics tracking data from the received analytics tracking data communication; determining a session based on the determined new state changing information; determining other analytics tracking data included in the analytics tracking data communication to associate with the determined new state changing information in the determined session if new state changing information is included in the analytics tracking data from the received analytics tracking data communication in which the other analytics tracking data is associated with one or more previously received analytics tracking data communications; and storing the analytics tracking data and the other analytics tracking data associated with the new campaign information.
- the system includes memory, one or more processors and one or more modules stored in memory and configured for execution by the one or more processors.
- the system includes a dynamic session module configured to receive an analytics tracking data communication in which the analytics tracking data communication includes analytics tracking data that includes data for tracking an activity associated with a web site or application, determine a timestamp included in the analytics tracking data from the received analytics tracking data communication, determine if new state changing information is included in the analytics tracking data from the received analytics tracking data communication, determine a session based on the determined new state changing information, determine other analytics tracking data included in the analytics tracking data communication to associate with the determined new state changing information in the determined session if new state changing information is included in the analytics tracking data from the received analytics tracking data communication in which the other analytics tracking data is associated with one or more previously received analytics tracking data communications, and store the analytics tracking data and the other analytics tracking data associated with the new campaign information.
- the subject technology further provides a non-transitory machine-readable medium including instructions stored therein, which when executed by a machine, cause the machine to perform operations including: receiving an analytics tracking data communication in which the analytics tracking data communication includes analytics tracking data that includes data for tracking an activity associated with a web site or application; determining a timestamp included in the analytics tracking data from the received analytics tracking data communication; determining if new state changing information is included in the analytics tracking data from the received analytics tracking data communication; determining a session based on the determined new state changing information; determining other analytics tracking data included in the analytics tracking data communication to associate with the determined new state changing information in the determined session if new state changing information is included in the analytics tracking data from the received analytics tracking data communication in which the other analytics tracking data is associated with one or more previously received analytics tracking data communications; and storing the analytics tracking data and the other analytics tracking data associated with the new campaign information.
- FIG. 1 conceptually illustrates an example communication flow in an analytics tracking system for receiving and processing web site tracking data in the form of analytics tracking data communications.
- FIG. 2 conceptually illustrates an example process for routing an analytics tracking data communication for persistent and temporary storage of some configurations.
- FIG. 3 conceptually illustrates various attributes that are included in example resource configurations for one or more pages of a publisher's web site.
- FIG. 4 conceptually illustrates an example process for determining resource configuration information for applying to analytics tracking data.
- FIG. 5 conceptually illustrates an example communication flow in an analytics tracking system from a client computing device to an analytics server for propagating information from an initial analytics tracking data communication to subsequent analytics tracking data communications.
- FIG. 6 describes an example process for propagating information from an initial analytics tracking data communication to subsequent analytics tracking data communications at an analytics server.
- FIG. 7 describes an example process for providing aggregated analytics tracking data associated with a dynamically generated session in response to a query for analytics tracking data.
- FIG. 8 conceptually illustrates an example time sequence in which different hits are received at an analytics server.
- FIG. 9 conceptually illustrates an example process for processing late and/or out-of-order analytics tracking data communications.
- FIG. 10 conceptually illustrates an example system in which some configurations are implemented.
- a publisher typically provides tracking instructions embedded in the web site's web pages (alternatively or conjunctively, by providing code in its web page that requests the tracking instructions from an analytics server).
- the tracking instructions are a small region of JavaScriptTM code that the publisher includes in each page of the publisher's web site for which traffic is to be tracked.
- client e.g., web browsers, mobile devices, tablet devices, thin clients, thick clients, etc.
- the tracking instructions are executed, which collects visitor data and/or other analytics tracking data and sends it back to an analytics server in the form of an analytics tracking data communication (“hit”) for processing.
- One method of sending the analytics tracking data communication is to send it as part of a Hypertext Transfer Protocol (HTTP) request.
- HTTP Hypertext Transfer Protocol
- Web site traffic data can be in the form of the aforementioned analytics tracking data communications (e.g., HTTP requests or “hits” that are generated from various user devices and/or clients).
- Analytics tracking data can be created upon accessing a resource (e.g., web page, image file, banner ad, audio file, etc.) on the web site by a particular visitor to a publisher's web site, or in response to an event on a web page or publisher's web site.
- the analytics tracking data can be sent in batch as included in one or more analytics tracking data communication(s) when there is a network connection, or alternatively included in a respective analytics tracking data communication that is triggered upon an access to a web page or resource on the web site or in response to an event on the web page or publisher's web site.
- the associated web site tracking data (e.g., included in associated HTTP requests) can include a web property ID (e.g., an account identifier that identifies a publisher's analytics account for a particular web site), visitor identity data (e.g., anonymized identifier corresponding to a unique client device), an event statistic(s) (such as a timestamp of the current web page communication), and user data such as location data (i.e., geographical information) associated with the visitor to the publisher's web site.
- the amount and types of events/information that are reported in the tracking data can be specified by the publisher (e.g., to account for particular information that a publisher wishes to track as web site analytics data).
- an analytics tracking data communication is described as including web site traffic data, an analytics tracking data communication is not limited to including web site traffic data.
- an analytics tracking data communication can include data from any source (e.g., application, platform, etc.) that is utilized for tracking an activity associated with the source.
- an analytics tracking data communication can include analytics tracking data that tracks an event associated with an activity within the mobile application platform.
- the analytics tracking data associated with the mobile application platform may not include web site traffic data because the mobile application platform does not require the use of a client such as a web browser.
- aspects of the herein described analytics tracking system therefore can be configured to receive and process an analytics tracking data communication(s) including different forms of analytics tracking data that are outside the scope of web site tracking data.
- the phrase “analytics tracking data” may include web site tracking data and/or other types of analytics tracking data other than web site tracking data (e.g., application tracking data).
- the users may be provided with an opportunity to control whether programs or features collect user information (e.g., information about a user's social network, social actions or activities, profession, a user's preferences, or a user's current location), or to control whether and/or how to receive content from the content server that may be more relevant to the user.
- user information e.g., information about a user's social network, social actions or activities, profession, a user's preferences, or a user's current location
- certain data may be treated in one or more ways before it is stored or used, so that personally identifiable information is removed.
- a user's identity may be treated so that 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.
- location information such as to a city, ZIP code, or state level
- the user may have control over how information is collected about the user and used by a content server.
- demographic-related data may be aggregated for one or more groups of users so that an individual user(s) is not personally identifiable.
- Each session can include a series of requests from a uniquely identified client with 1) a time of no more than predetermined amount (e.g., 30 minutes) between requests, and 2) no requests for pages from other domains (e.g., other web sites) intervening between requests.
- predetermined amount e.g. 30 minutes
- sessionization refers to a technique or techniques for providing a session and associating the session to one or more requests (e.g., analytics tracking data communications) corresponding to visitor activity from a uniquely identified client.
- the uniquely identified client can be associated with a respective visitor (e.g., user) to the publisher's site.
- sessionization can include techniques for providing/associating campaign information to each incoming request.
- campaign information may include a page Uniform Resource Identifier (e.g., page URI) or referrer path that indicates whether incoming traffic to a particular landing page is from an organic campaign (e.g., from a web search), an explicit campaign defined by ad keywords, a referral campaign from another website, or a direct campaign.
- campaign information may identify a particular marketing campaign corresponding with a set of associated marketing activities. For instance, the associated marketing activities can respectively correspond to a set of web pages on the publisher's web site. Any visitor activity/action related to the set of web pages on the publisher's web page can then be associated with the marketing campaign. In this manner, the campaign information can identify the marketing campaign associated with the visitor action(s).
- sessionization occurs on the client-side without the involvement of a given web analytics system.
- Each client can implement the logic for providing sessions differently, which can result in inconsistent sessionization of requests received by the web analytics system.
- the subject technology is directed to an analytics tracking system which implements, on the server side, sessionization of incoming requests or analytics tracking data communications to an analytics tracking server.
- clients can transmit “raw” hit or request information in each analytics tracking data communication (e.g., without performing sessionization beforehand) which include a smaller subset of analytics tracking data that is transmitted to the analytics tracking server.
- analytics tracking data transmitted from a client(s) does not include session information and/or campaign information from prior sessions.
- a first “raw” hit can contain campaign information.
- the campaign information is no longer required to be stored in cookies, so that all subsequent hits will not contain the campaign information given that the analytics tracking server as described herein can propagate the campaign information on the server-side. Consequently, network bandwidth can be preserved and errors on the client-side can be reduced.
- Client-side sessionization typically provided some (or all) of the aforementioned web site tracking (e.g., session information, visitor information, campaign information, etc.) in one or more first party cookies (e.g., cookies that originated from the publisher's site), which are then included in analytics tracking data communications transmitted to a given web analytics server.
- the herein described analytics tracking system minimizes (or even eliminates) reliance on cookies to track analytics data by performing sessionization on the server side.
- FIG. 1 conceptually illustrates an example communication flow in an analytics tracking system 100 for receiving and processing web site tracking data in the form of analytics tracking data communications.
- the analytics tracking system 100 includes one or more clients 110 .
- Clients include different computing devices such as mobile devices, netbooks, laptops, desktop computers, etc.
- a client Upon accessing a resource on a publisher's web site 120 (such as a web page, link, image, etc.), a client transmits web site tracking data as an analytics tracking data communication to an analytics server 130 .
- processed data from the publisher's web site 120 can be transmitted to the clients 110 , and then the clients 110 can subsequently transmit analytics tracking data to an analytics server 130 .
- FIG. 1 shows an example in which web site tracking data is passed from the client 110 to the publisher's web site 120 and then to the analytics server 130 .
- each client can directly transmit analytics tracking data to the analytics server 130 (e.g., bypassing the publisher's web site 120 ) for processing as further shown in FIG. 1 .
- the publisher's web site includes the code/instructions for the data that the clients should send to the analytics server 130 .
- logic is included in the application for communication with the analytics server 130 .
- Web site tracking data can be transmitted via a network, which can include, but is not limited to, a local network, remote network, or an interconnected network of networks (e.g., Internet).
- a network can include, but is not limited to, a local network, remote network, or an interconnected network of networks (e.g., Internet).
- the clients 110 , publisher's web site 120 and analytics server 130 can be configured to communication over any type of network, such as a local area network, a wide area network, or an interconnected network of networks (e.g., the Internet) and by using any sort of network/communications protocol (Transmission Control Protocol and Internet Protocol (TCP/IP), HTTP, etc.).
- TCP/IP Transmission Control Protocol and Internet Protocol
- the analytics system can include a respective cluster of servers/computers that perform a same set of functions in a distributed and/or load balanced manner.
- a cluster can be understood as a group of servers/computers that are linked together to seamlessly perform the same set of functions, which can provide performance, reliability and availability advantages over a single server/computer architecture.
- the analytics system may be configured to route event tracking communications associated with a unique visitor and/or a particular session to the same server within the group of servers for processing.
- a multi-tiered system can include a tier of collecting servers for receiving incoming analytics tracking data communications (e.g., HTTP requests for logging web page requests at corresponding web sites).
- a collecting server among the tier of collecting servers that receives an incoming communication can determine a particular logging server in a lower tier to route the incoming communication.
- the logging server processes the communication by routing the communication to a tier of long-term storage servers for persistent storage.
- Incoming analytics tracking data communications can then be routed to a tier of one or more analytics servers (e.g., from the collecting tier).
- each analytics server implements session logic in order provide sessionization of incoming web site tracking data received in analytics tracking data communications.
- session logic in order provide sessionization of incoming web site tracking data received in analytics tracking data communications.
- FIG. 2 conceptually illustrates an example process 200 for generating session information based on an analytics tracking data communication of some configurations. More specifically, FIG. 2 illustrates the process performed by an analytics server to sessionize analytics tracking data communications based on analytics tracking data included in an analytics tracking data communication.
- the process 200 starts at 205 when an analytics tracking data communication is received.
- an analytics tracking data communication is received by the analytics server 130 after one of the clients 110 accesses a resource (e.g., web page, link, image, etc.) on the publisher's web site 120 .
- a resource e.g., web page, link, image, etc.
- the process 200 at 210 determines analytics tracking data from the received analytics tracking data communication.
- the analytics tracking data includes at least visitor information.
- visitor information can include a unique ID string associated with a unique visitor that accesses the publisher's web site.
- the visitor information does not necessarily identify a particular end-user.
- the visitor information can be a anonymized identifier that is determined based on different information such as the visitor's web browser or client, the visitor's hostname, IP address, etc.
- the analytics tracking data also includes a timestamp that represents a time and/or date in which the unique visitor visited the publisher's web site (e.g., activity indicating access of a resource on the publisher's web site).
- a timestamp in some implementations is a sequence of alphanumeric characters that denotes the date and/or time in which a particular event occurred.
- a client can inaccurately report a time in which an event occurred (e.g., due to an incorrect clock reading and/or setting).
- a timestamp represents a delta or an elapsed amount of time in which an event was recorded/detected by a client to when the event was transmitted as part of the analytics tracking data to the analytics server.
- the process 200 at 215 determines if an initial visit for the unique visitor has occurred. In one example, this determination is made based on whether the unique visitor has any record of visiting the publisher's web site. For example, if a prior timestamp or other analytics data does not exist for the unique visitor, the process 200 determines that the received analytics tracking data communication is an initial visit to the publisher's web site for the unique visitor. In an instance where no such record is found for the unique visitor, the process 200 continues to 230 to create a new session for the unique visitor. In one example, a new session can be created by storing the timestamp from the analytics tracking data to indicate a start time of a new session for the unique visitor.
- the process 200 continues to 220 to determine a last visit of the unique visitor based on a timestamp.
- the process 200 can determine the last visit based on a prior timestamp of previous activity associated with the unique visitor (e.g., a timestamp included in previously received analytics tracking data).
- the timestamp can be understood as one example of a session boundary condition.
- the process 200 can utilize other session boundary conditions to determine an initial visit for the unique visitor. For instance, the process 200 determines a last visit of the unique visitor based on other session boundary conditions.
- session boundary conditions can include new campaign information, a session marker indicating a new session, or a session timeout.
- Each of the aforementioned session boundary conditions can indicate that a new session should be created for the unique visitor. Additional types of session boundary conditions can be considered and still be within the scope of the subject technology.
- an active session can be determined by looking up a stored timestamp that indicates when the active session started.
- a session is considered inactive or expired (e.g., session timeout).
- the process 200 continues to 230 to create a new session for the user.
- each of the aforementioned session boundary conditions determined at 220 can indicate that a new session should be created (effectively determining that an active session does not exist), and the process 200 then continues to 230 .
- the process 200 continues to 235 to populate visitor and/or session-related information as further described below.
- the process 200 continues to 235 to populate visitor and/or session-related information.
- the analytics server determines, based on configuration information associated with one or more pages of the publisher's web site, visitor and/or session-related information to populate with the received analytics tracking data.
- the visitor and/or session-related information is based on analytics data included in the received analytics tracking data, such as visitor information or campaign information. For example, campaign information can be populated with the received analytics tracking data.
- the campaign information includes a name for a marketing campaign (e.g., “Product XYC,” “Local Sports Event,” “Famous Person,” etc.).
- the campaign information identifies a particular marketing campaign corresponding with a set of associated marketing activities.
- the associated marketing activities can respectively correspond to a set of web pages on the publisher's web site. Any visitor activity/action related to the set of web pages on the publisher's web site can then be associated with the marketing campaign.
- the process 200 at 240 stores and/or persists the analytics tracking data including the campaign information.
- the analytics tracking data is stored in non-persistent storage on a temporary basis before being committed to persistent storage in some configurations.
- the process 200 stores the analytics tracking data in a web properties table stored in memory (e.g., random access memory) of the analytics server. For instance, the analytics tracking data may be segmented according to the campaign information. The process 200 then ends.
- the analytics server can delay writing the analytics tracking data stored in non-persistent storage to (permanent or long-term) persistent storage after a predetermined period of time has elapsed. For instance, the analytics server can wait until all analytics data is received for a particular day, and once the sessionization data has stabilized for that day, the server will then write the analytics data (permanently) to persistent storage on the following day. In this manner, the analytics server can account for changes to any state information associated with incoming analytics tracking data.
- each page on a publisher's site is configured separately (even with the same attributes).
- each page can include lists for search engines (e.g., for tracking referrals, organic traffic, etc.), cookie timeout/expiration setting, session timeout/expiration setting, etc.
- search engines e.g., for tracking referrals, organic traffic, etc.
- cookie timeout/expiration setting e.g., for tracking referrals, organic traffic, etc.
- session timeout/expiration setting e.g., a session timeout/expiration setting
- per-page configuration is prone to error (e.g., search engine list is incorrect or timeout information was set incorrectly for one of the pages on the publisher's site).
- modifications of configuration may not immediately reflect to all the clients due to HTTP caching. Consequently, the publisher (e.g., developers responsible for the pages) has the burden to provide and maintain similar configurations on all pages for client-side sessionization to be performed consistently.
- the subject technology provides for server-side configuration of resources (e.g., web pages, etc.) on a publisher's web site to provide consistent sessionization of incoming analytics tracking data communications (e.g., requests from clients including analytics tracking data for unique visitors).
- resources e.g., web pages, etc.
- FIG. 3 conceptually illustrates various attributes that are included in example resource configurations for one or more pages of a publisher's web site.
- an analytics server stores one or more resource configurations that respectively correspond to different pages from the publisher's web site.
- the business logic based on the resource configurations
- the business logic for sessionization of visitor activity from analytics tracking data is provided at the server-side.
- any changes to the resource configurations are reflected immediately without the potential for not being properly applied during sessionization due to caching on the client-side or publisher's web site or incorrect configuration on the client-side or publisher's web site.
- FIG. 3 includes different resources 305 , 310 , 315 and 330 corresponding to different resources (e.g., web pages) on a publisher's web site.
- resource configurations 320 , 325 and 335 are provided.
- resources 305 and 310 correspond to resource configuration 320
- resource 315 corresponds to resource configuration 325 .
- the resource configuration 320 includes different attributes in comparison with the resource configuration 325 .
- the respective search engine lists and timeout attributes are different for resource configurations 320 and 325 .
- timeout attributes can include timeouts for session timeout/expiration (e.g., 30 minutes) and/or campaign timeout/expiration (e.g., 6 months).
- resource configurations 320 and 325 include one or more campaign attributes and other attributes.
- other attributes include attributes related to visitor attributes, custom attributes, etc.
- the analytics server can also include other resource configurations 335 for other pages from the publisher's web site.
- each resource configuration is not required to include all of the attributes shown in FIG. 3 . Additionally, each resource configuration can include other attributes not illustrated in the example of FIG. 3 and still be within the scope of the subject technology.
- FIG. 4 conceptually illustrates an example process 400 for determining resource configuration information for applying to analytics tracking data. More specifically, FIG. 4 illustrates the process performed by an analytics server to apply resource configuration information in order to sessionize analytics tracking data communications based on analytics tracking data included in an analytics tracking data communication. In one example, the process 400 can be performed conjunctively with the process 200 described by reference to FIG. 2 .
- web site traffic data can be in the form of the aforementioned analytics tracking data communications (e.g., HTTP requests or “hits” that are generated from various user devices and/or clients).
- Each analytics tracking data communication can be triggered upon loading of a web page or resource (e.g., image file, banner ad, audio file, etc.) on the web site by a particular visitor to a publisher's web site.
- a web page or resource e.g., image file, banner ad, audio file, etc.
- the associated web site tracking data can include a web property ID (e.g., an account identifier that identifies a publisher's analytics account of a particular web site), visitor identity data (e.g., anonymized identifier corresponding to a unique client device), an event statistic(s) (such as a timestamp of the current web page communication), and user data such as location data (i.e., geographical information) associated with the visitor to the publisher's web site.
- a web property ID e.g., an account identifier that identifies a publisher's analytics account of a particular web site
- visitor identity data e.g., anonymized identifier corresponding to a unique client device
- an event statistic(s) such as a timestamp of the current web page communication
- user data such as location data (i.e., geographical information) associated with the visitor to the publisher's web site.
- the process 400 begins at 405 by determining resource information based on analytics tracking data from an analytics tracking data communication (e.g., received by the analytics server in a request).
- the resource information includes information identifying a page from the publisher's web site in which the visitor activity or event occurred.
- the process 400 at 410 determines resource configuration information based on the determined resource information.
- the process 400 at 415 applies one or more attributes from the determined resource configuration to the analytics tracking data.
- the analytics server applies the attributes during sessionization of a received analytics tracking data communication as described before in FIG. 2 .
- the process 400 then ends.
- Analytics data (e.g., campaign information, visitor activity, etc.) are stored locally on the client via cookies.
- client-side cookies can have several weaknesses: 1) unreliability due to cookies being deleted or not supported on certain clients and 2) each hit on a publisher's web site that reports analytics data sends redundant information (e.g., in one or more cookies) to a given analytics server.
- redundant information e.g., in one or more cookies
- the utilization of cookies increases an amount of network bandwidth required for transmitting (on the client-side) and receiving (on the server-side) cookies.
- analytics tracking data based on visitor activity can be included in the aforementioned analytics tracking data communications (e.g., HTTP requests or “hits” that are generated from various user devices and/or clients).
- Each analytics tracking data communication can be triggered upon loading of a web page or resource (e.g., image file, banner ad, audio file, etc.) on the web site by a particular visitor to a publisher's web site.
- the associated web site tracking data (e.g., included in associated HTTP requests) can include a web property ID (e.g., an account identifier that identifies a publisher's analytics account of a particular web site), visitor identity data (e.g., anonymized identifier corresponding to a unique client device), an event statistic(s) (such as a timestamp of the current web page communication), and user data such as location data (i.e., geographical information) associated with the visitor to the publisher's web site.
- a web property ID e.g., an account identifier that identifies a publisher's analytics account of a particular web site
- visitor identity data e.g., anonymized identifier corresponding to a unique client device
- an event statistic(s) such as a timestamp of the current web page communication
- user data such as location data (i.e., geographical information) associated with the visitor to the publisher's web site.
- location data i.e., geographical information
- the subject technology further provides for propagating analytics tracking data from an initial incoming analytics tracking data communication received from a unique client (e.g., visitor to a publisher's web site) to subsequently received analytics tracking data communications from the unique client.
- a unique client e.g., visitor to a publisher's web site
- FIG. 5 conceptually illustrates an example communication flow in an analytics tracking system 500 from a client computing device to an analytics server for propagating information from an initial analytics tracking data communication (e.g., for a new session) to subsequent analytics tracking data communications.
- an initial analytics tracking data communication e.g., for a new session
- the analytics tracking system 500 includes a client computing device 510 , a publisher's web site 520 and an analytics server 540 .
- the client computing device 510 visits the publisher's web site 520 and accesses several resources hosted on the publisher's web site, which are then reported to the analytics server 540 as different analytics tracking data communications.
- the publisher's web site 520 can transmit a response communication in order to set one or more cookies on the client computing device 510 .
- a respective hit e.g., corresponding to a respective analytics tracking data communication
- a first hit 530 (shown as “Hit 1 ”) represents an initial visitor activity tracked on the publisher's web site 520 that is reported to the analytics server 540 . Subsequent hits 532 , 534 and 536 for subsequent visitor activity are then reported to the analytics server 540 . In some instances, as further shown in FIG. 5 , one or more hits 538 can be transmitted from the client computing device 510 to the analytics server 540 .
- incoming analytics tracking data communications can be stored in a table 550 (or similar data structure) for tracking different analytics data from the analytics tracking data communications.
- the table 550 includes analytics data 562 corresponding to the first hit 530 .
- the analytics data 562 can include one or more dimensions corresponding to different attributes 560 such as campaign information, gender of a unique visitor, and session information.
- the gender of the unique visitor can be provided based on user profile information of the unique visitor on the publisher's web site.
- Other dimensions for other attributes can be included in the analytics data 562 and still be within the scope of the subject technology.
- the different attributes for the different dimensions are stored by the analytics server 540 for future retrieval.
- subsequent hits reporting visitor activity on the publisher's web site 520 are not required to include such attributes.
- JavaScriptTM code on the publisher's web site is included on a set of pages to instruct the client to only include certain attributes upon a particular visit from the unique client.
- the attributes are not included in analytics tracking data communications transmitted to the analytics server.
- the analytics server propagates the stored attributes 560 to analytics data 564 , 566 , 567 and 568 .
- the analytics data 567 includes state changing information (e.g., “Campaign: 456”) that has been propagated to Hit N in 568 , which is an example of partial propagation of an attribute described in further detail below.
- FIG. 6 describes an example process 600 for propagating information from an initial analytics tracking data communication to subsequent analytics tracking data communications at an analytics server.
- the process 600 begins at 605 by receiving an analytics tracking data communication.
- the process 600 at 610 determines if the analytics tracking data communication is a hit with state changing information based on analytics tracking data included in the received analytics tracking data communication.
- State changing information can include new campaign information, new visitor information, etc. Other types of state changing information can be considered and still be within the scope of the subject technology.
- the process 600 continues to 615 to determine one or more attributes from analytics tracking data included in the analytics tracking data communication.
- the process 600 makes a determination whether the attribute (e.g., the attribute includes state changing information) should be stored in order to propagate to other hits.
- the process 600 at 620 then stores the one or more attributes for propagating to other analytics tracking data communications.
- the one or more attributes can include state changing information (e.g., new campaign information) as described above.
- the process 600 at 625 determines if any existing attributes should be partially propagated to the (current) received analytics tracking data. For instance, it is possible that previously received analytics tracking data now stored at the analytics server includes gender information for a visitor that should be propagated to the received analytics tracking data. If any existing attributes should be propagated, the process 600 continues to 630 to propagate such attributes to the analytics tracking data included in the received analytics tracking data communication. The process 600 then continues to 635 to store and/or persist the analytics tracking data including the propagated attribute(s).
- the analytics tracking data is stored in non-persistent storage on a temporary basis before being committed to persistent storage in some configurations.
- the process 600 continues to 635 to store the analytics tracking data.
- the process 600 determines at 610 that the received analytics tracking data communication is not a hit with state changing information, then the process 600 continues to 630 in order to propagate any stored attributes to analytics tracking data included in the received analytics tracking data communication. The process 600 then continues to 635 to store the analytics tracking data including the propagated attributes.
- the analytics tracking data is stored in non-persistent storage on a temporary basis before being committed to persistent storage in some configurations. In this manner, additional analytics data corresponding to one or more different dimensions are applied to this subsequent analytics tracking data and is consistent with the initial analytics tracking data communication reported to the analytics server. The process 600 then ends.
- the analytics server can delay writing the analytics tracking data stored in non-persistent storage to (permanent or long-term) persistent storage after a predetermined period of time has elapsed. For instance, the analytics server can wait until all analytics data is received for a particular day, and once the state changing data (e.g., one or more attributes) has stabilized for that day, the server will then write the analytics data (permanently) to persistent storage on the following day. In this manner, the analytics server can account for changes to any state information associated with incoming analytics tracking data.
- state changing data e.g., one or more attributes
- analytics data for visitor activity (“hit” or “hits”) at a publisher's web site is sessionized at the client-side and then reported to a web analytics server for processing as different hits. These hits are received by a web analytics server and then stored according to campaign information and/or session information included in the hits.
- the network connectivity of some client computing devices could be unreliable in some instances.
- hits are received out of order due to different buffers and delays of each server. In these instances, hits for a particular session can be received late (and/or out of order) past the lifetime of forming the session.
- analytics data already stored by the web analytics server may not accurately reflect visitor activity at the publisher's web site for corresponding campaigns or sessions in which hits are received late.
- the web analytics server would have to perform further processing (e.g., deletion and modification of existing analytics data erroneously associated with a different campaign) to update the stored analytics data to reflect the new campaign information. For instance, a given analytics tracking system would immediately commit analytics tracking data to persistent storage. In the event of a late hit including new campaign information and before the analytics data is updated, any query to the analytics server for the analytics data would not be accurate with respect to the visitor activity for a particular campaign. Thus, it can be advantageous to delay committing analytics tracking data to persistent storage in light of potentially receiving late hits.
- further processing e.g., deletion and modification of existing analytics data erroneously associated with a different campaign
- the analytics data that is reported to the analytics server is often received without any session and/or campaign information (e.g., the analytics data is “stateless”).
- the analytics server performs sessionization at the server-side in order to determine an existing session or create a new session for analytics data, and then populates campaign information for the analytics data associated with the session.
- the subject technology provides configurations for dynamically sessionizing analytics tracking data stored by the analytics server for responding to a query for analytics tracking data.
- the analytics server performs dynamic sessionizing of analytics tracking data instead of relying on previously committed analytics tracking data in persistent storage, which may not accurately reflect new campaign information received in a late hit. More specifically, any received tracking data is not immediately committed to persistent storage and, in one example, kept in non-persistent storage on a temporary basis.
- the analytics server can then delay committing the analytics tracking data after a specified period of time (e.g., in the following day) to account for late hits that contain new campaign information.
- analytics tracking data based on visitor activity (“web site tracking data”) on a publisher's web site can be included the aforementioned analytics tracking data communications (e.g., HTTP requests or “hits” that are generated from various user devices and/or clients) that are received and processed by the analytics server.
- web site tracking data e.g., HTTP requests or “hits” that are generated from various user devices and/or clients
- FIG. 7 describes an example process 700 for providing aggregated analytics tracking data associated with a dynamically generated session in response to a query for analytics tracking data.
- the process 700 can be performed by the analytics server in one example.
- the process 700 begins at 705 by receiving a query for analytics tracking data associated with a period of time.
- the period of time can cover a particular day (or any sub-period of time therein) in which analytics data is being reported to the analytics server.
- the process 700 at 710 aggregates analytics tracking data for the period of time in order to associate the aggregated analytics tracking data with a dynamically generated session.
- the server dynamically generates a session in response to the received query. The server will then aggregate, for a unique visitor, analytics tracking data already received by the server that fall within the period of time based on the query.
- the aggregation of analytics tracking data can include analytics tracking data already committed in persistent storage and/or analytics tracking data that has yet to be committed to persistent storage (e.g., the data is currently stored on a temporary basis) for the period of time specified in the query.
- the dynamically generated session of the aggregation of analytics tracking data will be based on the new campaign information.
- the process 700 can provide up-to-date analytics tracking data based on the new campaign information.
- the process 700 provides the aggregated analytics tracking data associated with the dynamically generated session in response to the query.
- the dynamically generated session can be understood as a “throw away” or temporary session that is utilized for responding to a query request.
- the analytics server can provide up-to-date analytics tracking data in response to a query because sessionization occurs on-the-fly. Instead of immediately committing the analytics tracking data and relying on such data, the analytics server utilizes a dynamically generated session to aggregate analytics tracking data to account for late hits with new campaign information that could affect the data returned in the query. The process 700 then ends.
- analytics tracking data can be aggregated for multiple dynamically generated sessions.
- the analytics server can generate multiple sessions for aggregating the analytics tracking data.
- hits may be received late and/or out-of-order from an order in which corresponding visitor activity occurred at a publisher's web site or an application.
- the subject technology addresses late or out-of-order hits by performing dynamic sessionization of hits in which hits are split and/or merged from a previously associated session into a different session.
- FIG. 8 conceptually illustrates an example time sequence in which different hits are received at an analytics server. More specifically, the example in FIG. 8 shows different stages 801 , 802 and 803 that different hits are received.
- hits 830 (“Hit 1 ”), 835 (“Hit 3 ”) and 840 (“Hit 5 ”) are received in close temporal proximity to each other based on respective timestamps of each hit.
- Hit 850 (“Hit 6 ”) is received at a later time.
- analytics tracking data including a timestamp is included in each hit.
- a hit's timestamp denotes a respective time in which visitor activity on a publisher's web site or an application was logged.
- the respective timestamps of hit 840 and hit 850 can indicate that the hits indicate respective activity that was logged more than a session timeout period apart (e.g., 30 minutes apart).
- the analytics server groups hits 830 , 835 and 840 into a first session 810 and hit 850 into a second session 820 .
- hits 860 (“Hit 4 ”) and 865 (“Hit 2 ”) are received later (e.g., past the expiration time of the first and second sessions).
- hits 860 and 865 include analytics tracking data including respective timestamps in which visitor activity is logged.
- hit 860 includes state changing information such as new campaign information. Based on the new campaign information included in hit 860 , the analytics server determines that hit 860 should start a new session. Further, the analytics server determines that hit 865 should be included in the first session 810 based on the timestamp of hit 865 .
- the analytics server utilizes the new campaign information in hit 860 to move hit 840 from the first session 810 to the newly created second session 870 .
- the timestamp of hit 840 is closer in time to the timestamp of hit 860 (e.g., within a session timeout period).
- the analytics server makes a determination that hit 840 should be associated with the second session 870 .
- the analytics server determines, by utilizing the new campaign information included in hit 860 and by comparing the respective timestamps of hits 840 and 860 , that hit 840 should be included in the second session 870 with hit 860 .
- the analytics server can determine that hit 850 should be included in a third session 820 .
- a hit associated with a new campaign is included in a separate session from prior hits in a different session.
- the state changing information included in hit 860 is propagated to the hit 840 in the second session 870 . In this manner, state changing information received from a late hit (e.g., hit 860 ) is propagated to subsequent hits in the same session (e.g., hit 840 ).
- the state changing information included in hit 860 is propagated to the hit 850 in the third session 820 .
- state changing information received from a late hit e.g., hit 860
- subsequent hits in another session e.g., hit 850 .
- the analytics server includes the hit 865 in the first session 810 .
- the respective timestamps of hit 865 is closer in time to the respective timestamps of hits 830 and 835 . Consequently, the analytics server makes a determination that hit 865 should be included with hits 830 and 835 in the first session 810 based on the respective timestamps of hits 830 , 835 and 865 .
- the first session 810 now includes hits 830 , 865 and 835 and the second session 870 includes hits 860 and 840 , and the third session 820 includes hit 850 .
- the analytics server can split and merge different hits into other sessions based on new campaign information, which enables the server to dynamically sessionize hits if hits are received late and/or out-of-order as shown in the example of FIG. 8 .
- FIG. 9 conceptually illustrates an example process 900 for handling late and/or out-of-order analytics tracking data communications.
- analytics tracking data based on visitor activity (“web site tracking data”) on a publisher's web site or an application can be included the aforementioned analytics tracking data communications (e.g., HTTP requests or “hits” that are generated from various user devices and/or clients) that are received and processed by the analytics server.
- the process 900 begins at 905 by receiving an analytics tracking data communication.
- the process 900 at 910 determines a timestamp included in analytics tracking data from the received analytics tracking data communication.
- the process 900 determines if new state changing information is included in the analytics tracking data.
- new state changing information includes, but is not limited to, new campaign information.
- new state changing information includes, but is not limited to, gender information. If so, the process 900 continues to 920 to determine a session based on new state changing information and/or a timestamp.
- new state changing information includes new campaign information that creates a new session.
- new state changing information includes gender information where a new session will not be created by the new state changing information and the session will be determined by a timestamp.
- the process 900 continues to 925 to associate other analytics tracking data included in received analytics tracking data communication(s) with the session.
- the process 900 continues to 930 to determine a session based on the timestamp included in the analytics tracking data.
- the process 900 at 935 then associates analytics tracking data included in the received analytics tracking data communication with the session.
- the process 900 then ends.
- the subject technology provides a system.
- the system includes memory, one or more processors, one or more modules stored in memory and configured for execution by the one or more processors.
- the system includes a dynamic session module configured to receiving an analytics tracking data communication in which the analytics tracking data communication includes analytics tracking data that includes data for tracking an activity associated with a web site or application, determine a timestamp included in the analytics tracking data from the received analytics tracking data communication, determine if new state changing information is included in the analytics tracking data from the received analytics tracking data communication, determine other analytics tracking data to associate with the new state changing information if new state changing information is included in the analytics tracking data from the received analytics tracking data communication in which the other analytics tracking data is associated with one or more previously received analytics tracking data communications, and store the analytics tracking data and the other analytics tracking data associated with the new campaign information.
- the other analytics tracking data includes user information, gender information, location, timestamp information, or session information in one example.
- the new state changing information includes new campaign information, gender information or timestamp information in one example.
- the dynamic session module is further configured to determine a respective session based on the timestamp of the received analytics tracking data communication if no new state changing information is included in the analytics tracking data, associate the analytics tracking data with the determined respective session, and store the analytics tracking data associated with the determined respective session, wherein the determined respective session includes other analytics tracking data associated with previously received analytics tracking data communications.
- determining other analytics tracking data to associate with the new state changing information further includes identifying a subset of the one or more previously received analytics tracking data communications to include in a new session based on the timestamp included in the analytics tracking data from the received analytics tracking data communication and a respective timestamp of each previously received analytics tracking data communication of the subset.
- the subset of the one or more previously received analytics tracking data communications were previously included a different session from the new session in some configurations.
- Identifying the subset of the one or more previously received analytics tracking data communications to include in the new session further includes determining if the timestamp included in the analytics tracking data from the received analytics tracking data communication and the respective timestamp of each previously received analytics tracking data communication of the subset are within a session timeout period in some configurations.
- the dynamic session module is further configured to identify a second subset of the one or more previously received analytics tracking data communications to include in a second new session based on the timestamp included in the analytics tracking data from the received analytics tracking data communication and a respective timestamp of each previously received analytics tracking data communication of the second subset.
- Computer readable storage medium also referred to as computer readable medium.
- processing unit(s) e.g., one or more processors, cores of processors, or other processing units
- processing unit(s) e.g., one or more processors, cores of processors, or other processing units
- Examples of computer readable media include, but are not limited to, CD-ROMs, flash drives, RAM chips, hard drives, EPROMs, etc.
- the computer readable media does not include carrier waves and electronic signals passing wirelessly or over wired connections.
- the term “software” is meant to include firmware residing in read-only memory or applications stored in magnetic storage, which can be read into memory for processing by a processor.
- multiple software inventions can be implemented as sub-parts of a larger program while remaining distinct software inventions.
- multiple software inventions can also be implemented as separate programs.
- any combination of separate programs that together implement a software invention described here is within the scope of the invention.
- the software programs when installed to operate on one or more systems, define one or more specific machine implementations that execute and perform the operations of the software programs.
- a computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and it can be deployed in any form, including as a stand alone program or as a module, component, subroutine, object, or other unit suitable for use in a computing environment.
- a computer program may, but need not, correspond to a file in a file system.
- a program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code).
- a computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
- FIG. 10 conceptually illustrates a system 1000 with which some implementations of the subject technology may be implemented.
- the system 1000 can be a computer, phone, PDA, or any other sort of electronic device. Such a system includes various types of computer readable media and interfaces for various other types of computer readable media.
- the system 1000 includes a bus 1005 , processing unit(s) 1010 , a system memory 1015 , a read-only memory 1020 , a storage device 1025 , an optional input interface 1030 , an optional output interface 1035 , and a network interface 1040 .
- the bus 1005 collectively represents all system, peripheral, and chipset buses that communicatively connect the numerous internal devices of the system 1000 .
- the bus 1005 communicatively connects the processing unit(s) 1010 with the read-only memory 1020 , the system memory 1015 , and the storage device 1025 .
- the processing unit(s) 1010 retrieves instructions to execute and data to process in order to execute the processes of the invention.
- the processing unit(s) can be a single processor or a multi-core processor in different implementations.
- the read-only-memory (ROM) 1020 stores static data and instructions that are needed by the processing unit(s) 1010 and other modules of the system 1000 .
- the storage device 1025 is a read-and-write memory device. This device is a non-volatile memory unit that stores instructions and data even when the system 1000 is off. Some implementations of the invention use a mass-storage device (such as a magnetic or optical disk and its corresponding disk drive) as the storage device 1025 .
- the system memory 1015 is a read-and-write memory device. However, unlike storage device 1025 , the system memory 1015 is a volatile read-and-write memory, such a random access memory.
- the system memory 1015 stores some of the instructions and data that the processor needs at runtime.
- the invention's processes are stored in the system memory 1015 , the storage device 1025 , and/or the read-only memory 1020 .
- the various memory units include instructions for processing multimedia items in accordance with some implementations. From these various memory units, the processing unit(s) 1010 retrieves instructions to execute and data to process in order to execute the processes of some implementations.
- the bus 1005 also connects to the optional input and output interfaces 1030 and 1035 .
- the optional input interface 1030 enables the user to communicate information and select commands to the system.
- the optional input interface 1030 can interface with alphanumeric keyboards and pointing devices (also called “cursor control devices”).
- the optional output interface 1035 can provide display images generated by the system 1000 .
- the optional output interface 1035 can interface with printers and display devices, such as cathode ray tubes (CRT) or liquid crystal displays (LCD). Some implementations can interface with devices such as a touchscreen that functions as both input and output devices.
- CTR cathode ray tubes
- LCD liquid crystal displays
- bus 1005 also couples system 1000 to a network interface 1040 through a network adapter (not shown).
- the computer can be a part of a network of computers (such as a local area network (“LAN”), a wide area network (“WAN”), or an Intranet, or an interconnected network of networks, such as the Internet. Any or all components of system 1000 can be used in conjunction with the invention.
- Some implementations include electronic components, such as microprocessors, storage and memory that store computer program instructions in a machine-readable or computer-readable medium (alternatively referred to as computer-readable storage media, machine-readable media, or machine-readable storage media).
- computer-readable media include RAM, ROM, read-only compact discs (CD-ROM), recordable compact discs (CD-R), rewritable compact discs (CD-RW), read-only digital versatile discs (e.g., DVD-ROM, dual-layer DVD-ROM), a variety of recordable/rewritable DVDs (e.g., DVD-RAM, DVD-RW, DVD+RW, etc.), flash memory (e.g., SD cards, mini-SD cards, micro-SD cards, etc.), magnetic and/or solid state hard drives, read-only and recordable Blu-Ray® discs, ultra density optical discs, any other optical or magnetic media, and floppy disks.
- CD-ROM compact discs
- CD-R recordable compact discs
- the computer-readable media can store a computer program that is executable by at least one processing unit and includes sets of instructions for performing various operations.
- Examples of computer programs or computer code include machine code, such as is produced by a compiler, and files including higher-level code that are executed by a computer, an electronic component, or a microprocessor using an interpreter.
- ASICs application specific integrated circuits
- FPGAs field programmable gate arrays
- integrated circuits execute instructions that are stored on the circuit itself.
- the terms “computer”, “server”, “processor”, and “memory” all refer to electronic or other technological devices. These terms exclude people or groups of people.
- display or displaying means displaying on an electronic device.
- computer readable medium and “computer readable media” are entirely restricted to tangible, physical objects that store information in a form that is readable by a computer. These terms exclude any wireless signals, wired download signals, and any other ephemeral signals.
- implementations of the subject matter described in this specification 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.
- a display device e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor
- keyboard and a pointing device e.g., a mouse or a trackball
- 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.
- a computer can interact with a user by sending documents to and receiving documents from a device that is used
- Configurations of the subject matter described in this specification 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 subject matter described in this specification, or any combination of one or more 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”) and a wide area network (“WAN”), an inter-network (e.g., the Internet), and peer-to-peer networks (e.g., ad hoc peer-to-peer networks).
- LAN local area network
- WAN wide area network
- inter-network e.g., the Internet
- peer-to-peer networks e.g., ad hoc peer-to-peer networks.
- 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.
- a server transmits data (e.g., an HTML page) to a client device (e.g., for purposes of displaying data to and receiving user input from a user interacting with the client device).
- client device e.g., for purposes of displaying data to and receiving user input from a user interacting with the client device.
- Data generated at the client device e.g., a result of the user interaction
- any specific order or hierarchy of steps in the processes disclosed is an illustration of example approaches. Based upon design preferences, it is understood that the specific order or hierarchy of steps in the processes may be rearranged, or that all illustrated steps be performed. Some of the steps may be performed simultaneously. For example, in certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of various system components in the configurations described above should not be understood as requiring such separation in all configurations, 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.
- a phrase such as an “aspect” does not imply that such aspect is essential to the subject technology or that such aspect applies to all configurations of the subject technology.
- a disclosure relating to an aspect may apply to all configurations, or one or more configurations.
- a phrase such as an aspect may refer to one or more aspects and vice versa.
- a phrase such as a “configuration” does not imply that such configuration is essential to the subject technology or that such configuration applies to all configurations of the subject technology.
- a disclosure relating to a configuration may apply to all configurations, or one or more configurations.
- a phrase such as a configuration may refer to one or more configurations and vice versa.
- example is used herein to mean “serving as an example or illustration.” Any aspect or design described herein as “example” is not necessarily to be construed as preferred or advantageous over other aspects or designs.
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Strategic Management (AREA)
- Data Mining & Analysis (AREA)
- Finance (AREA)
- Development Economics (AREA)
- Accounting & Taxation (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Entrepreneurship & Innovation (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- General Engineering & Computer Science (AREA)
- Game Theory and Decision Science (AREA)
- Economics (AREA)
- Marketing (AREA)
- General Business, Economics & Management (AREA)
- Environmental & Geological Engineering (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Computer And Data Communications (AREA)
- Debugging And Monitoring (AREA)
Abstract
The subject technology provides configurations for processing late and/or out-of-order analytics tracking data communications. An analytics tracking data communication is received. The subject technology determines a timestamp included in the analytics tracking data from the received analytics tracking data communication. The subject technology determines a session based on the determined new state changing information. The subject technology determines other analytics tracking data included in the analytics tracking data communication to associate with the determined new state changing information in the determined session if new state changing information is included in the analytics tracking data from the received analytics tracking data communication. The analytics tracking data and the other analytics tracking data associated with the new campaign information is then stored.
Description
- The present application claims the benefit of priority under 35 U.S.C. §119 from U.S. Provisional Patent Application Ser. No. 61/641,850 entitled “System for Centralized Analytics Tracking Via Server-Side Sessionization,” filed on May 2, 2012, the disclosure of which is hereby incorporated by reference in its entirety for all purposes.
- Web site analytics involves the analysis and reporting of web site traffic data to an associated publisher. A publisher is an entity that owns and/or manages a particular web site. The publisher can monitor web site analytics data related to user visits and links to the web site by using web site analytics tools provided by third parties.
- Existing analytics data systems work well for processing a high volume of web traffic data and/or application analytics data in order to provide interactive reports over substantial periods of time with high fidelity. These systems do not always accurately report web traffic data and/or application analytics data when changes are made to a publisher's web pages due to 1) different page configurations on respective pages, which can increase the difficulty in maintaining consistent business logic across the pages or 2) caching on the publisher's web site, which can result in inconsistent data being reported to a given web analytics system. Additionally, each request sent to a given analytics system can include one or more cookies, which increases the utilization of network bandwidth across the system.
- In some instances, clients (e.g., various web browsers and/or applications) are required to provide local storage in order to persist state information in the aforementioned local storage. For instance, state information are included in cookies that are maintained and provided by such clients, and the cookies then transmitted to a given web analytics system in order to track sessions, provide information for online marketing campaigns, provide user information, and for tracking other client state information on the publisher's web site. However, certain clients (e.g., mobile clients such as mobile applications, users that have disabled cookies, etc.) do not always provide support for local storage in order to persist state information. In some instances, support for accessing local storage and/or cookies can vary across different clients, which can increase the difficulty in consistently maintaining state information across different clients. Consequently, existing web site analytics data systems can have difficulty in accurately reporting analytics data across a multitude of clients in view of the aforementioned issues.
- The subject technology provides for a machine-implemented method for processing late and/or out-of-order analytics tracking data communications, the method including: receiving an analytics tracking data communication in which the analytics tracking data communication includes analytics tracking data that includes data for tracking an activity associated with a web site or application; determining a timestamp included in the analytics tracking data from the received analytics tracking data communication; determining if new state changing information is included in the analytics tracking data from the received analytics tracking data communication; determining a session based on the determined new state changing information; determining other analytics tracking data included in the analytics tracking data communication to associate with the determined new state changing information in the determined session if new state changing information is included in the analytics tracking data from the received analytics tracking data communication in which the other analytics tracking data is associated with one or more previously received analytics tracking data communications; and storing the analytics tracking data and the other analytics tracking data associated with the new campaign information.
- Another aspect of the subject technology provides a system. The system includes memory, one or more processors and one or more modules stored in memory and configured for execution by the one or more processors. The system includes a dynamic session module configured to receive an analytics tracking data communication in which the analytics tracking data communication includes analytics tracking data that includes data for tracking an activity associated with a web site or application, determine a timestamp included in the analytics tracking data from the received analytics tracking data communication, determine if new state changing information is included in the analytics tracking data from the received analytics tracking data communication, determine a session based on the determined new state changing information, determine other analytics tracking data included in the analytics tracking data communication to associate with the determined new state changing information in the determined session if new state changing information is included in the analytics tracking data from the received analytics tracking data communication in which the other analytics tracking data is associated with one or more previously received analytics tracking data communications, and store the analytics tracking data and the other analytics tracking data associated with the new campaign information.
- The subject technology further provides a non-transitory machine-readable medium including instructions stored therein, which when executed by a machine, cause the machine to perform operations including: receiving an analytics tracking data communication in which the analytics tracking data communication includes analytics tracking data that includes data for tracking an activity associated with a web site or application; determining a timestamp included in the analytics tracking data from the received analytics tracking data communication; determining if new state changing information is included in the analytics tracking data from the received analytics tracking data communication; determining a session based on the determined new state changing information; determining other analytics tracking data included in the analytics tracking data communication to associate with the determined new state changing information in the determined session if new state changing information is included in the analytics tracking data from the received analytics tracking data communication in which the other analytics tracking data is associated with one or more previously received analytics tracking data communications; and storing the analytics tracking data and the other analytics tracking data associated with the new campaign information.
- It is understood that other configurations of the subject technology will become readily apparent to those skilled in the art from the following detailed description, wherein various configurations of the subject technology are shown and described by way of illustration. As will be realized, the subject technology is capable of other and different configurations and its several details are capable of modification in various other respects, all without departing from the scope of the subject technology. Accordingly, the drawings and detailed description are to be regarded as illustrative in nature and not as restrictive.
- Several configurations of the subject technology are set forth in the following figures.
-
FIG. 1 conceptually illustrates an example communication flow in an analytics tracking system for receiving and processing web site tracking data in the form of analytics tracking data communications. -
FIG. 2 conceptually illustrates an example process for routing an analytics tracking data communication for persistent and temporary storage of some configurations. -
FIG. 3 conceptually illustrates various attributes that are included in example resource configurations for one or more pages of a publisher's web site. -
FIG. 4 conceptually illustrates an example process for determining resource configuration information for applying to analytics tracking data. -
FIG. 5 conceptually illustrates an example communication flow in an analytics tracking system from a client computing device to an analytics server for propagating information from an initial analytics tracking data communication to subsequent analytics tracking data communications. -
FIG. 6 describes an example process for propagating information from an initial analytics tracking data communication to subsequent analytics tracking data communications at an analytics server. -
FIG. 7 describes an example process for providing aggregated analytics tracking data associated with a dynamically generated session in response to a query for analytics tracking data. -
FIG. 8 conceptually illustrates an example time sequence in which different hits are received at an analytics server. -
FIG. 9 conceptually illustrates an example process for processing late and/or out-of-order analytics tracking data communications. -
FIG. 10 conceptually illustrates an example system in which some configurations are implemented. - The detailed description set forth below is intended as a description of various configurations of the subject technology and is not intended to represent the only configurations in which the subject technology may be practiced. The appended drawings are incorporated herein and constitute a part of the detailed description. The detailed description includes specific details for the purpose of providing a thorough understanding of the subject technology. However, the subject technology is not limited to the specific details set forth herein and may be practiced without these specific details. In some instances, structures and components are shown in block diagram form in order to avoid obscuring the concepts of the subject technology.
- To use a web site analytics data system, a publisher typically provides tracking instructions embedded in the web site's web pages (alternatively or conjunctively, by providing code in its web page that requests the tracking instructions from an analytics server). For instance, the tracking instructions are a small region of JavaScript™ code that the publisher includes in each page of the publisher's web site for which traffic is to be tracked. When a web page is rendered by a user device and/or client (e.g., web browsers, mobile devices, tablet devices, thin clients, thick clients, etc.), the tracking instructions are executed, which collects visitor data and/or other analytics tracking data and sends it back to an analytics server in the form of an analytics tracking data communication (“hit”) for processing. One method of sending the analytics tracking data communication is to send it as part of a Hypertext Transfer Protocol (HTTP) request.
- Web site traffic data can be in the form of the aforementioned analytics tracking data communications (e.g., HTTP requests or “hits” that are generated from various user devices and/or clients). Analytics tracking data can be created upon accessing a resource (e.g., web page, image file, banner ad, audio file, etc.) on the web site by a particular visitor to a publisher's web site, or in response to an event on a web page or publisher's web site. The analytics tracking data can be sent in batch as included in one or more analytics tracking data communication(s) when there is a network connection, or alternatively included in a respective analytics tracking data communication that is triggered upon an access to a web page or resource on the web site or in response to an event on the web page or publisher's web site. For the purpose of web site analytics reporting, the associated web site tracking data (e.g., included in associated HTTP requests) can include a web property ID (e.g., an account identifier that identifies a publisher's analytics account for a particular web site), visitor identity data (e.g., anonymized identifier corresponding to a unique client device), an event statistic(s) (such as a timestamp of the current web page communication), and user data such as location data (i.e., geographical information) associated with the visitor to the publisher's web site. The amount and types of events/information that are reported in the tracking data can be specified by the publisher (e.g., to account for particular information that a publisher wishes to track as web site analytics data).
- Although an analytics tracking data communication is described as including web site traffic data, an analytics tracking data communication is not limited to including web site traffic data. In particular, an analytics tracking data communication can include data from any source (e.g., application, platform, etc.) that is utilized for tracking an activity associated with the source. For example, in a mobile application platform, an analytics tracking data communication can include analytics tracking data that tracks an event associated with an activity within the mobile application platform. In this example, the analytics tracking data associated with the mobile application platform may not include web site traffic data because the mobile application platform does not require the use of a client such as a web browser. Aspects of the herein described analytics tracking system therefore can be configured to receive and process an analytics tracking data communication(s) including different forms of analytics tracking data that are outside the scope of web site tracking data. As used herein, the phrase “analytics tracking data” may include web site tracking data and/or other types of analytics tracking data other than web site tracking data (e.g., application tracking data).
- In situations in which the systems discussed here collect personal information about users, or may make use of personal information, the users may be provided with an opportunity to control whether programs or features collect user information (e.g., information about a user's social network, social actions or activities, profession, a user's preferences, or a user's current location), or to control whether and/or how to receive content from the content server that may be more relevant to the user. In addition, certain data may be treated in one or more ways before it is stored or used, so that personally identifiable information is removed. For example, a user's identity may be treated so that 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. Thus, the user may have control over how information is collected about the user and used by a content server. Moreover, as described herein, demographic-related data may be aggregated for one or more groups of users so that an individual user(s) is not personally identifiable.
- Current analytics systems provide for aggregating and reporting of web site traffic data. However, current analytics systems typically require that clients (e.g., various web browsers) implement logic for providing a session associated with each analytics tracking data communication (e.g., request) that is transmitted to a given web analytics system. A session associated with a visit to a publisher's web site can be used by the analytics system to associate requests and other tracking data to a particular client (e.g., web browser). In one example, each session can include a series of requests from a uniquely identified client with 1) a time of no more than predetermined amount (e.g., 30 minutes) between requests, and 2) no requests for pages from other domains (e.g., other web sites) intervening between requests.
- As used herein, the term “sessionization” refers to a technique or techniques for providing a session and associating the session to one or more requests (e.g., analytics tracking data communications) corresponding to visitor activity from a uniquely identified client. The uniquely identified client can be associated with a respective visitor (e.g., user) to the publisher's site. Further, sessionization can include techniques for providing/associating campaign information to each incoming request. As used herein, campaign information may include a page Uniform Resource Identifier (e.g., page URI) or referrer path that indicates whether incoming traffic to a particular landing page is from an organic campaign (e.g., from a web search), an explicit campaign defined by ad keywords, a referral campaign from another website, or a direct campaign. In one example, campaign information may identify a particular marketing campaign corresponding with a set of associated marketing activities. For instance, the associated marketing activities can respectively correspond to a set of web pages on the publisher's web site. Any visitor activity/action related to the set of web pages on the publisher's web page can then be associated with the marketing campaign. In this manner, the campaign information can identify the marketing campaign associated with the visitor action(s).
- In current web analytics systems, sessionization occurs on the client-side without the involvement of a given web analytics system. Each client, however, can implement the logic for providing sessions differently, which can result in inconsistent sessionization of requests received by the web analytics system.
- To address the aforementioned issues with client-side sessionization, the subject technology is directed to an analytics tracking system which implements, on the server side, sessionization of incoming requests or analytics tracking data communications to an analytics tracking server. As a result, clients can transmit “raw” hit or request information in each analytics tracking data communication (e.g., without performing sessionization beforehand) which include a smaller subset of analytics tracking data that is transmitted to the analytics tracking server. For instance, in contrast to existing web analytics systems, analytics tracking data transmitted from a client(s) does not include session information and/or campaign information from prior sessions. Moreover, a first “raw” hit can contain campaign information. However, the campaign information is no longer required to be stored in cookies, so that all subsequent hits will not contain the campaign information given that the analytics tracking server as described herein can propagate the campaign information on the server-side. Consequently, network bandwidth can be preserved and errors on the client-side can be reduced.
- Client-side sessionization typically provided some (or all) of the aforementioned web site tracking (e.g., session information, visitor information, campaign information, etc.) in one or more first party cookies (e.g., cookies that originated from the publisher's site), which are then included in analytics tracking data communications transmitted to a given web analytics server. The herein described analytics tracking system minimizes (or even eliminates) reliance on cookies to track analytics data by performing sessionization on the server side.
-
FIG. 1 conceptually illustrates an example communication flow in ananalytics tracking system 100 for receiving and processing web site tracking data in the form of analytics tracking data communications. Theanalytics tracking system 100 includes one ormore clients 110. Clients include different computing devices such as mobile devices, netbooks, laptops, desktop computers, etc. Upon accessing a resource on a publisher's web site 120 (such as a web page, link, image, etc.), a client transmits web site tracking data as an analytics tracking data communication to ananalytics server 130. In another example, processed data from the publisher'sweb site 120 can be transmitted to theclients 110, and then theclients 110 can subsequently transmit analytics tracking data to ananalytics server 130. - Although the
example system 100 inFIG. 1 illustrates a communication flow involving web site tracking data, it should be understood that any type of analytics tracking data can be included in thesystem 100 and still be within the scope of the subject technology. Moreover,FIG. 1 shows an example in which web site tracking data is passed from theclient 110 to the publisher'sweb site 120 and then to theanalytics server 130. However, as mentioned before, each client can directly transmit analytics tracking data to the analytics server 130 (e.g., bypassing the publisher's web site 120) for processing as further shown inFIG. 1 . In one example, the publisher's web site includes the code/instructions for the data that the clients should send to theanalytics server 130. In another example for tracking analytics data from an application on a client, logic is included in the application for communication with theanalytics server 130. - Web site tracking data can be transmitted via a network, which can include, but is not limited to, a local network, remote network, or an interconnected network of networks (e.g., Internet). Moreover, the
clients 110, publisher'sweb site 120 andanalytics server 130 can be configured to communication over any type of network, such as a local area network, a wide area network, or an interconnected network of networks (e.g., the Internet) and by using any sort of network/communications protocol (Transmission Control Protocol and Internet Protocol (TCP/IP), HTTP, etc.). - In one example, instead of a
single analytics server 130, the analytics system can include a respective cluster of servers/computers that perform a same set of functions in a distributed and/or load balanced manner. A cluster can be understood as a group of servers/computers that are linked together to seamlessly perform the same set of functions, which can provide performance, reliability and availability advantages over a single server/computer architecture. In an example with a group of servers, the analytics system may be configured to route event tracking communications associated with a unique visitor and/or a particular session to the same server within the group of servers for processing. - Moreover, one or more different tiers of servers can be included for processing analytics tracking data associated with web analytics. In one example, a multi-tiered system can include a tier of collecting servers for receiving incoming analytics tracking data communications (e.g., HTTP requests for logging web page requests at corresponding web sites). A collecting server among the tier of collecting servers that receives an incoming communication can determine a particular logging server in a lower tier to route the incoming communication. Upon receiving the incoming communication, the logging server processes the communication by routing the communication to a tier of long-term storage servers for persistent storage. Incoming analytics tracking data communications can then be routed to a tier of one or more analytics servers (e.g., from the collecting tier).
- Irrespective of whether a single server or multiple analytics servers are provided, each analytics server implements session logic in order provide sessionization of incoming web site tracking data received in analytics tracking data communications. In the following description, an example process for sessionizing an analytics tracking data communication from a unique visitor is described in further detail.
-
FIG. 2 conceptually illustrates anexample process 200 for generating session information based on an analytics tracking data communication of some configurations. More specifically,FIG. 2 illustrates the process performed by an analytics server to sessionize analytics tracking data communications based on analytics tracking data included in an analytics tracking data communication. - The
process 200 starts at 205 when an analytics tracking data communication is received. Referring toFIG. 1 , an analytics tracking data communication is received by theanalytics server 130 after one of theclients 110 accesses a resource (e.g., web page, link, image, etc.) on the publisher'sweb site 120. - The
process 200 at 210 determines analytics tracking data from the received analytics tracking data communication. In one example, the analytics tracking data includes at least visitor information. For instance, visitor information can include a unique ID string associated with a unique visitor that accesses the publisher's web site. The visitor information does not necessarily identify a particular end-user. For example, the visitor information can be a anonymized identifier that is determined based on different information such as the visitor's web browser or client, the visitor's hostname, IP address, etc. Additionally, the analytics tracking data also includes a timestamp that represents a time and/or date in which the unique visitor visited the publisher's web site (e.g., activity indicating access of a resource on the publisher's web site). A timestamp in some implementations is a sequence of alphanumeric characters that denotes the date and/or time in which a particular event occurred. In some instances, a client can inaccurately report a time in which an event occurred (e.g., due to an incorrect clock reading and/or setting). To address this issue, in one example, a timestamp represents a delta or an elapsed amount of time in which an event was recorded/detected by a client to when the event was transmitted as part of the analytics tracking data to the analytics server. - The
process 200 at 215 determines if an initial visit for the unique visitor has occurred. In one example, this determination is made based on whether the unique visitor has any record of visiting the publisher's web site. For example, if a prior timestamp or other analytics data does not exist for the unique visitor, theprocess 200 determines that the received analytics tracking data communication is an initial visit to the publisher's web site for the unique visitor. In an instance where no such record is found for the unique visitor, theprocess 200 continues to 230 to create a new session for the unique visitor. In one example, a new session can be created by storing the timestamp from the analytics tracking data to indicate a start time of a new session for the unique visitor. - Alternatively, if it is determined that this is not the initial visit for the unique visitor (e.g., the unique visitor has previously visited the publisher's web site), the
process 200 continues to 220 to determine a last visit of the unique visitor based on a timestamp. In one example, theprocess 200 can determine the last visit based on a prior timestamp of previous activity associated with the unique visitor (e.g., a timestamp included in previously received analytics tracking data). The timestamp can be understood as one example of a session boundary condition. However, theprocess 200 can utilize other session boundary conditions to determine an initial visit for the unique visitor. For instance, theprocess 200 determines a last visit of the unique visitor based on other session boundary conditions. By way of example, other session boundary conditions can include new campaign information, a session marker indicating a new session, or a session timeout. Each of the aforementioned session boundary conditions can indicate that a new session should be created for the unique visitor. Additional types of session boundary conditions can be considered and still be within the scope of the subject technology. - Based on the determination at 220, the
process 200 continues to 225 to determine if an active session exists for the unique visitor. In one example, an active session can be determined by looking up a stored timestamp that indicates when the active session started. In some configurations, after predetermined time of inactivity (e.g., 30 minutes), a session is considered inactive or expired (e.g., session timeout). Thus, if it is determined that there is no active session (e.g., no timestamp indicating when the active session started, or if the timestamp is older than a predetermined time period, etc.), theprocess 200 continues to 230 to create a new session for the user. Further, as described above, each of the aforementioned session boundary conditions determined at 220 (e.g., new campaign information, session marker, session timeout, etc.) can indicate that a new session should be created (effectively determining that an active session does not exist), and theprocess 200 then continues to 230. Alternatively, if an active session exists, theprocess 200 continues to 235 to populate visitor and/or session-related information as further described below. - After creating the new session at 230 (e.g., coming from either 215 or 225) or determining that an active session exists at 225, the
process 200 continues to 235 to populate visitor and/or session-related information. For instance, the analytics server determines, based on configuration information associated with one or more pages of the publisher's web site, visitor and/or session-related information to populate with the received analytics tracking data. Further, the visitor and/or session-related information is based on analytics data included in the received analytics tracking data, such as visitor information or campaign information. For example, campaign information can be populated with the received analytics tracking data. In one example, the campaign information includes a name for a marketing campaign (e.g., “Product XYC,” “Local Sports Event,” “Famous Person,” etc.). As described before, the campaign information identifies a particular marketing campaign corresponding with a set of associated marketing activities. For instance, the associated marketing activities can respectively correspond to a set of web pages on the publisher's web site. Any visitor activity/action related to the set of web pages on the publisher's web site can then be associated with the marketing campaign. - The
process 200 at 240 stores and/or persists the analytics tracking data including the campaign information. In one example, the analytics tracking data is stored in non-persistent storage on a temporary basis before being committed to persistent storage in some configurations. In one example, theprocess 200 stores the analytics tracking data in a web properties table stored in memory (e.g., random access memory) of the analytics server. For instance, the analytics tracking data may be segmented according to the campaign information. Theprocess 200 then ends. - In addition, the analytics server can delay writing the analytics tracking data stored in non-persistent storage to (permanent or long-term) persistent storage after a predetermined period of time has elapsed. For instance, the analytics server can wait until all analytics data is received for a particular day, and once the sessionization data has stabilized for that day, the server will then write the analytics data (permanently) to persistent storage on the following day. In this manner, the analytics server can account for changes to any state information associated with incoming analytics tracking data.
- In a given web analytics system, each page on a publisher's site is configured separately (even with the same attributes). For example, each page can include lists for search engines (e.g., for tracking referrals, organic traffic, etc.), cookie timeout/expiration setting, session timeout/expiration setting, etc. However, per-page configuration is prone to error (e.g., search engine list is incorrect or timeout information was set incorrectly for one of the pages on the publisher's site). Further, modifications of configuration may not immediately reflect to all the clients due to HTTP caching. Consequently, the publisher (e.g., developers responsible for the pages) has the burden to provide and maintain similar configurations on all pages for client-side sessionization to be performed consistently.
- To address the above issues, the subject technology provides for server-side configuration of resources (e.g., web pages, etc.) on a publisher's web site to provide consistent sessionization of incoming analytics tracking data communications (e.g., requests from clients including analytics tracking data for unique visitors).
-
FIG. 3 conceptually illustrates various attributes that are included in example resource configurations for one or more pages of a publisher's web site. In one example, an analytics server stores one or more resource configurations that respectively correspond to different pages from the publisher's web site. In this fashion, the business logic (based on the resource configurations) for sessionization of visitor activity from analytics tracking data is provided at the server-side. Thus, any changes to the resource configurations are reflected immediately without the potential for not being properly applied during sessionization due to caching on the client-side or publisher's web site or incorrect configuration on the client-side or publisher's web site. - As illustrated,
FIG. 3 includesdifferent resources resource configurations resources resource configuration 320, andresource 315 corresponds to resourceconfiguration 325. Theresource configuration 320 includes different attributes in comparison with theresource configuration 325. For instance, the respective search engine lists and timeout attributes are different forresource configurations resource configurations other resource configurations 335 for other pages from the publisher's web site. - Although the example resource configurations shown in
FIG. 3 include a set of attributes, it should be understood that each resource configuration is not required to include all of the attributes shown inFIG. 3 . Additionally, each resource configuration can include other attributes not illustrated in the example ofFIG. 3 and still be within the scope of the subject technology. - In the following section, an example process for applying a resource configuration during sessionizing an analytics tracking data communication from a unique visitor is described in further detail.
-
FIG. 4 conceptually illustrates anexample process 400 for determining resource configuration information for applying to analytics tracking data. More specifically,FIG. 4 illustrates the process performed by an analytics server to apply resource configuration information in order to sessionize analytics tracking data communications based on analytics tracking data included in an analytics tracking data communication. In one example, theprocess 400 can be performed conjunctively with theprocess 200 described by reference toFIG. 2 . - As described before, web site traffic data can be in the form of the aforementioned analytics tracking data communications (e.g., HTTP requests or “hits” that are generated from various user devices and/or clients). Each analytics tracking data communication can be triggered upon loading of a web page or resource (e.g., image file, banner ad, audio file, etc.) on the web site by a particular visitor to a publisher's web site. For the purpose of web site analytics reporting, the associated web site tracking data (e.g., included in associated HTTP requests) can include a web property ID (e.g., an account identifier that identifies a publisher's analytics account of a particular web site), visitor identity data (e.g., anonymized identifier corresponding to a unique client device), an event statistic(s) (such as a timestamp of the current web page communication), and user data such as location data (i.e., geographical information) associated with the visitor to the publisher's web site.
- The
process 400 begins at 405 by determining resource information based on analytics tracking data from an analytics tracking data communication (e.g., received by the analytics server in a request). In one example, the resource information includes information identifying a page from the publisher's web site in which the visitor activity or event occurred. Theprocess 400 at 410 determines resource configuration information based on the determined resource information. Theprocess 400 at 415 applies one or more attributes from the determined resource configuration to the analytics tracking data. In one example, the analytics server applies the attributes during sessionization of a received analytics tracking data communication as described before inFIG. 2 . Theprocess 400 then ends. - Analytics data (e.g., campaign information, visitor activity, etc.) are stored locally on the client via cookies. However, reliance on client-side cookies can have several weaknesses: 1) unreliability due to cookies being deleted or not supported on certain clients and 2) each hit on a publisher's web site that reports analytics data sends redundant information (e.g., in one or more cookies) to a given analytics server. Further, as described before, the utilization of cookies increases an amount of network bandwidth required for transmitting (on the client-side) and receiving (on the server-side) cookies.
- As described before, analytics tracking data based on visitor activity (“web site tracking data”) can be included in the aforementioned analytics tracking data communications (e.g., HTTP requests or “hits” that are generated from various user devices and/or clients). Each analytics tracking data communication can be triggered upon loading of a web page or resource (e.g., image file, banner ad, audio file, etc.) on the web site by a particular visitor to a publisher's web site. For the purpose of web site analytics reporting, the associated web site tracking data (e.g., included in associated HTTP requests) can include a web property ID (e.g., an account identifier that identifies a publisher's analytics account of a particular web site), visitor identity data (e.g., anonymized identifier corresponding to a unique client device), an event statistic(s) (such as a timestamp of the current web page communication), and user data such as location data (i.e., geographical information) associated with the visitor to the publisher's web site. However, in existing web analytics systems, redundant analytics tracking data is included in each analytics tracking data communication that is transmitted to a given web analytics system.
- To address the aforementioned issues, the subject technology further provides for propagating analytics tracking data from an initial incoming analytics tracking data communication received from a unique client (e.g., visitor to a publisher's web site) to subsequently received analytics tracking data communications from the unique client.
-
FIG. 5 conceptually illustrates an example communication flow in ananalytics tracking system 500 from a client computing device to an analytics server for propagating information from an initial analytics tracking data communication (e.g., for a new session) to subsequent analytics tracking data communications. - As illustrated, the
analytics tracking system 500 includes aclient computing device 510, a publisher'sweb site 520 and ananalytics server 540. In the example shown inFIG. 5 , theclient computing device 510 visits the publisher'sweb site 520 and accesses several resources hosted on the publisher's web site, which are then reported to theanalytics server 540 as different analytics tracking data communications. For each visitor action, the publisher'sweb site 520 can transmit a response communication in order to set one or more cookies on theclient computing device 510. Further, for each visitor action on the publisher'sweb site 520 by theclient computing device 510, a respective hit (e.g., corresponding to a respective analytics tracking data communication) is transmitted to theanalytics server 540. In one example, a first hit 530 (shown as “Hit 1”) represents an initial visitor activity tracked on the publisher'sweb site 520 that is reported to theanalytics server 540.Subsequent hits analytics server 540. In some instances, as further shown inFIG. 5 , one ormore hits 538 can be transmitted from theclient computing device 510 to theanalytics server 540. - At the
analytics tracking server 540, incoming analytics tracking data communications can be stored in a table 550 (or similar data structure) for tracking different analytics data from the analytics tracking data communications. As shown, the table 550 includesanalytics data 562 corresponding to thefirst hit 530. In one example, theanalytics data 562 can include one or more dimensions corresponding todifferent attributes 560 such as campaign information, gender of a unique visitor, and session information. In one example, the gender of the unique visitor can be provided based on user profile information of the unique visitor on the publisher's web site. Other dimensions for other attributes can be included in theanalytics data 562 and still be within the scope of the subject technology. The different attributes for the different dimensions are stored by theanalytics server 540 for future retrieval. In this manner, subsequent hits reporting visitor activity on the publisher'sweb site 520 are not required to include such attributes. For instance, JavaScript™ code on the publisher's web site is included on a set of pages to instruct the client to only include certain attributes upon a particular visit from the unique client. In subsequent visits to the publisher's web site, the attributes are not included in analytics tracking data communications transmitted to the analytics server. For each subsequent incoming analytics tracking data communication, the analytics server propagates the stored attributes 560 toanalytics data analytics data 567 includes state changing information (e.g., “Campaign: 456”) that has been propagated to Hit N in 568, which is an example of partial propagation of an attribute described in further detail below. -
FIG. 6 describes anexample process 600 for propagating information from an initial analytics tracking data communication to subsequent analytics tracking data communications at an analytics server. - The
process 600 begins at 605 by receiving an analytics tracking data communication. Theprocess 600 at 610 determines if the analytics tracking data communication is a hit with state changing information based on analytics tracking data included in the received analytics tracking data communication. State changing information can include new campaign information, new visitor information, etc. Other types of state changing information can be considered and still be within the scope of the subject technology. - If it is determined at 610 that the received analytics tracking data communication is a hit with state changing information, the
process 600 continues to 615 to determine one or more attributes from analytics tracking data included in the analytics tracking data communication. By way of example, for each attribute included in the analytics tracking data, theprocess 600 makes a determination whether the attribute (e.g., the attribute includes state changing information) should be stored in order to propagate to other hits. - The
process 600 at 620 then stores the one or more attributes for propagating to other analytics tracking data communications. In one example, the one or more attributes can include state changing information (e.g., new campaign information) as described above. Theprocess 600 at 625 then determines if any existing attributes should be partially propagated to the (current) received analytics tracking data. For instance, it is possible that previously received analytics tracking data now stored at the analytics server includes gender information for a visitor that should be propagated to the received analytics tracking data. If any existing attributes should be propagated, theprocess 600 continues to 630 to propagate such attributes to the analytics tracking data included in the received analytics tracking data communication. Theprocess 600 then continues to 635 to store and/or persist the analytics tracking data including the propagated attribute(s). In one example, the analytics tracking data is stored in non-persistent storage on a temporary basis before being committed to persistent storage in some configurations. Alternatively, if a determination is made that no attribute should be propagated at 625, theprocess 600 continues to 635 to store the analytics tracking data. - If the
process 600 determines at 610 that the received analytics tracking data communication is not a hit with state changing information, then theprocess 600 continues to 630 in order to propagate any stored attributes to analytics tracking data included in the received analytics tracking data communication. Theprocess 600 then continues to 635 to store the analytics tracking data including the propagated attributes. The analytics tracking data is stored in non-persistent storage on a temporary basis before being committed to persistent storage in some configurations. In this manner, additional analytics data corresponding to one or more different dimensions are applied to this subsequent analytics tracking data and is consistent with the initial analytics tracking data communication reported to the analytics server. Theprocess 600 then ends. - In addition, the analytics server can delay writing the analytics tracking data stored in non-persistent storage to (permanent or long-term) persistent storage after a predetermined period of time has elapsed. For instance, the analytics server can wait until all analytics data is received for a particular day, and once the state changing data (e.g., one or more attributes) has stabilized for that day, the server will then write the analytics data (permanently) to persistent storage on the following day. In this manner, the analytics server can account for changes to any state information associated with incoming analytics tracking data.
- In a typical analytics system, analytics data for visitor activity (“hit” or “hits”) at a publisher's web site is sessionized at the client-side and then reported to a web analytics server for processing as different hits. These hits are received by a web analytics server and then stored according to campaign information and/or session information included in the hits. However, the network connectivity of some client computing devices (such as mobile devices) could be unreliable in some instances. Moreover, given the distributed nature of the analytics tracking system in one example (e.g., the system is hosted on several distributed servers), it is possible that hits are received out of order due to different buffers and delays of each server. In these instances, hits for a particular session can be received late (and/or out of order) past the lifetime of forming the session. Prior to receiving a late hit for a session, a query of analytics data corresponding to the session would not be accurate. Thus, analytics data already stored by the web analytics server may not accurately reflect visitor activity at the publisher's web site for corresponding campaigns or sessions in which hits are received late.
- In an example in which a late hit included new campaign information, the web analytics server would have to perform further processing (e.g., deletion and modification of existing analytics data erroneously associated with a different campaign) to update the stored analytics data to reflect the new campaign information. For instance, a given analytics tracking system would immediately commit analytics tracking data to persistent storage. In the event of a late hit including new campaign information and before the analytics data is updated, any query to the analytics server for the analytics data would not be accurate with respect to the visitor activity for a particular campaign. Thus, it can be advantageous to delay committing analytics tracking data to persistent storage in light of potentially receiving late hits.
- In the herein described analytics tracking system in which sessionization of analytics data is performed at an analytics server, the analytics data that is reported to the analytics server is often received without any session and/or campaign information (e.g., the analytics data is “stateless”). Thus, the analytics server performs sessionization at the server-side in order to determine an existing session or create a new session for analytics data, and then populates campaign information for the analytics data associated with the session.
- To address the aforementioned issues, the subject technology provides configurations for dynamically sessionizing analytics tracking data stored by the analytics server for responding to a query for analytics tracking data. In light of potentially receiving late hits, the analytics server performs dynamic sessionizing of analytics tracking data instead of relying on previously committed analytics tracking data in persistent storage, which may not accurately reflect new campaign information received in a late hit. More specifically, any received tracking data is not immediately committed to persistent storage and, in one example, kept in non-persistent storage on a temporary basis. The analytics server can then delay committing the analytics tracking data after a specified period of time (e.g., in the following day) to account for late hits that contain new campaign information.
- As described before, analytics tracking data based on visitor activity (“web site tracking data”) on a publisher's web site can be included the aforementioned analytics tracking data communications (e.g., HTTP requests or “hits” that are generated from various user devices and/or clients) that are received and processed by the analytics server.
-
FIG. 7 describes anexample process 700 for providing aggregated analytics tracking data associated with a dynamically generated session in response to a query for analytics tracking data. Theprocess 700 can be performed by the analytics server in one example. - The
process 700 begins at 705 by receiving a query for analytics tracking data associated with a period of time. In one example, the period of time can cover a particular day (or any sub-period of time therein) in which analytics data is being reported to the analytics server. Theprocess 700 at 710 aggregates analytics tracking data for the period of time in order to associate the aggregated analytics tracking data with a dynamically generated session. In one example, the server dynamically generates a session in response to the received query. The server will then aggregate, for a unique visitor, analytics tracking data already received by the server that fall within the period of time based on the query. Given that the analytics data can be delayed for being committed to persistent storage, it should be understood that the aggregation of analytics tracking data can include analytics tracking data already committed in persistent storage and/or analytics tracking data that has yet to be committed to persistent storage (e.g., the data is currently stored on a temporary basis) for the period of time specified in the query. In view of the above, if new campaign information is received in a late hit, the dynamically generated session of the aggregation of analytics tracking data will be based on the new campaign information. In this manner, theprocess 700 can provide up-to-date analytics tracking data based on the new campaign information. - At 715, the
process 700 provides the aggregated analytics tracking data associated with the dynamically generated session in response to the query. The dynamically generated session can be understood as a “throw away” or temporary session that is utilized for responding to a query request. By utilizing a dynamically generated session, the analytics server can provide up-to-date analytics tracking data in response to a query because sessionization occurs on-the-fly. Instead of immediately committing the analytics tracking data and relying on such data, the analytics server utilizes a dynamically generated session to aggregate analytics tracking data to account for late hits with new campaign information that could affect the data returned in the query. Theprocess 700 then ends. - Although the
example process 700 is described in connection with a single dynamically generated session, it should be understood that analytics tracking data can be aggregated for multiple dynamically generated sessions. In an example, in which a query requests a time period that includes more than one session, the analytics server can generate multiple sessions for aggregating the analytics tracking data. - As described above, hits may be received late and/or out-of-order from an order in which corresponding visitor activity occurred at a publisher's web site or an application. The subject technology addresses late or out-of-order hits by performing dynamic sessionization of hits in which hits are split and/or merged from a previously associated session into a different session.
FIG. 8 conceptually illustrates an example time sequence in which different hits are received at an analytics server. More specifically, the example inFIG. 8 showsdifferent stages - As illustrated in the
stage 801, hits 830 (“Hit 1”), 835 (“Hit 3”) and 840 (“Hit 5”) are received in close temporal proximity to each other based on respective timestamps of each hit. Hit 850 (“Hit 6”) is received at a later time. In one example, analytics tracking data including a timestamp is included in each hit. A hit's timestamp denotes a respective time in which visitor activity on a publisher's web site or an application was logged. For instance, the respective timestamps ofhit 840 and hit 850 can indicate that the hits indicate respective activity that was logged more than a session timeout period apart (e.g., 30 minutes apart). As a result, the analytics server groups hits 830, 835 and 840 into afirst session 810 and hit 850 into asecond session 820. - In the
stage 802, hits 860 (“Hit 4”) and 865 (“Hit 2”) are received later (e.g., past the expiration time of the first and second sessions). Similarly, hits 860 and 865 include analytics tracking data including respective timestamps in which visitor activity is logged. Further, hit 860 includes state changing information such as new campaign information. Based on the new campaign information included inhit 860, the analytics server determines that hit 860 should start a new session. Further, the analytics server determines that hit 865 should be included in thefirst session 810 based on the timestamp ofhit 865. - In the
stage 803, the analytics server utilizes the new campaign information inhit 860 to move hit 840 from thefirst session 810 to the newly createdsecond session 870. In one example, the timestamp ofhit 840 is closer in time to the timestamp of hit 860 (e.g., within a session timeout period). As a result, the analytics server makes a determination that hit 840 should be associated with thesecond session 870. In other words, the analytics server determines, by utilizing the new campaign information included inhit 860 and by comparing the respective timestamps ofhits second session 870 withhit 860. Based on the respective timestamps ofhit 840 and hit 850 (e.g., the respective timestamps are more than a session timeout period apart), the analytics server can determine that hit 850 should be included in athird session 820. In some configurations, a hit associated with a new campaign is included in a separate session from prior hits in a different session. In one example, the state changing information included inhit 860 is propagated to thehit 840 in thesecond session 870. In this manner, state changing information received from a late hit (e.g., hit 860) is propagated to subsequent hits in the same session (e.g., hit 840). In another example, the state changing information included inhit 860 is propagated to thehit 850 in thethird session 820. In this manner, state changing information received from a late hit (e.g., hit 860) is propagated to subsequent hits in another session (e.g., hit 850). - Further shown in the
stage 803, the analytics server includes the hit 865 in thefirst session 810. In one example, the respective timestamps ofhit 865 is closer in time to the respective timestamps ofhits hits first session 810 based on the respective timestamps ofhits - As illustrated, the
first session 810 now includeshits second session 870 includeshits third session 820 includes hit 850. In this manner, the analytics server can split and merge different hits into other sessions based on new campaign information, which enables the server to dynamically sessionize hits if hits are received late and/or out-of-order as shown in the example ofFIG. 8 . - The following example process describes how an analytics dynamically splits and merges an incoming analytics tracking data communication (“hit”) with previously received analytics tracking data from prior hits.
FIG. 9 conceptually illustrates anexample process 900 for handling late and/or out-of-order analytics tracking data communications. As described before, analytics tracking data based on visitor activity (“web site tracking data”) on a publisher's web site or an application can be included the aforementioned analytics tracking data communications (e.g., HTTP requests or “hits” that are generated from various user devices and/or clients) that are received and processed by the analytics server. - The
process 900 begins at 905 by receiving an analytics tracking data communication. Theprocess 900 at 910 determines a timestamp included in analytics tracking data from the received analytics tracking data communication. At 915, theprocess 900 determines if new state changing information is included in the analytics tracking data. In one example, new state changing information includes, but is not limited to, new campaign information. In another example, new state changing information includes, but is not limited to, gender information. If so, theprocess 900 continues to 920 to determine a session based on new state changing information and/or a timestamp. In one example, new state changing information includes new campaign information that creates a new session. In another example, new state changing information includes gender information where a new session will not be created by the new state changing information and the session will be determined by a timestamp. Theprocess 900 continues to 925 to associate other analytics tracking data included in received analytics tracking data communication(s) with the session. - Alternatively if no new state changing information is received at 915, the
process 900 continues to 930 to determine a session based on the timestamp included in the analytics tracking data. Theprocess 900 at 935 then associates analytics tracking data included in the received analytics tracking data communication with the session. Theprocess 900 then ends. - In some configurations, the subject technology provides a system. The system includes memory, one or more processors, one or more modules stored in memory and configured for execution by the one or more processors. The system includes a dynamic session module configured to receiving an analytics tracking data communication in which the analytics tracking data communication includes analytics tracking data that includes data for tracking an activity associated with a web site or application, determine a timestamp included in the analytics tracking data from the received analytics tracking data communication, determine if new state changing information is included in the analytics tracking data from the received analytics tracking data communication, determine other analytics tracking data to associate with the new state changing information if new state changing information is included in the analytics tracking data from the received analytics tracking data communication in which the other analytics tracking data is associated with one or more previously received analytics tracking data communications, and store the analytics tracking data and the other analytics tracking data associated with the new campaign information. The other analytics tracking data includes user information, gender information, location, timestamp information, or session information in one example. The new state changing information includes new campaign information, gender information or timestamp information in one example.
- In some configurations, the dynamic session module is further configured to determine a respective session based on the timestamp of the received analytics tracking data communication if no new state changing information is included in the analytics tracking data, associate the analytics tracking data with the determined respective session, and store the analytics tracking data associated with the determined respective session, wherein the determined respective session includes other analytics tracking data associated with previously received analytics tracking data communications.
- In some configurations, determining other analytics tracking data to associate with the new state changing information further includes identifying a subset of the one or more previously received analytics tracking data communications to include in a new session based on the timestamp included in the analytics tracking data from the received analytics tracking data communication and a respective timestamp of each previously received analytics tracking data communication of the subset. The subset of the one or more previously received analytics tracking data communications were previously included a different session from the new session in some configurations. Identifying the subset of the one or more previously received analytics tracking data communications to include in the new session further includes determining if the timestamp included in the analytics tracking data from the received analytics tracking data communication and the respective timestamp of each previously received analytics tracking data communication of the subset are within a session timeout period in some configurations. In some configurations, the dynamic session module is further configured to identify a second subset of the one or more previously received analytics tracking data communications to include in a second new session based on the timestamp included in the analytics tracking data from the received analytics tracking data communication and a respective timestamp of each previously received analytics tracking data communication of the second subset.
- The following section describes an example system that implements aspects of the above described invention.
- Many of the above-described features and applications are implemented as software processes that are specified as a set of instructions recorded on a computer readable storage medium (also referred to as computer readable medium). When these instructions are executed by one or more processing unit(s) (e.g., one or more processors, cores of processors, or other processing units), they cause the processing unit(s) to perform the actions indicated in the instructions. Examples of computer readable media include, but are not limited to, CD-ROMs, flash drives, RAM chips, hard drives, EPROMs, etc. The computer readable media does not include carrier waves and electronic signals passing wirelessly or over wired connections.
- In this specification, the term “software” is meant to include firmware residing in read-only memory or applications stored in magnetic storage, which can be read into memory for processing by a processor. Also, in some implementations, multiple software inventions can be implemented as sub-parts of a larger program while remaining distinct software inventions. In some implementations, multiple software inventions can also be implemented as separate programs. Finally, any combination of separate programs that together implement a software invention described here is within the scope of the invention. In some implementations, the software programs, when installed to operate on one or more systems, define one or more specific machine implementations that execute and perform the operations of the software programs.
- A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and it can be deployed in any form, including as a stand alone program or as a module, component, subroutine, object, or other unit suitable for use in a computing environment. A computer program may, but need not, correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
-
FIG. 10 conceptually illustrates asystem 1000 with which some implementations of the subject technology may be implemented. Thesystem 1000 can be a computer, phone, PDA, or any other sort of electronic device. Such a system includes various types of computer readable media and interfaces for various other types of computer readable media. Thesystem 1000 includes abus 1005, processing unit(s) 1010, asystem memory 1015, a read-only memory 1020, astorage device 1025, anoptional input interface 1030, anoptional output interface 1035, and anetwork interface 1040. - The
bus 1005 collectively represents all system, peripheral, and chipset buses that communicatively connect the numerous internal devices of thesystem 1000. For instance, thebus 1005 communicatively connects the processing unit(s) 1010 with the read-only memory 1020, thesystem memory 1015, and thestorage device 1025. - From these various memory units, the processing unit(s) 1010 retrieves instructions to execute and data to process in order to execute the processes of the invention. The processing unit(s) can be a single processor or a multi-core processor in different implementations.
- The read-only-memory (ROM) 1020 stores static data and instructions that are needed by the processing unit(s) 1010 and other modules of the
system 1000. Thestorage device 1025, on the other hand, is a read-and-write memory device. This device is a non-volatile memory unit that stores instructions and data even when thesystem 1000 is off. Some implementations of the invention use a mass-storage device (such as a magnetic or optical disk and its corresponding disk drive) as thestorage device 1025. - Other implementations use a removable storage device (such as a flash drive, a floppy disk, and its corresponding disk drive) as the
storage device 1025. Like thestorage device 1025, thesystem memory 1015 is a read-and-write memory device. However, unlikestorage device 1025, thesystem memory 1015 is a volatile read-and-write memory, such a random access memory. Thesystem memory 1015 stores some of the instructions and data that the processor needs at runtime. In some implementations, the invention's processes are stored in thesystem memory 1015, thestorage device 1025, and/or the read-only memory 1020. For example, the various memory units include instructions for processing multimedia items in accordance with some implementations. From these various memory units, the processing unit(s) 1010 retrieves instructions to execute and data to process in order to execute the processes of some implementations. - The
bus 1005 also connects to the optional input andoutput interfaces optional input interface 1030 enables the user to communicate information and select commands to the system. Theoptional input interface 1030 can interface with alphanumeric keyboards and pointing devices (also called “cursor control devices”). Theoptional output interface 1035 can provide display images generated by thesystem 1000. Theoptional output interface 1035 can interface with printers and display devices, such as cathode ray tubes (CRT) or liquid crystal displays (LCD). Some implementations can interface with devices such as a touchscreen that functions as both input and output devices. - Finally, as shown in
FIG. 10 ,bus 1005 also couplessystem 1000 to anetwork interface 1040 through a network adapter (not shown). In this manner, the computer can be a part of a network of computers (such as a local area network (“LAN”), a wide area network (“WAN”), or an Intranet, or an interconnected network of networks, such as the Internet. Any or all components ofsystem 1000 can be used in conjunction with the invention. - These functions described above can be implemented in digital electronic circuitry, in computer software, firmware or hardware. The techniques can be implemented using one or more computer program products. Programmable processors and computers can be included in or packaged as mobile devices. The processes and logic flows can be performed by one or more programmable processors and by one or more programmable logic circuitry. General and special purpose computing devices and storage devices can be interconnected through communication networks.
- Some implementations include electronic components, such as microprocessors, storage and memory that store computer program instructions in a machine-readable or computer-readable medium (alternatively referred to as computer-readable storage media, machine-readable media, or machine-readable storage media). Some examples of such computer-readable media include RAM, ROM, read-only compact discs (CD-ROM), recordable compact discs (CD-R), rewritable compact discs (CD-RW), read-only digital versatile discs (e.g., DVD-ROM, dual-layer DVD-ROM), a variety of recordable/rewritable DVDs (e.g., DVD-RAM, DVD-RW, DVD+RW, etc.), flash memory (e.g., SD cards, mini-SD cards, micro-SD cards, etc.), magnetic and/or solid state hard drives, read-only and recordable Blu-Ray® discs, ultra density optical discs, any other optical or magnetic media, and floppy disks. The computer-readable media can store a computer program that is executable by at least one processing unit and includes sets of instructions for performing various operations. Examples of computer programs or computer code include machine code, such as is produced by a compiler, and files including higher-level code that are executed by a computer, an electronic component, or a microprocessor using an interpreter.
- While the above discussion primarily refers to microprocessor or multi-core processors that execute software, some implementations are performed by one or more integrated circuits, such as application specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs). In some implementations, such integrated circuits execute instructions that are stored on the circuit itself.
- As used in this specification and any claims of this application, the terms “computer”, “server”, “processor”, and “memory” all refer to electronic or other technological devices. These terms exclude people or groups of people. For the purposes of the specification, the terms display or displaying means displaying on an electronic device. As used in this specification and any claims of this application, the terms “computer readable medium” and “computer readable media” are entirely restricted to tangible, physical objects that store information in a form that is readable by a computer. These terms exclude any wireless signals, wired download signals, and any other ephemeral signals.
- To provide for interaction with a user, implementations of the subject matter described in this specification 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. In addition, a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a web browser on a user's client device in response to requests received from the web browser.
- Configurations of the subject matter described in this specification 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 subject matter described in this specification, or any combination of one or more 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”) and a wide area network (“WAN”), an inter-network (e.g., the Internet), and peer-to-peer networks (e.g., ad hoc peer-to-peer networks).
- 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. In some configurations, a server transmits data (e.g., an HTML page) to a client device (e.g., for purposes of displaying data to and receiving user input from a user interacting with the client device). Data generated at the client device (e.g., a result of the user interaction) can be received from the client device at the server.
- It is understood that any specific order or hierarchy of steps in the processes disclosed is an illustration of example approaches. Based upon design preferences, it is understood that the specific order or hierarchy of steps in the processes may be rearranged, or that all illustrated steps be performed. Some of the steps may be performed simultaneously. For example, in certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of various system components in the configurations described above should not be understood as requiring such separation in all configurations, 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.
- The previous description is provided to enable any person skilled in the art to practice the various aspects described herein. Various modifications to these aspects will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other aspects. Thus, the claims are not intended to be limited to the aspects shown herein, but is to be accorded the full scope consistent with the language claims, wherein reference to an element in the singular is not intended to mean “one and only one” unless specifically so stated, but rather “one or more.” Unless specifically stated otherwise, the term “some” refers to one or more. Pronouns in the masculine (e.g., his) include the feminine and neuter gender (e.g., her and its) and vice versa. Headings and subheadings, if any, are used for convenience only and do not limit the invention.
- A phrase such as an “aspect” does not imply that such aspect is essential to the subject technology or that such aspect applies to all configurations of the subject technology. A disclosure relating to an aspect may apply to all configurations, or one or more configurations. A phrase such as an aspect may refer to one or more aspects and vice versa. A phrase such as a “configuration” does not imply that such configuration is essential to the subject technology or that such configuration applies to all configurations of the subject technology. A disclosure relating to a configuration may apply to all configurations, or one or more configurations. A phrase such as a configuration may refer to one or more configurations and vice versa.
- The word “example” is used herein to mean “serving as an example or illustration.” Any aspect or design described herein as “example” is not necessarily to be construed as preferred or advantageous over other aspects or designs.
Claims (22)
1. A machine-implemented method for processing late and/or out-of-order analytics tracking data communications, the method comprising:
receiving an analytics tracking data communication, wherein the analytics tracking data communication includes analytics tracking data that includes data for tracking an activity associated with a web site or application;
determining a timestamp included in the analytics tracking data from the received analytics tracking data communication;
determining if new state changing information is included in the analytics tracking data from the received analytics tracking data communication;
determining a session based on the determined new state changing information;
determining other analytics tracking data included in the analytics tracking data communication to associate with the determined new state changing information in the determined session if new state changing information is included in the analytics tracking data from the received analytics tracking data communication, wherein the other analytics tracking data is associated with one or more previously received analytics tracking data communications; and
storing the analytics tracking data and the other analytics tracking data associated with the new campaign information.
2. The method of claim 1 , further comprising:
determining a respective session based on the timestamp of the received analytics tracking data communication if no new state changing information is included in the analytics tracking data;
associating the analytics tracking data with the determined respective session; and
storing the analytics tracking data associated with the determined respective session, wherein the determined respective session includes other analytics tracking data associated with previously received analytics tracking data communications.
3. The method of claim 1 , wherein the other analytics tracking data comprises user information, gender information, location, timestamp information, or session information.
4. The method of claim 1 , wherein the new state changing information comprises new campaign information, gender information or timestamp information.
5. The method of claim 1 , wherein determining other analytics tracking data to associate with the new state changing information further comprises:
identifying a subset of the one or more previously received analytics tracking data communications to include in a new session based on the timestamp included in the analytics tracking data from the received analytics tracking data communication and a respective timestamp of each previously received analytics tracking data communication of the subset.
6. The method of claim 5 , wherein the subset of the one or more previously received analytics tracking data communications were previously included a different session from the new session.
7. The method of claim 5 , wherein identifying the subset of the one or more previously received analytics tracking data communications to include in the new session further comprises:
determining if the timestamp included in the analytics tracking data from the received analytics tracking data communication and the respective timestamp of each previously received analytics tracking data communication of the subset are within a session timeout period.
8. The method of claim 7 , wherein the session timeout period is a predetermined number of minutes.
9. The method of claim 5 , further comprising:
identifying a second subset of the one or more previously received analytics tracking data communications to include in a second new session based on the timestamp included in the analytics tracking data from the received analytics tracking data communication and a respective timestamp of each previously received analytics tracking data communication of the second subset.
10. The method of claim 9 , wherein the new session and second new session are different sessions.
11. The method of claim 9 , wherein the second new session is a subsequent session from the new session.
12. The method of claim 9 , wherein the new state changing information is propagated from the new session to the second new session.
13. The method of claim 2 , wherein the determined session is an existing session.
14. A system, the system comprising:
memory;
one or more processors;
one or more modules stored in memory and configured for execution by the one or more processors, the modules comprising:
a dynamic session module configured to receive an analytics tracking data communication, wherein the analytics tracking data communication includes analytics tracking data that includes data for tracking an activity associated with a web site or application, determine a timestamp included in the analytics tracking data from the received analytics tracking data communication, determine if new state changing information is included in the analytics tracking data from the received analytics tracking data communication, determine a session based on the determined new state changing information, determine other analytics tracking data included in the analytics tracking data communication to associate with the determined new state changing information in the determined session if new state changing information is included in the analytics tracking data from the received analytics tracking data communication, wherein the other analytics tracking data is associated with one or more previously received analytics tracking data communications, and store the analytics tracking data and the other analytics tracking data associated with the new campaign information.
15. The system of claim 14 , wherein the dynamic session module is further configured to:
determine a respective session based on the timestamp of the received analytics tracking data communication if no new state changing information is included in the analytics tracking data;
associate the analytics tracking data with the determined respective session; and
store the analytics tracking data associated with the determined respective session, wherein the determined respective session includes other analytics tracking data associated with previously received analytics tracking data communications.
16. The system of claim 14 , wherein the other analytics tracking data comprises user information, gender information, location, timestamp information, or session information.
17. The system of claim 14 , wherein the new state changing information comprises new campaign information, gender information or timestamp information.
18. The system of claim 14 , wherein determining other analytics tracking data to associate with the new state changing information further comprises:
identifying a subset of the one or more previously received analytics tracking data communications to include in a new session based on the timestamp included in the analytics tracking data from the received analytics tracking data communication and a respective timestamp of each previously received analytics tracking data communication of the subset.
19. The system of claim 18 , wherein the subset of the one or more previously received analytics tracking data communications were previously included a different session from the new session.
20. The system of claim 18 , wherein identifying the subset of the one or more previously received analytics tracking data communications to include in the new session further comprises:
determining if the timestamp included in the analytics tracking data from the received analytics tracking data communication and the respective timestamp of each previously received analytics tracking data communication of the subset are within a session timeout period.
21. The system of claim 18 , wherein the dynamic session module is further configured to:
identify a second subset of the one or more previously received analytics tracking data communications to include in a second new session based on the timestamp included in the analytics tracking data from the received analytics tracking data communication and a respective timestamp of each previously received analytics tracking data communication of the second subset.
22. A non-transitory machine-readable medium comprising instructions stored therein, which when executed by a machine, cause the machine to perform operations comprising:
receiving an analytics tracking data communication, wherein the analytics tracking data communication includes analytics tracking data that includes data for tracking an activity associated with a web site or application;
determining a timestamp included in the analytics tracking data from the received analytics tracking data communication;
determining if new state changing information is included in the analytics tracking data from the received analytics tracking data communication;
determining a session based on the determined new state changing information;
determining other analytics tracking data included in the analytics tracking data communication to associate with the determined new state changing information in the determined session if new state changing information is included in the analytics tracking data from the received analytics tracking data communication, wherein the other analytics tracking data is associated with one or more previously received analytics tracking data communications; and
storing the analytics tracking data and the other analytics tracking data associated with the new campaign information.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/841,685 US20130297776A1 (en) | 2012-05-02 | 2013-03-15 | Techniques for delay processing to support offline hits |
EP13785157.2A EP2845122A4 (en) | 2012-05-02 | 2013-04-17 | System for centralized analytics tracking via server-side sessionization |
PCT/US2013/036996 WO2013165693A1 (en) | 2012-05-02 | 2013-04-17 | System for centralized analytics tracking via server-side sessionization |
EP16192497.2A EP3147854A1 (en) | 2012-05-02 | 2013-04-17 | System for centralized analytics tracking via server-side sessionization |
JP2015510306A JP2015516095A (en) | 2012-05-02 | 2013-04-17 | Centralized analysis tracking via server-side sessionization |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261641850P | 2012-05-02 | 2012-05-02 | |
US13/841,685 US20130297776A1 (en) | 2012-05-02 | 2013-03-15 | Techniques for delay processing to support offline hits |
Publications (1)
Publication Number | Publication Date |
---|---|
US20130297776A1 true US20130297776A1 (en) | 2013-11-07 |
Family
ID=49513454
Family Applications (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/841,685 Abandoned US20130297776A1 (en) | 2012-05-02 | 2013-03-15 | Techniques for delay processing to support offline hits |
US13/841,586 Active 2034-08-26 US9946746B2 (en) | 2012-05-02 | 2013-03-15 | Persist and process analytics data dimensions for server-side sessionization |
US13/841,467 Active 2033-07-25 US9305053B2 (en) | 2012-05-02 | 2013-03-15 | Dynamic sessionization of analytics data |
US13/841,781 Abandoned US20130297778A1 (en) | 2012-05-02 | 2013-03-15 | System for centralized analytics tracking via server-side sessionization |
US13/841,719 Abandoned US20130297777A1 (en) | 2012-05-02 | 2013-03-15 | Server-side configuration driven sessionization to provide consistent business logic |
Family Applications After (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/841,586 Active 2034-08-26 US9946746B2 (en) | 2012-05-02 | 2013-03-15 | Persist and process analytics data dimensions for server-side sessionization |
US13/841,467 Active 2033-07-25 US9305053B2 (en) | 2012-05-02 | 2013-03-15 | Dynamic sessionization of analytics data |
US13/841,781 Abandoned US20130297778A1 (en) | 2012-05-02 | 2013-03-15 | System for centralized analytics tracking via server-side sessionization |
US13/841,719 Abandoned US20130297777A1 (en) | 2012-05-02 | 2013-03-15 | Server-side configuration driven sessionization to provide consistent business logic |
Country Status (4)
Country | Link |
---|---|
US (5) | US20130297776A1 (en) |
EP (2) | EP3147854A1 (en) |
JP (1) | JP2015516095A (en) |
WO (1) | WO2013165693A1 (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9357366B2 (en) | 2014-09-12 | 2016-05-31 | Observepoint, Inc. | Auditing of mobile applications |
US9412115B2 (en) | 2013-03-14 | 2016-08-09 | Observepoint, Inc. | Configuring tags to monitor other webpage tags in a tag management system |
US9418170B2 (en) | 2013-03-14 | 2016-08-16 | Observepoint, Inc. | Creating rules for use in third-party tag management systems |
US9842133B2 (en) | 2014-09-12 | 2017-12-12 | Observepoint, Inc. | Auditing of web-based video |
US10656907B2 (en) | 2015-11-03 | 2020-05-19 | Observepoint Inc. | Translation of natural language into user interface actions |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015524952A (en) * | 2012-05-14 | 2015-08-27 | スクルプル, インコーポレイテッドSgrouples, Inc. | Privacy-enhanced social platform with integrated customization |
US9049076B1 (en) * | 2013-01-07 | 2015-06-02 | Google Inc. | Content selection with privacy features |
US9817911B2 (en) | 2013-05-10 | 2017-11-14 | Excalibur Ip, Llc | Method and system for displaying content relating to a subject matter of a displayed media program |
US10083459B2 (en) * | 2014-02-11 | 2018-09-25 | The Nielsen Company (Us), Llc | Methods and apparatus to generate a media rank |
US10115125B2 (en) * | 2014-06-03 | 2018-10-30 | Excalibur Ip, Llc | Determining traffic quality using event-based traffic scoring |
US9363311B1 (en) * | 2014-12-05 | 2016-06-07 | Tealium Inc. | Delivery of instructions in host applications |
US9342617B1 (en) * | 2015-05-19 | 2016-05-17 | Parrable, Inc. | Unique identifiers for browsers |
US10536539B2 (en) * | 2015-05-20 | 2020-01-14 | Oath Inc. | Data sessionization |
CN106899426B (en) * | 2016-06-30 | 2020-07-28 | 阿里巴巴集团控股有限公司 | User access number statistical method and system thereof |
US10721152B2 (en) * | 2017-04-27 | 2020-07-21 | Salesforce.Com, Inc. | Automated analysis and recommendations for highly performant single page web applications |
EP3669267B1 (en) | 2018-04-30 | 2024-03-06 | Google LLC | Optimizing network utilization |
US11627201B2 (en) | 2018-04-30 | 2023-04-11 | Google Llc | Optimizing network utilization |
US11080657B2 (en) * | 2018-09-17 | 2021-08-03 | Servicenow, Inc. | Systems and methods for generating campaign analytics |
US11729247B2 (en) | 2020-09-24 | 2023-08-15 | Capital One Services, Llc | Systems and methods for decentralized detection of software platforms operating on website pages |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050165889A1 (en) * | 2000-10-04 | 2005-07-28 | Urchin Software Corporation | System and method for monitoring and analyzing internet traffic |
US20080086454A1 (en) * | 2006-10-10 | 2008-04-10 | Coremetrics, Inc. | Real time web usage reporter using RAM |
US20080148398A1 (en) * | 2006-10-31 | 2008-06-19 | Derek John Mezack | System and Method for Definition and Automated Analysis of Computer Security Threat Models |
US20100064040A1 (en) * | 2008-09-05 | 2010-03-11 | Microsoft Corporation | Content recommendations based on browsing information |
US7814149B1 (en) * | 2008-09-29 | 2010-10-12 | Symantec Operating Corporation | Client side data deduplication |
US20100312884A1 (en) * | 2009-05-26 | 2010-12-09 | Sagnik Nandy | System and method for aggregating analytics data |
US20100318527A1 (en) * | 2009-05-26 | 2010-12-16 | Sagnik Nandy | Dynamically generating aggregate tables |
US7949563B2 (en) * | 2005-07-29 | 2011-05-24 | Yahoo! Inc. | System and method for collection of advertising usage information |
Family Cites Families (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0025299D0 (en) | 2000-10-13 | 2000-11-29 | Ibm | Request tracking for analysis of website navigation |
US6782350B1 (en) * | 2001-04-27 | 2004-08-24 | Blazent, Inc. | Method and apparatus for managing resources |
US7155722B1 (en) | 2001-07-10 | 2006-12-26 | Cisco Technology, Inc. | System and method for process load balancing in a multi-processor environment |
US7089304B2 (en) * | 2001-08-30 | 2006-08-08 | Microsoft Corporation | Metered Internet usage |
US6877007B1 (en) * | 2001-10-16 | 2005-04-05 | Anna M. Hentzel | Method and apparatus for tracking a user's interaction with a resource supplied by a server computer |
US7185085B2 (en) | 2002-02-27 | 2007-02-27 | Webtrends, Inc. | On-line web traffic sampling |
US20030208594A1 (en) | 2002-05-06 | 2003-11-06 | Urchin Software Corporation. | System and method for tracking unique visitors to a website |
US10205623B2 (en) | 2002-06-28 | 2019-02-12 | Adobe Systems Incorporated | Custom event and attribute generation for use in website traffic data collection |
US7526521B2 (en) * | 2003-07-11 | 2009-04-28 | At&T Intellectual Property I, L.P. | Multi-user database system and method for resource usage tracking |
GB0514325D0 (en) | 2005-07-12 | 2005-08-17 | Search Works International The | Method and system for obtaining information |
US7548929B2 (en) * | 2005-07-29 | 2009-06-16 | Yahoo! Inc. | System and method for determining semantically related terms |
US7962616B2 (en) * | 2005-08-11 | 2011-06-14 | Micro Focus (Us), Inc. | Real-time activity monitoring and reporting |
GB2437842A (en) | 2006-05-04 | 2007-11-07 | Jonathan Bernadotte Miller | Method and system for crediting an online publisher of an advertisement |
US10110687B2 (en) | 2006-10-06 | 2018-10-23 | International Business Machines Corporation | Session based web usage reporter |
WO2008086442A2 (en) * | 2007-01-09 | 2008-07-17 | Touchcommerce,Inc. | Methods and systems for measuring online chat performance |
US20080294996A1 (en) | 2007-01-31 | 2008-11-27 | Herbert Dennis Hunt | Customized retailer portal within an analytic platform |
US8949340B2 (en) | 2007-02-05 | 2015-02-03 | Boadin Technology, LLC | Systems and methods for organizing content for mobile media services |
US20080208820A1 (en) | 2007-02-28 | 2008-08-28 | Psydex Corporation | Systems and methods for performing semantic analysis of information over time and space |
US7996519B1 (en) * | 2007-03-07 | 2011-08-09 | Comscore, Inc. | Detecting content and user response to content |
US20080270151A1 (en) * | 2007-04-26 | 2008-10-30 | Bd Metrics | Method and system for developing an audience of buyers and obtaining their behavioral preferences to promote commerce on a communication network |
US8352318B2 (en) | 2007-05-29 | 2013-01-08 | Digital River, Inc. | Exclusivity in internet marketing campaigns system and method |
JP2009094658A (en) | 2007-10-05 | 2009-04-30 | Hitachi Ltd | Related information providing apparatus and related information providing method |
CN101925895B (en) * | 2007-12-13 | 2012-11-07 | 谷歌公司 | Generic format for efficient transfer data |
US20090157442A1 (en) * | 2007-12-13 | 2009-06-18 | Yahoo! Inc. | System and Method for Improving the Performance of Digital Advertisements |
US8438061B2 (en) * | 2008-10-24 | 2013-05-07 | Cardlytics, Inc. | System and methods for merging or injecting targeted marketing offers with a transaction display of an online portal |
US8234370B2 (en) | 2009-06-30 | 2012-07-31 | International Business Machines Corporation | Determining web analytics information |
US8725794B2 (en) * | 2009-09-30 | 2014-05-13 | Tracking. Net | Enhanced website tracking system and method |
US8379917B2 (en) | 2009-10-02 | 2013-02-19 | DigitalOptics Corporation Europe Limited | Face recognition performance using additional image features |
US20110112862A1 (en) | 2009-11-06 | 2011-05-12 | Yi-Cheng Yu | System and Method for Securely Managing and Storing Individually Identifiable Information in Web-Based and Alliance-Based Networks |
US20110282860A1 (en) | 2010-05-16 | 2011-11-17 | Access Business Group International Llc | Data collection, tracking, and analysis for multiple media including impact analysis and influence tracking |
US8688806B2 (en) | 2010-06-11 | 2014-04-01 | Tellabs Operations, Inc. | Procedure, apparatus, system, and computer program for collecting data used for analytics |
US20120046996A1 (en) * | 2010-08-17 | 2012-02-23 | Vishal Shah | Unified data management platform |
US20120203639A1 (en) * | 2011-02-08 | 2012-08-09 | Cbs Interactive, Inc. | Targeting offers to users of a web site |
US20120240019A1 (en) * | 2011-03-17 | 2012-09-20 | Ebay Inc. | Method and system for tracking web link usage |
US20120303552A1 (en) | 2011-05-27 | 2012-11-29 | Cbs Interactive Inc. | Techniques to track users and user metrics for a website |
US20130159081A1 (en) * | 2011-07-08 | 2013-06-20 | Vishwanath Shastry | Bidirectional bandwidth reducing notifications and targeted incentive platform apparatuses, methods and systems |
US9979500B2 (en) | 2011-09-02 | 2018-05-22 | Verizon Patent And Licensing Inc. | Dynamic user interface rendering based on usage analytics data in a media content distribution system |
US10719541B2 (en) * | 2011-09-13 | 2020-07-21 | Stefano Foresti | Method and system to capture and find information and relationships |
US10217117B2 (en) * | 2011-09-15 | 2019-02-26 | Stephan HEATH | System and method for social networking interactions using online consumer browsing behavior, buying patterns, advertisements and affiliate advertising, for promotions, online coupons, mobile services, products, goods and services, entertainment and auctions, with geospatial mapping technology |
US20130085803A1 (en) * | 2011-10-03 | 2013-04-04 | Adtrak360 | Brand analysis |
US10354293B2 (en) * | 2011-10-12 | 2019-07-16 | AppsFlyer Ltd. | Events tracking technology |
US9659105B2 (en) | 2012-03-15 | 2017-05-23 | The Nielsen Company (Us), Llc | Methods and apparatus to track web browsing sessions |
US10616782B2 (en) | 2012-03-29 | 2020-04-07 | Mgage, Llc | Cross-channel user tracking systems, methods and devices |
-
2013
- 2013-03-15 US US13/841,685 patent/US20130297776A1/en not_active Abandoned
- 2013-03-15 US US13/841,586 patent/US9946746B2/en active Active
- 2013-03-15 US US13/841,467 patent/US9305053B2/en active Active
- 2013-03-15 US US13/841,781 patent/US20130297778A1/en not_active Abandoned
- 2013-03-15 US US13/841,719 patent/US20130297777A1/en not_active Abandoned
- 2013-04-17 EP EP16192497.2A patent/EP3147854A1/en not_active Withdrawn
- 2013-04-17 WO PCT/US2013/036996 patent/WO2013165693A1/en active Application Filing
- 2013-04-17 JP JP2015510306A patent/JP2015516095A/en active Pending
- 2013-04-17 EP EP13785157.2A patent/EP2845122A4/en not_active Withdrawn
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050165889A1 (en) * | 2000-10-04 | 2005-07-28 | Urchin Software Corporation | System and method for monitoring and analyzing internet traffic |
US7949563B2 (en) * | 2005-07-29 | 2011-05-24 | Yahoo! Inc. | System and method for collection of advertising usage information |
US20080086454A1 (en) * | 2006-10-10 | 2008-04-10 | Coremetrics, Inc. | Real time web usage reporter using RAM |
US20080148398A1 (en) * | 2006-10-31 | 2008-06-19 | Derek John Mezack | System and Method for Definition and Automated Analysis of Computer Security Threat Models |
US20100064040A1 (en) * | 2008-09-05 | 2010-03-11 | Microsoft Corporation | Content recommendations based on browsing information |
US7814149B1 (en) * | 2008-09-29 | 2010-10-12 | Symantec Operating Corporation | Client side data deduplication |
US20100312884A1 (en) * | 2009-05-26 | 2010-12-09 | Sagnik Nandy | System and method for aggregating analytics data |
US20100318527A1 (en) * | 2009-05-26 | 2010-12-16 | Sagnik Nandy | Dynamically generating aggregate tables |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9412115B2 (en) | 2013-03-14 | 2016-08-09 | Observepoint, Inc. | Configuring tags to monitor other webpage tags in a tag management system |
US9418170B2 (en) | 2013-03-14 | 2016-08-16 | Observepoint, Inc. | Creating rules for use in third-party tag management systems |
US10394902B2 (en) | 2013-03-14 | 2019-08-27 | Observepoint Inc. | Creating rules for use in third-party tag management systems |
US10693943B2 (en) | 2013-03-14 | 2020-06-23 | Observepoint Llc | Configuring tags to monitor other webpage tags in a tag management system |
US9357366B2 (en) | 2014-09-12 | 2016-05-31 | Observepoint, Inc. | Auditing of mobile applications |
US9842133B2 (en) | 2014-09-12 | 2017-12-12 | Observepoint, Inc. | Auditing of web-based video |
US10656907B2 (en) | 2015-11-03 | 2020-05-19 | Observepoint Inc. | Translation of natural language into user interface actions |
Also Published As
Publication number | Publication date |
---|---|
US20130297777A1 (en) | 2013-11-07 |
EP3147854A1 (en) | 2017-03-29 |
US20130297775A1 (en) | 2013-11-07 |
US20130297647A1 (en) | 2013-11-07 |
US20130297778A1 (en) | 2013-11-07 |
US9946746B2 (en) | 2018-04-17 |
EP2845122A4 (en) | 2016-01-20 |
JP2015516095A (en) | 2015-06-04 |
EP2845122A1 (en) | 2015-03-11 |
US9305053B2 (en) | 2016-04-05 |
WO2013165693A1 (en) | 2013-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9305053B2 (en) | Dynamic sessionization of analytics data | |
US10021202B1 (en) | Pushed based real-time analytics system | |
JP6640943B2 (en) | Providing content to users across multiple devices | |
US8452837B2 (en) | Data delivery | |
US8880996B1 (en) | System for reconfiguring a web site or web page based on real-time analytics data | |
US9628355B1 (en) | System for validating site configuration based on real-time analytics data | |
US10491451B2 (en) | Timestamp-based matching of identifiers | |
US8869036B1 (en) | System for troubleshooting site configuration based on real-time analytics data | |
US8775556B1 (en) | Automated segmentation and processing of web site traffic data over a rolling window of time | |
US9218332B2 (en) | Method and system for auto-populating electronic forms | |
US8775941B1 (en) | System for monitoring and reporting deviations of real-time analytics data from expected analytics data | |
US12038992B2 (en) | Suggesting actions for evaluating user performance in an enterprise social network | |
US20150200863A1 (en) | System and method for updating timestamps in log data | |
US8782166B1 (en) | System for generating a site pathing report based on real-time analytics data | |
EP3956796A1 (en) | Cross-site semi-anonymous tracking | |
US8775611B1 (en) | System for displaying a web page with real time analytics data overlay | |
US8782162B1 (en) | System for merging and comparing real-time analytics data with conventional analytics data | |
US8606907B1 (en) | Multi-tiered system for receiving and reporting web site traffic data | |
US20150193396A1 (en) | Loading device specific content automatically when switching between devices | |
US9065859B1 (en) | Server side disambiguation of ambiguous statistics | |
US8560685B1 (en) | Probabilistic data storage owner election and replication protocol | |
US20160253763A1 (en) | Triggered targeting | |
US8862796B1 (en) | Lossy hit buffer | |
US20180052807A1 (en) | Endorsement smearing among related webpages | |
US20190139081A1 (en) | Conversion activity relating to in-map advertisements |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: GOOGLE INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:HONG, JERRY;MURET, PAUL;NANDY, SAGNIK;AND OTHERS;SIGNING DATES FROM 20130308 TO 20130429;REEL/FRAME:030461/0733 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |