Recurring delivery of products

Technologies are described herein for providing recurring delivery of products to a customer on a periodic basis. A customer creates a recurring delivery list that specifies a particular delivery slot indicating when orders are to be delivered. The customer adds products to the recurring delivery list, specifying a quantity and frequency of delivery for each product. Orders are periodically generated from the customer's recurring delivery list for delivery on the next occurrence of the specified delivery slot. The products included in each order are based on the frequency of delivery and a last delivery date for each product in the recurring delivery list. If the customer makes changes to the recurring delivery list, those changes may also be applied to any pending orders generated from the list.

BACKGROUND

Many types of products may be purchased online for delivery directly to a customer, including grocery items and other consumables. Delivery of consumable products may present special challenges to online merchants of such products. For instance, these types of products may be perishable or have a limited shelf life, requiring different inventory control, delivery, and other logistic processes for these types of products. Challenges may also be presented to a customer that orders consumable products from an online merchant. For instance, the customer may need to repeatedly place orders for the same consumable products on a regular basis, and the customer may have to track the shipment of the products to arrange to be present at delivery in order to ensure that perishable goods do not spoil.

Some online merchant systems may provide customers the ability to place standing orders for delivery of consumable products on a recurring basis, such as every week or every month. However, these systems may be limited in their flexibility for allowing modifications of the recurring orders or for allowing the addition of one-time or specialty products to an order. Further, the customer may not be able to schedule the recurring orders for the same time and day of each week or month, thereby making it difficult for the customer to arrange to be present at the delivery of perishable goods or other consumables.

DETAILED DESCRIPTION

The following detailed description is directed to technologies for providing recurring delivery of products to a customer on a periodic basis, without requiring the customer repeatedly place orders for the products. According to embodiments, a customer may create a recurring deliver list that specifies a list of products for recurring delivery in a merchant system. The recurring delivery list identifies each product to be delivered on a recurring basis, as well as a quantity and frequency of delivery for each. For instance, a customer may request delivery of one bunch of bananas every week and two gallons of milk every two weeks.

The customer may also specify a particular delivery slot when the recurring orders are to be delivered. The delivery slot specifies the day and time for the delivery of the recurring orders. For example, the customer may specify a particular time period on a particular day of the week, such as 7:00-8:00 AM on Tuesdays or 1:00-2:00 PM on Thursdays. In one embodiment, the customer may be able to specify a delivery slot that is designated as “unattended.” An unattended delivery is one in which the customer need not be present during the delivery of the products, such as pre-dawn on Mondays.

The merchant system may periodically generate an order from the customer's recurring delivery list for delivery on the next occurrence of the specified delivery slot. For example, the merchant system may check the frequency of delivery of each product identified in the recurring delivery list along with a last delivery date for that product to determine if the product should be included in a generated order. If so, then the quantity of the product specified in the recurring delivery list is added to the order.

In one embodiment, the order may be generated in advance of the scheduled delivery of the order so that the order remains pending for a period of time before delivery. For example, the merchant system may generate orders for weekly delivery seven days in advance. Moreover, any changes made to the recurring delivery list may be applied to any pending orders generated from the list. These changes may include changes to the quantity or frequency of delivery of products identified in the list, or the suspension of delivery of a particular product for a specified period of time or indefinitely.

Because the customer may specify a particular delivery slot for the delivery of the orders generated from the recurring delivery list, including unattended delivery slots, the customer is able to precisely manage the delivery schedule, thus avoiding many of the challenges presented by the delivery of perishable goods or other consumables. In addition, because the orders generated from the recurring delivery list remain pending for a period of time in advance of delivery, the customer has the flexibility to add specialty products or one-time products to the currently pending order, while any changes made by the customer to the recurring delivery list during the period of pendency will be reflected in the pending order as well.

It should be appreciated that the subject matter presented herein may be implemented as computer process, a computer-controlled apparatus, a computing system, or an article of manufacture, such as a computer-readable storage medium. These and various other features will become apparent from a reading of the following disclosure and a review of the associated drawings.

While the subject matter described herein is presented in the general context of program modules that execute on one or more computing devices, those skilled in the art will recognize that other implementations may be performed in combination with other types of program modules. Generally, program modules include routines, programs, components, data structures, and other types of structures that perform particular tasks or implement particular abstract data types. Moreover, those skilled in the art will appreciate that the subject matter described herein may be practiced on or in conjunction with other computer system configurations beyond those described below, including multiprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, handheld computers, personal digital assistants, cellular telephone devices, special-purposed hardware devices, network appliances, and the like. The embodiments described herein may also be practiced in distributed computing environments, where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.

In the following detailed description, references are made to the accompanying drawings that form a part hereof, and that show, by way of illustration, specific embodiments or examples. The drawings herein are not drawn to scale. Like numerals represent like elements throughout the several figures.

FIG. 1and the following description are intended to provide a brief, general description of a suitable computing environment in which the embodiments described herein may be implemented. In particular,FIG. 1is a system and network diagram that shows an illustrative operating environment100including several software components for providing recurring delivery of products to a customer on a periodic basis, according to embodiments provided herein. The environment100includes a customer102that uses a customer computer104to access a merchant system120across a network108. The customer102may be an individual or entity that desires to have a number of products delivered to the customer's premises or other specific location on a recurring basis. The customer computer104may be a personal computer (“PC”), a desktop workstation, a laptop, a notebook, a personal digital assistant (“PDA”), a game console, a set-top box, a consumer electronics device, a server computer, or any other computing device capable of connecting to the network108and communicating with the merchant system120.

The network108may be a local-area network (“LAN”), a wide-area network (“WAN”), the Internet, or any other networking topology known in the art that connects the customer computer104to the merchant system120. The merchant system120may include a number of application servers122that provide various application services to the customer computer104over the network108. The customer102may use a client application program executing on the customer computer104, such as a web browser, to access and utilize the services provided by the application servers122across the network108. Alternatively, the customer computer104may utilize any number of communication methods known in the art to communicate with the merchant system120and/or the application servers122across the network108, including proprietary client-server architectures, e-mail, short message service (“SMS”) messaging, or other messaging technologies, and the like.

