Abstract:
A method and system for attributing activity to a user includes sharing information with an analytics server while attributes and a user profile cannot be tracked back to the original user from the analytics server. A temporary ID included in the shared information is destroyed, thus eliminating any trace back.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application claims priority to U.S. Provisional Patent Application Ser. No. 61/443,122, to Jaye et al., entitled “A Dual Blind Method and System for Attributing Activity to a User,” and filed Feb. 15, 2011, the contents of which are incorporated herein by reference. 
    
    
     BACKGROUND OF THE INVENTION 
     The invention relates generally to systems and methods for attributing activity of a user viewing content such as online advertising, and more specifically to a method and system for measuring the impact of online advertising on offline sales while protecting the privacy of the consumer. 
     It is useful for vendors who sell items through the Internet to be able to compile sophisticated marketing data that gauges the return on investment (also referred to herein as “ROI”) of a particular online advertising campaign based on actual offline purchases by consumers who have viewed the advertising. By learning which advertising methods are most successful, vendors can better tailor their advertising campaigns to achieve the greatest return on investment. Prior methods for determining the ROI of an online advertising campaign require sharing a consumer&#39;s personally identifiable information among many parties. 
     While consumers may share personal identification with web sites when purchasing items or services, consumers are hesitant to share personal identification information when not required. Also, due to the many laws governing the protection of personal identification information and additional security required, vendors do not wish to capture and store such information when not required. 
     What is desired then is a system for measuring the impact of online advertising on offline sales that maintains the privacy of consumer&#39;s personal identification information. 
     BRIEF SUMMARY OF THE INVENTION 
     The following presents a simplified summary of the innovation in order to provide a basic understanding of some aspects of the invention. This summary is not an extensive overview of the invention. It is intended to neither identify key or critical elements of the invention nor delineate the scope of the invention. Its sole purpose is to present some concepts of the invention in a simplified form as a prelude to the more detailed description that is presented later. 
     The present invention provides methods and apparatus, including computer program products, for a dual blind method and system for attributing activity to a user. 
     In one aspect, the invention features a method including sending a first request for content from a browser executing on a consumer device to a first content provider. The first content provider may be a website that displays online advertising. The first content provider responds to the request by generating a browser identifier and sending the browser identifier along with the requested content (i.e. advertisement) to the browser. Next, the user browser sends a second request for content to a second content provider. The second content provider may be a retailer&#39;s website through which the consumer desires to make a purchase. The consumer shares personal identification information with the second content provider. Continuing the example of the consumer purchasing an item, the consumer may share the consumer&#39;s name, shipping address, credit card information or other personal information to complete the transaction. 
     The second content provider contacts an attribute server to retrieve attributes associated with the consumer and generates a temporary ID. The second content provider then shares the attributes and the temporary ID with an analytics server. The second content provider also instructs the browser to share the browser ID and the temporary ID with a user profile server. The user profile server uses the browser ID to retrieve a user profile associated with the browser and sends the user profile along with the temporary ID to the analytics server. The analytics server then uses the temporary ID to match the attributes to the user profile and destroys the temporary ID. Thus, neither the attributes nor the user profile can be tracked back to the original consumer from the analytics server. 
     Other features and advantages of the invention are apparent from the following description, and from the claims. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The invention will be more fully understood by reference to the detailed description, in conjunction with the following figures, wherein: 
         FIG. 1A  is a block diagram of an embodiment of a dual blind system for attributing activity to a user; 
         FIG. 1B  is a block diagram of another embodiment of a dual blind system for attributing activity to a user that includes a matching server; 
         FIG. 2  is a flowchart representation of a process for attributing activity to a user utilizing the system of  FIG. 1A ; 
         FIG. 3A  is a block diagram of another embodiment of a system for attributing activity to a user; 
         FIG. 3B  is a block diagram of the system of  FIG. 3A  with additional optional components; and 
         FIG. 4  is a flowchart representation of a process for attributing activity to a user employing the system of  FIG. 3 . 
     
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     The subject innovation is now described with reference to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It may be evident, however, that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to facilitate describing the present invention. 
     As used in this application, the terms “component,” “system,” “platform,” and the like can refer to a computer-related entity or an entity related to an operational machine with one or more specific functionalities. The entities disclosed herein can be either hardware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on a server and the server can be a component. One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers. Also, these components can execute from various computer readable media having various data structures stored thereon. The components may communicate via local and/or remote processes such as in accordance with a signal having one or more data packets (e.g., data from one component interacting with another component in a local system, distributed system, and/or across a network such as the Internet with other systems via the signal). 
     In addition, the term “or” is intended to mean an inclusive “or” rather than an exclusive “or.” That is, unless specified otherwise, or clear from context, “X employs A or B” is intended to mean any of the natural inclusive permutations. That is, if X employs A; X employs B; or X employs both A and B, then “X employs A or B” is satisfied under any of the foregoing instances. Moreover, articles “a” and “an” as used in the subject specification and annexed drawings should generally be construed to mean “one or more” unless specified otherwise or clear from context to be directed to a singular form. 
     Referring to  FIG. 1A  and in brief overview, an embodiment of a system  10  constructed in accordance with the invention includes a content provider A    20 , a second content provider B    30 , an attribute server  40 , an analytics server  50 , and a user profile server  60 . In the embodiment shown, the content provider A    20 , the content provider B    30 , the attribute server  40 , the analytics server  50 , and the user profile server  60  are capable of communicating by communication channels. The communication channels may be any type of communication system by which elements of the system  10  may communicate. For example, the elements of the system  10  may communicate by a global communications network (i.e. Internet or World Wide Web), or via an intranet. 
     The content provider A    20  may be any web server that is accessible to an end user  70  through the internet. The content provider A    20  may be an internet search engine, an online media site, a social media site or any other web site that may display an advertisement to an end user  70 . The end user  70  is a potential consumer of the advertised item or service. The user  70  may employ a user browser  80  executing on a user device to contact the content provider A    20 . The user device may be a desktop, laptop, mobile phone, or any other computer or other device capable of accessing the internet. In one embodiment, the content server A    20  is the same server as the user profile server  60 . 
     The content provider B    30  hosts a website that is accessible to the end user  70  through the internet. Continuing the example from above, the content provider B    30  may be a retailer&#39;s website through which the end user  70  desires to make a purchase. In this example, the end user  70  is able to purchase items from the content provider B  (retailer server)  30 . In another embodiment, the content provider B    30  can be any entity operating a website into which personal identification is entered. 
     The operation of the system  10  is described with reference to the flowchart of  FIG. 2 . In step  200 , the end user  70  employs the user browser  80  to contact the content provider A    20 . Next, in step  210 , the content provider A    20  performs the initial tag drop by generating a browser identifier (also referred to herein as “BrowserID”) and assigning the browser identifier to the user browser  80 . The content provider A    20  sends the BrowserID to the user browser  80  and the user browser  80  stores the BrowserID. In one embodiment, the BrowserID is sent to the user browser  80  as a cookie. In another embodiment, rather than generating the BrowserID and sending it to the user browser  80 , the content provider A    20  instructs the user browser  80  to generate and store the BrowserID. 
     After viewing an advertisement, promotion or other information on the website hosted by the content provider A    20 , the end user  70  may decide to visit the website of the retailer or other entity that published the advertisement or offered the promotion. In step  220 , the end user  70  utilizes the user browser  80  to navigate to the content provider B    30 . Continuing the example from above, the content provider B    30  is a website hosted by a retailer. While visiting the website hosted by the content provider B    30 , the end user  70  may register with the site, purchase an item or perform another activity which requires the end user  70  to share personal identification information (also referred to herein as “PII”) with the content provider B    30 . The end user&#39;s  70  personal identification information may include the end user&#39;s name, residence, mailing address, telephone number, email address, age, gender, credit card number or any other information that may be used to identify the end user  70 . As described above, in another embodiment, content provider B  is any entity operating a website. Content provider B  may or may not be the entity who published an ad on content provider A &#39;s site. 
     Upon receiving the end user&#39;s  70  personal identification information, in step  230 , the content provider B    30  generates a temporary identifier (also referred to herein as “TempID”) and sends the TempID to the user browser  80 , along with instructions for the user browser  80  to send the TempID and the BrowserID to the user profile server  60 . In one embodiment, the TempID is a random number that is generated to be within a particular range of numbers and is used to match up the data in the two systems. It is important to note that content provider B    30  does not “know” the BrowserID that was assigned by the advertising site or content provider A    20 . In step  240 , the content provider B    30  contacts the attribute server  40  for any attributes associated with the end user  70 . The content provider B    30  and the attribute server  40  may share only certain items of the end user&#39;s  70  personal identification information. In one embodiment, the content provider B    30  and the attribute server  40  share all of the end user&#39;s  70  personal identification information. In yet another embodiment, the content provider B    30  and the attribute server  40  share a user identifier (also referred to herein as “UserID”) assigned to the end user  70 . In one such embodiment, the content provider B    30  looks up the UserID and shares the UserID with the attribute server  40 . In yet another such embodiment, the attribute server  40  looks up the UserID and shares it with the content provider B    30 . The UserID may be based on the end user&#39;s  70  personal identification information or it may be a unique identifier assigned to the end user  70 . In one embodiment in which the UserID is based on the end user&#39;s  70  personal identification information, the UserID is a hash (or other one-way function) of some or all of the personal identification information. 
     Next, in step  250 , the attribute server  40  responds to content provider B &#39;s  30  inquiry and shares the attributes associated with the end user  70 . In one embodiment, the attribute server  40  encrypts the attributes associated with the end user  70  prior to sending to the content provider B    30 . Upon receiving the attributes associated with the end user  70 , in step  260  the content provider B    30  sends the end user attributes and corresponding TempID previously generated by the content provider B    30  to the analytics server  50 . In another embodiment, the content provider B    30  and the attribute server  40  do not communicate directly with each other, but rather through the user browser  80 . For example, in step  240 , the content provider B    30  contacts the attribute server  40  for any attributes associated with the end user  70  by sending a request to the user browser  80 . The user browser  80  then passes the request to the attribute server  40 . The attribute server  40  sends the attributes associated with the end user  70  to the user browser  80 , which in turn forwards the information to the content provider B    30 . 
     Referring again to  FIG. 2 , upon receiving the instructions sent by the content provider B    30  in step  230 , the user browser  80  follows the instructions and sends the BrowserID assigned by the content provider A    20  and the TempID assigned by the content provider B    30  to the user profile server  60  in step  270 . Next, in step  280 , the user profile server  60  retrieves any information previously stored that is associated with the BrowserID and sends the TempID and any retrieved information to the analytics server  50 . The user profile server  60  does not forward the BrowserID to the analytics server  50 . 
     After receiving the information from the content provider B    30  and the user profile server  60 , in step  290 , the analytics server  50  matches the attributes from the content provider B    30  with the information from the user profile server  60  using the TempID. In one embodiment, the analytics server  50  then destroys the TempID in step  292  to further ensure that none of the information may be traced back to the end user  70 . 
     In one embodiment, the communications between the user browser  80 , the user profile server  60  and the analytics server  50  occur at substantially the same time as the communications between the content provider B    30 , the attribute server  40  and the analytics server  50 . In another embodiment, the communications between the user browser  80 , the user profile server  60  and the analytics server  50  occur at different times than the communications between the content provider B    30 , the attribute server  40  and the analytics server  50 . In the embodiment in which the attribute server  40  encrypts the attributes and sends the encrypted attributes to the content provider B    30 , the analytics server  50  decrypts the encrypted attributes. 
     In still another embodiment, two versions of the TempID are created—TempID 1  and TempID 2 . The two versions of the TempID may be created using probabilistic public key encryption of the original TempID. In one such embodiment, the analytics server  50  has a public/private key pair. The analytics server  50  keeps the private key secret. The corresponding public key is shared with the content provider B    30  and is used to encrypt the original TempID and create TempID 1  and TempID 2 . In this embodiment, TempID 1  is only shared by the content provider B    30  and the analytics server  50  and TempID 2  is only shared by the content provider B    30  and the user profile server  60 . Upon receiving the message from the content provider B    30  with TempID 1  and the message from the user profiler server  60  with TempID 2 , the analytics server  50  uses the corresponding private key (which only the analytics server  50  knows) to decrypt TempID 1  and TempID 2  to obtain the original TempID and thereby match the attribute server  40  data with the user profile server  60  data using the original TempID. The decrypted original TempID is then destroyed by the analytics server  50 . 
     In yet another embodiment, the analytics server  50  may send the merged attribute and user profile data to yet another server. In this embodiment, the analytics server  50  sends the analysis to another server and may only temporarily store the analysis. 
     Referring now to  FIG. 1B , in yet another embodiment, the system  10  includes a third content provider C    90 . In this embodiment, the content provider A    20  may instruct the user browser  80  to retrieve the TempID from the third content provider C    90 . In another such embodiment, two versions of the TempID are used. The third content provider C    90  returns a first version TempID 1  that is generated using probabilistic public key encryption of the BrowserID. The user profile server  60  generates a second version TempID 2  also using probabilistic public key encryption of the BrowserID. As the analytics server  50  has the private key corresponding to the public key used by the additional content provider C    90  and the user profile server  60  to generate TempID 1  and TempID 2 , respectively, the analytics server  50  uses the private key to decrypt TempID 1  and TempID 2  to reveal the original TempID and match the attribute server  40  data with the user profile server  60  data. The decrypted original TempID is then destroyed by the analytics server  50 . In another embodiment, a different public/private key pair is used by the additional content provider C    90  and the user profile server  60 . The analytics server  50  has both private keys and thus may still decrypt TempID 1  and TempID 2  to reveal the original TempID and match the data. In yet another embodiment, the additional content provider C    90  and the user profile server  60  encrypt a hash of the BrowserID to generate TempID 1  and TempID 2 , respectively. 
     In certain applications, it may be desirable to track information relevant to a certain segment of consumers, rather than a particular consumer. In order to achieve this goal, in one embodiment of the system  10 , rather than assigning a unique BrowserID to each user browser  80 , a non-uniquely identifiable segment identifier (also referred to herein as “SegmentID”) is assigned to multiple browsers/computers based on criteria such as market segment. Using SegmentIDs also further helps to increase end user anonymity as multiple users may share the same SegmentID. 
     In the embodiment shown in  FIG. 1B , the system  10  further optionally comprises a matching server  100 . In this embodiment, in addition to generating the BrowserID, the content provider A    20  also performs a hash or other one-way function on the BrowserID. The content provider A    20  passes the hash of the BrowserID to the matching server  100 . Rather than the content provider B    30  sending the end user attributes and corresponding TempID to the analytics server  50  as shown in step  260 , the content provider B    30  passes the data from the attribute server  40  to the matching server  100 . The matching server  100  then forwards the data from the attribute server  40  along with the hash(BrowserID) to the analytics server  50 . In this embodiment, the user profile server  60  also passes a hash of the BrowserID to the analytics server  50 , which then matches the two sources using the hash(BrowserID). The analytics server  50  then destroys the hash(BrowserID). 
     In another embodiment, rather than sending a hash of the BrowserID, the plaintext BrowserID is encrypted with the public key of a public/private key pair of which the private key is only known by the analytics server  50 . In this embodiment, a probabilistic public key encryption of the BrowserID is shared with the matching server  100  and the analytics server  50 . In still a further embodiment, the hash of the BrowserID is encrypted with the public key corresponding to the private key known only to the analytics server  50 . 
     In another embodiment, the TempID is a random number that is generated to be within a particular range of numbers and is used to match up the data in the two systems. 
     Referring now to  FIG. 3  another embodiment of a system  300  constructed in accordance with the invention includes a content provider A    320 , a retailer server  330 , an attribute server  340 , an analytics server  350 , and a user profile server  360 . In the embodiment shown, the content provider A    20 , the content provider B    30 , the attribute server  40 , the analytics server  50 , and the user profile server  60  are capable of communicating via communications channels. As described above, the communications channels may be any type of communication system by which elements of the system  300  may communicate. For example, the elements of the system  300  may communicate by a global communications network (i.e. Internet or World Wide Web), or via an intranet. 
     The operation of the system  300  is described with reference to the flowchart of  FIG. 4 . In step  400 , the end user  370  employs the user browser  380  to contact the content provider A    320 . Next, in step  410 , the content provider A    320  performs the initial tag drop by generating a BrowserID and assigning the browser identifier to the user browser  380 . The content provider A    320  sends the BrowserID to the user browser  380  and the user browser  80  stores the BrowserID. In one embodiment, the BrowserID is sent to the user browser as a cookie. In another embodiment, rather than generating the BrowserID and sending it to the user browser  380 , the content provider A    320  instructs the user browser  380  to generate and store the BrowserID. 
     Similar to the process described above in the discussion of the flowchart of  FIG. 2 , after viewing an advertisement, promotion or other information on the website hosted by the content provider A    320 , the end user  370  may decide to visit the website of the retailer or other entity that published the advertisement or offered the promotion. In step  420 , the end user  370  utilizes the user browser  380  to navigate to the content provider B    330 . While visiting the website hosted by the content provider B  (retailer)  330 , the end user  370  may register with the site, purchase an item or perform another activity which requires the end user  370  to share personal identification information with the content provider B    330  and/or a provider operating on behalf of provider B    330 . As described above, the end user&#39;s personal identification information may include the UserID, the end user&#39;s name, residence, mailing address, telephone number, email address, age, gender, credit card number or any other information that may be used to identify the end user  370 . Shared personal information includes instructions to notify the user profile server  360  by sending the UserID and not any other personal information. 
     Upon receiving the end user&#39;s  370  personal identification information, in step  430 , the content provider B    330  looks up the UserID and sends the TempID and UserID to the user browser  380 , along with instructions. The content provider B    330  instructs the user browser  380  to send the TempID and BrowserID to the user profile server  360  and to send the TempID and UserID to the attribute server  340 . It is important to note that the content provider B    30  does not “know” the BrowserID that was assigned by the content provider A    20 . In step  440 , the user browser  380  transmits the TempID and the UserID to the attribute server  340 . Next, in step  450 , the attribute server  340  transmits the TempID and the attributes associated with the UserID to the analytics server  350 . In one embodiment, the attribute server  340  encrypts the attributes prior to sending to the analytics server  350 . 
     In step  460  the user browser  380  continues to follow its instructions and sends the TempID and the BrowserID to the user profile server  360 . Next, in step  470 , the user profile server  360  retrieves any information previously stored that is associated with the BrowserID and sends the TempID and any retrieved information to the analytics server  350 . The user profile server  360  does not forward the BrowserID to the analytics server  350 . 
     After receiving the information from the attribute server  340  and the user profile server  360 , in step  480 , the analytics server  350  matches the attributes from attribute server  340  with the information form the user profile server  360  using the TempID. In one embodiment, the analytics server  350  then destroys the TempID in step  490  to further ensure that none of the information may be traced back to the end user  370 . In the embodiment in which the attribute server  340  encrypts the attributes, the analytics server  350  decrypts the attributes. 
     In one embodiment, the communications between the user browser  380 , the user profile server  360  and the analytics server  350  occur at substantially the same time as the communications between the user browser  380 , the attribute server  340  and the analytics server  350 . In another embodiment, the communications between the user browser  380 , the user profile server  360  and the analytics server  350  occur at different times than the communications between the user browser  380 , the attribute server  340  and the analytics server  350 . In the embodiment in which the attribute server  340  encrypts the attributes and sends the encrypted attributes to the analytics server  350 , the analytics server  350  decrypts the encrypted attributes. 
     In another embodiment, the UserID is a hash of one or more elements of the end user&#39;s  370  personal identification information, and the content provider B    330  shares the hash (PII) with the attribute server  340 . 
     Similar to the system  10  of  FIG. 1A , in another embodiment, two versions of the TempID are created—TempID 1  and TempID 2 . The two versions may be created using probabilistic public key encryption of the original TempID. In one such embodiment, the analytics server  350  has a public/private key pair. The analytics server  350  keeps the private key secret. The corresponding public key is used to encrypt the original TempID and create TempID 1  and TempID 2 . In this embodiment, TempID 1  is only shared with the attribute server  340  and TempID 2  is only shared with the user profile server  360 . Upon receiving the messages from attribute server  340  with TempID 1  and the user profile server  360  with TempID 2 , the analytics server  350  uses the corresponding private key (which only the analytics server  50  knows) to decrypt TempID 1  and TempID 2  and thereby match the attribute server  340  data with the user profile server  360  data. The decrypted original TempID is then destroyed by the analytics server  350 . 
     In still another embodiment shown in  FIG. 3B , the system  300  includes a third content provider C    390 . In this embodiment, the content provider A    320  may instruct the user browser  380  to retrieve the TempID from the third content provider C    390 . In another such embodiment, two versions of the TempID are used. The third content provider C    390  returns a first version TempID 1  to the content provider B    330  that is generated using probabilistic public key encryption of the BrowserID. The user profile server  360  generates a second version TempID 2  also using probabilistic public key encryption of the BrowserID. As the analytics server  350  has the private key corresponding to the public key used to generate TempID 1  and TempID 2 , respectively, the analytics server  350  uses the private key to decrypt TempID 1  and TempID 2  to reveal the original TempID and thereby match the attribute server  340  data with the user profile server  360  data. The decrypted original TempID is then destroyed by the analytics server  350 . In another embodiment, a different public/private key pair is used to generate TempID 1  and TempID 2 , respectfully. The analytics server  350  has both private keys and thus may still decrypt TempID 1  and TempID 2  and match the data. In yet another embodiment, the additional content provider C    390  and the user profile server  360  encrypt a hash of the BrowserID. 
     As shown in  FIG. 3B , the system  300  may also optionally comprise a matching server  395 . In this embodiment, in addition to generating the BrowserID, the content provider A    320  also performs a hash or other one-way function on the BrowserID. The content provider A    320  passes the hash of the BrowserID to the matching server  395 . Rather than the attribute server  340  sending the end user attributes and corresponding TempID to the analytics server  350  as shown in step  450 , the attribute server  340  passes the data to the matching server  395 . The matching server  395  then forwards the data from the attribute server  340  along with the hash(BrowserID) to the analytics server  350 . In this embodiment, the user profile server  360  passes a hash of the BrowserID to the analytics server  350 , which then matches the two sources using the hash(BrowserID). The analytics server  350  then destroys the hash(BrowserID) 
     In another embodiment, rather than sending a hash of the BrowserID, the plaintext BrowserID is encrypted with the public key of a public/private key pair of which the private key is only known by the analytics server  350 . In this embodiment, a probabilistic public key encryption of the BrowserID is shared with the matching server  395  and the analytics server. In still a further embodiment, the hash of the BrowserID is encrypted with the public key corresponding to the private key known only to the analytics server  350 . 
     In another embodiment, the TempID is a random number that is generated to be within a particular range of numbers and is used to match up the data in the two systems. 
     In another embodiment, the system  300  further comprises a data syndicator  396 . In embodiments having a data syndicator  396 , additional user data is requested by the user browser  380  and sent to the user profile server. 
     The system  300  may further include a payment processor  397  that performs the function of the content provider B    330 . 
     In another embodiment, once user profile data is received from the user profile server  360 , and attributes are received from the attribute server  340 , these attributes are brought together using the TempID. Once the data is merged, the analytics server  350  uses the new row of data to update a set of data summaries. These summaries keep a running tally of statistics based on the incoming data. When the data from the attribute server  340  and the user profile server  360  are brought together, the analytics server  350  may choose some or all of the possible combinations of attributes. These summaries are updated with the new data and then the source data is destroyed. 
     More specifically, when the analytics server  350  receives online and offline data with the TempID to match it, the analytics server  350  puts the data together. With a newly merged row of data, the analytics server  350  iterates through all combinations of columns and calculates all of the potential summaries on the data. Suppose, for example, the user profile server  360  sent data to the analytics server  350  that a user viewed ad number 1, and that the user has visited a BMW related site. The analytics server  350  receives from the attribute server  340  that the user purchased a BMW. This data is merged on the analytics server  350  as seen_ad=1, visited_site=1, purchase=BMW. 
     Summaries may be calculated for every combination (or some specified subset) of possible columns the following combinations generated: 
     seen_ad=1 
     visited_site=1 
     purchase=BMW 
     seen_ad=1, visited_site=1 
     visited_site=1, purchase=BMW 
     seen_ad=1, purchase=BMW 
     seen_ad=1, visited_site=1, purchase=BMW 
     Each one of the above combinations corresponds to one entry in a summary stored in a loosely structured database. Once this match happens, each one of those entries may be looked up and the appropriate number incremented. When a user of the analytics server  350  wants to know a specific breakdown of the data (e.g., how many users who saw the ad purchased a BMW), the user can request the appropriate summary. After the appropriate entry in every possible summary is incremented, the matched data is completely thrown away and the summaries kept. 
     Various implementations of the systems and techniques described here can be realized in digital electronic circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and/or combinations thereof. These various implementations can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device. 
     These computer programs (also known as programs, software, software applications or code) include machine instructions for a programmable processor, and can be implemented in a high-level procedural and/or object-oriented programming language, and/or in assembly/machine language. As used herein, the terms “machine-readable medium” “computer-readable medium” refers to any computer program product, apparatus and/or device (e.g., magnetic discs, optical disks, memory, Programmable Logic Devices (PLDs)) used to provide machine instructions and/or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term “machine-readable signal” refers to any signal used to provide machine instructions and/or data to a programmable processor. 
     To provide for interaction with a user, the systems and techniques described here can be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user and a keyboard and a pointing device (e.g., a mouse or a trackball) by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback), and input from the user can be received in any form, including acoustic, speech, or tactile input. 
     The systems and techniques described here can be implemented in a computing system that includes a back-end component (e.g., a data server), or that includes a middleware component (e.g., an application server), or that includes a front-end component (e.g., a client computer having a graphical user interface or a web browser through which a user can interact with an implementation of the systems and techniques described here), or any combination of such back-end, middleware, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include a local area network (“LAN”), a wide area network (“WAN”), and the Internet. 
     The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. 
     The foregoing description does not represent an exhaustive list of all possible implementations consistent with this disclosure or of all possible variations of the implementations described. A number of implementations have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the systems, devices, methods and techniques described here. For example, various forms of the flows shown above may be used, with steps re-ordered, added, or removed. Accordingly, other implementations are within the scope of the following claims.