Broad-based, systematic, individualized, interactive customer software
support is provided through a two-way, voluntary automated exchange of
information between a software agent installed on a customer's machine and
a server machine via a wide area computer network, e.g., the Internet.
Communication between the agent and the server is optimized to be
unobtrusive or transparent, e.g. using spare bandwidth of intermittent
Internet connections. The agent is software non-specific and may be
instructed to operate with respect to any arbitrary software program, and
may further be instructed at various different times to operate with
respect to various different software programs, including multiple
different software programs on a single machine. The agent, with the
user's informed consent, gathers activity information about the operations
of the software program(s) and uploads this information to a particular
server machine within a distributed server machine architecture, where it
is stored in a database on a per-software-copy basis. A rules engine may
cause instructions carrying a message targeted specifically toward the
customer to be downloaded to the agent. Based on these instructions, the
agent may take any of various actions, such as present a survey, present
an advertisement, send an upgrade notice, present a limited-time offer,
deliver individualized marketing messages, offer goods for sale and
fulfill the commercial transaction, install an upgrade or bug fix for
either an application or the agent itself, etc. Message presentation to
the customer may be timed (e.g., delayed from the time of download) to
achieve maximum impact.