The application servers122may execute a number of modules in order to provide the services to the customer computer104. The modules may execute on a single application server122or in parallel across multiple application servers in the merchant system120. In addition, each module may consist of a number of subcomponents executing on different application servers122or other computing devices in the merchant system120. The modules may be implemented as software, hardware, or any combination of the two.

According to one embodiment, a recurring delivery module124executes on the application servers122. The recurring delivery module124provides services to the customer computer104that allow the customer102to select products for recurring delivery, specify a quantity and frequency of delivery for each product, specify a delivery address, specify a delivery slot for the delivery of the products, and specify a payment method for the delivery. The customer102may make these selections through a user interface (“UI”) presented by the recurring delivery module124to the customer at the customer computer104, as will be described below in regard toFIGS. 4-7. The recurring delivery module124may present the UI to the customer102by sending a series of web pages to be rendered by a browser application executing on the customer computer104, for example. Alternatively, the recurring delivery module124may receive the selections from the customer computer104by means of a messaging technology, such as SMS messaging or e-mail, or through a number of application programming interfaces (“APIs”) exposed by the recurring delivery module. It will be appreciated that any number of methods and technologies may be utilized that allow the recurring delivery module124to receive these selections and other input data from the customer102, and it is intended that all such methods and technologies be included within the scope of this application.

The recurring delivery module124may store the customer's selections of products for recurring delivery in a recurring delivery list126. The recurring delivery list126may be a data structure that stores the identity of the selected products as well as the parameters for the products' recurring delivery, as will be described in more detail below in regard toFIG. 2. The recurring delivery list126may be stored in a data storage system128, such as a database server, that is accessible by the application servers122and other components of the merchant system120. In a further embodiment, the recurring delivery module124provides services to the customer computer104that allow the customer102to manage the product selections and other parameters in the recurring delivery list126, such as changing the quantity and/or frequency of delivery of a product or suspending the delivery of a product for a specified period or indefinitely. The customer102may manage the recurring delivery list126through a UI presented by the recurring delivery module124to the customer at the customer computer104, as will be described below in regard toFIGS. 8-11, or through some other method or technology implemented by the recurring delivery module.

As will be described in more detail below, the recurring delivery module124periodically generates an order132for the delivery of one or more products identified in the recurring delivery list126, according to the parameters contained therein. In one embodiment, the recurring delivery module124utilizes an order module130executing on the application servers122to generate the orders. The order module130may be part of an existing order processing system within the merchant system120, or the order module may be provided by an order processing system separate from the merchant system. The order module130in turn may create an order132in the data storage system128for the delivery of the products desired by the customer102. The order132identifies the products to be delivered to the customer as well as the parameters for delivery of the products, as will be described in more detail below in regard toFIG. 3. The order module130may further provide services to the recurring delivery module124or directly to the customer computer104via the network108that allow the order132to be modified or canceled once it has been generated.

Once the order132is generated, it is made available to an order fulfillment system140for processing and delivery to the customer102. The order fulfillment system140may consist of a variety of components, including, but not limited to, an order processing component, a billing component, an inventory control component, an order picking component, a delivery scheduling component, and other logistics and control systems. All of the components that make up the order fulfillment system140may be included in the merchant system120, or some or all of the components may be provided by external providers.

FIGS. 2 and 3are data structure diagrams showing a number of data elements stored in a data structure. It will be appreciated by one skilled in the art that each of the data structures shown in the figures may represent a database table, an object stored in a computer memory, a programmatic structure, or any other data container commonly known in the art. Each data element included in the data structures may represent one or more fields or columns of a database table, one or more attributes of an object, one or more member variables of a programmatic structure, or any other unit of data of a data structure commonly known in the art. The implementation is a matter of choice, and may depend on the technology, performance, and other requirements of the computing system upon which the data structures are implemented.

FIG. 2shows one example of data elements that may be stored in the recurring delivery list126, according to embodiments. As described above, the recurring delivery list126stores the identity of the products selected by the customer102for recurring delivery, as well as other parameters regarding the delivery of the products. The recurring delivery list126may contain a list identifier (“ID”)202that identifies the recurring delivery list to the recurring delivery module124and other system modules. The recurring delivery list126may also contain a customer ID204that identifies the customer102and allows the recurring delivery list to be related to profile data for the customer maintained in the merchant system120. According to one embodiment, each customer102may only have one recurring delivery list126. In other embodiments, multiple recurring delivery lists126may exist for the same customer102.

The recurring delivery list126may contain a delivery address206for the delivery of the selected products. In one embodiment, the delivery address206is an identifier of a shipping address maintained in the profile data for the customer102. In other embodiments, the delivery address may contain a specific street address of a location where delivery is to take place.

The recurring delivery list126also contains a delivery slot208identifying when the delivery of orders generated from the recurring delivery list should occur. The delivery slot208may be an identifier of one of a number of predetermined periods of time within a recurring delivery cycle that may be scheduled for delivery. For example, if the recurring delivery module124generates an order from the recurring delivery list126on a weekly basis, i.e. a weekly delivery cycle, the predetermined periods may consist of a range of times, such as 7:00-8:00 AM, on a particular day of the week, such as Tuesday. For a monthly delivery cycle, then the predetermined periods may similarly be a range of times, such as 7:00-8:00 AM, on a particular day of the month, such as the 23rdday. It will be appreciated that for recurring delivery cycles other than weekly or monthly, the predetermined periods may differ from those described herein. In a further embodiment, the predetermined periods may be target times for delivery, such as 7:15 AM, instead of the range of times described above. In all cases, the predetermined periods of time within the recurring delivery cycle may be selected to allow the merchant flexibility in scheduling delivery of orders, while ensuring that the customer102may easily arrange to be present at the specified delivery time.

