# Patent

## Title
System and method for dynamically enabling customized web content and applications

## Abstract

Described are computer-based methods and apparatuses, including computer program products, for dynamically enabling customized web content and applications. One or more rules are stored in a database. Default tag code is transmitted to a browser in response to a request from the browser, the default tag code including data that causes the browser to generate a tag module. An update is received from the tag module comprising data indicative of a visitor's interaction with web page content displayed through the browser. A condition associated with a rule from the one or more rules is determined to be satisfied based on the update. An action associated with the rule is performed, comprising transmitting custom targeted tag code to the tag module, wherein the custom targeted tag code includes data that causes the browser, upon execution of the custom targeted tag code by the tag module, to perform an action.

## Background
CROSS REFERENCES TO RELATED APPLICATIONS
This application claims the benefit of and priority under 35 U.S.C. §119(e) to U.S. Provisional Application No. 61/321,603, filed on Apr. 7, 2010, and entitled “System and Method for Dynamically Enabling Customized Web Content and Applications,” the disclosure of which is hereby incorporated herein by reference in its entirety.


FIELD OF THE INVENTION
The present invention relates generally to computer-based methods and apparatuses, including computer program products, for dynamically enabling customized web content and applications.
BACKGROUND
Web sites are often built using code (e.g., HyperText Markup Language (HTML) and/or other code) that is stored on content servers and transmitted to a requesting visitor's browser. Web sites can have various purposes, such as advertising, sales, etc. However, regardless of a website's purpose, the visitor's experience is often limited by the actual content of the web page, which is defined by the content server code. For example, web site designers are often faced with the task of designing a web site to appeal to the broadest-possible audience. Since the web site experience is the same for each visitor, the web site is most effective at carrying out its intended purpose (e.g., sales, conveyance of information) when it appeals to a broad range of visitors.
Similarly, web site designers are faced with the challenge of constantly maintaining the code stored on the content servers. For example, the code may need to be modified to add new information (e.g., new services, features, products, etc.) and/or to remove old information. Each change often requires making changes to the code stored on the content servers. Further, it is difficult to customize a web page based on a visitor's interaction with the web page. It is desirable to maintain web pages (or web sites) to incorporate new content and/or to customize the web pages based on a visitor's interaction with the web page without modifying the underlying code of the web site (e.g., the code stored on the content servers).
SUMMARY OF THE INVENTION
The techniques described herein provide computerized methods, apparatuses, and computer program products for dynamically enabling customized web content and applications. Such dynamic enablement facilitates, for example, customizing a web site individually for each visitor of the web site based on the visitor's interactions with the web site.
In one embodiment, a computer implemented method for dynamically enabling customized web content and applications is featured. The method includes storing, by a custom content server, one or more rules in a database, each rule including a condition and an action. The method includes transmitting, by the custom content server, default tag code to a browser executing on a computing device in response to a request from the browser, the default tag code including data that causes the browser to generate a tag module in a memory of the computing device. The method includes receiving, by the custom content server, an update from the tag module including data indicative of a visitor's interaction with web page content displayed through the browser. The method includes determining, by the custom content server, a condition associated with a rule from the one or more rules is satisfied based on the update. The method includes performing, by the custom content server, an action associated with the rule, including transmitting custom targeted tag code to the tag module, wherein the custom targeted tag code includes data that causes the browser, upon execution of the custom targeted tag code by the tag module, to perform an action.
In another embodiment, an apparatus for dynamically enabling customized web content and applications is featured. The apparatus includes a processor and memory. The apparatus is configured to store one or more rules in a database, each rule including a condition and an action. The apparatus is configured to transmit default tag code to a browser executing on a computing device in response to a request from the browser, the default tag code including data that causes the browser to generate a tag module in a memory of the computing device. The apparatus is configured to receive an update from the tag module including data indicative of a visitor's interaction with web page content displayed through the browser. The apparatus is configured to determine a condition associated with a rule from the one or more rules is satisfied based on the update. The apparatus is configured to perform an action associated with the rule, including transmitting custom targeted tag code to the tag module, wherein the custom targeted tag code includes data that causes the browser, upon execution of the custom targeted tag code by the tag module, to perform an action.
In another embodiment, a computer program product, tangibly embodied in a non-transitory computer readable medium is featured. The computer program product includes instructions being configured to cause a data processing apparatus to store one or more rules in a database, each rule including a condition and an action. The computer program product includes instructions being configured to cause a data processing apparatus to transmit default tag code to a browser executing on a computing device in response to a request from the browser, the default tag code including data that causes the browser to generate a tag module in a memory of the computing device. The computer program product includes instructions being configured to cause a data processing apparatus to receive an update from the tag module including data indicative of a visitor's interaction with web page content displayed through the browser. The computer program product includes instructions being configured to cause a data processing apparatus to determine a condition associated with a rule from the one or more rules is satisfied based on the update. The computer program product includes instructions being configured to cause a data processing apparatus to perform an action associated with the rule, including transmitting custom targeted tag code to the tag module, wherein the custom targeted tag code includes data that causes the browser, upon execution of the custom targeted tag code by the tag module, to perform an action.
In another embodiment, an apparatus for dynamically enabling customized web content and applications is featured. The apparatus includes a means for storing one or more rules in a database, each rule including a condition and an action. The means transmits default tag code to a browser executing on a computing device in response to a request from the browser, the default tag code including data that causes the browser to generate a tag module in a memory of the computing device. The means receives an update from the tag module including data indicative of a visitor's interaction with web page content displayed through the browser. The means determines a condition associated with a rule from the one or more rules is satisfied based on the update. The means performs an action associated with the rule, including transmitting custom targeted tag code to the tag module, wherein the custom targeted tag code includes data that causes the browser, upon execution of the custom targeted tag code by the tag module, to perform an action.
In other examples, any of the aspects above can include one or more of the following features. Determining can include determining one or more rules associated with the tag module based on a unique identifier for the tag module included in the update, and determining whether a rule from the one or more rules includes a condition that is satisfied based on the update.
In some examples, the action includes downloading content from a remote server, and integrating the content into the web page content. The action can include changing a display of the web page content. The action can include storing data indicative of the visitor's interaction with the web page content displayed by the browser to the computing device. Code provided by a third party can be used to store the data, so the third-party can access the stored data to customize second web page content for a second web page based on the stored data.
In other examples, data indicative of a new rule is received, the data defining a condition for the rule necessary to invoke the rule and an action for the rule that is performed upon the occurrence of the condition, and the new rule is stored in the database. Data can be received that is indicative of the condition being selected from a predefined list of conditions, and the response including code, a link to code, or any combination thereof. The browser can generate the request based on a tag included in the web page content loaded by the browser. The update can be a periodic update, a visitor event-driven update, or any combination thereof.
The techniques, which include both computerized methods and apparatuses, described herein can provide one or more of the following advantages. A technical problem addressed by these computerized techniques is how to customize the behavior of a web site for each individual visitor, such that web page content can be modified (and/or additionally processed) without modifying the underlying code for the web page (e.g., the original code stored on a content server). A technical solution is to insert a tag (e.g., an HTML tag) into the underlying code for a web page that causes a browser to monitor the behavior of the visitor (e.g., mouse clicks, web page content selection, data entry, etc.). A website host can define rules that trigger certain actions based on the visitor's behavior. The visitor's behavior can be analyzed according to the rules to modify the content of the web page and/or to request additional content not in the web page (e.g., coupons, a web banner, video content). Tags can also be used to store data indicative of the visitor's interactions with a first web page, and then used to tailor to the visitor's experiences with a second web page.
Other aspects and advantages of the present invention will become apparent from the following detailed description, taken in conjunction with the accompanying drawings, illustrating the principles of the invention by way of example only.



