Language selection

Search

Patent 2906712 Summary

Third-party information liability

Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.

Claims and Abstract availability

Any discrepancies in the text and image of the Claims and Abstract are due to differing posting times. Text of the Claims and Abstract are posted:

  • At the time the application is open to public inspection;
  • At the time of issue of the patent (grant).
(12) Patent Application: (11) CA 2906712
(54) English Title: USE OF METHOD OVERRIDES FOR DYNAMICALLY CHANGING VISIBLE PAGE CONTENT
(54) French Title: UTILISATION D'ANNULATIONS DE PROCEDE POUR MODIFIER DYNAMIQUEMENT UN CONTENU DE PAGE VISIBLE
Status: Dead
Bibliographic Data
(51) International Patent Classification (IPC):
  • H04L 12/16 (2006.01)
  • F16D 65/00 (2006.01)
  • G06F 17/00 (2006.01)
(72) Inventors :
  • MANION, JOSHUA R. (United States of America)
  • GOODWIN, JOSHUA C. (United States of America)
  • LATIMER, WILLIAM M. (United States of America)
(73) Owners :
  • ENSIGHTEN, INC. (United States of America)
(71) Applicants :
  • ENSIGHTEN, INC. (United States of America)
(74) Agent: GOWLING WLG (CANADA) LLP
(74) Associate agent:
(45) Issued:
(86) PCT Filing Date: 2014-03-14
(87) Open to Public Inspection: 2014-09-18
Availability of licence: N/A
(25) Language of filing: English

Patent Cooperation Treaty (PCT): Yes
(86) PCT Filing Number: PCT/US2014/028930
(87) International Publication Number: WO2014/144498
(85) National Entry: 2015-09-14

(30) Application Priority Data:
Application No. Country/Territory Date
13/843,849 United States of America 2013-03-15

Abstracts

English Abstract

A tag/content management system delivers customized content and/or program instructions to a user terminal. The system may deliver several groups of program executable instructions, including instructions that are global to all web domains controlled by a client server and those that are specific to a web page/group of web pages. The program instructions and/or content may also be delivered to the user terminal based on the evaluation of one or more conditions, including those related to the location of the user terminal, various HTTP header fields, the presence of specific HTML objects in a web page accessed by the user terminal, and the screen resolution of the user terminal, among other things.


French Abstract

Selon l'invention, un système de gestion d'étiquette/de contenu fournit un contenu personnalisé et/ou des instructions de programme personnalisées à un terminal d'utilisateur. Ledit système peut fournir plusieurs groupes d'instructions exécutables de programme, y compris des instructions communes à tous les domaines Web commandés par un serveur client et celles qui sont spécifiques à une page Web/à un groupe de pages Web. Les instructions de programme et/ou le contenu peuvent également être fournis au terminal d'utilisateur sur la base de l'évaluation d'une ou de plusieurs conditions, y compris celles liées à l'emplacement du terminal d'utilisateur, à divers champs d'en-tête HTTP, à la présence d'objets HTML spécifiques dans une page Web à laquelle le terminal d'utilisateur a accédé, et à la résolution d'écran du terminal d'utilisateur, entre autres.

Claims

Note: Claims are shown in the official language in which they were submitted.




What is claimed is:
1. A method comprising:
receiving, at a server from a user terminal, a first request for first program
instructions
configured to execute on the user terminal, where the first request is
generated in response to
the user terminal loading a first data using an application;
transmitting, to the user terminal, the first program instructions;
receiving, at the server, a second request for second program instructions
configured
to execute on the user terminal, wherein the second request is generated in
response to
execution of the first program instructions, and the second request includes
information about
the first data loaded from the application on the user terminal; and
evaluating at least one of a plurality of conditions to determine whether at
least one
set of a plurality of sets of the second program instructions should be
delivered to the user
terminal.
2. The method of claim 1, further comprising: causing routing, from the user
terminal to an
entity, a second data that has been collected.
3. The method of claim 1, wherein the first data comprises a web page.
4. The method of claim 3, wherein the second request includes a uniform
resource locator
(URL) of the web page.
5. The method of cl aim 4, wherein the URL comprises a host, path, file, query
parameters,
and hash.
6. The method of claim 5, wherein one of the plurality of conditions includes
matching at
least one of the host, path, file, query parameters, and hash with at least
one predetermined
value.
7. The method of claim 6, wherein the matching of the at least one of the
host, path, file,
query parameters, and hash with the at least one predetermined value occurs
through a direct
comparison.
8. The method of claim 6, wherein the matching of the at least one of the
host, path, file,
query parameters, and hash with the at least one predetermined value occurs
through a
comparison involving regular expressions.
- 35 -



9. The method of claim 1, wherein one of the plurality of conditions includes
matching at
least one of a plurality of Hypertext Transfer Protocol (HTTP) header fields
with at least one
predetermined value.
10. The method of claim 9, wherein the plurality of HTTP header fields are
chosen from the
group consisting of: a user agent field, a referrer field, and a cookie field.
11. The method of claim 3, wherein one of the plurality of conditions includes
determining
whether a predetermined Hypertext Markup Language object has been created on
the web
page accessed by the user terminal.
12. The method of claim 1, wherein one of the plurality of conditions includes
determining
whether a cookie is found for the user terminal on the server.
13. The method of claim 1, wherein one of the plurality of conditions includes
determining
whether the user terminal has a predetermined screen resolution and uses a
predetermined
scripting language version.
14. The method of claim 1, further comprising: receiving external data from an
external data
source.
15. The method of claim 14, wherein the external data includes a geolocation
of a user
associated with the user terminal and test data related to whether or not a
web-based rule has
run enough times to reach statistical significance.
16. The method of claim 15, wherein one of the plurality of conditions
includes determining
if the geolocation of the user associated with the user terminal matches a
predetermined
location.
17. An apparatus comprising:
a processor;
a memory having stored therein computer executable instructions, that when
executed
by the processor, cause the apparatus to perform a method of:
evaluating a first condition related to whether at least one of a host, path,
file,
query parameters, and hash within a uniform resource locator (URL) matches at
least one of a
first set of predetermined values;
- 36 -


evaluating a second condition related to whether at least one of a plurality
of
Hypertext Transfer Protocol header fields matches at least one of a second set
of
predetermined values; and
when at least the first and the second conditions are met, transmitting
program
instructions to a user terminal accessing the URL.
18. The apparatus of claim 17, wherein the processor further performs:
evaluating a third
condition related to whether a predetermined Hypertext Markup Language object
has been
created on a web page located at the URL.
19. The apparatus of claim 17, wherein the processor further performs:
evaluating a third
condition related to whether a geolocation associated with the user terminal
is a
predetermined location.
20. A non-transitory computer-readable storage medium having computer-
executable
program instructions stored thereon that when executed by a processor, cause
the processor to
perform steps comprising:
creating rules for execution of program instructions on a user terminal;
using the rules, generating a manager program with first program
instructions configured to execute on the user terminal upon receiving a first

request from the user terminal, wherein the first request is generated in
response to the user terminal downloading data using an application;
evaluating a plurality of conditions related to the user terminal,
wherein the plurality of conditions include whether the user terminal is a
mobile or stationary terminal, whether the application running on the user
terminal is of a predetermined type, and whether the user terminal is in a
predetermined location;
using the rules and based on the evaluation, generating page specific
instructions configured to execute on the user terminal upon receiving a
second request, wherein the second request is generated in response to
execution of the first program instructions.
- 37 -

Description

Note: Descriptions are shown in the official language in which they were submitted.


CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
USE OF METHOD OVERRIDES FOR DYNAMICALLY CHANGING
VISIBLE PAGE CONTENT
[01] This application is an international application claiming priority to
U.S. Patent
Application Serial No. 13/843,849 (Attorney Docket No. 007662.00019), filed
March
15, 2013, which is a continuation-in-part of U.S. Patent Application Serial
No.
13/305,282 (Attorney Docket No. 007662.00007), filed November 28, 2011, which
is
a continuation-in-part of U.S. Application Serial No. 12/685,268, entitled,
"Enhanced
Delivery of Content and Program Instructions," (Attorney Docket No.
007662.00002)
filed January 11, 2010, all of the aforementioned are herein incorporated by
reference
in their entireties.
CROSS REFERENCE TO RELATED APPLICATIONS
[02] This application is related to U.S. Patent Application Serial No.
13/554,603 (Attorney
Docket No. 007662.00016), filed July 20, 2012, which is a continuation of U.S.
Patent
Application Serial No. 13/340,582 (Attorney Docket No. 007662.00009; now U.S.
Patent 8,261,362), filed December 29, 2011, which claims the benefit of
priority to
U.S. Provisional Application Serial No. 61/428,560 (Attorney Docket No.
007662.00005), filed December 30, 2010, including its concurrently-filed
appendices;
all of the aforementioned are herein incorporated by reference in their
entirety.
TECHNICAL FIELD
[03] Aspects of the disclosure generally relate to delivery of content and/or
program
instructions to user terminals based on conditional logic. In particular,
various aspects
of the disclosure include customizing the program instructions/content
delivered to a
user terminal based on numerous criteria, including the IP address of the user