In one embodiment, the delivery slot208may specify a predetermined period of time designated as an “unattended” delivery slot. An unattended delivery slot is a period of time for delivery where the customer102need not be present when the delivery occurs. For example, the customer102may be able to schedule unattended delivery of the orders generated from the recurring delivery list126for pre-dawn on Tuesdays, or from 3:00-6:00 PM on Thursdays. Unattended delivery slots may be broader periods of time than the “attended” delivery slots described above, providing the merchant greater flexibility in scheduling delivery of orders to the customer. The unattended delivery slots may also provide additional flexibility to the customer102by not requiring that the customer be present during delivery, but ensuring that the customer's products will be delivered by a particular day and time.

It will be appreciated that certain products may not be eligible for unattended delivery, such as items requiring a verification of age by delivery personnel before relinquishing the products to the customer102. In one embodiment, the recurring delivery module124may alert the customer102when ineligible products are added to a recurring delivery list126specifying an unattended delivery slot. In other embodiments, the recurring delivery module124or the order fulfillment system140may implement other contingency procedures for the ineligible products.

The recurring delivery list126may further contain a payment method210for orders generated from the recurring delivery list. In one embodiment, the payment method210is an identifier of a particular method of payment maintained in the profile data for the customer102. In other embodiments, the payment method210may contain credit card information, checking account information, or other information describing a method of payment for the generated orders.

According to embodiments, the recurring delivery list126further contains one or more list items220A-220C (also referred to herein as list item220) identifying the products added to the recurring delivery list. Each list item220may contain a product stock-keeping unit (“SKU”)222that uniquely identifies the product selected by the customer102. The list item220also contains a quantity224indicating the number of the product to be delivered in each generated order that includes the selected product.

In addition, the list item220contains a frequency of delivery226and a last delivery date228for the selected product. The frequency of delivery226may be a multiple of the recurring delivery cycle described above. For example, for a weekly delivery cycle, the frequency of delivery226may specify a number of weeks that should occur between successive deliveries of the selected product. The last delivery date228may specify the date that the selected product was last scheduled for delivery in an order generated from the recurring delivery list126. In one embodiment, the recurring delivery module124utilizes the frequency of delivery226and the last delivery date228of each list item220to identify the products that are to be included in the orders generated from the recurring delivery list126, as will be described in more detail below in regard toFIG. 12.

In a further embodiment, the list item220also contains a paused-to date230. As described above in regard toFIG. 1, the recurring delivery module124may allow the customer102to suspend the delivery of a product for a specified period of time or indefinitely. The recurring delivery module124may utilize the paused-to date230to indicate that delivery of the selected product is currently suspended, or “paused,” until the date specified by the paused-to date230. It will be appreciated that the paused-to date230may contain a specific, pre-defined date value to indicate that delivery of the selected product is suspended indefinitely. It will be further appreciated that the recurring delivery list126may contain additional data elements beyond those shown inFIG. 2and described above that may be utilized by the recurring delivery module124to provide recurring delivery of products to the customer102.

FIG. 3shows one example of data elements that may be stored in an order132generated from the recurring delivery list126, according to embodiments. As described above, the order132identifies the products to be delivered to the customer as well as parameters for delivery of the products. The order132may contain an order ID302that identifies the order to the recurring delivery module124, the order module130, the order fulfillment system140, and/or other system modules in the merchant system120. The order132also contains the list ID202and customer ID204from the recurring delivery list126. The list ID202identifies the recurring delivery list126from which the order was generated, while the customer ID204allows the order132to be related to the customer102in the merchant system120. The order132may further contain the delivery address206and payment method210specified in the recurring delivery list126. These data elements are utilized by the order fulfillment system140in processing and delivering the order, according to embodiments.

The order132may also contain a date and time for delivery304for the order. According to one embodiment, the date and time for delivery304represents the next occurrence of the delivery slot208specified in the recurring delivery list126on which products are scheduled for delivery. For example, if the recurring delivery list126specifies a delivery slot208of 7:00-8:00 AM on Tuesdays and contains a list item220with a frequency of delivery226of once a week, then an order132generated from the recurring delivery list on Jul. 29, 2009 may have a date and time for delivery304of Aug. 4, 2009 at 6:15 AM. In one embodiment, the time component of date and time for delivery304is calculated when the order132is generated based on a delivery schedule maintained in the order fulfillment system140. In another embodiment, the time component of the date and time for delivery304indicates the time range from the delivery slot208specified in the recurring delivery list126. The actual time for delivery may be determined after generation of the order132by the order fulfillment system140or may be left to the discretion of delivery personnel.

The order132further contains one or more order items308A-308C (also referred to herein as order item308) identifying the products to be delivered with the order. According to embodiments, the recurring delivery module124creates the initial order items308from the recurring delivery list126based the frequency of delivery226and the last delivery date228of each list item220in the recurring delivery list, as will be described in more detail below in regard toFIG. 12.

Each order item308contains the product SKU222and quantity224from the corresponding list item220. It will be appreciated that, after the initial generation of the order132by the recurring delivery module124, additional order items308may be added or order items may be removed from the order132by the customer102through the order module130, as described above in regard toFIG. 1. Moreover, the quantity224of each order item308may be changed by the customer102after initial generation of the order132, as will be described below in regard toFIG. 8.

It will be appreciated that the order132may contain additional data elements beyond those shown inFIG. 3and described above that are utilized by the order module130and the order fulfillment system140in the processing and delivery of the order to the customer102. For example, each order item308may further contain a price310for the associated product. The order132may also contain an order total306that represents the total calculated cost of the order, including the price of the order items along with any fees, taxes, etc.

