A push marketing campaign (also referred to as “push campaign”) is a type of marketing campaign that uses push marketing to entice users to purchase a product or service, turning the users from potential customers to actual purchasing customers. A push campaign may send emails to users, for example, to entice them to make the purchase. An “in-product” push campaign is a push marketing campaign performed within the confines of a particular product, such as a software application. For instance, an in-product push campaign may use push marketing to entice users of a software application to purchase a subscription to the software application, to purchase additional features for the software application, and/or to make other purchases associated with the software application.
Push campaigns tend to be closely managed by marketing professionals, and tend to be scripted. For instance, a marketing operations team may select the user segments to receive messaging, may define the actual messaging, the frequency of messaging, etc. A shallow set of contents typically go into the push messages, which may be hand-crafted. A campaign messaging tool may be used to send out the messages as configured by the marketing personnel.
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 to limit the scope of the claimed subject matter.
Methods, systems, and computer program products are provided for conducting a push marketing campaign to convert users into purchasers of a product or service, or any other such goal a marketer may have. For instance, a push marketing system may include a consumer conversion journey (CCJ) graph constructor, a CCJ coefficient generator, a CCJ optimizer, and a node selector. The CCJ graph constructor is configured to construct a graph containing nodes and edges connecting the nodes. The graph represents consumer journey paths for users of a product to transition from an entry state indicated as an entry node of the graph, through a plurality of engagement states indicated as engagement nodes of the graph, to an objective state indicated as an objective node of the graph. The CCJ coefficient generator is configured to determine weights for the engagement nodes and a first set of probabilities for the edges based on a first data set obtained without stimulus messaging. Each probability of the first set of probabilities indicates, for a corresponding edge, a probability of a user at a particular engagement node transitioning to another engagement node connected by that edge. The CCJ optimizer is configured to determine a second set of probabilities for the edges based on a second data set that included stimulus messaging. The node selector is configured to select, based at least on the second set of probabilities, a set of stimulus nodes for the graph for sending stimulus messages to users during a push campaign for the product.
Further features and advantages of embodiments, as well as the structure and operation of various embodiments, are described in detail below with reference to the accompanying drawings. It is noted that the methods and systems are not limited to the specific embodiments described herein. Such embodiments are presented herein for illustrative purposes only. Additional embodiments will be apparent to persons skilled in the relevant art(s) based on the teachings contained herein.
The accompanying drawings, which are incorporated herein and form a part of the specification, illustrate embodiments of the present application and, together with the description, further serve to explain the principles of the embodiments and to enable a person skilled in the pertinent art to make and use the embodiments.
The features and advantages of the embodiments described herein will become more apparent from the detailed description set forth below when taken in conjunction with the drawings, in which like reference characters identify corresponding elements throughout. In the drawings, like reference numbers generally indicate identical, functionally similar, and/or structurally similar elements. The drawing in which an element first appears is indicated by the leftmost digit(s) in the corresponding reference number.
I. Introduction
The present specification and accompanying drawings disclose one or more embodiments that incorporate the features of the disclosed embodiments. The scope of the embodiments is not limited only to the aspects disclosed herein. The disclosed embodiments merely exemplify the intended scope, and modified versions of the disclosed embodiments are also encompassed. Embodiments are defined by the claims appended hereto.
References in the specification to “one embodiment,” “an embodiment,” “an example embodiment,” etc., indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to effect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
Furthermore, it should be understood that spatial descriptions (e.g., “above,” “below,” “up,” “left,” “right,” “down,” “top,” “bottom,” “vertical,” “horizontal,” etc.) used herein are for purposes of illustration only, and that practical implementations of the structures described herein can be spatially arranged in any orientation or manner.
In the discussion, unless otherwise stated, adjectives such as “substantially” and “about” modifying a condition or relationship characteristic of a feature or features of an embodiment of the disclosure, are understood to mean that the condition or characteristic is defined to within tolerances that are acceptable for operation of the embodiment for an application for which it is intended.
Numerous exemplary embodiments are described as follows. It is noted that any section/subsection headings provided herein are not intended to be limiting. Embodiments are described throughout this document, and any type of embodiment may be included under any section/subsection. Furthermore, embodiments disclosed in any section/subsection may be combined with any other embodiments described in the same section/subsection and/or a different section/subsection in any manner.
II. Example Embodiments.
A push marketing campaign (also referred to as “push campaign”) is a type of marketing campaign that uses push marketing to entice users to purchase a product or service, turning the users from potential customers to actual purchasing customers. For example, a push campaign may send emails to potential customers to entice them to make a purchase, and to existing customers to entice them to purchase an additional service and/or product, or to purchase an upgrade to a service or product they already own or pay for. Such emails may include product or service information, advertisements, coupons, discounts, and/or any other type of enticements to make a purchase.
An in-product push campaign is a push campaign performed within the confines of a particular product, such as a software application. For instance, an in-product push campaign may use push marketing to entice users of a software application to purchase a subscription to the software application, to purchase additional features for the software application, and/or to make other purchases associated with the software application.
Push campaigns tend to be closely managed by marketing professionals, and tend to be scripted. For instance, a marketing operations team may select the user segments to receive messaging, may define the actual messaging, the frequency of messaging, etc. A shallow set of contents typically go into the push messages, which may be hand-crafted. A campaign messaging tool/platform may be used to send out the messages as configured by the marketing personnel. The campaign messaging tool itself does little choosing or optimization beyond what is already dictated by the marketing operations team as part of campaign configuration.
For instance, a marketing operations teams may run a set of push campaigns geared towards pursuing existing customers of a product to renew their subscription, to convert trial users of the product into paid customers, to up-sell existing customers of the product (e.g., try to convince a customer of Microsoft Office® to use Microsoft OneDrive®), etc. These campaigns may be broken up into multiple interactions, where each interaction has a targeted segment that is manually defined and built by the operations team and an associated message with call-to-action. Furthermore, the marketing operations team may sequence and frequency cap the interactions to build out the overall campaign. The performance from each interaction and overall campaign is monitored by the marketing team, which then makes changes to underline segments, timeframe, frequency, etc. to manually optimize the overall campaign objective.
Accordingly, push campaign configuration for platforms can require a set of arduous steps, be highly scripted, be closely managed by marketing operations teams, and due to the volume of consumers, may be difficult for marketing operations teams to create the most effective targeted/personalized campaigns. Furthermore, due to the high touch nature of the overall process, marketing operations teams cannot easily scale push campaigns.
Embodiments overcome these and other issues related to push marketing campaign configurations. In embodiments, a graph is constructed that contains nodes corresponding to states of a product, and edges corresponding to actions the product users can take to transition between the product states. The graph represents the various consumer journey paths for users that use the product towards the possibility of a defined objective (e.g., making a purchase related to the product such as a subscription, etc.). The graph is used to determine stimulus nodes at which marketing messages, referred to herein as “stimulus messages,” are transmitted to users to encourage the users to transition towards achieving that objective. In other words, the constructed graph enables the modeling of the product in the form of nodes and edges that can be traversed by users, and improved selection of stimulus nodes for targeted stimulus messages, to maximize user conversion as identified by the marketer. Embodiments enable the operational scale of push campaigns to be increased, along with improving push campaign targeting/personalization, which improves the effectiveness of push campaigns. Embodiments enable the user to be encouraged to be moved through the product states to the objective.
Embodiments enable the modeling and honing of a CCJ graph for a product, which is used to identify states of the product for sending of push marketing messages to users to encourage the users to perform an objective (e.g., purchase a subscription to the product). The product may be any type of product, including software applications used by consumers. Examples of such software applications include proprietary or commercially available application, such as applications sold by Microsoft Corporation, Google LLC, Apple Inc., Oracle Corporation, smaller app developers, etc.
Such embodiments may be implemented in various ways. For instance,
Computing device 108 may be any type of mobile computing device (e.g., a Microsoft® Surface® device, a personal digital assistant (PDA), a laptop computer, a notebook computer, a tablet computer such as an Apple iPad™, a netbook, etc.), a mobile phone (e.g., a cell phone, a smart phone such as a Microsoft Windows® phone, an Apple iPhone, a phone implementing the Google® Android™ operating system, a Palm® device, a Blackberry® device, etc.), or a stationary computing device such as a desktop computer or PC (personal computer), a gaming console/system (e.g., Microsoft Xbox®, Sony PlayStation®, Nintendo Wii® or Switch®, etc.), etc. Computing device 102 may be any type of computing device, mobile or stationary, including one or more servers.
As shown in
Stimulus-enhanced push campaign generator 104 is further configured to receive data sets, including a first data set 114. First data set 114 is a historical set of data collected from computing devices of users that use product 110. First data set 114 indicates how many users of product 110 performed each possible action, and in what sequence the users performed the actions, so that the transition of states of product 110 by the users may be determined.
Based on first data set 114, stimulus-enhanced push campaign generator 104 is configured to generate a CCJ graph 116. CCJ graph 116 contains nodes that represent the states of product 110, and edges connecting the nodes that represent the actions that may be performed by the users of product 110. The edges are directional, with each edge transitioning from a corresponding source node to a corresponding destination node. For instance, the CCJ graph may include an entry state, a set of engagement states, and an objective state. At the entry state, the user of product 110 may begin to use product 110 on a journey to get to the objective state, the journey passing through the set of engagement states. The engagement states are the states of product 110 at which a user can interact with product 110 to perform an action and transition to another state, including another engagement state or the objective state. Some engagement states are considered by stimulus-enhanced push campaign generator 104 to be key (“high value”), due to being determined to be states that users frequently travel though to get from the entry state to the objective state. As such, an engagement state is associated with a key user action within product 110. Any number of paths through the engagement states may exist between the entry and objective states.
Furthermore, stimulus-enhanced push campaign generator 104 may generate weights and probabilities for the nodes (states) and edges (actions), respectively. Each node in CCJ graph 116 may be assigned a weight, corresponding to a percentage of users of product 110 (in first data set 114) that arrived at the corresponding state by performing the action(s) leading to that state. Still further, each edge of CCJ graph 116 may be assigned a probability, which is a probability that a user at the source node of the edge will perform the action associated with the edge to transition to the destination node of the edge.
Based in part on CCJ graph 116, including the weights and probabilities, stimulus-enhanced push campaign generator 104 is configured to determine a number of stimulus messages to send to users of product to attempt to convert the users (i.e., to transition the users from the entry node/state to the objective node/state), and in particular at which engagement nodes in CCJ graph 116 to push those stimulus messages to the users. Stimulus-enhanced push campaign generator 104 indicates the number of stimulus messages, and the set of nodes at which to push those stimulus messages to the users—the “stimulus nodes”—in stimulus information 118.
Note that in an embodiment, to hone in on the most beneficial number of stimulus messages and set of stimulus nodes, stimulus-enhanced push campaign generator 104 may conduct one or more test push campaigns (or access push campaign engine 106 to perform the test push campaign(s)). A test push campaign may use a set number of stimulus messages for each user and send the stimulus messages at a predetermined set of nodes, or may vary the number of stimulus messages sent to users, and vary the nodes at which the stimulus messages are sent to the users, to collect data on what actions the users performed in response to the stimulus messages, and how successful the test messages were in transitioning the users to the objective state. The results of the test push campaigns may be used by stimulus information 118 to adjust (e.g., recalculate) the weights and probabilities assigned to the nodes and probabilities, respectively, and thereby generate an improved number of stimulus messages and set of stimulus nodes, indicated in stimulus information 118.
Note that the stimulus messages sent to different nodes for different users during a push campaign may have the same content or may have different content. For example, in general, a stimulus message may include marketing information to encourage the recipient to transition through CCJ graph 116 to the objective node. For a particular node, different users that transition to the node may receive a same stimulus message with the same content, or a different stimulus message with content that is calibrated for the particular user and different than that sent to other users. The content of a stimulus message may be calibrated for a particular node (e.g., configured to encourage a user at node corresponding to an “opened document” state to share the opened document, so that the user advances to the “shared document” state), or may be generic to multiple nodes (e.g., configured to encourage a user at each node to purchase a subscription to the product).
In an embodiment, push campaign engine 106 receives CCJ graph 116 from stimulus-enhanced push campaign generator 104. Push campaign engine 106 is configured to execute a push campaign with respect to users of product 110 based on CCJ graph 116. In particular, push campaign engine 106 is configured to send push marketing messages 120 to users of product 110, including a user of product 110 at computing device 108. In an embodiment, push campaign engine 106 receives stimulus information 118. As described above, stimulus indication 118 indicates a number of stimulus messages for push campaign engine 106 to send to each user of a user set during an iteration of a push campaign for product 110. Push campaign engine 106 is configured transmits the stimulus messages to the users of product 110 that reach the indicated stimulus nodes in CCJ graph 116.
Note that by limiting stimulus messages to being sent to users arriving at a set of stimulus nodes, rather than sending stimulus messages the users at every node that they transition into, embodiments relieve the users of being bombarded by large numbers of messages and becoming disgruntled. Instead, embodiments enable the number of stimulus messages/nodes to be calibrated to have most beneficial effect in encouraging users to transition to the objective state, which may mean purchasing a subscription to product 110 (e.g., a software application), and/or performing something else beneficial with regard to product 110.
In embodiments, and discussed in detail hereinafter, stimulus-enhanced push campaign generator 104 is configured to optimize CCJ graphs. Once optimized, stimulus-enhanced push campaign generator 104 is configured to further optimize the CCJ based on stimulus messaging. For instance, and in embodiments, push campaign engine 106 is configured to apply stimulus messages to consumer computing devices and obtain stimulus results. For example, and as shown in
In embodiments, system 100 may operate in various ways to perform its functions. For example,
Flowchart 200 of
CCJ graph constructor 302 may be configured in various ways to construct CCJ graph 310. For example,
Flowchart 500 begins with step 502. In step 502, the plurality of engagement states is identified to assign as the engagement nodes of the graph between the entry node and the objective node. For instance, and with reference to
In step 504, a plurality of actions is identified to assign as the edges connecting the nodes in the graph, where each action is performable by the user to transition from a first node to a second node connected by the assigned edge. For instance, with reference to
Note that in one embodiment, basic CCJ graph 310 may include a node for all states of product 110 indicated in product data 112. In another embodiment, CCJ graph constructor 302 may reduce the number of nodes in basic CCJ graph 310 relative to the total number of states of product 110. For instance, CCJ graph constructor 302 may “trim” the number of nodes such that nodes considered important (e.g., “high value”) are included in basic CCJ graph 310, while relatively unimportant nodes are not included in basic CCJ graph 310. By trimming the total number of nodes in this manner, subsequent operations performed on CCJ graph data are simplified (e.g., reducing the number of nodes to process, resulting in a corresponding reduced number of calculations, a reduced number of processor operations, a reduced amount of memory consumed, etc.).
For instance, CCJ graph constructor 302 may operate according to
Flowchart 600 begins with step 602. In step 602, the engagement nodes are trimmed of nodes that correspond to engagement states transitioned to by less than a first threshold percentage of users. For instance, with reference to
In step 604, the edge nodes are trimmed from the graph that correspond to actions performed by less than a second threshold percentage of users. For instance, with reference to
Referring back to
In an embodiment, first data set 114 is obtained without stimulus messaging. In other words, first data set 114 contains data collected from users interacting with product 110 in the absence of any push marketing messages being sent to them with regard to their use of product 110. In this manner, first data set 114 can be considered a baseline set of user data.
CCJ coefficient generator 304 may be configured to generate edge probabilities and node weights based on first data set 114 in any manner. For instance, CCJ coefficient generator 304 may be configured as shown in
Weight determiner 702 is configured to determine weights for the engagement nodes based on first data set 114, and may do so in any suitable manner. In an embodiment, weight determiner 702 generates the weight of each node as an indication of a number of users that transitioned to the state corresponding to the node. For instance, weight determiner 702 may calculate a node weight as the number of users that transitioned to the corresponding state (a number value), or as the number of users that transitioned to the corresponding state divided by the total number of users having data in first data set 114 indication interactions with product 110 (a percentage value).
Furthermore, probability determiner 704 is configured to determine, based on first data set 114, the first set of probabilities. In an embodiment, probability determiner 704 calculates each edge probability as a probability that a user transitions the edge. For example, probability determiner 704 may calculate an edge probability as the number of users that transition over the edge (from the source node to the destination node) by performing the corresponding action, divided by the total number of users that had arrived at the source node.
For example, first data set 114 for product 110 (e.g., Microsoft PowerPoint®) may indicate that the total number of users is 1,000, the number of users that transitioned from the entry node to the first node is 600, the number of users that transitioned to the second node from the first node is 420, the number of users that transitioned to the third node from the second node is 200, and the number of users that transitioned to the objective node from the third node is 300. Accordingly, weight determiner 702 may determine that the weight of the entry node is 1,000, the weight of the first engagement node is 600, the weight of the second engagement node is 250, the weight of the third engagement node is 80, and the weight of the objective node is 51. Furthermore, probability determiner 704 may determine the edge probability from the entry node to the first engagement node is 0.6 (60%), the edge probability from the first to the second engagement node is 0.42 (42%), the edge probability from the second to the third engagement node is 0.2 (20%), and the edge probability from the third node to the objective node is 0.3 (30%).
Note that in embodiments, first data set 114 may be based on historical data derived from all available consumers, a subset of available consumers, or a single consumer. Alternatively, first data set 114 may be modeled user data. As shown in
Referring back to
CCJ optimizer 306 may perform step 206 of flowchart 200 in various ways. For instance, CCJ optimizer 306 may operate according to
Flowchart 800 begins with step 802. In step 802, a message number indication is received that indicates a number of stimulus messages to send to each user of a user set during a first iteration of a test push campaign. For instance, with reference to
At step 804, the first iteration of the test push campaign on the user set is executed to generate the second data set. For instance, as described above with reference to
At step 806, the second set of probabilities is determined based on the second data set. For example, CCJ optimizer 306 may be configured to determine a second set of probabilities based on second data set 314. In an embodiment, CCJ optimizer 306 may instruct CCJ coefficient generator 304 to generate new edge probabilities for the edges in baseline CCJ graph 312 based on second data set 314. In an embodiment, probability determiner 704 of CCJ coefficient generator 304 may calculate each new edge probability as a probability that a user transitions the edge. For example, probability determiner 704 may calculate a new edge probability as the number of users in second data set 314 that transitioned the edge (performing the action to transition from the source node to the destination node), divided by the total number of users indicated in second data set 314 to have arrived at the source node. As shown in
For instance, continuing the prior Microsoft PowerPoint® example, a push campaign may be performed on users of the product using single stimulus message (e.g., an email, a text message, or other type of push stimulus message) applied at the entry node. In such an example, CCJ optimizer 306 (or weight determiner 702) may determine from second data set 314 that the weight of the entry node is 1,000, the weight of the first engagement node is 660, the weight of the second engagement node is 277, the weight of the third engagement node is 87, and the weight of the objective node is 55. Second data set 314 may further indicate that the total number of users is 1,000, the number of users that transitioned from the entry node to the first node is 660, the number of users that transitioned to the second node from the first node is 420, the number of users that transitioned to the third node from the second node is 200, and the number of users that transitioned to the objective node from the third node is 300. Accordingly, CCJ optimizer 306 (or probability determiner 704) may determine the new edge probability from the entry node to the first engagement node is 0.66 (66%), the new edge probability from the first engagement node to the second engagement node is 0.42 (42%), the new edge probability from the second engagement node to the third engagement node is 0.2 (20%) and the new edge probability from the third engagement node to the objective node is 0.30 (30%).
Referring back to
For example, in an embodiment, node selector 308 may select the stimulus nodes according to
Node selector 308 may operate in various ways to select the particular engagement nodes to include in the set of stimulus nodes. For instance, node selector 308 may analyze CCJ graph 116 in the form of a flow optimization problem in the field of optimization theory. For example, node selector 308 may analyze CCJ graph 116 in the form of a maximum flow problem, which involves finding a feasible flow through a single-source, single-sink flow network that is maximum, and which in this case, would mean traversing a maximum number of users from the entry node to the objective node. According to the maximum flow problem, each directed edge between nodes has a flow capacity (a maximum amount of flow the edge can deliver) and a calculated flow amount that is equal to or less than the flow capacity of the edge.
Node selector 308 may implement one or more of a variety of maximum flow problem solvers, including a linear programming algorithm, the Ford-Fulkerson algorithm, the Dinic's blocking flow algorithm, the MPM (Malhotra, Pramodh-Kumar, and Maheshwari) algorithm, Dinic's algorithm, General push-relable maximum flow algorithm, etc. In one embodiment, node selector 308 may solve the maximum flow algorithm for second data set 314 by setting the flow capacity for each edge to the percentage of users that traverse the edge after receiving a stimulus message at the source node, then calculating the flow amount for each edge, and then selecting a number of nodes (equal to the message number indication) having the greatest numbers of users that flow through them to be the stimulus nodes. In other embodiments, node selector 308 may select the stimulus nodes in other ways.
Once the stimulus nodes are selected, push campaign engine 106 of
Flowchart 1000 begins with step 1002. In step 1002, a push campaign is performed on users of the product, including sending stimulus messages to users that transition to the stimulus nodes of the graph. For instance, and with reference to
As described above, stimulus-enhanced push campaign generator 300 constructs CCJ graphs for products, where the CCJ graphs are formed of nodes and edges connecting the nodes, and including weights for the engagement nodes and probabilities for the edges. Such graphs may have any number and arrangement of nodes and edges, depending on the way the product is used by users. For example,
In one illustrative example, CCJ graph 1100 represents a graph for users of the Microsoft Office® toolset such that entry node 1102 represents an entry state representing a number of trial users trying out the toolset, objective node 1114 represents an objective state representing users converted to paid customers of the toolset and engagement nodes 1104-1112 represent various engagement states in between entry and objective nodes 1102 and 1114. In accordance with the above example, node 1102 represents the total number of trial users of Microsoft Office® and node 1114 represents the total number of paid customers based on graph 1100. Initially, and as shown in
For instance, since the edge probability of edge 1116 from node 1102 to node 1104 is 0.6 (60%), the contributing weight to node 1104 is 600 or 60% of 1,000. This means that in this example, there is a 60% chance that a trial user of Microsoft Office® will open or log into Microsoft Office® via this edge. Likewise, and as shown in
Focusing now on node 1104, and as shown in
Focusing now on node 1106, and as shown in
Focusing now on node 1112, and as shown in
Focusing now on node 1108, and as shown in
Focusing now on node 1110, and as shown in
As described above (e.g., with respect to step 206 of
For instance, as shown in
Focusing now on node 1104, and as shown in
Focusing now on node 1106, and as shown in
Focusing now on node 1112, and as shown in
Focusing now on node 1108, and as shown in
Focusing now on node 1110, and as shown in
Note that in an embodiment, a CCJ graph may be constructed specific to a user and may determine the set of stimulus nodes specific to a user. For example,
Flowchart 1300 of
Flowchart 1305 of
III. Example Computer System Implementation
Computing device 102, stimulus-enhanced push campaign generator 104, push campaign engine 106, computing device 108, CCJ graph constructor 302, CCJ coefficient generator 304, CCJ optimizer 306, node selector 308, engagement state identifier 402, action identifier 404, weight determiner 702, probability determiner 704, flowchart 200, flowchart 500, flowchart 600, flowchart 800, flowchart 900, flowchart 1000, flowchart 1300, and flowchart 1305 may be implemented in hardware, or hardware combined with one or both of software and/or firmware. For example, stimulus-enhanced push campaign generator 104, push campaign engine 106, CCJ graph constructor 302, CCJ coefficient generator 304, CCJ optimizer 306, node selector 308, engagement state identifier 402, action identifier 404, weight determiner 702, probability determiner 704, flowchart 200, flowchart 500, flowchart 600, flowchart 800, flowchart 900, flowchart 1000, flowchart 1300, and/or flowchart 1305 may be implemented as computer program code/instructions configured to be executed in one or more processors and stored in a computer readable storage medium. Alternatively, stimulus-enhanced push campaign generator 104, push campaign engine 106, CCJ graph constructor 302, CCJ coefficient generator 304, CCJ optimizer 306, node selector 308, engagement state identifier 402, action identifier 404, weight determiner 702, probability determiner 704, flowchart 200, flowchart 500, flowchart 600, flowchart 800, flowchart 900, flowchart 1000, flowchart 1300, and/or flowchart 1305 may be implemented as hardware logic/electrical circuitry.
For instance, in an embodiment, one or more, in any combination, of stimulus-enhanced push campaign generator 104, push campaign engine 106, CCJ graph constructor 302, CCJ coefficient generator 304, CCJ optimizer 306, node selector 308, engagement state identifier 402, action identifier 404, weight determiner 702, probability determiner 704, flowchart 200, flowchart 500, flowchart 600, flowchart 800, flowchart 900, flowchart 1000, flowchart 1300, and/or flowchart 1305 may be implemented together in a SoC. The SoC may include an integrated circuit chip that includes one or more of a processor (e.g., a central processing unit (CPU), microcontroller, microprocessor, digital signal processor (DSP), etc.), memory, one or more communication interfaces, and/or further circuits, and may optionally execute received program code and/or include embedded firmware to perform functions.
As shown in
Computing device 1400 also has one or more of the following drives: a hard disk drive 1414 for reading from and writing to a hard disk, a magnetic disk drive 1416 for reading from or writing to a removable magnetic disk 1418, and an optical disk drive 1420 for reading from or writing to a removable optical disk 1422 such as a CD ROM, DVD ROM, or other optical media. Hard disk drive 1414, magnetic disk drive 1416, and optical disk drive 1420 are connected to bus 1406 by a hard disk drive interface 1424, a magnetic disk drive interface 1426, and an optical drive interface 1428, respectively. The drives and their associated computer-readable media provide nonvolatile storage of computer-readable instructions, data structures, program modules and other data for the computer. Although a hard disk, a removable magnetic disk and a removable optical disk are described, other types of hardware-based computer-readable storage media can be used to store data, such as flash memory cards, digital video disks, RAMs, ROMs, and other hardware storage media.
A number of program modules may be stored on the hard disk, magnetic disk, optical disk, ROM, or RAM. These programs include operating system 1430, one or more application programs 1432, other programs 1434, and program data 1436. Application programs 1432 or other programs 1434 may include, for example, computer program logic (e.g., computer program code or instructions) for implementing stimulus-enhanced push campaign generator 104, push campaign engine 106, CCJ graph constructor 302, CCJ coefficient generator 304, CCJ optimizer 306, node selector 308, engagement state identifier 402, action identifier 404, weight determiner 702, probability determiner 704, flowchart 200, flowchart 500, flowchart 600, flowchart 800, flowchart 900, flowchart 1000, flowchart 1300, and/or flowchart 1305 (or any one or more steps of flowcharts 200, 500, 600, 800, 900, 1000, 1300, and 1305), and/or further embodiments described herein.
A user may enter commands and information into computing device 1400 through input devices such as keyboard 1438 and pointing device 1440. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, a touch screen and/or touch pad, a voice recognition system to receive voice input, a gesture recognition system to receive gesture input, or the like. These and other input devices are often connected to processor circuit 1402 through a serial port interface 1442 that is coupled to bus 1406, but may be connected by other interfaces, such as a parallel port, game port, or a universal serial bus (USB).
A display screen 1444 is also connected to bus 1406 via an interface, such as a video adapter 1446. Display screen 1444 may be external to, or incorporated in computing device 1400. Display screen 1444 may display information, as well as being a user interface for receiving user commands and/or other information (e.g., by touch, finger gestures, virtual keyboard, etc.). In addition to display screen 1444, computing device 1400 may include other peripheral output devices (not shown) such as speakers and printers.
Computing device 1400 is connected to a network 1448 (e.g., the Internet) through an adaptor or network interface 1450, a modem 1452, or other means for establishing communications over the network. Modem 1452, which may be internal or external, may be connected to bus 1406 via serial port interface 1442, as shown in
As used herein, the terms “computer program medium,” “computer-readable medium,” and “computer-readable storage medium” are used to refer to physical hardware media such as the hard disk associated with hard disk drive 1414, removable magnetic disk 1418, removable optical disk 1422, other physical hardware media such as RAMs, ROMs, flash memory cards, digital video disks, zip disks, MEMs, nanotechnology-based storage devices, and further types of physical/tangible hardware storage media. Such computer-readable storage media are distinguished from and non-overlapping with communication media (do not include communication media). Communication media embodies computer-readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wireless media such as acoustic, RF, infrared and other wireless media, as well as wired media. Embodiments are also directed to such communication media that are separate and non-overlapping with embodiments directed to computer-readable storage media.
As noted above, computer programs and modules (including application programs 1432 and other programs 1434) may be stored on the hard disk, magnetic disk, optical disk, ROM, RAM, or other hardware storage medium. Such computer programs may also be received via network interface 1450, serial port interface 1442, or any other interface type. Such computer programs, when executed or loaded by an application, enable computing device 1400 to implement features of embodiments discussed herein. Accordingly, such computer programs represent controllers of the computing device 1400.
Embodiments are also directed to computer program products comprising computer code or instructions stored on any computer-readable medium. Such computer program products include hard disk drives, optical disk drives, memory device packages, portable memory sticks, memory cards, and other types of physical storage hardware.
IV. Additional Example Embodiments
A system is described herein. The system includes: a consumer conversion journey (CCJ) graph constructor configured to construct a graph containing nodes and edges connecting the nodes, the graph representing consumer journey paths for users of a product to transition from an entry state indicated as an entry node of the graph, through a plurality of engagement states indicated as engagement nodes of the graph, to an objective state indicated as an objective node of the graph; a CCJ coefficient generator configured to determine weights for the engagement nodes and a first set of probabilities for the edges based on a first data set obtained without stimulus messaging, each probability of the first set indicating a probability of users transitioning a corresponding edge of the graph; a CCJ optimizer configured to determine a second set of probabilities for the edges based on a second data set that included stimulus messaging; and a node selector configured to select, based at least on the second set of probabilities, a set of stimulus nodes of the graph for sending stimulus messages to users.
In one embodiment of the foregoing system, the CCJ graph constructor comprises:
an engagement state identifier configured to identify the plurality of engagement states to assign as the engagement nodes of the graph between the entry node and the objective node, and an action identifier configured to identify a plurality of actions to assign as the edges connecting nodes in the graph, each action performable by the user to transition from a first node to a second node connected by the assigned edge.
In another embodiment of the foregoing system, the CCJ coefficient generator comprises: a weight determiner configured to determine weights for the engagement nodes based on the first data set, and a probability determiner configured to determine, based on the first data set, the first set of probabilities.
In another embodiment of the foregoing system, the CCJ optimizer is configured to: receive a message number indication that indicates a number of stimulus messages to send to each user of a user set during a first iteration of a test push campaign; execute the first iteration of the test push campaign on the user set to generate the second data set; and determine the second set of probabilities based on the second data set.
In another embodiment of the foregoing system, the node selector is configured to select, based at least on the second set of probabilities, the set of stimulus nodes to include a number of nodes equal to the message number indication.
In another embodiment of the foregoing system, the CCJ graph constructor is configured to: trim nodes from the engagement nodes that correspond to engagement states transitioned to by less than a first threshold percentage of users; and trim edges from the graph that correspond to actions performed by less than a second threshold percentage of users.
In another embodiment of the foregoing system, the system further comprises a push campaign engine configured to perform a push campaign on users of the product by at least sending stimulus messages to consumers that transition to the stimulus nodes of the graph.
In another embodiment of the foregoing system, the node selector is configured to select the set of stimulus nodes to optimize for a maximum number of users to transition from the entry state to the objective state of the graph.
A method is described herein. The method includes constructing a graph containing nodes and edges connecting the nodes, the graph representing consumer journey paths for users of a product to transition from an entry state indicated as an entry node of the graph, through a plurality of engagement states indicated as engagement nodes of the graph, to an objective state indicated as an objective node of the graph; determining weights for the engagement nodes and a first set of probabilities for the edges based on a first data set obtained without stimulus messaging, each probability of the first set indicating a probability of users transitioning a corresponding edge of the graph; determining a second set of probabilities for the edges based on a second data set that included stimulus messaging; and selecting, based at least on the second set of probabilities, a set of stimulus nodes of the graph for sending stimulus messages to users.
In one embodiment of the foregoing method, said constructing the graph containing nodes and edges connecting the nodes comprises: identifying the plurality of engagement states to assign as the engagement nodes of the graph between the entry node and the objective node; and identifying a plurality of actions to assign as the edges connecting nodes in the graph, each action performable by the user to transition from a first node to a second node connected by the assigned edge.
In another embodiment of the foregoing method, said determining the second set of probabilities for the edges based on the second data set that included stimulus messaging comprises: receiving a message number indication that indicates a number of stimulus messages to send to each user of a user set during a first iteration of a test push campaign; executing the first iteration of the test push campaign on the user set to generate the second data set; and determining the second set of probabilities based on the second data set.
In another embodiment of foregoing method, said selecting, based at least on the second set of probabilities, the set of stimulus nodes of the graph for sending stimulus messages to users comprises: selecting, based at least on the second set of probabilities, the set of stimulus nodes to include a number of nodes equal to the message number indication.
In another embodiment of the foregoing method, said constructing the graph containing nodes and edges connecting the nodes comprises: trimming nodes from the engagement nodes that correspond to engagement states transitioned to by less than a first threshold percentage of users; and trimming edges from the graph that correspond to actions performed by less than a second threshold percentage of users.
In another embodiment of the foregoing method, the method further comprises: performing a push campaign on users of the product by at least sending stimulus messages to users that transition to the stimulus nodes of the graph.
In another embodiment of the foregoing method, the method further comprises updating weights for the engagement nodes and a third set of probabilities for the edges based on a personalized user data set associated with a user, each probability of the personalized user data set indicating a probability of the user transitioning to a corresponding edge of the graph, wherein said selecting, based at least on the second set of probabilities, the set of stimulus nodes of the graph for sending stimulus message to users comprises: selecting, based at least on the second set of probabilities, the set of stimulus nodes to include a number of nodes less than a user message fatigue value, the user message fatigue value indicating a limit of messages that should be sent to the user.
A computer-readable medium having computer program logic recorded thereon that when executed by at least one processor causes the at least one processor to perform a method, the method comprises: constructing a graph containing nodes and edges connecting the nodes, the graph representing consumer journey paths for users of a product to transition from an entry state indicated as an entry node of the graph, through a plurality of engagement states indicated as engagement nodes of the graph, to an objective state indicated as an objective node of the graph; determining weights for the engagement nodes and a first set of probabilities for the edges based on a first data set obtained without stimulus messaging, each probability of the first set indicating a probability of users transitioning a corresponding edge of the graph; determining a second set of probabilities for the edges based on a second data set that included stimulus messaging; and selecting, based at least on the second set of probabilities, a set of stimulus nodes of the graph for sending stimulus messages to users.
In one embodiment of the foregoing computer-readable medium, said constructing the graph containing nodes and edges connecting the nodes comprises: identifying the plurality of engagement states to assign as the engagement nodes of the graph between the entry node and the objective node; and identifying a plurality of actions to assign as the edges connecting nodes in the graph, each action performable by the user to transition from a first node to a second node connected by the assigned edge.
In another embodiment of the foregoing computer-readable medium, said determining the second set of probabilities for the edges based on the second data set that included a message stimulus comprises: receiving a message number indication that indicates a number of stimulus messages to send to each user of a user set during a first iteration of a test push campaign; executing the first iteration of the test push campaign on the user set to generate the second data set; and determining the second set of probabilities based on the second data set.
In another embodiment of the foregoing computer-readable medium, said selecting, based at least on the second set of probabilities, the set of stimulus nodes of the graph for sending stimulus messages to users comprises: selecting, based at least on the second set of probabilities, the set of stimulus nodes to include a number of nodes equal to the message number indication.
In another embodiment of the foregoing computer-readable medium, said constructing the graph containing nodes and edges connecting the nodes comprises: trimming nodes from the engagement nodes that correspond to engagement states transitioned to by less than a first threshold percentage of users; and trimming edges from the graph that correspond to actions performed by less than a second threshold percentage of users.
In another embodiment of the foregoing computer-readable medium, the method further comprises: performing a push campaign on users of the product by at least sending stimulus messages to users that transition to the stimulus nodes of the graph.
V. Conclusion
While various embodiments of the present invention have been described above, it should be understood that they have been presented by way of example only, and not limitation. It will be understood by those skilled in the relevant art(s) that various changes in form and details may be made therein without departing from the spirit and scope of the invention as defined in the appended claims. Accordingly, the breadth and scope of the present invention should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.