terminal, the information requested from the user terminal, and/or others.
BACKGROUND
[04] Web pages are generally written in Hypertext Markup Language (HTML). They
are
written using HTML elements that include "tags" surrounded by angle brackets;
information in the tag tells the web browser how to interpret the HTML element
(e.g.,
as text, for insertion of an image into the webpage, for running a script,
etc.). These
- 1 -

CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
tags can, among other things, include or can load scripts in languages such as

JavaS criptTm.
[05] Meanwhile, web analytics is a field in which data about customers is
collected and
analyzed for a variety of purposes. To obtain data for web analytics, a
population of
users visits a web page and/or starts an application that causes certain
program
instructions to be executed. Usually, data is collected for web analytics
purposes
through a variety of mechanisms, including the setting of a cookie and/or by
running
scripts in the HTML document. The scripts may perform a variety of functions,
including grabbing variables from the document object model (DOM) and/or
sending
back an image request to a data collection server either internally or
externally hosted.
[06] The program instructions for web analytics are generally authored and run
by a
variety of vendors, including OmnitureTM, GoogleTM, YahooTM, and WebtrendsTM,
among others, in order to be able to capture data such as web page load times,
"mouse
overs" (i.e., moving a mouse over a particular object on the web page), and
the page
requestor's IP address. A medium complexity web page may include 5-10 tags
with a
reference to computer scripts that are run on servers managed by different
vendors.
[07] When a marketer associated with an organization decides that she wants to
change the
code to measure and analyze different features, the process is often tedious
and
challenging. In many situations, to perform this update, the marketer must
create a
new custom variable in the program instructions, define what the new variable
is, and
specify what data the modified code must capture for the web page. Since the
marketer is generally not skilled in how to perform these modifications, she
must
interface with her information technology (IT) department or other similar
agency.
Sometimes, even the IT department may not adequately understand the syntax of
the
web analytics program instructions to properly modify the code, especially
given that
the myriad web analytics vendors, advertisers, survey researchers, and
marketers all
have their own custom computer code for effectuating the collection of data
for
analysis. In other situations, the IT department may not have the appropriate
bandwidth to modify the code for deployment on schedule (e.g., for an
advertisement
campaign deadline, etc). These problems are only exacerbated when a client's
- 2 -

CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
website has many pages and/or many different types of program instructions for

collecting various data about a user.
BRIEF SUMMARY
[08] In light of the foregoing background, the following presents a simplified
summary of
the present disclosure 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
not
intended to identify key or critical elements of the invention or to delineate
the scope
of the invention. The following summary merely presents some concepts of the
invention in a simplified form as a prelude to the more detailed description
provided
below.
[09] Aspects of the disclosure address one or more of the issues mentioned
above by
disclosing methods, computer readable media, and apparatuses for
systematically
managing the delivery of program instructions and content based on predefined
conditions.
[10] With another aspect of the disclosure, the delivery of program
instructions may be
based on predefined rules related to received data, location, time, and other
factors.
[11] Aspects of the disclosure may be provided in a computer-readable medium
having
computer-executable instructions to perform one or more of the process steps
described herein.
[12] This Summary is provided to introduce a selection of concepts in a
simplified form
that are further described below in the Detailed Description. The Summary is
not
intended to identify key features or essential features of the claimed subject
matter,
nor is it intended to be used to limit the scope of the claimed subject
matter.
BRIEF DESCRIPTION OF THE DRAWINGS
[13] The present invention is illustrated by way of example and is not limited
in the
accompanying figures in which like reference numerals indicate similar
elements and
in which:
- 3 -

CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
[14] Figure 1 shows an illustrative operating environment in which various
aspects of the
disclosure may be implemented.
[15] Figure 2 is an illustrative block diagram of workstations and servers
that may be used
to implement the processes and functions of certain aspects of the disclosure.
[16] Figure 3 shows a tag/content management system operating in a network in
accordance with certain aspects of the disclosure.
[17] Figure 4 shows a flow diagram for using a tag/content manager program to
execute
both global and page specific code in accordance with certain aspects of the
disclosure.
[18] Figure 5 shows a flow diagram for delivering page specific code to a tag
management
system in accordance with certain aspects of the disclosure.
[19] Figure 6 shows a flow diagram for generating the tag/content manager in
accordance
with certain aspects of the disclosure.
DETAILED DESCRIPTION
[20] As discussed above, there are problems associated with the delivery of
program
instructions for capturing data for use in areas such as web analytics and/or
the
delivery of customized content to individuals. A more systematic approach to
deploying content and program executable instructions is needed to avoid the
errors/latencies involved with the way that present methods work.
[21] In accordance with various aspects of the disclosure, methods, computer-
readable
media, and apparatuses are disclosed in which an entity manages the delivery
of
content and program instructions that have been customized for each individual

and/or web page. This entity (e.g., a web consulting company) may use aspects
of the
disclosure to route customized content/instructions to a web browser and/or
other
computer applications. In general, aspects of the disclosure may be used to
manipulate existing objects and add new objects to web pages. Within this
context, an
object may include both visual and non-visual elements on a web page. As part
of the
content/instruction delivery vehicle, a front-end user interface may
facilitate a non-
- 4 -

CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
technical user to describe and implement object creation and manipulation. To
provide these services, the entity may take advantage of both internal and
external
computing and storage capabilities. One example of program instructions
delivered to
a web browser and/or other application includes those related to initiate the
capture of
web analytics data when a user terminal accesses a client web page. This
collected
data may include the name of the web page visited, the download time of the
web
page, a setting of a cookie for the web page, and the movement of a mouse over
a
particular object (i.e., "mouse overs") on a web page. In addition, content
such as
advertisements, modified images, buttons, and other graphics may be customized
to a
particular user through this service.
[22] Certain embodiments of this disclosure allow for a content/tag management

system/method/program executable instructions that is/are referenced with a
single
line of computer code that is inserted as a single tag and references a
JavaScriptTM
file. The execution of program instructions in the JavaScriptTM file may take
care of
all tag management, updates, configuration changes, and any other
customizations
that clients may wish to perform. Third-party vendors may be removed from a
client
website to allow the manager to take responsibility for delivering the correct
program
instructions/content at the correct time.
[23] In the following description of the various embodiments of the
disclosure, reference is
made to the accompanying drawings, which form a part hereof, and in which is
shown
by way of illustration, various embodiments in which the disclosure may be
practiced.
It is to be understood that other embodiments may be utilized and structural
and
functional modifications may be made.
[24] Figure 1 illustrates a block diagram of a tag/content manager 101 (e.g.,
a computer
server) in communication system 100 that may be used according to an
illustrative
embodiment of the disclosure. The manager 101 may have a processor 103 for
controlling overall operation of the manager 101 and its associated
components,
including RAM 105, ROM 107, input/output module 109, and memory 115.
[25] I/O 109 may include a microphone, keypad, touch screen, and/or stylus
through which
a user of device 101 may provide input, and may also include one or more of a
speaker for providing audio output and a video display device for providing
textual,
- 5 -

CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
audiovisual and/or graphical output. Software may be stored within memory 115
to
provide instructions to processor 103 for enabling manager 101 to perform
various
functions. For example, memory 115 may store software used by the manager 101,

such as an operating system 117, application programs 119, and an associated
database 121. Processor 103 and its associated components may allow the
manager
101 to run a series of computer-readable instructions to deploy program
instructions
according to the type of request that the manager receives. For instance, if a
client
requests that program instructions for capturing mouse movements for complete
session replay be executed, manager 101 may transmit the appropriate
instructions to
a user's computer when that user visits the client's web site.
[26] The manager 101 may operate in a networked environment supporting
connections to
one or more remote computers, such as terminals 141 and 151. The terminals 141
and
151 may be personal computers or servers that include many or all of the
elements
described above relative to the manager 101. Alternatively, terminal 141
and/or 151
may be part of a "cloud" computing environment located with or remote from
manager 101 and accessed by manager 101. The network connections depicted in
Figure 1 include a local area network (LAN) 125 and a wide area network (WAN)
129, but may also include other networks. When used in a LAN networking
environment, the manager 101 is connected to the LAN 125 through a network
interface or adapter 123. When used in a WAN networking environment, the
server
101 may include a modem 127 or other means for establishing communications
over
the WAN 129, such as the Internet 131. It will be appreciated that the network