FIG. 4shows an illustrative user interface400for specifying parameters for the recurring delivery list126, according to one embodiment. As described above in regard toFIG. 1, the recurring delivery module124may operate in conjunction with the customer computer104to present the user interface400to the customer102to allow the customer to specify a delivery address206, a delivery slot208, and a payment method210for the recurring delivery list126. The recurring delivery module124may present the user interface400to the customer102by sending a series of web pages to the customer computer104to be rendered by a browser application executing on the customer computer, for example. As shown inFIG. 4, the user interface400may include a group of UI components402for specifying the delivery address206, a group of UI components410for specifying the delivery slot208, and a group of UI components420for specifying the payment method210.

The group of UI components402for specifying the delivery address206may include an address display404that shows the current delivery address206for the recurring delivery list126. In one embodiment, the address display404initially contains a default delivery address for the customer102retrieved from the customer profile data maintained by the merchant system120. The group of UI components402may also contain a change address trigger control406. The change address trigger control406may be a hyperlink as shown inFIG. 4, for example.

When the customer102selects the change address trigger control406, the recurring delivery module124may present additional UI components (not shown) to the customer that allow the customer to change the currently specified delivery address206. In one embodiment, the additional UI components may allow the customer102to select a delivery address206from a list of valid or verified delivery addresses maintained in the customer profile data. In another embodiment, the additional UI components may allow the customer102to specify the street address of the location where delivery is to be made.

The group of UI components410for specifying the delivery slot208may include a delivery type selection control412. The delivery type selection control412may be a series of radio button UI controls as shown inFIG. 4, for example. The delivery type selection control412allows the customer102to select between unattended-type delivery and attended-type delivery, as was described above in regard toFIG. 2. The group of UI components410may also contain a day selection control414and a time period selection control416, which may be dropdown controls as further shown inFIG. 4, for example. The day selection control414and time period selection control416together allow the customer102to select the desired delivery slot208from a list of valid or available delivery slots, as further described above in regard toFIG. 2.

For example, for a weekly delivery cycle, the day selection control414may allow the customer102to select a day of the week from a list of days of the week on which deliveries take place. Similarly, the time period selection control416may allow the customer102to select a time period from a list of predefined periods available for the selected day of the week, as described above in regard toFIG. 2. According to one embodiment, the days of the week available in the day selection control414and the predefined periods available in the time period selection control416are limited to those combinations that are valid for the type of delivery selected in the delivery type selection control412. In other words, the customer102may only select a delivery slot208designated as unattended if unattended-type delivery is selected in the delivery type selection control412, and a delivery slot designated as attended if attended-type delivery is selected in the delivery type selection control.

The group of UI components420for specifying the payment method210may include a payment method display422that shows the current payment method210for the recurring delivery list126. In one embodiment, the payment method display422may initially contain a default payment method for the customer102retrieved from the customer profile data maintained by the merchant system120. The group of UI components420may also contain a change payment method trigger control424. The change payment method trigger control424may be a hyperlink as shown inFIG. 4, for example.

When the customer102selects the change payment method trigger control424, the recurring delivery module124may present additional UI components (not shown) to the customer that allow the customer to change the currently specified payment method210. In one embodiment, the additional UI components may allow the customer102to select a payment method210from a list of valid or verified payment methods maintained in the customer profile data. In another embodiment, the additional UI components may allow the customer102to specify credit card information, checking account information, or other information describing a method of payment for the recurring delivery list126. It will be appreciated that the UI components described above may be presented to the customer102in addition to other UI controls and components displayed at the customer computer104.

FIGS. 5-7show an illustrative user interface500for selecting products to add to the recurring delivery list126, according to one embodiment. As described above in regard toFIG. 1, the recurring delivery module124may present the user interface500to the customer102to allow the customer to select products to add to the recurring delivery list126, as well as specify a quantity224and frequency of delivery226for each selected product. The recurring delivery module124may present the user interface500to the customer102by sending a series of web pages to the customer computer104to be rendered by a browser application executing on the customer computer, for example.

As shown inFIG. 5, the user interface500may include a product search interface502that allows the customer102to browse products by category or search for specific keywords or product SKUs. In addition, the product search interface502may allow the customer102to sort and page through the resulting list of products. For each product in the resulting list of products, the user interface500may include a product information display504that contains an image or other pictorial representation of the product, the name of the product, the price of the product, etc. In addition, the product information display504may include UI components that allow the product to be added to a traditional, non-recurring order to be filled through the order fulfillment system140.

According to one embodiment, some products available for purchase through the merchant system120may be purchased at a discounted price if purchased on a recurring basis by adding the product to the recurring delivery list126. The discount offered for recurring delivery may be in addition to other discounts offered for the product in the merchant system120, such as case quantity discounts and the like. Those products available for purchase at a discount if added to the recurring delivery list126may be indicated in the user interface500by an additional discount display506, as shown inFIG. 5.

The user interface500also includes an add product trigger control508, such as the hyperlink shown inFIG. 5. When the customer102selects the add product trigger control508, the recurring delivery module124may present additional UI components602to the customer that allow the customer to specify a quantity224and frequency of delivery226for the selected product, as shown inFIG. 6. In one embodiment, the additional UI components602include a quantity entry control604, such as the text entry control shown inFIG. 6, for example. The quantity entry control604allows the customer102to specify a quantity224of the product to order on a recurring basis.

The additional UI components602also include a frequency selection control606. The frequency selection control606may be a series of radio button UI controls as further shown inFIG. 6, for example. The frequency selection control606allows the customer102to specify the frequency of delivery226of the selected product. For example, for a weekly delivery cycle, the frequency of delivery226may allow the customer102to select a frequency of every week, every two weeks, every three weeks, etc. It will be appreciated that for other recurring delivery cycles, such as monthly, the frequency selection control606may offer different selections accordingly.

The additional UI components602further include an add trigger control608, such as the pushbutton UI control shown inFIG. 6. When the customer102selects the add trigger control608, the recurring delivery module124adds the selected product to the recurring delivery list126with the specified quantity224and frequency of delivery226, as will be described in more detail below in regard toFIG. 12.

