Computer programs, referred to as applications, may provide a wide variety of features. For example, an accounting application may implement accounting features such as a payroll feature, a banking feature, an expense tracking feature, an accounts payable feature, an accounts receivable feature, a reporting feature, and so on. Each of these features may be implemented in different modules of the application. In addition, the accounting application may provide features that allow a customer to register for various services such as payroll processing. Many applications can be configured to provide a set of features that is appropriate for each customer's needs. For example, an owner of a small business may need an accounts payable feature and accounts receivable feature, but may not need a payroll feature because the owner may be the only employee of the business. Application providers (e.g., vendor or developer) may base the pricing of their applications on the features selected by their customers. So, a customer who needs all the features of the application would pay a higher price than a customer who only needs two features.
To increase their profits, application providers would like their customers to select and purchase as many features of their applications as reasonably possible. Application providers employ various marketing techniques to encourage new customers and current customers to purchase additional features. Application providers often employ non-targeted marketing techniques to market their applications. These marketing techniques may include advertising through traditional channels (e.g., magazines, newspapers, and televisions) and non-traditional channels (e.g., sponsored links of search engines and pop-up windows of web pages). Such marketing techniques are non-targeted in the sense that all current customers or potential customers are provided with the same marketing information regardless of what features current customers have purchased or potential customers may need.
Because non-targeted marketing may be expensive and not particularly effective, application providers would like to use targeted marketing that tailors the marketing to the needs of the current customer or the potential customer. For example, an application provider of an accounting application may want to advertise its payroll module to current customers that have not purchased the payroll module and that have a need for a payroll module (e.g., several employees). Since applications generally store customer information, and more generally application information, in an application database or application store, sufficient information may already be stored electronically to support such targeted marketing. Application providers, however, typically do not have access to such application information because customers generally consider such application information to be highly confidential.
A system provides targeted advertising and personalized assistance to customers of an application while preserving the confidentiality of the customers' application information. A marketing system provides a marketing engine that executes on a computer system of the customer of an application and provides targeted marketing to that customer. Since the marketing engine executes on the customer's own computer system, it may have access to the customer's application information. The marketing engine can analyze the application information and provide marketing information that is targeted to the customer without compromising the confidentiality of the customer's application information.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
A system for providing targeted advertising to customers of an application while preserving the confidentiality of the customers' application information is provided. In some embodiments, a marketing system provides a marketing engine that executes on a computer system of the customer of an application and provides targeted marketing to that customer. Since the marketing engine executes on the customer's own computer system, it may have access to the customer's application information. The marketing engine can analyze the application information and provide marketing information that is targeted to the customer. Since the marketing engine executes on a customer's computer system, the customer's application information need not be provided to another computer system that is responsible for deciding how to market to that customer. Thus, the confidentiality of the customer's application information can be preserved by the marketing system.
In some embodiments, the marketing system may dynamically download marketing plans to customer computer systems for execution by the marketing engine. To support dynamic marketing plans, the marketing system includes client-side components that execute on the customer computer systems (or “client”) and server-side components that execute on a server of the application provider. The client-side components may include a marketing engine and an update marketing plan component, and the server-side components may include marketing tools for developing and distributing marketing plans to customer computer systems. An application provider uses the marketing tools of the server-side component to generate a marketing plan. The update marketing plan component may periodically access the server to download the current marketing plan. After downloading the current marketing plan, the marketing engine markets to the customer in accordance with the marketing plan. For example, the marketing plan may specify that an advertisement for a payroll module should be displayed every fifth time a customer starts up the application when the customer does not have the payroll module and has more than 10 employees. Although a marketing engine could implement a static marketing plan that is delivered when a customer purchases an application, such a static marketing plan will not be able to adapt to the changing marketing needs of an application provider. For example, an application provider may develop new features for its application after the application is installed on a customer's computer system. A static marketing plan, however, may not be able to effectively market that new feature to the customer. Because the marketing system dynamically downloads marketing plans, an application provider who develops new features can adjust its market plans accordingly.
In some embodiments, the marketing system represents a marketing plan as a collection of subscriptions with each subscription identifying an event, a condition, and an action. The subscriptions specify marketing actions that the marketing engine should perform when various conditions are satisfied. The event of a subscription specifies an event that occurs during execution of the application indicating that the subscription should be applied. For example, an event may specify that the user of the application launches a certain module of the application. When the event identified in a subscription occurs, the marketing engine applies the subscription by determining whether the condition of that subscription is satisfied and if so, performs the action of the subscription. For example, the condition may be that the application information indicates that the customer has more than 10 employees. The condition generally relates to the customer's application information but can be other information that is not specific to the application (e.g., current version of the operating system). If the condition is satisfied, the marketing engine performs (or directs the performance of) the action identified by that subscription. For example, the action may be to display an advertisement suggesting that the customer purchase a payroll module. Each subscription may also identify a filter that needs to be passed before the condition of the subscription is evaluated. A filter is used to control the frequency at which the action of a subscription is performed, the number of times the action is performed, the expiration of the subscription, and so on. For example, a filter of a subscription may specify to evaluate the condition only every fifth time the event occurs. A filter may also specify that certain state information or application context (e.g., user preferences such as no pop-up windows) needs to be satisfied before the filter is passed. The state information may include the version number of the application.
The marketing engine may register to receive event notifications for various events that occur during execution of the application. The application may include an event manager that implements a publisher/subscriber event notification model. When the marketing engine receives an event notification, it identifies those subscriptions of the current marketing plan that match the event that just occurred. An event notification may include an event type and an event value. A subscription identifies one or more event type and event value combinations. After identifying the subscriptions that match the event, the marketing engine determines which matching subscriptions pass their filters. The marketing engine then determines whether the conditions of those passing subscriptions are satisfied. When the marketing engine determines that a condition of a subscription is satisfied, the marketing engine then causes the action of the satisfied subscription to be performed.
The client-side components of the marketing system may include an update marketing plan component that is responsible for downloading new marketing plans from the server and storing the marketing plans on the customer's computer system. The update marketing plan component may check a server of the application provider periodically or on occurrence of certain events to determine whether new marketing plans have been developed. A single marketing plan may be developed for all customers of an application, or different marketing plans may be developed for different customers or users or different classes of customers or users. For example, an application provider may develop a marketing plan for customers that manufacture clothing and another marketing plan for customers that sell clothing at the retail level. The update marketing plan component may download the marketing plan that is appropriate for the customer.
The update marketing plan component may store the downloaded marketing plan in a marketing plan store that contains the current marketing plan. A marketing plan may include renewed subscriptions that were included in the previous marketing plan, include new subscriptions not included in the previous marketing plan, and omit not renewed subscriptions included in the previous marketing plan but that are not in the new marketing plan. To help track whether a subscription is renewed, new, or not renewed, the marketing system may assign a unique identifier to each subscription. When storing a new marketing plan, the update marketing plan component compares the identifiers of the subscriptions of the new marketing plan to the identifiers of the subscriptions in the previous marketing plan. When the update marketing plan component determines that a subscription of the new marketing plan is new, the update marketing plan component stores that subscription in the marketing plan store. When the update marketing plan component determines that a subscription of the new marketing plan is being renewed, the update marketing plan component leaves the subscription of the marketing plan store unchanged. The marketing plan store may contain information for tracking the frequency of performing the action identified in the subscription. In such a case, the update marketing plan component maintains such information by not replacing the subscription in the marketing plan store. When the update marketing plan component determines that a subscription of the previous marketing plan is not being renewed, then it removes that subscription from the marketing plan store.
The marketing system may be adapted to perform actions for applications that are directly related to marketing of the application. For example, a subscription may be developed that detects when a user is using the application inefficiently and suggests a more efficient way to use the application. As an example, a user may enter a column of numbers in cells of a spreadsheet, then enter a “sum” function in a cell at the bottom of the column, and manually specify the top and bottom cells of the column as the range for the “sum” function. A subscription may have a condition that is satisfied when the user performs such entering of the “sum” function at the bottom of columns a certain number of times. The action of the subscription may be to display a dialog box that suggests that the user use a sigma icon “Σ”, which automatically enters the “sum” function for the appropriate range of cells.
The following table outlines fields of the subscription store in some embodiments.
The marketing server has server-side components that include a generate marketing plan component 121, a marketing plan store 122, and a distribute marketing plan component 123. An application provider interacts with the generate marketing plan component to generate a marketing plan which is stored in the marketing plan store. The distribute marketing plan component receives requests to download the current marketing plan from customer computer systems and transmits the appropriate marketing plans to the customer computer systems.
The computing device on which the marketing system is implemented may include a central processing unit, memory, input devices (e.g., keyboard and pointing devices), output devices (e.g., display devices), and storage devices (e.g., disk drives). The memory and storage devices are computer-readable media that may be encoded with computer-executable instructions that implement the marketing system, which means a computer-readable medium that contains the instructions. In addition, the instructions, data structures, and message structures may be stored or transmitted via a data transmission medium, such as a signal on a communication link. Various communication links may be used, such as the Internet, a local area network, a wide area network, a point-to-point dial-up connection, a cell phone network, and so on.
Embodiments of the system may be implemented in and used with various operating environments that include personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, programmable consumer electronics, digital cameras, network PCs, minicomputers, mainframe computers, computing environments that include any of the above systems or devices, and so on.
The marketing system may be described in the general context of computer-executable instructions, such as program modules, executed by one or more computers or other devices. Generally, program modules include routines, programs, objects, components, data structures, and so on that perform particular tasks or implement particular abstract data types. Typically, the functionality of the program modules may be combined or distributed as desired in various embodiments.
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims. For example, the marketing actions can including displaying of advertisements for the application, displaying a dialog box allowing a user to upgrade the application, displaying of pop-up windows, displaying a panel containing multiple advertisements or cycling through multiple advertisements (e.g., when the conditions of multiple subscriptions are satisfied), and so on. Accordingly, the invention is not limited except as by the appended claims.