The present invention relates generally to electronic commerce, and more particularly to commercial promotions provided by an electronic-commerce web server using compiled code.
Commercial promotions are tools often used by merchants to boost sales, such as coupons that offer discounts for future purchases, discounts on current purchases in response to excess inventory, shipping upgrades or shipping charge reductions tied to particular circumstances of credit card use, and so forth. Such promotions have understandably become an important aspect of modem electronic commerce.
Nevertheless, today's web server technology provides two ways of implementing commercial promotions, neither of which is entirely satisfactory. The first way is to encode the details of each promotion into the web server's compiled code. This enables a promotion to execute quickly on the web server, and therefore provides the advantage of not diminishing the responsiveness experienced by customers who use the web server. Unfortunately, specialized technical skill is required—the skill of a computer programmer—to add each new promotion, to end each promotion, or to change the terms of any current promotion. This reliance on specialized technical skill adds to the expense of offering promotions, and may also limit a merchant's agility when the need arises to change promotions in response to shifting market conditions.
The second way of implementing a promotion is to use a business-rules engine that manages promotions on behalf of the web server. A business-rules engine reduces the need for special technical skill to add or to change promotions, as a business-rules engine greatly simplifies the programming task. Unfortunately, the use of a business rules engine significantly diminishes the web server's responsiveness, because the rules that define promotions must be interpreted at each runtime rather than compiled beforehand and executed.
Because of these shortcomings of today's technology, there is a need for a new way of enabling a web server to provide commercial promotions, wherein the server remains responsive to customers and yet becomes efficient and agile when the need arises to add, change, or end a promotion.
In response to the aforementioned need, the present invention provides an agile and efficient way for a merchant to add, change, and end a commercial promotion offered over an electronic commerce web server without diminishing the server's responsiveness to customers.
The present invention includes a set of modules of compiled code that reside within the web server's larger compiled code. The modules are executed selectively to provide the promotions. The invention also includes a database for storing the terms of the promotions and for storing information used to identify which of the modules should be selected and executed to provide each of the promotions.
Entries in the database include the terms of the promotions—a promotion is created and defined by entering its terms into the database. The terms of a promotion may include a qualifying value, a reward value, and start and stop dates that specify when the promotion is active. For example, a qualifying value may be a product category, a product number or stock keeping unit (SKU), a product price or an order's total of product prices, and so forth. A reward value may be, for example, a price discount, an N-for-M offer such as a two-for-the-price-of one offer, a coupon to be applied to future purchases, a shipping upgrade, an offer of free shipping or expedited handling, a product rebate, frequent flyer miles, a token or a substantial gift of appreciation, and so forth.
Within the database, the promotions are associated with the modules of selectively executable compiled code. The association may be made explicitly by a pointer that is part of the database record that includes the terms of the promotion, or the association may be implicit based on other aspects of the terms of the promotion. For example, there may be a module that provides discounts and is therefore associated with the promotions that have discount reward values, another module that provides shipping upgrades and is therefore associated with the promotions that have shipping-upgrade reward values, and yet another module that provides token gifts of appreciation and is therefore associated with the promotions that have token-gift reward values.
Further, the database may contain reward-value parameters that are passed to the modules. For example, a promotion whose terms include a token-gift reward value module may also include a reward-value parameter entry such as “travel clock” that specifies the nature of the token gift.
As the server processes a commercial transaction, it looks for a qualifying value that might match a qualifying value of one of the promotions in the database. When a matching promotion is found in the database, a determination is made as to whether the matching promotion is active. This may be done by comparing the date of the transaction with start and stop dates of the matching promotion. When the matching promotion is determined to be active, the matching promotion's reward value is determined, and the associated module of selectively executable compiled code is executed.
To add, change, or end a promotion, the merchant writes terms of a new promotion into the database or edits terms of an existing promotion. For example, the merchant may change the reward value associated with the qualifying value “use of an in-house credit card” from “five percent discount” to “100 frequent flier miles” simply by editing the database rather than by writing new code for the web server. Thus, the present invention provides the merchant with a convenient way of adding, ending, and changing promotions, by interacting with the database rather than with the web server's code, and yet offers the performance advantages that come with using compiled web-server code. These and other aspects of the present invention will be more fully appreciated when considered in light of the following drawings and detailed description.
As shown in
Responsive to these transactions, the server 120 may provide commercial promotions. Promotions are tools often used by merchants to boost sales, such as coupons that offer discounts for future purchases, discounts on current purchases in response to excess inventory, shipping upgrades or shipping charge reductions tied to particular circumstances of credit card use, and so forth.
To provide promotions, the present invention includes modules of selectively executable compiled web server code 124A through 124N, where N is at least one. The modules 124A through 124N reside within the server's larger body of compiled code 122. To provide a particular promotion, a particular module of the modules 124A through 124N is selected and executed.
The invention also includes a database 140 for storing terms of the promotions 142A through 142M, where M is at least one, and for storing information used to identify which of the modules 124A through 124N should be selected and executed to provide each of the promotions 142A through 142M. Although
A promotion is created and defined by entering its terms into the database as a database record. As shown in
The terms of the promotions 142A through 142M are associated with the modules of selectively executable compiled code 124A through 124N. Associations may be made explicitly by pointers 147 that may be included in the terms of the promotions 142A through 142M, or associations may be implicit, based on other aspects of the terms of the promotions 142A through 142M such as the reward values 140. For example, there may be a module that provides discounts and is therefore associated with the promotions that have discount reward values, another module that provides shipping upgrades and is therefore associated with the promotions that have shipping-upgrade reward values, and yet another module that provides token gifts of appreciation and is therefore associated with the promotions that have token-gift reward values. In the case of implicit association, the reward value may in effect serve as a pointer to the associated module.
Further, the database 140 may contain reward-value parameters (not shown) that are passed to the modules. For example, a promotion whose terms include a token-gift reward value module may also include a reward-value parameter entry such as “travel clock” that specifies the nature of the token gift.
Otherwise (i.e., a matching qualifying value 143 is found in the database 140), a determination is made as to whether the promotion with the matching qualifying value 143, called here the matching promotion, is active. This may be done by comparing the date of the commercial transaction with the start and stop dates 145 of the matching promotion (step 320). If the matching promotion is not active, the server awaits the next transaction (step 310).
Otherwise (i.e., the matching promotion is active) the reward value 144 of the matching promotion is found (step 330); this is called here the matching reward value. The module of selectively executable compiled code 124A through 124N associated with the matching reward value, which module is called here the matching module, is identified either explicitly or implicitly as described earlier (step 340), the matching module is executed (step 350) thereby providing the promotion, and the associated promotion counter 146 is advanced (step 360). The web server 120 then awaits the arrival of the next transaction (step 310).
To add, change, or end a promotion, a merchant writes terms of a new promotion into the database or edits terms of an existing promotion 142A through 142M, using the database editor 150. For example, the merchant may change the reward value 144 associated with the qualifying value 142 “use of an in-house credit card” from reward value 144 “five percent discount” to reward value 144 “one-hundred frequent flier miles” simply by editing the database 140 rather than by writing new code for the web server 120.
From the foregoing description, those skilled in the art will recognize that the present invention provides the merchant with a convenient way of adding, ending, and changing promotions, by interacting with the database 120 through the database editor 150 rather than with the code of the web server 120, and yet offers the performance advantages that come with using compiled web-server code. The foregoing description is illustrative rather than limiting, however, and the scope of the present invention is limited only by the following claims.
Number | Name | Date | Kind |
---|---|---|---|
5446890 | Renslo et al. | Aug 1995 | A |
5586198 | Lakritz | Dec 1996 | A |
5592560 | Deaton et al. | Jan 1997 | A |
5644723 | Deaton et al. | Jul 1997 | A |
5675784 | Maxwell et al. | Oct 1997 | A |
5761647 | Boushy | Jun 1998 | A |
5791991 | Small | Aug 1998 | A |
5857175 | Day et al. | Jan 1999 | A |
5905246 | Fajkowski | May 1999 | A |
5907839 | Roth | May 1999 | A |
5915243 | Smolen | Jun 1999 | A |
5918211 | Sloane | Jun 1999 | A |
5918232 | Pouschine et al. | Jun 1999 | A |
5950173 | Perkowski | Sep 1999 | A |
5963952 | Smith | Oct 1999 | A |
6009411 | Kepecs | Dec 1999 | A |
6026370 | Jermyn | Feb 2000 | A |
6061660 | Eggleston et al. | May 2000 | A |
6085171 | Leonard | Jul 2000 | A |
6105001 | Masi et al. | Aug 2000 | A |
6189003 | Leal | Feb 2001 | B1 |
6230143 | Simons et al. | May 2001 | B1 |
6256614 | Wecker et al. | Jul 2001 | B1 |
6293865 | Kelly et al. | Sep 2001 | B1 |
6330543 | Kepecs | Dec 2001 | B1 |
6484149 | Jammes et al. | Nov 2002 | B1 |
6502076 | Smith | Dec 2002 | B1 |
6516302 | Deaton et al. | Feb 2003 | B1 |
6651093 | Wiedeman et al. | Nov 2003 | B1 |
6659861 | Faris et al. | Dec 2003 | B1 |
6687679 | Van Luchene et al. | Feb 2004 | B1 |
6687698 | Nixon et al. | Feb 2004 | B1 |
6735572 | Landesmann | May 2004 | B1 |
6748365 | Quinlan et al. | Jun 2004 | B1 |
6915271 | Meyer et al. | Jul 2005 | B1 |
6980962 | Arganbright et al. | Dec 2005 | B1 |
7003495 | Burger et al. | Feb 2006 | B1 |
7013289 | Horn et al. | Mar 2006 | B1 |
20010014868 | Herz et al. | Aug 2001 | A1 |
20010037250 | Lefkowitz | Nov 2001 | A1 |
20010051983 | Williams | Dec 2001 | A1 |
20020004764 | Stolze et al. | Jan 2002 | A1 |
20020016737 | Izzo et al. | Feb 2002 | A1 |
20020040308 | Hasegawa et al. | Apr 2002 | A1 |
20020046089 | Zorn | Apr 2002 | A1 |
20020046157 | Solomon | Apr 2002 | A1 |
20020055880 | Unold et al. | May 2002 | A1 |
20020062249 | Iannacci | May 2002 | A1 |
20020095346 | Liss | Jul 2002 | A1 |
20020099607 | Sosa et al. | Jul 2002 | A1 |
20020107738 | Beach et al. | Aug 2002 | A1 |
20020124057 | Besprosvan | Sep 2002 | A1 |
20020156688 | Horn et al. | Oct 2002 | A1 |
20020161641 | Quinlan et al. | Oct 2002 | A1 |
20020161667 | Felkey et al. | Oct 2002 | A1 |
20030065805 | Barnes, Jr. | Apr 2003 | A1 |
20030208522 | McDonnell et al. | Nov 2003 | A1 |
20040260609 | Loeb et al. | Dec 2004 | A1 |
20050075932 | Mankoff | Apr 2005 | A1 |
20060015904 | Marcus | Jan 2006 | A1 |
Number | Date | Country | |
---|---|---|---|
20020165908 A1 | Nov 2002 | US |