According to one embodiment, once a product is added to the recurring delivery list126, the recurring delivery module124displays a recurring delivery indicator display702for the product in the user interface500in place of the add product trigger control508, as shown inFIG. 7. The recurring delivery indicator display702may indicate the quantity224of the product added to the recurring delivery list126. In addition, the recurring delivery indicator display702may also indicate that the specified quantity224of the product has been added to a currently pending order132generated from the recurring delivery list126, as will be described in more detail below in regard toFIG. 13.

FIGS. 8-11show an illustrative user interface800for maintaining the recurring delivery list126and any pending orders132generated from the recurring delivery list, according to one embodiment. As described above in regard toFIG. 1, the recurring delivery module124may present the user interface800to the customer102to allow the customer to manage the product selections and other parameters in the recurring delivery list126. This may include changing the quantity224and/or frequency of delivery226of a product or suspending the delivery of a product for a specified period or indefinitely. As described above, the recurring delivery module124may present the user interface800to the customer102by sending a series of web pages to the customer computer104to be rendered by a browser application executing on the customer computer, for example.

The user interface800may include a delivery information display802that shows the currently specified delivery slot208for the recurring delivery list126and the corresponding delivery type, as described above in regard toFIG. 2. The user interface800may also include a pause recurring delivery trigger control804, such as the pushbutton UI control shown inFIG. 8. According to one embodiment, if the customer102selects the pause recurring delivery trigger control804, the recurring delivery module124will cease generation of orders132from the recurring delivery list126as well as cancel any pending order generated from the recurring delivery list. The recurring delivery list126may remain “paused” in this manner until a future action by the customer102, for example.

The user interface800further includes an item row810for each list item220in the recurring delivery list126. The item row810contains UI components that display information regarding the product identified by the product SKU222of the list item220. For example, each item row810may contain the name of the product, an image or other pictorial representation of the product, the price of the product, etc., as shown inFIG. 8. If the product is available for purchase at a discount if added to the recurring delivery list126, the discounted price may be displayed in the item row810as well.

Each item row810may contain a quantity display812that displays the currently specified quantity224for the list item220. In one embodiment, the item row810also contains a quantity change control814. The quantity change control814may be a series of pushbutton UI controls such as those shown ifFIG. 8, for example. The quantity change control814may allow the customer102to add to or subtract from the quantity224for the list item220, or remove the list item from the recurring delivery list126altogether.

In a further embodiment, the item row810also contains a frequency selection control816. The frequency selection control816may be a series of radio button UI controls as further shown inFIG. 8, for example. The frequency selection control816shows the currently specified frequency of delivery226for the list item as well as allowing the customer102to modify the frequency of delivery. The item row810may also contain a pause item trigger control818, such as the checkbox shown inFIG. 8, for example. The pause item trigger control818is described in more detail below.

The user interface800may further include a group of UI components820that provides information regarding the currently pending order132generated from the recurring delivery list126. As will be described below in regard toFIG. 12, orders may be generated from the recurring delivery list126in advance of the scheduled delivery, so that an order132remains pending for a period of time before delivery. The group of UI components820may contain a delivery date display822that displays the date of delivery of the pending order132, as well as a summary display824that displays summary information regarding the pending order, such as the total quantity of products to be delivered, the order total306, etc.

Further, for each item row810, the group of UI components820may display information regarding the order item308from the pending order132corresponding to the list item220displayed in the item row. For example, the group of UI components820may contain a quantity display832that displays the quantity224from the order item308as well as a price display826that displays the price310from the order item, as shown inFIG. 8. The group of UI components820may further contain a delivery indicator icon828A that provides a visual indication to the customer102that the product identified in the list item220is included in the pending order132.

According to one embodiment, the group of UI components820may contain additional components that allow the customer102to modify the currently pending order132. For example, the group of UI components820may also contain an edit order trigger control830, such as the pushbutton UI control shown inFIG. 8. If the customer102selects the edit order trigger control830, a quantity change control834may be enabled in each item row810that allows the customer102to add to or subtract from the quantity224for the order item308, or remove the order item from the pending order132.

In a further embodiment, changes made to the currently pending order132are not reflected in the recurring delivery list126. For example, if the customer uses the quantity change control834to modify the quantity224of an order item308, the quantity224of the corresponding list item220in the recurring delivery list126remains the same. Similarly, if the customer uses the quantity change control834to remove an order item308from the currently pending order132, the last delivery date228of the corresponding list item220in the recurring delivery list126may still indicate that the product was delivered on the delivery date of the currently pending order. In this way, changes made to the order items308in the currently pending order will not affect the schedule for delivery of the corresponding product in future orders136generated from the recurring delivery list126.

The user interface800may further include a group of UI components840that provides information regarding a number of scheduled future orders132that may be generated from the recurring delivery list126. The group of UI components840may contain a delivery date display822B-822C that displays the date of delivery of the future orders. In addition, a number of delivery indicator icons828B-828D may be displayed in each item row810that indicate if the product identified in the corresponding list item220is to be included in each of the future orders. It will be appreciated that the recurring delivery module124may utilize the frequency of delivery226and the last delivery date228of the list item220to identify the products that are to be included in each of the future orders.

As will be described below in regard toFIG. 13, changes made to the recurring delivery list126may also be applied to the currently pending order132, according to embodiments. For example, if the customer102utilizes the quantity change control814in the item row810shown inFIG. 8to increment the quantity224of the corresponding list item220, or utilizes the frequency selection control816to change the frequency of delivery226of the list item, the recurring delivery module124may apply these changes to both the recurring delivery list126and the currently pending order132. As shown inFIG. 9, the change to the quantity224and frequency of delivery226as applied to the list item220of the recurring delivery list126may be reflected in the quantity display812and the frequency selection control816of the item row810corresponding to the list item220.