BRIEF DESCRIPTION OF THE DRAWINGS
The foregoing and other objects, features, and advantages of the present invention, as well as the invention itself, will be more fully understood from the following description of various embodiments, when read together with the accompanying drawings.
FIG. 1 is a diagram that illustrates a computerized system in which a tag module interacts with a remote custom content server according to one embodiment;
FIG. 2 is diagram that illustrates the tag module interacting with the custom content server of FIG. 1 according to one embodiment;
FIG. 3 is a flow diagram that illustrates a method for configuring the rules in the rules database through the administration interface according to one embodiment;
FIG. 4 is a flow diagram that illustrates a method for dynamic customization of a visitor experience on a website using monitored visitor behavior data according to one embodiment;
FIG. 5 is an exemplary diagram illustrating an original web page which shows a visitor's browser displaying web page content and new web page which shows the visitor's browser displaying web page content that incorporates in new content according to one embodiment;
FIG. 6 is an exemplary diagram illustrating new content being integrated into second web page content for a second web page based on a visitor's interactions with a first web page according to one embodiment; and
FIGS. 7A-7B are exemplary screenshots showing a rule configuration web page for adding rules according to one embodiment.



DETAILED DESCRIPTION
In general overview, embodiments of the invention enable a website operator to customize the behavior of the website for each individual visitor according to monitored behavior of the visitor. Preferably, website operator can incorporate new code into their website without modifying the underlying code of the website by using a tag. In a preferred embodiment the tag is an HTML tag (e.g., a block of code/instructions) that references (e.g., with a URL link) a JavaScript file (the “default tag code”) on a custom content server. However, one skilled in the art can appreciate that the tag can be replaced with any other type of script, content or code that can implement the functionality of a tag as described herein (e.g., an applet (such as a Java applet), an application (such as a JVM application) or other script (such as a JavaScript) that can be executed, for example, by a visitor's browser or a browser plug-in). The tag is preferably incorporated along with the code/instructions for one or more pages of the website.
FIG. 1 is a diagram that illustrates a computerized system 100 in which a tag module 102 interacts with a remote custom content server 104 according to one embodiment. A visitor's browser 110, which is executed by a processor, loads web page content 106 from a general content server 108. The web page content 106 includes a tag (e.g., an HTML tag). When the visitor causes the browser 110 to load the web page content 106, the visitor's browser processes the tag which causes the visitor's browser to download default tag code (e.g., a JavaScript code file) from the custom content server 104. The visitor's browser 110 receives, processes and executes the default tag code to generate tag module 102 in memory. Tag module 102, which is executed by a processor, communicates with the custom content server 104.
In the computerized system 100, the default tag code contains code/instructions that monitor and transmit information indicative of the visitor's interactions with the web page (e.g., web page content 106). For example, the visitor's interactions can include mouse clicks, form entries, and the visitor's Uniform Resource Locator (URL) history. Combinations of one or more visitor interactions can trigger actions, which is described below with reference to FIG. 4.
In some embodiments, the custom content server 104 is a computing device with a processor and memory. The custom content server 104 is in communication with rules database 112 through a direct connection or over a network. The custom content server is also in communication with operator terminal 114. The tag module 102 is optionally in communication with content resources 116A-116N (collectively content resources 116). The content resources 116 can be included such that in some embodiments the tag module 102 can download external code stored on a content resource 116 (e.g., if the tag module 102 needs to download and execute code that is pointed to by a reference). FIG. 1 is an exemplary diagram and is not intended to be limiting. For example, while FIG. 1 only shows one custom content server 104, there can be a plurality of custom content servers in communication with tag module 102. Also, for example, while the general content server 108 is shown separately from the content resources 116, the general content server 108 can also function as a content resource 116 (as described below with reference to FIG. 4).
FIG. 2 is diagram 200 that illustrates the tag module 102 interacting with the custom content server 104 of FIG. 1 according to one embodiment. The tag module 102 comprises the executing default tag code as described above with reference to FIG. 1. As will be described below, based on the monitored behavior of the visitor, the custom content server can transmit custom targeted tag code to the tag module 102, and the tag module, in turn, can process and execute the custom targeted tag code to, for example, customize the web page content 106 for the visitor. The custom targeted tag code can also cause a change in the web page display (e.g., pop-up windows, insertion of additional video or graphical content), the writing of metadata to the visitor's computer (e.g., a cookie), or any other desired action capable of being performed by the visitor's browser 110 or plugins thereto.
The tag module 102 (which is generated when the visitor's browser executes the default tag code in memory) is in communication with the event hander module 212 executing in the custom content server. The event handler module 212 is in communication with the rules database 112 of FIG. 1. The custom content server 104 can further include a target code generator 216, which generates (or obtains) and transmits the custom targeted tag code to the tag module 102 upon the occurrence of a condition defined by rules in the rules database 112. The custom content server 104 includes an administration interface module 218.
The admin interface module 218 provides an administration interface (e.g., one or more graphical user interfaces) through which website operators can define one or more rules that provide custom responses to a visitor's interactions with the web page. The rules database 112 includes one or more tables 250. Table 250 includes a unique identifier 252 that associates the defined rules 254 and 256 with the tag embedded in the web page content 106 (each rule comprising one or more conditions 254A, 256A and actions 254B, 256B, respectively). For example, the tag module 102 can append the unique identifier to the monitored visitor data sent to the custom content server 104 in, for example, a query string. Using this identifier, the event handler module 212 can associate the rules 254 and 256 with the tag module 102.
In particular, a website operator can define a rule in which the action performed (254B, 256B) in response to the occurrence of one or more conditions (254A, 256A) involves the server 104 transmitting specific code or instructions, which are input to the tag module 102 for processing and execution. Such code or instructions is referred to herein as the custom targeted tag code. Alternatively, the action can be the execution of a link or reference (e.g., by the tag module) which results in the desired code or instructions being loaded into the visitor's browser 110 from another resource (e.g., the occurrence of the condition causes the code generator 216 to send custom targeted tag code to the tag module 102, which the tag module 102 executes and determines it needs to download a code file residing on the content resources 116).
Accordingly, when the custom content server 104 detects an event triggered by one of the website visitors, the default tag code (e.g., being executed by the tag module 102) is supplemented by custom content server 104 transmitting the custom targeted tag code (or a link to the custom targeted tag code) specified by the website operator through an administrative interface. Standard programming languages and interfaces, such as JavaScript, can facilitate the addition and execution of the custom targeted tag code to add to the tag module 102.
FIG. 3 is a flow diagram that illustrates a method 300 for configuring the rules in the rules database through the administration interface according to one embodiment, which will be described using FIGS. 1 and 2. At step 302, a website administrator (or “admin”) (e.g., using the operator terminal 114) logs into the custom content server 104 using the admin interface module 218. At step 306, the admin defines a condition for a rule (e.g., using the exemplary rule configuration web pages of FIGS. 7 and 8). At step 308, the admin defines an action that is performed when the condition defined in step 306 is satisfied. At step 310, the custom content server 104 saves the rule in the rules database 112. At step 304, if the admin is going to set up one or more additional rules the method 300 proceeds to step 306 and steps 306 through 310 are repeated.
Referring to step 302, an admin can be, for example, an admin of the custom content server 104. For example, a customer can set up his or her website to include tags that cause code and/or scripts to be downloaded from the default tag code module 210 of the custom content server 104. The tag module 102 is executed on the visitor's browser 110. The tag module 102 is responsible for communicating from the visitor's browser 110 to the custom content server 104. For example, the tag module 102 can transmit updates (e.g., periodic updates or visitor event-driven updates) to the custom content server 104 that comprise data indicative of the visitor's interaction with the web page content 106 (e.g., how long the visitor has been at a particular web page, the viewing history of the visitor, etc.).
Referring again to step 302, each admin is associated with a unique identifier. The unique identifier is, for example, a user identification number for the admin. The admin logs into the custom content server 104 using their unique identifier. The admin logs into, for example, an administration interface being presented through the admin interface module 218. The administration interface provides admins with the ability to define various configuration parameters for tags that are installed in their web pages (e.g., web page content 106).
In some embodiments, each customer of the system is associated with a unique identifier (e.g., an account identifier). For example, a customer is a user of the custom content server 104. A customer can be any third party (e.g., a company, individual, etc.) that uses tags in one or more of its web pages to provide customized content to visitors of its web pages. One or more admin unique identifiers can be associated with a customer unique identifier. For example, an admin's unique identifier can be associated with a company's account identifier to facilitate creation of rules and other maintenance of tags for the company's web pages. The admin can be an employee of the company and/or a third party hired by the company to maintain the company's web pages. Advantageously, for example, each time the admin logs into the custom content server using their unique identifier, they are also associated with the company (and therefore are granted access to settings for the company).
The customer's unique identifier (e.g., unique identifier 252 of FIG. 2) facilitates communication with tag modules (e.g., tag module 102) that are created when a visitor loads web pages with embedded tags that are associated with the customer. For example, each tag module 102 is associated with a unique identifier (e.g., an identifier for the customer's account, which can be stored on the custom content server 104), and the custom content server 104 (e.g., using the event hander 212) uses the unique identifier associated with the tag to communicate with the tag (e.g., to determine which rules from the rules database 112 the event handler module 212 uses to monitor a visitor's interactions with web page content 106, to determine which custom targeted tag code is uploaded to tag module 102 upon the occurrence of a condition specified by the rules, etc.).
Referring to step 306, the admin can select a condition from a list of predefined conditions. For example, an admin can select an “idle for more than X seconds” condition, and specify the number of seconds. By selecting this condition, the admin knows that if a visitor is idle on the web page content 106 for more than X seconds, then the condition will be satisfied and the custom content server 104 will perform the associated response that is defined in step 308. While the admin can select a condition from a list of predefined conditions, any method can be used to define a condition for a rule. For example, the admin can create the condition from scratch (e.g., using the admin interface module 218), the admin can create a custom list of conditions defined by the admin, and/or can create the conditions through any other method without departing from the spirit of the invention.
Referring to step 308, the admin defines an action (a response) that the custom content server 104 performs upon the occurrence of the condition defined in step 306. A response is, for example, code (e.g., custom targeted tag code) that is transmitted to the tag module 102 and is processed and/or executed in the visitor's browser 110. The responses can be flexible so each admin can tailor the response to their individual needs. For example, an admin may enter code that the admin wants the visitor's browser 110 to execute upon the occurrence of the condition (e.g., via a text box presented in the admin program by the admin interface module 218). Or, for example, the admin can insert a reference that links the tag module 102 to a separate location (e.g., to a location on the general content server 108 or the content resources 116) where the code that the admin wants the visitor's browser 110 to execute is defined. Or, for example, the admin can select an action from a list of predefined actions.
FIG. 4 is a flow diagram that illustrates a method 400 for dynamic customization of a visitor (website user) experience on a website using monitored visitor behavior data according to one embodiment. In particular, this method provides additional code to a web page without modifying the original code for the web page (e.g., the underlying code retrieved from a content server). Advantageously, for example, customized content can be provided to a visitor without modifying the web page code. The additional code can be additional content and/or any code that is capable of being processed by the visitor's browser or plug-in. At step 402, the custom content server 104 transmits default tag code to the visitor's browser, which generates the tag module 102 from such default code when the visitor loads the web page content 106. At step 404, the custom content server 104, through the event handler module 212, receives periodic updates from the tag module 102, each periodic update comprising information indicative of the visitor's interaction with the web page. At step 406, the custom content server 104, using the event handler module 212, determines whether a condition of the one or more rules stored in the rules database 112 associated with the tag module 102 occurred. The rules analyzed are those in the rules database having an identifier that matches the unique identifier of the tag module 212. If a condition occurred, the method 400 proceeds to step 408, where the custom content server 104 transmits the custom targeted tag code, through the target code generator 216, to the tag module 102. If a condition did not occur, the method 400 proceeds back to step 404. At step 410, the visitor's browser 110 executes the custom targeted tag code resulting in more functionality provided to the tag module 102. At step 412, the tag code determines whether the tag module 102 needs to download additional content for the tag module 102 (e.g., from a remote server, such as the general content server 108 or the content resources 116). If the tag module 102 needs to download additional content, the method 400 proceeds to step 414, at which point the tag module 102 downloads the additional content and integrates the additional content into the web page content 106. If the tag module 102 does not need to download additional content, the method 400 proceeds back to step 404.
Referring to step 408, the custom content server 104 performs the associated action with the satisfied rule. For example, if the action is to transmit a new code to tag module 102, then the target code generator 216 transmits the new code to the tag module 102, which the tag module 102 did not previously contain. Advantageously, a website host can define the rules that provide new code to a web site (e.g., via the tag module 102) that can cause the content of web page content 106 to be modified (and/or additional processing to be performed by the visitor's browser 110) in a way that is customized to the visitor's interactions with the web page content 106. For example, the page can load additional video, additional content (e.g., a coupon), update a banner, and/or perform other actions in response to the visitor's interactions with the web page content 106. Some examples are described with reference to FIGS. 5 and 6 below.
Referring to steps 412-414, the tag module 102 may require additional content (e.g., a video stored on a content resource 116) to complete execution of the custom targeted tag code. The tag module 102 can download the additional content and incorporate the content into the web page content 106 using the custom targeted tag code. For example, as described below with reference to FIG. 7B, the custom targeted tag code can include a uniform resource locator (URL) for a location where video content is stored such that the executing custom targeted tag code can cause the visitor's browser to download and integrate the video content into web page content 106.
Advantageously, a website provider can use tags linking to a custom content server to provide any type of additional content into a web page without editing the original code for the web page content. For example, a website provider can use tags to provide coupons, to display a web banner, to add video content, and/or to incorporate any other kind of content into a web page. FIG. 5 is an exemplary diagram illustrating an original web page 500 which shows a visitor's browser 502 displaying web page content 504 and modified web page 506 which shows the visitor's browser displaying web page content 504′ that incorporates in new content 508 according to one embodiment. Original web page 500 occurs when the visitor first navigates to a website that causes the visitor's browser 502 to load web page content 504 (e.g., web page content 504 is loaded from general content server 108). Web page content 504 includes a tag, which causes the visitor's browser 502 to download default tag code (e.g., JavaScript code from the custom content server 104) when the visitor's browser 502 loads web page content 504. The visitor's browser 502 executes the default tag code, thereby generating a tag module (e.g., tag module 102). The tag module monitors the visitor's interaction with the web page.
The custom content server receives updates (e.g., periodic or visitor-driven updates) from the tag module. As shown with arrow 510 and referring to FIG. 2, when the event handler module 212 determines that a condition for one of the rules stored in the rules database 112 is satisfied based on the updates (e.g., step 406-408 of FIG. 4), the tag module downloads from the target code generator 216 the custom targeted tag code (e.g., the target code generator 216 sends the custom targeted tag code in a response message to tag module 102, or tag module 102 requests the custom targeted tag code from the target code generator 216, etc.). The tag module executes the custom targeted tag code in the visitor's browser 502, which causes new content 508 to be displayed (e.g., steps 410-414). The new content 508 is seamlessly integrated into the web page content 504′ without the visitor performing any steps.
For example, the website provider of web page content 504 can partner with a video company to incorporate video content into the website provider's web pages without modifying the code (e.g., without modifying the original HyperText Markup Language (HTML) code of the web pages). For example, web page content 504 already includes a tag in the HTML code (e.g., embedded as an HTML tag). The website provider can create rules that cause video content (i.e., the new content 508 for this example) to be incorporated into web page content 504′ using the tag (e.g., steps 302-310 of FIG. 3). For example, the website provider can configure a rule to (upon the occurrence of a condition) upload and execute video code to the visitor's browser 502, resulting in the video content being integrated into web page content 504′ without the visitor having to navigate away from web page.
In some examples, tags can be used to add new content to a web page based on a visitor's interaction with both that web page and one or more previous web pages. FIG. 6 is an exemplary diagram illustrating new content 610 being integrated into second web page content 608 for a second web page 602 based on a visitor's interactions with a first web page 600 according to one embodiment. The visitor navigates to the first web page 600 using the visitor's browser 606. The visitor's browser 606 loads the first web page content 604 which includes a tag. The visitor's browser 606 downloads and executes the default tag code, creating a tag module (not shown) which monitors the visitor's interaction with the first web page 600. Using steps 302-310 of FIG. 3, the admin of the first web page 600 can add one or more rules that integrates code created by a third party company (e.g., an advertisement company) into the first web page content 604 to store information indicative of the visitor's interaction with the first web page 600 (e.g., for later use, such as when the visitor navigates to the second web page 602). For example, a rule can be defined that when a visitor visits a particular web page (the condition), then code is transmitted to and executed by the tag module which causes the tag module to store information for the visitor (the action). For example, the tag module can receive and execute custom targeted tag code that causes the visitor's browser 606 to create and store a cookie on the visitor's browser 606 that includes information indicative of the visitor's interaction with the first web page 600 (e.g., which links of the first web page 600 the visitor clicked on, how long the visitor remained on the first web page 600, and/or any other statistics or information pertaining to the visitor and/or their interaction with the first web page 600).
As shown by arrow 612, when the visitor navigates to the second web page 602, the third party company uses stored information about the visitor's interactions with the first web page 600 to incorporate the new content 610 into the second web page content 608. The second web page content 608 can optionally also include a tag. The website provider of the second web page 602 (which can be, and is often, different than the website provider of the first web page 600) can add one or more rules that integrates code created by the third party company into the second web page content 608. The rules can be defined to incorporate new content 610 into the second web page content 608 based on the visitor's interactions with the first web page 600 (e.g., based on a stored cookie).
In some embodiments, the data stored on the visitor's browser 606 (e.g., the cookie) must be of the third party company's domain so the third party company can later access the cookie. For example, if the cookie created by the first web page 600 is created by the website provider for the first web page 600, then the cookie is of the website provider's domain. Permissions can be configured (e.g., security settings for the custom content server 104) such that the third party company cannot access this cookie because it is not of the third party company's domain. The website provider for the first web page 606 can use the third party company's code to create the cookie (e.g., by providing a link to the third party company's code for the action to the rule, which causes the visitor's browser 606 to download and execute the third party company's code). Similarly, the website provider for the second web page 602 can partner with the third party company such that the third party company can access the previously stored cookie since the cookie was created in the third party company's domain (and therefore, the third party company can tailor the new content 610 based on the visitor's interactions with both the first web page 600 and the second web page 602).
For example, assume the visitor navigates to first web page 600 at URL www.site1.com. Later, when the visitor navigates to the second web page 602 at URL www.site2.com, the visitor can be presented with an advertisement that is relevant to the visitor's browsing history at both www.site1.com and www.site2.com. For example, assume www.site1.com is for a particular cell phone carrier, and the tag module being executed by the visitor's browser 606 stored a cookie indicative of the visitor viewing a particular type of cell phone. Assume also for the purposes of this example that www.site2.com is a consumer review website, and the visitor navigates to a review of the same cell phone the visitor was viewing at www.site1.com. The new content 610 is added to the second web page content 608 because the stored cookie indicates the visitor had interest in the cell phone that is the subject of the consumer review at www.site2.com. For example, the visitor can be presented with an advertisement for the cell phone. Advantageously, the new content 610 can be tailored to the visitor's experiences with both the first web page 600 and the second web page 602.
While the examples above described with reference to FIGS. 5-6 include uploading new code to the tags to display new content (e.g., new content 508 and new content 610 in FIGS. 5 and 6, respectively), the custom targeted tag code that is sent to or downloaded by tag module 102 is not limited to only incorporating new content into the existing web page content. For example, as described with reference to the first web page content 604 of FIG. 6, the custom targeted tag code can add logic and/or functionality to the visitor's browser that operates transparently to the visitor (e.g., to store a cookie).
FIGS. 7A-7B are exemplary screenshots showing a rule configuration web page 700 for adding rules according to one embodiment. Referring to FIG. 7A, an admin (e.g., using operator terminal 114) creates one or more rules using the configuration web page 700. The configuration web page 700 includes three sections, the description section 700A, the condition section 700B, and the action section 700C. The description section 700A includes a name field 702 for setting a name for the rule. The description section 700A includes a description field 704 for setting a description of the rule (e.g., “time on this site >=‘300’ seconds”). The description section 700A includes a rule type field 706 that includes a drop-down list for selecting the type of rule (e.g., “While visitor is browsing site” to indicate the rule is executed while the visitor is browsing the website, “When visitor enters page,” “When visitor enter site,” “When visitor leaves site,” “When call is established,” “When user clicks to chat,” etc.). The description section 700A includes a campaign/initiative/followup field 708 that includes a drop-down list for selecting a campaign for the rule (e.g., “No Campaign” or one or more defined campaigns that are used to gather rules that have a common purpose, such as a marketing campaign). The description section 700A includes a segment field 710 that includes a drop-down list for selecting whether to apply the rule to all visitors or to a segment of visitors (e.g., an admin can select “all visitors” to apply the rule to all visitors to the website). The description section 700A includes a status field 712 that includes a drop-down list for an admin to select whether the rule is enabled (e.g., the admin selects “Enabled” so the event handler module 212 knows to evaluate the conditions for the rules upon receipt of updates from the tag module 102).
The condition section 700B includes field 714 for configuring whether all of the conditions for the rule need to be satisfied before performing the action defined in the action section 700C (e.g., if there are multiple conditions, selecting “All” means each of the conditions must occur before the action defined in action section 700C is performed). The field 716 lists the selected conditions for the rule, where the admin can individually delete one or more of the listed rules. The button 718 allows the admin to add an additional condition to the conditions listed in field 716.
The action section 700C includes a drop-down list for selecting the type of action (e.g., third party notifications, which means that the custom content server 104 notifies entities outside of the custom content server 104 about an event, such as notifying the tag module 102 on a visitor's browser). The action section 700C includes a script area 724 for defining the action (e.g., for the admin to input actual code (custom targeted tag code) to be sent to the tag). While the script area 724 is shown, in some embodiments the configuration web page 700 can include a predefined list (e.g., via a drop-down list) of predetermined response actions that the admin can select. The action section 700C includes a charset field 726 that includes a drop-down list for selecting the character set. The action section 700C includes a checkbox 728 for indicating whether processing stops after the action is performed (e.g., whether the event handler module 212 of FIG. 2 individually evaluates all rules for the tag, or to stop processing the rules once the one rule is satisfied).
FIG. 7B includes similar fields to FIG. 7A but instead of the script field 724, the action section 700C includes a send field 750 that includes a drop-down list for the admin to select what to send to the tag (e.g., the admin can select “script” (custom targeted tag code) which sends a script to the tag or “img” which sends an image to the tag). If a script is sent to the tag, the tag executes the code in the browser. If an image is sent to the tag, the image is loaded to the browser. The action section 700C also includes source field 752 (“src”) for the admin to insert the source of the code script to send to the tag (e.g., the admin can input a URL to the code script, such as “www.mysite.com/x.js”). As can be seen in FIGS. 7A and 7B, depending upon the selected value for the action field 722, the contents of the rule configuration webpage 700 can dynamically change so the admin is presented with the appropriate entry fields for the selected action (e.g., in FIG. 7A, when the admin selects “Send a Script To Browser”, the action section 700C includes the script field 724, while in FIG. 7B when the admin selects “Send Tag To Browser”, the action section 700C includes the send field 750 and the source field 752). The ruel configuration webpage 700 can be implemented with, for example, HTML and javascript. Advantageously, an admin using the rule configuration webpage 700 can directly insert the code the admin wants the tag to run (e.g., in the script field 724), or the admin can point the action to a pre-programmed code file).
While FIGS. 7A and 7B show various embodiments of the rule configuration web page, they are not intended to be limiting. One skilled in the art can appreciate that any number and type of configuration methods (e.g., xml files, pre-loaded configuration scripts, etc.) can be used to define rules for a particular customer's tag (e.g., tags placed in web site(s) associated with the customer).
The above-described computerized methods and apparatuses can be implemented in digital and/or analog electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. The implementation can be as a computer program product, i.e., a computer program tangibly embodied in a machine-readable storage device, for execution by, or to control the operation of, a data processing apparatus, e.g., a programmable processor, a computer, and/or multiple computers. A computer program can be written in any form of computer or programming language, including source code, compiled code, interpreted code and/or machine code, and the computer program can be deployed in any form, including as a stand-alone program or as a subroutine, element, or other unit suitable for use in a computing environment. A computer program can be deployed to be executed on one computer or on multiple computers at one or more sites.
The computerized method steps can be performed by one or more processors executing a computer program to perform functions of the invention by operating on input data and/or generating output data. Method steps can also be performed by, and an apparatus can be implemented as, special purpose logic circuitry, e.g., a FPGA (field programmable gate array), a FPAA (field-programmable analog array), a CPLD (complex programmable logic device), a PSoC (Programmable System-on-Chip), ASIP (application-specific instruction-set processor), or an ASIC (application-specific integrated circuit). Subroutines can refer to portions of the computer program and/or the processor/special circuitry that implement one or more functions.
Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital or analog computer. Generally, a processor receives instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and/or data. Memory devices, such as a cache, can be used to temporarily store data. Memory devices can also be used for long-term data storage. Generally, a computer also includes, or is operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks. A computer can also be operatively coupled to a communications network in order to receive instructions and/or data from the network and/or to transfer instructions and/or data to the network. Computer-readable storage devices suitable for embodying computer program instructions and data include all forms of volatile and non-volatile memory, including by way of example semiconductor memory devices, e.g., DRAM, SRAM, EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and optical disks, e.g., CD, DVD, HD-DVD, and Blu-ray disks. The processor and the memory can be supplemented by and/or incorporated in special purpose logic circuitry.
To provide for interaction with a user, the above described techniques can be implemented on a computer in communication with a display device, e.g., a CRT (cathode ray tube), plasma, or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse, a trackball, a touchpad, or a motion sensor, by which the user can provide input to the computer (e.g., interact with a user interface element). 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, and/or tactile input.
The above described techniques can be implemented in a distributed computing system that includes a back-end component. The back-end component can, for example, be a data server, a middleware component, and/or an application server. The above described techniques can be implemented in a distributed computing system that includes a front-end component. The front-end component can, for example, be a client computer having a graphical user interface, a Web browser through which a user can interact with an example implementation, and/or other graphical user interfaces for a transmitting device. The above described techniques can be implemented in a distributed computing system that includes any combination of such back-end, middleware, or front-end components.
The computing system can include clients and servers. A client and a 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 components of the computing system can be interconnected by any form or medium of digital or analog data communication (e.g., a communication network). Examples of communication networks include circuit-based and packet-based networks. Packet-based networks can include, for example, the Internet, a carrier internet protocol (IP) network (e.g., local area network (LAN), wide area network (WAN), campus area network (CAN), metropolitan area network (MAN), home area network (HAN)), a private IP network, an IP private branch exchange (IPBX), a wireless network (e.g., radio access network (RAN), 802.11 network, 802.16 network, general packet radio service (GPRS) network, HiperLAN), and/or other packet-based networks. Circuit-based networks can include, for example, the public switched telephone network (PSTN), a private branch exchange (PBX), a wireless network (e.g., RAN, bluetooth, code-division multiple access (CDMA) network, time division multiple access (TDMA) network, global system for mobile communications (GSM) network), and/or other circuit-based networks.
Devices of the computing system and/or computing devices can include, for example, a computer, a computer with a browser device, a telephone, an IP phone, a mobile device (e.g., cellular phone, personal digital assistant (PDA) device, laptop computer, electronic mail device), a server, a rack with one or more processing cards, special purpose circuitry, and/or other communication devices. The browser device includes, for example, a computer (e.g., desktop computer, laptop computer) with a world wide web browser (e.g., Microsoft® Internet Explorer® available from Microsoft Corporation, Mozilla® Firefox available from Mozilla Corporation). A mobile computing device includes, for example, a Blackberry®. IP phones include, for example, a Cisco® Unified IP Phone 7985G available from Cisco System, Inc, and/or a Cisco® Unified Wireless Phone 7920 available from Cisco System, Inc.
One skilled in the art will realize the invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. The foregoing embodiments are therefore to be considered in all respects illustrative rather than limiting of the invention described herein. Scope of the invention is thus indicated by the appended claims, rather than by the foregoing description, and all changes that come within the meaning and range of equivalency of the claims are therefore intended to be embraced therein.

## Claims

1. A computer-implemented method, comprising:
storing a set of rules, wherein a rule is associated with a condition, wherein a rule defines when to transmit customized webpage data, and wherein customized webpage data corresponds to an interaction with a webpage;
receiving, at a server, a request for a default tag code, wherein the request is associated with loading webpage data on a computing device, wherein the webpage data includes original content data and a tag, wherein the tag is configured to facilitate communication between the computing device and the server, wherein when the webpage data is loaded on the computing device, the computing device displays a webpage corresponding to the original content data and the tag causes the request for the default tag code to be transmitted to the server;
transmitting the default tag code, wherein when the default tag code is received at the computing device, the default tag code is executed, wherein executing the default tag code generates a tag module that is stored in the computing device, wherein the default tag code includes instructions that configure the tag module to monitor an interaction with the webpage, and wherein the tag module is associated with a tag identifier;
receiving behavior data depicting one or more interactions with the webpage, wherein the behavior data is generated and appended to the tag identifier associated with the tag module when the tag module detects an interaction;
selecting a rule from the stored set of rules, wherein selecting includes using the tag identifier, and wherein the rule defines customized webpage data;
determining whether the behavior data appended to the tag identifier satisfies the condition associated with the rule; and
transmitting the customized webpage data when the condition associated with the rule has been satisfied.

2. The method of claim 1, wherein the tag module appends the tag identifier to the behavior data.

3. The method of claim 1, wherein the customized webpage data defined by the stored rule adds logic, functionality, or content to the webpage data.

4. The method of claim 1, further comprising:
generating the customized webpage data defined by the stored rule in response to determining that the condition associated with the stored rule has been satisfied.

5. The method of claim 1, wherein the webpage data includes underlying code, and wherein a custom tag code is used to customize the webpage data without modifying the underlying code.

6. The method of claim 1, wherein interaction data includes data depicting interactions with an additional webpage displayed prior to the webpage.

7. The method of claim 1, wherein each rule is associated with multiple conditions, and wherein determining that the interactions with the webpage satisfy the condition associated with the stored rule includes determining that the interactions with the webpage satisfy each of the conditions associated with the stored rule.

8. The method of claim 1, further comprising generating the customized webpage data defined by the stored rule, wherein transmitting is done in response to determining that the condition associated with the stored rule has been satisfied.

9. A system, comprising:
one or more processors;
a non-transitory computer-readable storage medium containing instructions configured to cause the one or more processors to perform operations, including:
storing a set of rules, wherein a rule is associated with a condition, wherein a rule defines when to transmit customized webpage data, and wherein customized webpage data corresponds to an interaction with a webpage;
receiving, at a server, a request for a default tag code, wherein the request is associated with loading webpage data on a computing device, wherein the webpage data includes original content data and a tag, wherein the tag is configured to facilitate communication between the computing device and the server, wherein when the webpage data is loaded on the computing device, the computing device displays a webpage corresponding to the original content data and the tag causes the request for the default tag code to be transmitted to the server;
transmitting the default tag code, wherein when the default tag code is received at the computing device, the default tag code is executed, wherein executing the default tag code generates a tag module that is stored in the computing device, wherein the default tag code includes instructions that configure the tag module to monitor an interaction with the webpage, and wherein the tag module is associated with a tag identifier;
receiving behavior data depicting one or more interactions with the webpage, wherein the behavior data is generated and appended to the tag identifier associated with the tag module when the tag module detects an interaction;
selecting a rule from the stored set of rules, wherein selecting includes using the tag identifier, and wherein the rule defines customized webpage data;
determining whether the behavior data appended to the tag identifier satisfies the condition associated with the rule; and
transmitting the customized webpage data when the condition associated with the rule has been satisfied.

10. The system of claim 9, wherein the tag module appends the tag identifier to the behavior data.

11. The system of claim 9, wherein the customized webpage data defined by the stored rule adds logic, functionality, or content to the webpage data.

12. The system of claim 9, wherein the operations further include:
generating the customized webpage data defined by the stored rule in response to determining that the condition associated with the stored rule has been satisfied.

13. The system of claim 9, wherein the webpage data includes underlying code, and wherein a custom tag code is used to customize the webpage data without modifying the underlying code.

14. The system of claim 9, wherein interaction data includes data depicting interactions with an additional webpage displayed prior to the webpage.

15. The system of claim 9, wherein each rule is associated with multiple conditions, and wherein determining that the interactions with the webpage satisfy the condition associated with the stored rule includes determining that the interactions with the webpage satisfy each of the conditions associated with the stored rule.

16. The system of claim 9, wherein the operations further include generating the customized webpage data defined by the stored rule, wherein transmitting is done in response to determining that the condition associated with the stored rule has been satisfied.

17. A computer-program product, tangibly embodied in a non-transitory machine-readable storage medium, including instructions configured to cause a data processing apparatus to:
store a set of rules, wherein a rule is associated with a condition, wherein a rule defines when to transmit customized webpage data, and wherein customized webpage data corresponds to an interaction with a webpage;
receive, at a server, a request for a default tag code, wherein the request is associated with loading webpage data on a computing device, wherein the webpage data includes original content data and a tag, wherein the tag is configured to facilitate communication between the computing device and the server, wherein when the webpage data is loaded on the computing device, the computing device displays a webpage corresponding to the original content data and the tag causes the request for the default tag code to be transmitted to the server;
transmit the default tag code, wherein when the default tag code is received at the computing device, the default tag code is executed, wherein executing the default tag code generates a tag module that is stored in the computing device on the webpage, wherein the default tag code includes instructions that configure the tag module is used to monitor an interaction with the webpage, and wherein the tag module is associated with a tag identifier, and wherein the tag identifier is associated with the account identification code corresponding to the webpage;
receive behavior data depicting one or more interactions with the webpage, wherein the behavior data is generated and appended to the tag identifier associated with the tag module when the tag module detects an interaction;
select a rule from the stored set of rules, wherein selecting includes using the tag identifier, and wherein the rule defines customized webpage data;
determine whether the behavior data appended to the tag identifier satisfies the condition associated with the rule; and
transmit the customized webpage data when the condition associated with the rule has been satisfied.

18. The computer-program product of claim 17, wherein the tag module appends the tag identifier to the behavior data.

19. The computer-program product of claim 17, wherein the customized webpage data defined by the stored rule adds logic, functionality, or content to the webpage data.

20. The computer-program product of claim 17, further comprising instructions configured to cause the data processing apparatus to:
generate the customized webpage data defined by the stored rule in response to determining that the condition associated with the stored rule has been satisfied.

21. The computer-program product of claim 17, wherein the webpage data includes underlying code, and wherein a custom tag code is used to customize the webpage data without modifying the underlying code.

22. The computer-program product of claim 17, wherein interaction data includes data depicting interactions with an additional webpage displayed prior to the webpage.

23. The computer-program product of claim 17, wherein each rule is associated with multiple conditions, and wherein determining that the interactions with the webpage satisfy the condition associated with the stored rule includes determining that the interactions with the webpage satisfy each of the conditions associated with the stored rule.

24. The computer-program product of claim 17, further comprising instructions configured to cause the data processing apparatus to:
generate the customized webpage data defined by the stored rule, wherein transmitting is done in response to determining that the condition associated with the stored rule has been satisfied.