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.