In addition, the change to the quantity224as applied to order item308of the currently pending order132may also be reflected in the quantity display832in the group of UI components820for the item row810. Other components of the group of UI components820may reflect the change to the quantity224of the order item308as well, including the price display826and the summary display824, as further shown inFIG. 9. Similarly, the change to the frequency of delivery226may be further reflected in the delivery indicator icons828C displayed in the group of UI components840corresponding to the scheduled future orders, as shown inFIG. 9.

As shown inFIGS. 8 and 9, the item row810in the user interface800may also contain a pause item trigger control818. As described above in regard toFIG. 1, the recurring delivery module124may allow the customer102to suspend, or “pause,” the delivery of a product in the recurring delivery list126for a specified period of time or indefinitely. When the customer102selects the pause item trigger control818, the recurring delivery module124may present additional UI components1002to the customer that allow the customer to specify the parameters for pausing the product identified in the corresponding list item220, as shown inFIG. 10.

In one embodiment, the additional UI components1002include a pause type selection control1004, such as the series of radio button UI controls shown inFIG. 6, for example. The pause type selection control1004allows the customer102to specify the whether the product is to be paused indefinitely or until a specific date. The additional UI components1002may also include a date entry control1006, such as the date dropdown control shown inFIG. 10. The date entry control1006allows the customer102to specify the paused-to date230in the case where the customer has specified that delivery of the product is to be paused until a specific date.

The additional UI components1002further include a pause trigger control1008, such as the pushbutton UI control shown inFIG. 10. When the customer102selects the pause trigger control1008, the recurring delivery module124stores the specified paused-to date230in the corresponding list item220, so that the product identified in the list item will not be included in future orders generated from the recurring delivery list126. According to one embodiment, the recurring delivery module124may also remove the product identified in the list item from the currently pending order132generated from the recurring delivery list126, as will be described in more detail below in regard toFIG. 14.

As shown inFIG. 11, once delivery of a product has been paused, the recurring delivery module124may change the pause item trigger control818in the corresponding item row810to indicate that the item has been paused until the specified paused-to date230. In addition, the affect of pausing the product on the currently pending order132may also be reflected in the quantity display832and price display826in the group of UI components820for the item row810, as well as the summary display824for the pending order. Similarly, the affect of pausing delivery of the product on future orders may be further reflected in the delivery indicator icons828B-828D displayed in the group of UI components840corresponding to the scheduled future orders, as further shown inFIG. 11.

It will be appreciated that the UI controls and components shown in the accompanying drawings are provided as example implementations only, and that other UI controls and components known in the art may be utilized in the user interfaces400,500, and800to provide the functionality described above. The implementation is a matter of choice, and may depend on the technology utilized by the recurring delivery module124to present the user interfaces400,500, and800to the customer102, the type of the customer computer104on which the user interfaces are rendered, and other factors. It will be further appreciated that the user interfaces400,500, and800shown in the figures may appear differently on different types of customer computers104.

FIG. 12illustrates a routine1200for providing recurring delivery of products to a customer on a periodic basis, according to embodiments described herein. In one embodiment, the routine1200is performed by the recurring delivery module124. It will be appreciated that the routine1200may also be performed by another module or component of the merchant system120, or by a combination of modules and components.

The routine1200begins at operation1202, where the recurring delivery module124receives a list of products to add to the recurring delivery list126. According to one embodiment, the list of products is received from the customer102through a user interface500presented to the customer at the customer computer104, as described above in regard toFIGS. 5 and 6. The customer102may utilize the user interface500to specify one or more products to add to the recurring delivery list126, along with a quantity224and frequency of delivery226for each.

In another embodiment, the recurring delivery module124generates a suggested list of products by analyzing profile data maintained for the customer102in the merchant system120. For example, the recurring delivery module124may utilize the purchase history of the customer102along with other profile information, such as age, gender, income level, interests, search history, etc., to select products that should be delivered to the customer on a recurring basis. The recurring delivery module124may further couple this information with data identifying the number of people in the customer's household and/or information regarding the shelf life of the selected products to determine an appropriate quantity224and frequency of delivery226for each product. This automatic generation of the list of products may be performed when the recurring delivery list126is initially created by the customer102, for example.

In a further embodiment, the recurring delivery module124may retrieve the list of products to add to the recurring delivery list126from an existing order of the customer102. For example, after placing a traditional order in the merchant system120, the customer102may be given the option to add some or all of the products in the order to their recurring delivery list126. If the customer102selects the option to add the products from the order to the recurring delivery list126, the recurring delivery module124may add a list item220to the recurring delivery list for each product in the order. The recurring delivery module124may then present the user interface800to the customer102to allow the customer to change the quantity224and/or frequency of delivery226of each newly added product, as described above in regard toFIGS. 8-11.

The recurring delivery module124may also receive a specification of a delivery slot208for the recurring delivery list126. The specification of the delivery slot208may also be received from the customer102through a user interface400presented to the customer at the customer computer104, as described above in regard toFIG. 4. As described above in regard toFIG. 2, the delivery slot208may be an identifier of one of a number of predetermined periods of time within the recurring delivery cycle that may be scheduled for delivery. In one embodiment, the specification of the delivery slot208may further include a designation of an unattended-type delivery or an attended-type delivery, as further described above in regard toFIGS. 2 and 4.

It will be appreciated that the recurring delivery module124may receive the list of products to add to the recurring delivery list126and the specification of a delivery slot208from sources other than those described herein. Upon receiving the list of products and the delivery slot208, the recurring delivery module124may create the recurring delivery list126in the data storage system128with the specified delivery slot and a list item220for each of the products. The quantity224and frequency of delivery226for each list item220are also established from the received values.