connections shown are illustrative and other means of establishing a
communications
link between the computers may be used. The existence of any of various well-
known protocols such as TCP/IP, Ethernet, File Transfer Protocol (FTP),
Hypertext
Transfer Protocol (HTTP) and the like is presumed.
[27] Additionally, an application program 119 used by the manager 101
according to an
illustrative embodiment of the disclosure may include computer executable
instructions for invoking functionality related to delivering program
instructions
and/or content.
- 6 -

CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
[28] Computing device 101 and/or terminals 141 or 151 may also be mobile
terminals
including various other components, such as a battery, speaker, and antennas
(not
shown).
[29] The disclosure is operational with numerous other general purpose or
special purpose
computing system environments or configurations. Examples of well known
computing systems, environments, and/or configurations that may be suitable
for use
with the disclosure include, but are not limited to, personal computers,
server
computers, hand-held or laptop devices, multiprocessor systems, microprocessor-

based systems, set top boxes, programmable consumer electronics, network PCs,
minicomputers, mainframe computers, and distributed computing environments
that
include any of the above systems or devices, and the like.
[30] The disclosure may be described in the general context of computer-
executable
instructions, such as program modules, being executed by a computer.
Generally,
program modules include routines, programs, objects, components, data
structures,
etc. that perform particular tasks or implement particular abstract data
types. The
disclosure may also be practiced in distributed computing environments where
tasks
are performed by remote processing devices that are linked through a
communications
network. In a distributed computing environment, program modules may be
located
in both local and remote computer storage media including memory storage
devices.
[31] Referring to Figure 2, an illustrative system 200 for implementing
methods according
to the present disclosure is shown. As illustrated, system 200 may include one
or
more workstations 201. Workstations 201 may be local or remote, and are
connected
by one or more communications links 202 to computer network 203 that is linked
via
communications links 205 to tag/content manager 204. In certain embodiments,
workstations 201 may be different storage/computing devices for storing and
delivering client-specific program instructions or in other embodiments
workstations
201 may be user terminals that are used to access a client website and/or
execute a
client-specific application. In system 200, manager 204 may be any suitable
server,
processor, computer, or data processing device, or combination of the same.
Throughout this disclosure, tag/content manager 204 will be used to reference
both
- 7 -

CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
the server/terminal that stores program instructions for tag/content
management and
the tag/content management program instructions themselves.
[32] Computer network 203 may be any suitable computer network including the
Internet,
an intranet, a wide-area network (WAN), a local-area network (LAN), a wireless

network, a digital subscriber line (DSL) network, a frame relay network, an
asynchronous transfer mode (ATM) network, a virtual private network (VPN), or
any
combination of any of the same. Communications links 202 and 205 may be any
communications links suitable for communicating between workstations 201 and
server 204, such as network links, dial-up links, wireless links, hard-wired
links, etc.
[33] The steps that follow in the Figures may be implemented by one or more of
the
components in Figures 1 and 2 and/or other components, including other
computing
devices.
[34] Figure 3 shows a tag/content management system operating in a network in
accordance with certain aspects of the disclosure. System 300 includes a user
terminal 301, a client server 303, and a cloud computing facility 305. An
individual
may use user terminal 301 to start a non-browser based client application
(e.g., flash
application, desktop applications built in AdobeTM Integrated Runtime (AIR))
and/or
browse a web page on a client server 303. A client server 303 (i.e., web
server) may
be a computing device (e.g., computing device 101) operated by a company,
school,
university, or individual, among others, to provide products/services to the
user
terminal 301 via the internet. Meanwhile, the cloud computing facility 305 may

represent a collection of network resources for storage and computing. The
tag/content manager 204 may operate on the cloud 305. These resources may be
located at a site local to or remote from the client server 303. Generally,
when extra
storage space is required on the cloud 305, tag/content manager 204 may
request the
space "on demand."
[35] The arrows interconnecting user terminal 301, client server 303, and
cloud 305
indicate the method performed by network 300 in accordance with certain
embodiments of the disclosure. The method may start at step 307 where the user

terminal 301 requests a web page from the client server 303. Upon receiving
such a
request, client server 303 may return the web page (e.g., an HTML page) to the
user
- 8 -

CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
terminal 301 in step 309. The HTML web page returned to user terminal 301 may
include a tag statement that references the location of the tag/content
manager 204
within cloud 305. An example tag statement may be as follows:
<script SrC="//INSERT PATH OF TAG/CONTENT MANAGER FOR CLIENT
"type="text/javascript"></script>
(A)
[36] Of course, variations of this tag may be possible for a variety of
reasons; for example,
the script referenced may not be written in JavaScriptTM, the website may
require
secure connections (e.g., via HTTPS://), etc. Notice that the above line of
code may
reference a tag/content manager 204 for a particular client web server. For
instance, a
different JavaScriptTM program may exist on cloud 305 for the CNN website
versus
one for the FOX News website. In other embodiments, the same tag manager 204
may be used for all web domains.
[37] The tag line shown in (A) may be placed into the header, body, footer, or

combinations of locations of the HTML source file for a particular web page
accessed
by user terminal 301. In certain embodiments, the tag line shown in (A) may be

placed in the header to allow the tag line to execute early on during the
loading of the
web page accessed by user terminal 301. Generally, when a request for a web
page is
made by a user terminal 301, the entire HTML page may be downloaded to the
terminal 301. Then a parser within the browser of user terminal 301 may parse
each
element (head, body, footer) of the HTML file into a document object by using
the
hierarchical HTML structure described in the document object model (DOM). Once

parsed, the document objects of the HTML file may be programmatically accessed

quickly and easily.
[38] When the code in (A) executes, the method then moves to step 311 where
the user
terminal 301 may request the tag manager program 204 from cloud 305. If the
tag
manager program 204 is written in JavaScriptTM (i.e., a client-side script),
program
204 may be downloaded into a memory 115 of user terminal 301. Once downloaded
onto user terminal 301, manager program 204 may execute for a variety of
applications, including data collection for web analytics purposes, content
delivery,
- 9 -

CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
etc. This tag/content delivery method may optionally move to step 313 where
the tag
manager program 204 may request program executable instructions specific to
the
particular web page being viewed by user terminal 301. If web page specific
instructions exist on cloud 305, these instructions may also be downloaded
into a
memory 115 of user terminal 301 for execution. The tag/content manager program

204 and the page specific instructions (if they exist) may both reside at
separate
locations on the cloud computing facility 305.
[39] In one embodiment, the request of page-specific code in step 313 may
involve a two-
step process. In the first step, the tag manager program 204 may request a
PHP, Perl,
Python, C, etc. file from the cloud 305. The requested file may subsequently
be used
to dynamically generate a JavaScriptTM program to the user terminal 301. This
two
step process may help to ensure that the page-specific JavaScriptTM
instructions are
properly sent to and executed on the appropriate user terminal 301.
[40] Figure 4 shows a flow diagram for using the tag/content manager program
204 to
execute both global and page specific code in accordance with certain aspects
of the
disclosure. The tag manger program 204 may include "translation capabilities"
that
would allow generic program instructions to be delivered to a user terminal
301 for a
particular data collection/delivery need. For instance, if two vendors use
different
program instructions to collect data regarding mouse movements, the
"translation
capability" within tag manager 204 may generate generic program instructions
that
may be understood/used by both vendors. The tag manager program 204 may also
comprise objects that include methods to add and execute program instructions
from
third party vendors in the correct order. These objects may also include
methods to
ensure that instructions from third party vendors are not run more than once.
The tag
manager program 204 may expose these methods in a cross-browser compatible
way.
[41] In conventional JavaScriptTM implementations, try-catch statements are
often used to
prevent interference with other JavaScriptTM on a web page so that user
terminal 305
will not crash if scripts called during the page load are run prematurely or
out of order
(e.g., when a method in a library of methods is called before the library has
finished
loading, etc.). In accordance with an aspect of the disclosure, some
embodiments
obviate the need for try-catch "band-aids" by including functions that require
methods
- 10 -

CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
to execute only after other methods have loaded or other significant events
(parsing,
loading of the DOM) have occurred. Through a series of callbacks to methods
based
on vendor-specific libraries already being loaded, the tag manager program 204

ensures that the program instructions are not executed prematurely or out of
order. In
addition, the order in which methods are executed can be configured by a user.
For
instance, a user may define an event in relation to which a method may be
required to
execute. Alternatively, a user may specify the order in which methods are
executed in
relation to each other. Clients may define the order of execution for these
methods
through an interface to the tag/content manager 204. The tag manager program
204
also includes objects that may allow program instructions to be
delivered/executed
based on significant events that have occurred when a web page is requested by
a user
terminal 301. For instance, when a web page is requested, program instructions
may
be executed after the document objects within the HTML file have been parsed
by the
web browser. In addition, program instructions may be executed after the
document
objects have been loaded by the web browser. The tag manager program 204 may
"listen" for these events and execute program instructions after receiving
confirmation
that the events have occurred.
[42] As another example, consider an individual who has completed an ecommerce

transaction that a client 303 wishes to track on a specific web page. To
perform this
task, the web analytics code may need certain variables to be available
from/to the
web page; otherwise the code may not be able to collect the necessary data.
For
instance, if the web analytics code executes before the total order value is
produced
by the ecommerce engine, the web analytics code may miss the order. To prevent

such scenarios, the tag manager 204 may implement functions that ensure that
program instructions are executed in the correct order and at the correct
time. As
mentioned earlier, the program instructions may be executed in an order that
may be
controlled by the client.
[43] Once a user terminal 301 has requested the tag manager program 204 and
the manager
program 204 has been parsed by a browser on user terminal 301, the method in
Figure
4 starts out at step 401 where the tag manager program 204 downloaded to user
terminal 301 may execute program instructions that are global to all web
domains that
fall under the purview of the client web server being accessed. In some
embodiments,
- 11 -

CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
tag manager 204 may request the global code from a separate location on the
cloud
305. In other embodiments, the global code may be directly inserted into tag
manager
204. Then the method may move to step 403 where the tag manager program 204
requests a "server component" 413 for page specific instructions for the
uniform
resource locator (URL) requested by the user terminal 301. The server
component
may be a server (e.g., workstation 201, computing device 101, etc.) residing
within or
separate from computing cloud 305. The "server component" may determine if
page
specific instructions exist for the URL requested in step 405. If the server
component
determines that no page specific instructions exist for the URL requested, the
process
may end in step 407. Alternatively, if the server component determines that
page
specific instructions exist for the URL requested, the tag manager program 204
may
request the relevant page specific code in step 409. Once tag manager 204
receives
the page specific code, the code may be executed on user terminal 301 in step
411
(after the browser has parsed the new document object generated from the
code). As
mentioned earlier, it should be noted that page specific content (e.g.,
modified images,
HTML text, etc.) may be requested from the server component 413 on cloud 305
just
as easily as page specific code.
[44] Figure 5 shows a flow diagram for allowing the server component to pass
page
specific code/content (if the code/content exists) to the tag manager 204 in
accordance
with certain aspects of the disclosure. The method starts out at step 501
where the tag
manager 501 may send out a request for page specific code/content to the
server
component 413 on cloud 305. Based on the identity of the client and the URL
being
requested, the server component 413 then may access and parse a file that
correlates
URLs with their appropriate JavaScriptTM files for a particular client in step
503.
Based on information in the correlation file, the server component 413 may
then
decide if there is any page specific code for the URL requested in step 505.
If there is
no page specific code, the process ends in step 507. If there is page specific
code, the
code is returned to the tag manager 204 in step 509.
[45] As mentioned earlier, it should be noted that the executable code running
on the
server component 413 may be written in a server-side scripting language such
as PHP.
Use of a server-side (rather than client-side) scripting language such as PHP
ensures
that when the server component 413 is called, code is actually run on the
server
- 12 -

CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
component 413 itself The results of the executed code (a JavaScriptTM file)
may then
be sent back to the tag manager program 204. Meanwhile, the files containing
data
for use by the tag manager 204 and/or the server component 413 may be written
in a
markup language such as XML.
[46] Figure 6 shows a flow diagram for generating the tag/content manager
program 204 in
accordance with certain aspects of the disclosure. As mentioned earlier,
tag/content
manager 204 may be used for a variety of applications, including collection of
data
for web analytics, for personalized content distribution, for targeted
advertisement
campaigns, to collect data about use of a company's software products, etc. To

perform these functions, the tag/content manager program 204 may need to know
"rules" for delivering executable instructions to a user terminal 301 for each
client
303. These "rules" may be based on the needs of a particular client 303. For
instance, an online retailer may be interested in recording mouse movements on
a
specific web page advertising products for sale to gauge the level of interest
in those
products and for aid in determining future offerings. A news website, on the
other
hand, may be interested in the number of page loads for each article presented
so that
popular articles may be more accessible on the website. Further still, either
of these
clients 303 may wish to present personalized content (e.g., a specific news
article, a
locally popular article for sale) to the user terminal 301 requesting client
303.
[47] Rules may also include the need for delivering certain program
instructions only after
others have properly loaded to avoid errors in the loading of a web page. For
instance, some rules may simply load JavaScriptTM libraries from certain
vendors for
use by other rules. Other rules require execution of program instructions only
in the
header, body, and/or footer of a HTML file. Ultimately, the tag manager 204
may
incorporate the sophistication of all of these rules through the program
instructions
directly included in the manager 204 and/or through programs/data that the
manager
204 accesses (e.g., page specific code files, page correlation XML files,
etc.)
[48] As such, the method in Figure 6 may start out at step 601 with an entity
understanding
client needs and gathering existing client tags to execute program
instructions from
third party vendors. This entity may be in charge of the creation and
development of
the tag manager 204. Based on these needs, the entity may then in step 603
formalize
- 13 -

CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
these needs in a "rules file" that details answers to questions such as what
type of data
(mouse overs, page loads, etc.) the client would like to collect on his
website, whether
or not there are any page specific rules, whether or not the rules are to be
executed on
the completion of significant events (DOM parsing, the execution of other
rules, etc.),
among others. This "rules file" may be created in any text editor, including
an XML
editor. Alternatively, a client may directly defines rules through a user
interface to the
tag/content manager 204 either by writing code into a predefined area in the
interface
or by using an automatic code generation mechanism accessed through the user
interface. The interface/backend may then generate the associated JavaScriptTM
for
the rules without requiring manual client intervention. Once all of the rules
have been
defined (by whichever process), the backend may generate the XML file for a
code
generator to process. In this way, the XML rules file may serve as a
translation from
easy-to-understand rules to computing-language specific code that may be
executed as
program instructions.
[49] Finally, a code generator program residing in the memory 115 of a
computing device
100 associated with the entity may codify the formalized rules into program
executable instructions (i.e., into scripts such as JavaScriptTM, PHP, etc.)
in step 605.
The code generator program may use the "rules file" to generate the tag
manager
program 204 and page specific code files used by the tag manager program 204.
In
addition, the code generator may generate data that correlates client URLs
with the
name of the program file that should be run when a user terminal 301 tries to
access
the URL. In some embodiments, the tag/content manager 204 may also manage the
collection of data and/or the distribution of content in non-browser
applications. For
instance, desktop applications built/written in AdobeTM Integrated Runtime
(AIR),
AdobeTM Flex, AdobeTM Flash, C/C++, JavaTM, and/or applications for mobile
platforms like iPhoneTM, AndroidTM, Windows MobileTM, and/or BlackberryTM may
request a tag/content manager 204 to download and execute a library of program

instructions from cloud 305. The execution of the library of program
instructions may
in turn cause the transmission of a request to an entity responsible for
creating the tag
manager 204, asking for rules describing what should be done inside of the
flash
application. In addition to performing tracking/analytics, this paradigm may
result in
all the functionality associated with the web solution (e.g., creating and
modifying
- 14 -

CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
elements within the flash application, etc.). This paradigm may also result in
the
ability to dynamically load configuration during an application run time based
on
various events (e.g., upon an "Autosave" of a document, opening of a new
document,
etc.) within the application. For example, in flash applications, in addition
to loading
a rules file, the system may request additional instructions on how to respond
to
specific events. These instructions may dynamically be generated upon request
based
on some predefined logic, piece of existing data, or data provided by the
application
in the request.
[50] In certain aspects, the server component 413 may include/access
executable
instructions that govern when computer-readable program instructions and/or
content
should be sent to a user terminal 301. The conditional logic used to deploy
computer-
readable program instructions may include one or more simple and/or
sophisticated
conditions designed to tailor deployment of these instructions for a given
scenario.
For instance, as mentioned previously, computer-readable program instructions
may
be sent to a user terminal 301 based on the URL visited by the user terminal
301 (e.g.,
a webpage hosted by client server 303).
[51] Server component 413 may also analyze the constituent parts of a URL to
decide
which set of program instructions should be sent to terminal 301. For
instance,
consider the example URL
www.host. com/path/path/file.html?queryl=valuel&query2=value2#hash. The
constituent parts of this URL include the host (www.host.com), path
(/path/path), file
(file.html), query parameters (queryl=value 1 , and query2=value2), and hash
(#hash).
Server component 413 may send user terminal 301 a given set of computer-
readable
program instructions and/or content when any one of these fields, more than
one of
these fields, or all of these fields matches one or more predetermined values.
Each
constituent part of a URL may be matched in various ways. In one example, a
direct
comparison involving an expression to determine if the string of characters
for one or
more fields matches a predetermined value may be made (e.g., does www.host.com
=
www.host.com). In another example, a check involving regular expressions
(e.g.,
expressions that are used to match a set of character strings according to
specific
syntax rules and/or patterns) may be made (e.g., does www\..+Vcom = www.[any
string of characters].com). One of ordinary skill in the art after review of
the entirety
- 15 -

CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
disclosed herein would recognize that server component 413 may support any
number
of computing languages involving regular expressions and their associated
metacharacters.
[52] As an example, consider a scenario where a client of an entity managing
the tag
manager program 204 (e.g., a web analytics company, etc.) wishes to deliver
the same
page specific instructions/content for two different URLs (e.g.,
www.example.com
and example.com). In this case, the host part of the URL may be defined to be
a
regular expression (e.g., REGEXP: ^(?:www.)?example.com$) that encompasses
both www.example.com and example.com to deploy a predetermined set of page
specific instructions.
[53] The server component 413 may also deliver computer-readable program
instructions/content to the given user terminal 301 based on specific data
passed to the
server component 413 as part of a regular HTTP request (e.g., step 403 in
Figure 4).
In particular, various HTTP headers may be matched using the two comparison
techniques discussed above (e.g., direct comparison and those involving
regular
expressions). For instance, the user-agent, cookie, and/or referrer field
(e.g., specifies
the last web page user terminal 301 visited) in the HTTP header may be matched
to
some predetermined values to determine if a given set of program
instructions/content
should be delivered to a user terminal 301. One of ordinary skill in the art
after
review of the entirety disclosed herein would recognize that any number of
HTTP
header fields may be matched to determine delivery of program
instructions/content.
A partial list of HTTP header fields may be found at
http://en.wikipedia.org/wiki/List of HTTP header fields#Requests, which is
herein
incorporated by reference in its entirety. One of ordinary skill the art after
review of
the entirety disclosed herein would recognize that any one of these or other
fields may
be used with aspects of this disclosure.
[54] For instance, consider an example where a user terminal 301 should
receive different
program instructions when a given client server 303 is accessed by a mobile
browser
versus a standard browser on user terminal 301. A client managing client
server 303
may determine that this is necessary in order to deliver a smaller or more
compatible
set of program instructions for a mobile browser, among other reasons. In one
- 16 -

CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
scenario, the server component 413 may access page-specific instructions that
determines when a URL is accessed by a mobile browser user agent such as an
iPhoneTM browser. In this example, the server component 413 may target
JavaScriptTM specifically to iPhone browsers. This ability to target specific
program
instructions to a particular type of mobile browser may be useful because some
of
these browsers may not support the same type of JavaScriptTM or data
collection
methodologies as a standard browser.
[55] In another example, assume that the referrer field in the HTTP header is
used to
provide a given set of program instructions/content to user terminal 301.
Assume also
that the referrer field identifies a competitor of a client managing client
server 303. In
this scenario, based on the particular competitor's website visited, the
server
component 413 may deliver specific content to a user terminal 301 for a client

managing client server 303. For instance, the server component 413 may deliver

content (e.g., a customized pop-up window) that may explain the benefits of
its
products over the products of the competitor identified in the referrer field
of the
HTTP header. In another example, a news website may be interested in the
number
of page loads for each article presented so that popular articles may be more
accessible on the website. Further still, either of these clients 303 may wish
to present
personalized content (e.g., a specific news article, a locally popular article
for sale) to
the user terminal 301 requesting client 303.
[56] As mentioned earlier, tag/content manager 204 may be used for a variety
of
applications, including collection of data for web analytics, for personalized
content
distribution, for targeted advertisement campaigns, to collect data about use
of a
company's software products, etc. To perform these functions, the tag/content
manager program 204 may need to know "rules" for delivering executable
instructions to a user terminal 301 for each client 303. These "rules" may be
based on
the needs of a particular client 303.
[57] In other aspects, program instructions/content may be transmitted to the
user terminal
301 based on data that may exist within a browser located on the user terminal
301. A
computing device associated with an entity managing tag manager program 204
may
run computer-readable program instructions (e.g., JavaScriptTM) in an end-
user's
- 17 -

CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
browser to gather this data. Upon gathering this data, this computing device
may
retrieve and execute more computer-readable program instructions in any of
various
ways.
[58] In a first embodiment, the computer-readable program instructions
necessary to check
if the data gathered in a browser associated with user terminal 301 matches
one or
more predefined conditions may have been sent to the browser with the initial
request
for program instructions (e.g., with the initial request for a tag manager
program 204
and/or from the page specific instructions transmitted by server component
413). If a
match to the conditional is found, a processor associated with the entity
managing tag
manager program 204 may request program instructions/content that corresponds
to
the matched conditional. In this way, program instructions may be executed on
a user
terminal 301 that may result in a computing device associated with the entity
managing tag manager program 204 making a request outside of the normal
process
(e.g., outside of the request for a tag manager program 204 and the request
for page-
specific instructions by the server component 413.)
[59] To illustrate this first embodiment, consider a scenario where a client
associated with
client server 303 wishes to track when a user associated with user terminal
301 has
successfully completed an event (e.g., such as filling out a form for signing
up for an
account, etc.) on a webpage associated with the client server 303. In this
scenario, a
predetermined piece of data (e.g., an HTML object, etc.) may be added to the
webpage when the user associated with user terminal 301 completes the form.
When
the HTML object is generated (e.g., when the web browser on the user terminal
301
determines that the form has been completed), the user terminal 301 may report
the
form completion event back to a computing device associated with the entity
(e.g., a
web analytics company, etc.) managing tag manager program 204. The computing
device may then return a predefined set of program instructions/content to the
user
terminal.
[60] In a second embodiment, the check to determine if the data gathered in a
browser
associated with user terminal 301 matches one or more predefined conditions
may be
performed at the server component 413. If one or more predefined conditions
are
- 18 -

CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
met, the server component 413 may transmit a predetermined response (e.g.,
program
instructions, content, etc.) to the user terminal 301.
[61] To illustrate this second embodiment, consider a scenario where a client
associated
with client server 303 wants to identify which web domain associated with the
client
is being accessed by users of user terminals 301. Because cookies are set on a

domain-by-domain basis and may only be accessed from the domain where the
cookie
was set, one solution to this problem may include a check to determine if a
cookie
exists when a given webpage loads on an associated web domain of a client. If
a
cookie does not exist, a request may be made to server component 413 to
determine if
the user terminal 301 that loaded the client webpage has a cookie set on the
web
domain associated with the entity managing tag manager 204 and/or server
component 413 (assuming that the entity has only one domain). If a cookie is
found
for the user associated with user terminal 301, the server component 413 may
transmit
the cookie value (e.g., as a JavaScriptTM variable, etc.) to the user terminal
301. Once
received, the cookie may be set on the client web domain. If no cookie is
found for
the user associated with user terminal 301, the server component 413 may
transmit a
new cookie value to the user terminal 301. In this way, data (e.g., a message
to query
whether or not a cookie for a given user associated with a user terminal 301
has been
set, etc.) may be sent to the server component 413 and the server component
413 may
perform a conditional check to respond with a preexisting or new cookie for a
user of
user terminal 301.
[62] One of ordinary skill in the art after review of the entirety disclosed
herein would
recognize that data stored in a web browser associated with user terminal 301
for
matching various conditions may include a wide variety of things, including
data
related to conditionals based on which HTML elements/objects exist on a
webpage
accessed by the user terminal 301 and data related to conditionals based on
information gathered from the web browser itself In particular, data related
to
conditionals based on which HTML elements exist on a webpage accessed by the
user
terminal 301 may include data that answers questions such as "does a specified

HTML element exist?" and/or "does a specified HTML element have some
particular
property or set of properties?", among other things. Data related to
conditionals based
on information gathered from the web browser itself includes screen resolution
of the
- 19 -

CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
user terminal 301, the JavaScriptTM (or other computing language) version used
by
user terminal 301, the FlashTM version used by user terminal 301, etc. In some

aspects, all properties of HTML elements may be available to the web analytics

environment (e.g., JavaScriptTm-based, etc.) discussed herein and as a web
browser
supports new HTML element types and properties, new conditionals may be
created
to analyze these element types/properties. In other words, any data that may
be
collected from a user terminal 301 (e.g., a device loading a web page, running
an
iOSTM application, etc.) may be used in creating a conditional.
[63] As an example, consider a case in which a client associated with client
server 303
wants to send different JavaScriptTM program instructions based on what
version of
JavaScriptTM a browser stored on user terminal 301 supports. If a check to
determine
which JavaScriptTM version is supported by a browser reveals an older version
of
JavaScriptTM, the user terminal 301 may request computer-readable program
instructions from server component 413 that define functions in a newer
version of
JavaScriptTM. This process may allow a client associated with client server
303 to
make sure that a standard set of JavaScriptTM functions are available on all
of the
webpages associated with the client.
[64] In yet other aspects, program instructions/content may be transmitted to
the user
terminal 301 based on data acquired from an external data source. A computing
device associated with the entity managing tag manager program 204 may gather
data
from sources outside of the entity's control via application programming
interfaces
(APIs) associated with the external data sources. A conditional match may then
be
performed based on the external data, which may include data from an analytics
tool
associated with a client managing client server 303, data from databases
associated
with a client managing client server 303, and data from a third party (e.g.,
an end-
user's geolocation as ascertained by a third party application that matches IP

addresses to geographic locations). As an example, if an external data source
that
maps IP ranges to specific geographic locations is accessed, a computing
device
associated with an entity managing tag manager program 204 may send program
instructions and/or content to user terminals 301 in predetermined geographic
regions.
- 20 -

CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
[65] As another example, consider a scenario where a client associated with
client server
303 wishes to determine how many times a rule has been executed. For instance,
a
client associated with client server 303 may use website optimization tools
that would
test to determine if various versions of the same element perform differently
(e.g.,
answering the question of a preferred color for a "sign up" button located on
their
website). Because running a test to determine the answer to these types of
questions
costs money, clients associated with client servers 303 may calculate how many
test
cases they need to reach statistical significance and decide to perform only
those
number of tests to reach statistical significance. Data related to identifying
the
number of times that a rule for tests such as the determination of a color
associated
with a "sign up" button may be stored in an external data source. A computing
device
associated with the entity managing tag manager program 204 may retrieve this
data
from the external data source and may use the data to determine if program
instructions for performing the test should be sent to user terminal 301
(e.g., if the rule
for determining the color associated with a "sign up" button has run less
times than
are needed for statistical significance.)
[66] The aforementioned ways are merely illustrative embodiments of ways in
which
content/program instructions may be delivered to user terminals 301 based on
one or
more predefined conditions (e.g., time at which the request is made,
geographic
region, language preferences, maximum/minimum number of delivery instances,
etc.)
that are evaluated either at computing devices located at the entity managing
tag
manager program 204 and/or at the user terminals 301 themselves. For instance,
an
example of a time-based condition includes a scenario in which a client
managing
client server 303 may want to deploy special deals on a webpage associated
with the
client during traditionally slow periods in an attempt to generate more sales.
As
another example, a client may want to set an expiration date for a tag created
to track
a particular campaign so that even if an entity tasked with managing the tag
forgets
that it has been deployed, the tag/content management system 300 may stop
serving
the tag after conclusion of the campaign. One of ordinary skill in the art
after review
of the entirety disclosed herein would recognize numerous other ways of
customized
delivery of program instructions/content that are within the scope of the
disclosure.
-21 -

CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
[67] Whether data is being collected from a web browser or a non-browser
application, the
program instructions within the tag/content manager 204 may facilitate the
collection
of data such as mouse-overs, page loads, and mouse movements. The collection
of
data may occur when program instructions from third party vendors (e.g.,
Omniture,
Webtrends, Yahoo, Google, etc.) are delivered in a timely fashion based on the
rules
that have been translated into program instructions by a code generator. The
collected
data may also include data generated by the client's backend server 303. For
instance,
a content management system (CMS) local to the client server 303 which manages
a
client's web page may generate various types of data (e.g., like what template
a page
is based upon, how long it took to render a page, etc.). This solution may
also
facilitate the collection of this type of data.
[68] Once collected, the data may be processed in one of two ways. In the
first scenario,
the collected data may simply be routed to the appropriate third-party vendor
(i.e., if
an Omniture tag is delivered and executed, then the data collected from the
execution
of this tag would be routed to an Omniture server.) The third-party vendors
may then
process and analyze the collected data in a way of their choosing based on
client
needs.
[69] Alternatively, the collected data may be routed back to and stored on the
cloud 305
for access and analysis by computing resources in cloud 305 and/or other
computing
resources available local to an organization overseeing the creation and
development
of the tag manager 204. This collected data may be supplemented by collecting
and
storing additional data about a user of the user terminal 301 from call logs
and
transaction histories. In this scenario, the organization behind the
tag/content
manager 204 may provide even more value to its clients 303 because the
organization
would be providing both management and data analysis services.
[70] The data analysis may encompass a variety of techniques, including data
mining
algorithms and multivariate testing. As suggested earlier, the output of the
data
analysis may be fed back into the system to generate new or modified rules
(and thus,
generate a modified tag manager 204 and/or page specific code files) for
delivering
program instructions and/or content to a user terminal 301. A simple example
of data
analysis may include the ability of the system to check to see if there are
any records
- 22 -

CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
of a user that has loaded a client's web page (i.e., a return visitor). For
instance,
assume that a user is revisiting a website with the URL www.acme.com. The
standard welcome message for first-time visitors to www.acme.com may read as,
"Welcome to www.acme.com." If there is a record of a user John Doe having
visited
www.acme.com, the welcome message may then be modified to "Welcome back to
www.acme.com John Doe."
[71] In addition, security protocols (passwords, biometric scanning, motion
detection, etc.)
may be put in place to prevent unauthorized individuals from accessing and
manipulating tag manger 204 and its associated helper programs either on the
cloud
305 and/or on other computing facilities associated with the entity that
develops and
modifies the tag manager 204.
[72] The entity generating/modifying the tag manger 204 and its associated
components
may also implement a front end display/communication module to report results
of
collected data, communicate recent news and events within the tag/content
management and analysis fields, and/or interface with other data including
logs from
a call center system, offline sales data, offline marketing spend, and others.
The front
end display may allow access to much/all of the information/analysis generated

through the implementation of the tag manager 204. Also, the front end display
may
allow clients 303 to easily add program instructions representing new rules
(via check
boxes, buttons, etc) to their web sites/products.
[73] The tag/content manager 204 may be used for a variety of applications,
including
collection of data for web analytics, for personalized content distribution,
for targeted
advertisement campaigns, to collect data about use of a company's software
products,
etc. To perform these functions, the tag/content manager program 204 may need
to
know "rules" for delivering executable instructions to a user terminal 301 for
each
client 303. These "rules" may be based on the needs of a particular client
303. The
tag manager program 204 with program instructions representing new rules for
testing
purposes may be generated through an interface. For instance, consider that an
online
retail store wishes to modify its tracking code to collect data on mouse
movements for
complete session replay. This new rule may be used to generate a modified tag
manager 204 for the retail store. The modified tag manager 204 may include
code for
- 23 -

CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
tracking mouse movements. To ensure that this newly inserted code does not
"break"
the site (i.e., cause the website to crash), the modified tag manager 204 may
be sent
only to a specific URL (i.e., a URL used specifically for testing the new
code). All
other URLs may receive the unmodified version of the tag manager 204. In this
way,
this implementation may help to dynamically create test environments for use
by
clients 303 in testing new code, content, and/or any other modifications to
their
websites, software products, etc.
[74] Moreover, the collected data may be analyzed using a variety of
techniques, including
data mining algorithms and multivariate testing. As suggested earlier, the
output of
the data analysis may be fed back into the system to generate new or modified
rules
(and thus, generate a modified tag manager 204 and/or page specific code
files) for
delivering program instructions and/or content to a user terminal 301. A
simple
example of data analysis may include the ability of the system to check to see
if there
are any records of a user that has loaded a client's web page (i.e., a return
visitor). For
instance, assume that a user is revisiting a website with the URL
www.acme.com.
The standard welcome message for first-time visitors to www.acme.com may read
as,
"Welcome to www.acme.com." If there is a record of a user John Doe having
visited
www.acme.com, the welcome message may then be modified to "Welcome back to
www.acme.com John Doe."
[75] In other aspects, program instructions/content may be transmitted to the
user terminal
301 based on data that may exist within a browser located on the user terminal
301. A
computing device associated with an entity managing tag manager program 204
may
run computer-readable program instructions (e.g., JavaScriptTM) in an end-
user's
browser to gather this data. Upon gathering this data, this computing device
may
retrieve and execute more computer-readable program instructions in any of
various
ways.
[76] In one embodiment, the system may function as a completely automated or
nearly
completely automated system for A/B multivariate testing. In some examples,
the
system may be used to change content based on factors other than privacy
concerns,
e.g., for A/B multivariate testing to generate different ads/graphics for
different users.
For example, a website might show a 5% off coupon in some instances, but a 10%
off
- 24 -

CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
coupon in other instances. The rules by which the website operates may be
predefined or provided by an administrator. In another example, the rules may
be
dynamic or "learned" through the use of a neural network or machine learning.
Another illustrative example is the size attribute of an image; some user may
be
displayed an image of a particular size, while others may be displayed a
larger or
smaller image. Yet another example is the background attribute of the HTML
page.
These are all attributes/characteristics that may be modified, adjusted, or
altered for
A/B testing.
[77] In contrast to prior art testing solutions, the system disclosed herein
makes use of an
innovative online privacy management system, as described in great detail in
U.S.
Patent 8,261,362, which was previously incorporated by reference in its
entirety. The
online privacy management system, as illustrated in Figure 5C of U.S. Patent
8,261,362, shows that a PMS server 506 may house privacy rules that are
administered by the server. For our purposes, these "privacy" rules may serve
non-
privacy purposes. For example, these non-privacy rules may be implemented such

that the size of a button rendered on the user's laptop 100 display may be
changed for
A/B testing. For elderly users, the buttons may be made larger. Meanwhile, for

adolescent users, they may be made smaller. As such, the parameter/attributes
provided to configure the size of the button are part of the A/B multivariate
testing.
The testing may be done in an automated manner by allowing the system (e.g.
PMS
Server 506) to administer the testing using non-privacy rules. These rules may
be
stored at the server or elsewhere, such as in an external data store or as
part of a
neural network. Meanwhile, the rules may be viewed and edited through a
graphical
user interface (GUI) not unlike that of Figure 4A & 4B of U.S. Patent
8,261,362.
[78] While prior art systems are known for modifying static webpages to
conduct
multivariate testing, these systems have numerous shortcomings. Most notably,
these
systems require familiarity or access to information technology (IT) services
to assist
in modifying existing static HTML code and tags. Moreover, such modification
work
with static content, but not on dynamic content that may get generated on the
fly. In
contrast, the online privacy management system (PMS) described in U.S. Patent
8,261,362, permits multivariate testing of dynamic content. The online PMS
server
may access the document object model (DOM) of a webpage, for example, and
- 25 -

CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
examine the numerous elements on that page. Through the DOM, the PMS server
may access and change attributes of the HTML elements. Moreover, the PMS
server
may comprise pre-defined rules that examine the attributes of a user (e.g.,
age, gender,
etc.) and then modify one or more elements on the page based on the value of
attributes. The online PMS server may provide the implementation as well as
the
means for updating the content of the page, in a user-friendly way through, in
some
examples, a graphical user interface tool.
[79] As was described in great detail in U.S. Patent 8,261,362, which was
previously
incorporated by reference, the online PMS server may access the document
object
model (DOM) of a webpage (or other content page) and examine the elements in
the
DOM. For particular functions that cannot be overridden/hijacked, the PMS
server
may create a wrapper object to hold the target object and monitor its event
handlers.
As such, the PMS server is alerted and can react to attempts to modify
particular
attributes of the object. Details of this process are described in detail in
U.S. Patent
8,261,362, which was previously incorporated by reference, and have not been
repeated herein.
[80] With a hook into the elements on the webpage, the online PMS server may
be
configured to monitor particular attributes and/or objects, react according to
particular
rules, and collect data regarding the user's behavior. For example, the online
PMS
server may override an element corresponding to the portion of the display
screen
where advertisements are shown. A user may provide the PMS server with an
identification (e.g., selection) of the element on the display. Then the user
may
browse to their page, and select an advertisement for themselves. The user may
then
select the URL for a new advertisement to be displayed on the space. Since the
PMS
server is on the page, it can block the request for the ad, and instead return
a
request/response from the user input.
[81] In one simplistic example, a user may set up a system to automatically
change content
of a webpage so instead of the user giving a URL to the gateway to swap in for
the
old ad, the user could establish parameters around what content they want in
the place
of the ad, and allow the PMS server/gateway to run tests to find the best
settings.
Examples of parameters include, but are not limited to, a set of URLs, a set
of HTML
- 26 -

CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
transformations (border, colors, size, etc.), animations (glow, grow, shrink,
slide,
etc.), and others. Moreover, Figure 6 of U.S. Patent 8,261,362, which was
previously
incorporated by reference, illustrates the aforementioned process of
monitoring
attributes of an element for updates. Unlike in the '362 Patent, here the
result of the
comparison in step 612 may be expanded to include the value of an attribute of
an
element, the value of a cookie on the user's computer, the type of user
device, or any
other factor that would be apparent to one of ordinary skill in the art. Based
on the
comparison, the A/B testing may, using one or more predefined rules, adjust
the value
of particular attributes/fields/elements in accordance with the multivariate
testing and
build a model of the behavior.
[82] Regarding the determination of best setting in the previous example,
machine learning
and/or neural networks may be used to determine the best settings. Vendors,
such as
CausataTM, offer solutions that a person having ordinary skill in the art
after review of
the entirety disclosed herein would appreciate. Machine learning may train the

system to recognize any relationship between the various factors in the
system, such
as attribute values, user characteristics, etc. Optimization schemes may be
used
defining an objective function, constraints, and discrete variables to attempt
to solve
the optimization scheme.
[83] In one example, the online PMS server may use observational studies in
addition to,
or in lieu of, randomized experiments to collect data about users' behavioral
response
to the different adjustments to attributes of the webpage (e.g., targeted ads,
page
aesthetics, etc.) The collected data may be analyzed to identify rules and
relationships
between the various factors and outcomes.
[84] In addition, for quick/efficient A/B testing on the online PMS server,
the processor
may take advantage of various invisibility attributes of elements in the DOM.
For
example, in situations where content swapping is occurring, either in an A/B
testing
context or in a different context, the PMS server may hide the entire page
before it
begins to render and then may reveals only those elements/portions of the page
that
aren't part of the content that is to be swapped. As such, when the content
that is
desired for swapping becomes available, then the server is prepared to
manipulate the
DOM and make the content visible. The following illustrative pseudo-code shows
-27 -

CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
one example of code that controls a page's visibility and targeting of
elements for
testing:
Bootstrapper.MVT = function 0 1
var g = I},
h = I
split: function (b, a) 1
var c = fl;
do 1
var d = b.shift(),
e = [],
f = [d];
(e = d.x.split("/")).shift();
for (d = b.length - 1; - 1 < d; 1
var g = b[d].x.split("/");
g.shift();
g[0] == e[0] && (f.push(b[d]), b.splice(d,
1));
1
c.push(f);
} while (0 < b.length);
for (d = 0; d < c.length; d++) e =
this.getCommon(c[d]), i.traverse(a, e, c[d]);
1,
getCommon: function (b) 1
for (var a = c = 0; c < b.length;
a.push(b[c++].x));
if (1 == a.length) return a[0];
for (c = 0; c < a.length;
(a[c] = a[c++].split("/")).shift());
b = a[0];
for (c = 1; c < a.length; c++) 1
for (var d = 0; d < a[c].length; d++) if
(a[0][d] != a[c][d]) 1
var e = d;
break;
1
if (e) break;
return "/" + b.slice(0, e).join("/");
- 28 -