From operation1202, the routine1200proceeds to operation1204, where the recurring delivery module124periodically generates an order132from the recurring delivery list126. As described above in regard toFIG. 1, the recurring delivery module124may use services provided by the order module130to generate the order132. The period of generation of the orders132may depend on the recurring delivery cycle. For example, for a weekly delivery cycle, the recurring delivery module124may generate an order132from the recurring delivery list126each calendar week. The order132may be generated with a date and time for delivery304corresponding to the next occurrence of the delivery slot208specified in the recurring delivery list126. In addition, the recurring delivery module124may generate the order132from the recurring delivery list126in advance of the date and time for delivery304, so that the order remains pending for a period of time before delivery. In one embodiment, the recurring delivery module124may generate orders132seven days in advance for a weekly delivery cycle.

The routine1200proceeds from operation1204to operation1206, where the recurring delivery module124creates order items308for the generated order132from the list items220in the recurring delivery list126. The recurring delivery module124may utilize the frequency of delivery226and the last delivery date228of each list item220to determine which products to include in the order132. For example, if the frequency of delivery226of a list item220specifies that a product is to be delivered every two weeks, and the last delivery date228of the list item indicates that the item was delivered at least two weeks prior to the date and time for delivery304of the generated order132, then an order item308is added to the order with the product SKU222and quantity224from the corresponding list item. In a further embodiment, the recurring delivery module124also checks the paused-to date230of the list item220to ensure that the delivery of the product has not been paused by the customer102before adding the order item308to the order132.

From operation1206, the routine1200proceeds to operation1208, where the products specified in the order items308of the generated order132are delivered to the customer effectively on the date and time for delivery304of the order. As described above in regard toFIG. 1, the delivery of the order132may be performed by an order fulfillment system140within the merchant system120. The order fulfillment system140may be required to perform additional processing because of the automatic nature of the orders132generated from the recurring delivery list126. For example, the order fulfillment system140may be required to substitute equivalent products for products included in the order132that are out of stock or discontinued. The substitution of equivalent items may be an option selected by the customer102, either globally for the recurring delivery list126or on a list item220by list item basis. The substitution of equivalent items for products that are discontinued may be made in both the pending order132as well as the recurring delivery list126.

FIG. 13illustrates a routine1300for applying changes made to the recurring delivery list126to a pending order132generated from the recurring delivery list, according to the embodiments described herein. In one embodiment, the routine1300is performed by the recurring delivery module124. It will be appreciated that the routine1300may also be performed by another module or component of the merchant system120, or by a combination of modules and components. As described above in regard toFIG. 12, the recurring delivery module124may generate an order132from the recurring delivery list126in advance of the date and time for delivery304, so that the order remains pending for a period of time before delivery. Changes made to the recurring delivery list126during the period of pendency of the generated order132may also be applied to the order.

The routine1300begins at operation1302, where the recurring delivery module124receives the changes made to the recurring delivery list126. According to one embodiment, the changes may have been made by the customer102through a user interface800presented to the customer at the customer computer104, as described above in regard toFIGS. 8 and 9. The changes may include changes to the quantity224and/or frequency of delivery226of a list item220in the recurring delivery list126.

From operation1302, the routine1300proceeds to operation1304, where the recurring delivery module124determines if an order132generated from the recurring delivery list126is currently pending. According to one embodiment, the order132is generated from the recurring delivery list126in advance of the date and time for delivery304based on the recurring delivery cycle such that there is effectively always a pending order132associated with the recurring delivery list. If the recurring delivery module124determines there is not a currently pending order132, the routine1300ends.

If the recurring delivery module124determines there is a currently pending order132generated from the recurring delivery list126, the routine1300proceeds to operation1306, where the recurring delivery module124applies the changes made to the recurring delivery list126to pending order132. For example, changes made to the quantity224of a list item220in the recurring delivery list126may also be made to the quantity224of any corresponding order item308in the order132. Or, if changes made to the frequency of delivery226of a list item220indicate that the product identified by the list item is no longer scheduled for delivery on the date and time of delivery304of the pending order132, then the order item308corresponding to the list item may be removed from the pending order.

It will be appreciated that the recurring delivery module124may similarly apply other changes made to the recurring delivery list126or the list items220to the corresponding pending order132or order items308. It will be further appreciated that the recurring delivery module124may selectively apply some changes made to the recurring delivery list126to the pending order132, while not applying others changes made to the recurring delivery list. For example, if the customer102changes the delivery slot208specified for the recurring delivery list126, the recurring delivery module124may apply the change to future orders132generated from the recurring delivery list, while leaving the date and time for delivery304of the currently pending order unchanged. From operation1306, the routine1300ends.

FIG. 14illustrates a routine1400for pausing the delivery of a product in the recurring delivery list126, according to the embodiments described herein. In one embodiment, the routine1400may be performed by the recurring delivery module. It will be appreciated that the routine1400may also be performed by another module or component of the merchant system120, or by a combination of modules and components. As described above in regard toFIG. 1, the recurring delivery module124may allow the customer102to pause the delivery of a product in the recurring delivery list126for a specified period of time or indefinitely. When a product in the recurring delivery list126is paused, the change may also be applied to any pending order132generated from the recurring delivery list126.

The routine1400begins at operation1402, where the recurring delivery module124receives an indication that a product identified in a list item220of the recurring delivery list126is to be paused until a future date. According to one embodiment, the customer102may pause delivery of the product through a user interface800presented to the customer at the customer computer104, as described above in regard toFIGS. 9-11.

From operation1402, the routine1400proceeds to operation1404, where the recurring delivery module124determines if there is a pending order132generated from the recurring delivery list126that includes an order item308created from the paused list item220. If no order132generated from the recurring delivery list126is pending, or if the currently pending order does not include an order item308created from the paused list item220, then the routine1400ends. However, if the currently pending order132does include an order item308created from the paused list item220, the routine1400proceeds to operation1406, where the recurring delivery module124determines if the future date specified for the paused product is greater than the delivery date of the order132. This may be determined by comparing the paused-to date230on the paused list item220to the date and time of delivery304on the order132.

If the paused-to date230on the paused list item220is not greater than the date and time of delivery304on the order132, the routine1400ends. However, if the paused-to date230on the paused list item220is greater than the date and time of delivery304on the order132, the routine1400proceeds to operation1408, where the recurring delivery module124removes the order item308corresponding to the paused list item220from the order132. From operation1408, the routine1400then proceeds to operation1410, where the recurring delivery module124causes the product identified in the paused list item220to be included in the next order132generated from the recurring delivery list126after the future date. The recurring delivery module124will accomplish this by determining the order items308to create in each generated order132based on the frequency of delivery226, the last delivery date228, and the paused-to date230of each list item220in the recurring delivery list126, as described above in regard toFIG. 12. From operation1410, the routine1400ends.

FIG. 15shows an example computer architecture1500for a computer1502capable of executing the software components described herein for providing recurring delivery of products to a customer on a periodic basis, in the manner presented above. The computer architecture1500shown inFIG. 15illustrates a conventional server computer, workstation, desktop computer, laptop, network appliance, personal digital assistant (“PDA”), digital cellular phone, or other computing device, and may be utilized to execute any aspects of the software components presented herein described as executing on the application servers122, customer computer104, or other computing platform.

The chipset1506provides an interface between the CPUs1504and the remainder of the components and devices on the baseboard. The chipset1506may provide an interface to a random access memory (“RAM”)1508, used as the main memory in the computer1502. The chipset1506may further provide an interface to a computer-readable storage medium such as a read-only memory (“ROM”)1510or non-volatile RAM (“NVRAM”) for storing basic routines that that help to startup the computer1502and to transfer information between the various components and devices. The ROM1510or NVRAM may also store other software components necessary for the operation of the computer1502in accordance with the embodiments described herein.

According to various embodiments, the computer1502may operate in a networked environment using logical connections to remote computing devices and computer systems through the network108. The chipset1506includes functionality for providing network connectivity through a network interface controller (“NIC”)1512, such as a gigabit Ethernet adapter. The NIC1512is capable of connecting the computer1502to other computing devices over the network108, such as the customer computer104, the data storage system128, other application servers122, and the like. It should be appreciated that any number of NICs1512may be present in the computer1502, connecting the computer to other types of networks and remote computer systems.

The computer1502may be connected to a mass storage device1518that provides non-volatile storage for the computer. The mass storage device1518may store system programs, application programs, other program modules, and data, which are described in greater detail herein. The mass storage device1518may be connected to the computer1502through a storage controller1514connected to the chipset1506. The mass storage device1518may consist of one or more physical storage units. The storage controller1514may interface with the physical storage units through a serial attached SCSI (“SAS”) interface, a serial advanced technology attachment (“SATA”) interface, a fiber channel (“FC”) interface, or other standard interface for physically connecting and transferring data between computers and physical storage devices.

The computer1502may store data on the mass storage device1518by transforming the physical state of the physical storage units to reflect the information being stored. The specific transformation of physical state may depend on various factors, in different implementations of this description. Examples of such factors may include, but are not limited to, the technology used to implement the physical storage units, whether the mass storage device1518is characterized as primary or secondary storage, and the like. For example, the computer1502may store information to the mass storage device1518by issuing instructions through the storage controller1514to alter the magnetic characteristics of a particular location within a magnetic disk drive unit, the reflective or refractive characteristics of a particular location in an optical storage unit, or the electrical characteristics of a particular capacitor, transistor, or other discrete component in a solid-state storage unit. Other transformations of physical media are possible without departing from the scope and spirit of the present description, with the foregoing examples provided only to facilitate this description. The computer1502may further read information from the mass storage device1518by detecting the physical states or characteristics of one or more particular locations within the physical storage units.

In addition to the mass storage device1518described above, the computer1502may have access to other computer-readable storage medium to store and retrieve information, such as program modules, data structures, or other data. It should be appreciated by those skilled in the art that computer-readable storage media can be any available media that may be accessed by the computer1502. By way of example, and not limitation, computer-readable storage media may include volatile and non-volatile, removable and non-removable media implemented in any method or technology. Computer-readable storage media includes, but is not limited to, RAM, ROM, erasable programmable ROM (“EPROM”), electrically-erasable programmable ROM (“EEPROM”), flash memory or other solid-state memory technology, compact disc ROM (“CD-ROM”), digital versatile disk (“DVD”), high definition DVD (“HD-DVD”), BLU-RAY, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store the desired information.

The mass storage device1518may store an operating system1520utilized to control the operation of the computer1502. According to one embodiment, the operating system comprises the LINUX operating system. According to another embodiment, the operating system comprises the WINDOWS® SERVER operating system from MICROSOFT Corporation of Redmond, Wash. According to further embodiments, the operating system may comprise the UNIX or SOLARIS operating systems. It should be appreciated that other operating systems may also be utilized.

The mass storage device1518may store other system or application programs and data utilized by the computer1502, such as the recurring delivery module124described above in regard toFIG. 1. In one embodiment, the mass storage device1518or other computer-readable storage media may be encoded with computer-executable instructions that, when loaded into the computer1502, may transform the computer from a general-purpose computing system into a special-purpose computer capable of implementing the embodiments described herein. These computer-executable instructions transform the computer1502by specifying how the CPUs1504transition between states, as described above. According to one embodiment, the computer1502may have access to computer-readable storage media storing computer-executable instructions that, when executed by the computer, perform the routines1200,1300, and1400for providing recurring delivery of products to a customer on a periodic basis, as described above in regard toFIGS. 12-14.

The computer1502may also include an input/output controller1522for receiving and processing input from a number of input devices1524, such as a keyboard, a mouse, a touchpad, a touch screen, an electronic stylus, or other type of input device. Similarly, the input/output controller1522may provide output to a display device1526, such as a computer monitor, a flat-panel display, a digital projector, a printer, a plotter, or other type of output device. It will be appreciated that the computer1502may not include all of the components shown inFIG. 15, may include other components that are not explicitly shown inFIG. 15, or may utilize an architecture completely different than that shown inFIG. 15.