CA 02906712 2015-09-14
WO 2014/144498
PCT/US2014/028930
1,
tests: []
=
hidden: [1,
getTimeout: function 0 I
return 5;
1,
addModule: function (b, a) 1
g[b] = a;
1,
swap: function (b, a) 1
g[a.t].swap(b, a);
1,
start: function (b) 1
for (var a = 0; a < b.length; a++)
g[b[a].t].init(b[a]);
a = h.getCommon(b);
"/" == a && h.split(b, document);
this.traverse(document, a, b);
1,
init: function 0 1
if (h.tests.length &&
window.mboxFactoryDefault.isEnabled()) 1
this.start(h.tests);
1
1,
push: function (o) 1
if (typeof o == 'object') 1
h.tests.push(o);
1
1,
traverse: function (b, a, c) 1
if (1 == c.length && c[0] .x == a) var d =
for (var e = 0; e < c.length; c[e].x =
c[e++].x.slice(a.length));
(a = a.split("/")).shift();
for (e = 0; e < a.length; e++) 1
var f = Bootstrapper.getElementByXPathStep(b,
a[e]);
- 29 -

CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
if (null != f) 1
Bootstrapper.swapNodes =
Bootstrapper.swapNodes II [1;
Bootstrapper.swapNodes.push(f);
try 1
f.oldStyle = f.style.display,
f.style.display = "none",
b.style.display = b.oldStyle;
} catch (g) {}
b = f;
} else 1
a= "/" + a.slice(e).join("/");
for (e = 0; e < c.length; c[e].x = a +
c[e++].x);
Bootstrapper.hasDOMParsed() II
setTimeout(function (a, b, c) 1
return function 0 1
Bootstrapper.MVT.traverse(a, b, c);
I;
l(b, a, c), 50);
return;
d ? this.swap(b, c[0]) : h.split(c, b);
I;
return i;
I();
Bootstrapper. getServerComponent =
Bootstrapper.getServerComponent;
Bootstrapper.getServerComponent = function()1
Bootstrapper.MVT.init();
Bootstrapper. getServerComponent.apply(Bootstrapper,
arguments);
;
Pseudo-code #3
[85] In a similar vein, the performance metrics of a webpage may be
significantly
improved using techniques disclosed herein. For example, a web page may load
with
- 30 -

CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
numerous HTML tags and other elements, such as script code and others. In
rendering the page, some elements may cause the system to halt/stall while the

features of that element load and/or are displayed. Through the tag manager
204,
which is described in great detail herein, the load time of a page may be
significantly
improved over prior art techniques.
[86] For example, by way of pseudo-code, the following is instructive:
Bootstrapper.loadScriptAsChildCallback = function( *** ) 1
***
for ( i = 0; i< scripts.length; i++ ) 1
if ( scripts[i].src === src &&
scripts[i].readyState &&
/loadedlcomplete/.test(scripts[i].readyState) ) I
try 1
callback();
1
1
var newScript = document.createElement('script');
newScript.type = Ttext/javascriptT;
newScript.async = true;
newScript.src = src;
newScript.onerror = function() 1
if ( this.addEventListener ) this.readyState
= 'loaded';
***
1;
//s.parentNode.insertBefore(newScript, s);
node.appendChild(newScript);
1;
Pseudo Code #1
[87] The "BootstrapperloadScriptAsChildCallback" function is a helper function
that,
instead of just requesting content asynchronously, requests the content and
then
inserts it into a given node. In some examples, it may insert a script tag
into the DOM
-31 -

CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
at a specific point, and then call a function when the script has downloaded
and
executed.
[88] Meanwhile the Bootstrapper.adFramework function overrides document.write
and
makes it asynchronous, which helps performance drastically:
Bootstrapper.adFramework = function()1
var private = 1
/// this code portion polls at an interval (e.g., 100ms) if the
page is waiting on anything, and asynchronously loops trying to
insert ads when it is not waiting on anything. The loop stops when
there are no more ads.
run: function(iArr, id){
***
1,
/// this is where we actually take over document.write
setup: function()1
//console.info('doc.write setup');
oldWrite = document.write;
document.write = private.shim;
1,
/// this is where we restore document.write
teardown: function()1
//console.info('doc.write teardown');
document.write = oldWrite;
1,
shim: function (x) 1
console.info('In doc.write, active
id::'+Bootstrapper.activeId);
var x = x.replace(/<script/ig, '<script defer');
//ensure ens div - AK: may not be necessary
if(document.getElementById(' ensData') ==
var newDiv = document.createElement('div');
newDiv. style . display = 'none';
document . getElementsByTagName ( ' body ' ) [ 0 ] . appendChild (newDiv) ;
- 32 -

CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
1
var data = document.getElementById(' ensDataT);
var tempDiv = document.createElement('div');
tempDiv.innerHTML = x;
var scripts = tempDiv.getElementsByTagName('script');
var scriptsSrc = [];
for(var i = 0; i < scripts.length; i++){
scriptsSrc.push(scripts[i].src);
tempDiv.removeChild(scripts[i]);
1
***
1
return;
1,
oldWrite: function(){}
1;
Pseudo Code #2
[89] In particular, the pseudo-code illustrates that the document.write
function is
overridden and late restored. It's through this function that the pseudo-code
sets the
"display" attribute to "none." As such, the element corresponding to the
attribute
does not get displayed. Rather, that element (e.g., an ad) can be loaded while
the
PMS server is idling between different tasks.
[90] In summary, tag manager 204 may provide a platform to asynchronously
deliver
program instructions and/or content to a web page/non-browser application. In
other
words, manager 204 should not interrupt the execution of the application upon
which
it has the power to act. As an example, if a user accidentally/intentionally
implements
a rule that endlessly loops, tag manager 204 may be modular and robust enough
to
continue to execute. In addition, manager 204 may handle potential errors
gracefully
(i.e., continuing to load the rest of the web page requested, letting a user
decide on
how to move forward, etc.).
[91] The manager 204 may also make full use of any techniques that reduce
latency for the
end-user (e.g., via browser caching, etc.). As detailed in the description
above,
tag/content manager 204 may control, with a great deal of granularity, the
order in
- 33 -

CA 02906712 2015-09-14
WO 2014/144498 PCT/US2014/028930
which the code it is deploying executes. Through the implementation of a user-
friendly web interface, the manager 204 may safely be accessible to non-
technical
users (e.g., no need for users to hand write XML rules files, no need for
users to know
JavaScriptTm/programming, etc.). Along these lines, the manager 204 may
control
workflow related to the deployment of code and impose constraints in any other
way
possible to prevent the execution of code that may be harmful (e.g., may cause
the
application to hang or abort prematurely, etc.) to the application in which
the manager
204 is deployed.
[92] Aspects of the invention have been described in terms of illustrative
embodiments
thereof Numerous other embodiments, modifications and variations within the
scope
and spirit of the appended claims will occur to persons of ordinary skill in
the art from
a review of this disclosure. For example, one of ordinary skill in the art
will
appreciate that the steps illustrated in the illustrative figures may be
performed in
other than the recited order, and that one or more steps illustrated may be
optional in
accordance with aspects of the invention.
- 34 -

Representative Drawing
A single figure which represents the drawing illustrating the invention.
Administrative Status

For a clearer understanding of the status of the application/patent presented on this page, the site Disclaimer , as well as the definitions for Patent , Administrative Status , Maintenance Fee  and Payment History  should be consulted.

Administrative Status

Title Date
Forecasted Issue Date Unavailable
(86) PCT Filing Date 2014-03-14
(87) PCT Publication Date 2014-09-18
(85) National Entry 2015-09-14
Dead Application 2019-03-14

Abandonment History

Abandonment Date Reason Reinstatement Date
2018-03-14 FAILURE TO PAY APPLICATION MAINTENANCE FEE

Payment History

Fee Type Anniversary Year Due Date Amount Paid Paid Date
Application Fee $400.00 2015-09-14
Maintenance Fee - Application - New Act 2 2016-03-14 $100.00 2015-09-14
Maintenance Fee - Application - New Act 3 2017-03-14 $100.00 2017-02-17
Owners on Record

Note: Records showing the ownership history in alphabetical order.

Current Owners on Record
ENSIGHTEN, INC.
Past Owners on Record
None
Past Owners that do not appear in the "Owners on Record" listing will appear in other documentation within the application.
Documents

To view selected files, please enter reCAPTCHA code :



To view images, click a link in the Document Description column. To download the documents, select one or more checkboxes in the first column and then click the "Download Selected in PDF format (Zip Archive)" or the "Download Selected as Single PDF" button.

List of published and non-published patent-specific documents on the CPD .

If you have any difficulty accessing content, you can call the Client Service Centre at 1-866-997-1936 or send them an e-mail at CIPO Client Service Centre.


Document
Description 
Date
(yyyy-mm-dd) 
Number of pages   Size of Image (KB) 
Abstract 2015-09-14 1 68
Claims 2015-09-14 3 129
Drawings 2015-09-14 6 133
Description 2015-09-14 34 1,657
Representative Drawing 2015-10-09 1 7
Cover Page 2015-12-15 2 44
Patent Cooperation Treaty (PCT) 2015-09-14 2 79
Patent Cooperation Treaty (PCT) 2015-09-14 2 60
International Preliminary Report Received 2015-09-14 5 301
International Search Report 2015-09-14 1 55
National Entry Request 2015-09-14 4 98
PCT Correspondence 2015-11-03 4 126