The product bundle feature in RevCent allows you sell a product which contains a bundle of products. This feature was created due to the need for notifying fulfillment of products contained in a bundle, rather than just the bundle product sold.
RevCent can unbundle the products when creating the sale, or only unbundle when notifying a fulfillment center. In either case, the fulfillment center will be notified of all unbundled products, and not the single bundle product.
In the case of subscription or trial products, they themselves can be a bundle, which notifies fulfillment of their bundled products when the subscription renews or trial expires.
You create a product and set it as a bundle, with bundled products contained within. A sale request is sent to RevCent containing a bundle product. RevCent checks the bundle product settings, specifically the unbundle method. The unbundle method determines whether:
(a) RevCent immediately unbundles the bundle product at time of sale, replacing the bundle product and selling the products contained within.
(b) RevCent proceeds as usual, selling the bundle product itself and only unbundles when notifying fulfillment.
In either case, the fulfillment center(s) will receive the unbundled products as the items to ship. You simply have the option to unbundle immediately at sale or not.
Read more about the difference between unbundle methods.
When setting a product as a bundle, you must select its child bundled products. It is important to note that you must specify the quantity and price of each bundled product. The total amount of all bundled products, when price and quantity of each are summed, must equal the parent bundle products' price.
The total amount of all child bundled products must equal the parent bundle product price due to:
The unbundle method is the most important part of setting up a product bundle. It affects when unbundling occurs, fulfillment notification and differences in metrics reporting.
Let's say you are selling a bundle product on your store, and you want RevCent to notify the fulfillment center with the products contained within the bundle. However, you do not want RevCent to unbundle the products until notifying fulfillment. This is the most common unbundle method. A subscription product or trial product can themselves be a bundle, which will unbundle at fulfillment when subscription renews or trial expires.
You may not want to unbundle at fulfillment only for the following reasons:
This is an advanced method. Think of unbundling at sale as selling an alias product (bundle product), which when received by RevCent during sale creation, immediately turns into the actual products bundled within. This is the recommended method if selling bundle products containing trial products, bundle products containing subscription products or bundle products containing products from separate fulfillment centers.
Important: This option only applies to selling a bundle product during an initial sale. If you want to sell a subscription and/or trial product which itself is a bundle, then use the fulfillment only method when applying bundle settings at the subscription or trial parent product.
Important caveats when unbundling at sale:
You may not want to unbundle at sale for the following reasons:
There are several ways to view bundled products in the web app.
When viewing a details page, such as sale details, you will see a list of Products Bundled underneath the Products Sold table. This indicates that a product purchased (Products Sold) was a bundle, and the Products Bundled list shows the bundled products contained within.
When viewing a list of items on a list page, you will notice a brown package icon. This indicates that the product is a bundle containing child products.
Click the brown package icon to view details on what the parent bundle product contains.
There are several ways to view the originating parent bundle product in the web app. Note: this would only occur if using the Unbundle At Sale method.
When viewing a details page, such as sale details, you will see a list of Bundle Products underneath the Products Sold table. This indicates that a product purchased (Products Sold) was part of a parent bundle. The Bundle Products list shows the originating parent product along with its unbundled products.
When viewing a list of items on a list page, you will notice a green package icon. This indicates that the product was a child product unbundled at sale.
Click the green package icon to view details on where the unbundled product originated from, i.e. its parent product.
You can sell a subscription or trial product in an initial sale, which when it renews and/or expires, RevCent will notify the fulfillment of the bundled products within. Useful when you want to sell bundle products on a recurring basis.
The process is the same as unbundle at fulfillment. When the bundle product renews or expires, RevCent notifies fulfillment of bundled products to ship, and any customer emails will contain the bundle product and not the products bundled.
Common questions about product bundles in RevCent. As always, feel free to contact us if you have any questions.
If you are unsure, pick Unbundle At Fulfillment Only.
Regardless of unbundle method, when a bundle product is sold, the products listed for the customer sale and shipping email(s) will be the parent bundle product purchased, and not the child bundled products. This is to avoid confusion for the customer, as they purchased the parent bundle product and not the child bundled products. We don't want the customer to purchase a bundle product, then get an email purporting that they purchased something else.
Advanced: you are able to access bundle products using custom_data in emails if Unbundle At Sale was the sales' unbundle method.
Yes. A subscription product can contain child bundled products. When the subscription renews, the fulfillment center will be notified to ship the child bundled products.
Yes. A trial product can contain child bundled products. When the trial expires, the fulfillment center will be notified to ship the child bundled products.
Yes. Multiple parent bundle products in a sale will unbundle according to bundle settings for each.
If you are using functions, flows, account events or custom_data in emails for post sale processing, it is important to note the item_details data. The item_details data contained will differ based on unbundle method.
For an unbundle method of Unbundle At Fulfillment, the products_detailed property will contain the parent bundle product purchased. If the product is a parent bundle as indicated by is_bundle: true, you will see the bundle_settings object, showing the child bundled products within.
In the example below, the customer purchased the Bundle Product, which is a parent product. The is_bundle: true indicates that there are child products (Laptop X400 and USB HDD) contained in the Bundle Product. We can access the child products via the bundle_settings.product array.
{
...,
"products_detailed": [
{
"id": "o1Od420avZsM1Klzvl8E",
"price": 199.99,
"quantity": 1,
"name": "Bundle Product",
"description": "Bundle Product.",
"total_amount": 199.99,
"discount_amount": 5,
"is_subscription": false,
"is_trial": false,
"internal_id": "bundle_internal_id",
"sku": "bundle_sku",
"uuid": "63b316c1-6391-4e29-9732-b1041539eabd",
"url": "",
"images": [],
"is_bundle": true,
"bundle_settings": {
"products": [
{
"quantity": 1,
"price": 99.99,
"product": {
"id": "qZd0dL5WL4fEGJKK824m",
"name": "Laptop X400",
"sku": "laptop_x400_sku",
"internal_id": "laptop_x400",
"is_trial": false,
"is_subscription": false,
"is_shippable": true
}
},
{
"quantity": 1,
"price": 100,
"product": {
"id": "k6EXjKzd7PHOpgvdYjXG",
"name": "USB HDD",
"sku": "usb_hdd_sku",
"internal_id": "usb_hdd",
"is_trial": false,
"is_subscription": false,
"is_shippable": true
}
}
]
}
],
...
}
For an unbundle method of Unbundle At Sale, the products_detailed property will contain the child bundled products. This is because the parent bundle product was unbundled at time of sale, and the child bundled products were ultimately purchased.
There will also be a bundle_products array, which lists the original bundle product that was extracted into the bundled products listed in products_detailed. The bundle_products array allows you to match parent bundle product with child bundled product in products_detailed, using the bundled_product_uuids array and uuid property respectively. Matching is especially useful if selling multiple parent bundle products in the same sale.
{
...,
"bundle_products": [
{
"bundled_product_ids": [
"6r8O5MLbw2t6n4v1lGqK",
"k6EXjKzd7PHOpgvdYjXG"
],
"bundled_product_uuids": [
"91bd5cf3-8a52-4106-98ab-8a8f500c7abb", // match with products_detailed[i].uuid
"85f2a414-bc16-485e-ae63-f1dd8bf2c6cd"
],
"description": "Bundle Product.",
"discount_amount": 5,
"id": "o1Od420avZsM1Klzvl8E",
"images": [
{
"id": "2tbo12yWYrARXM6Kg4QV",
"featured": true,
"file_name": "2tbo12yWYrARXM6Kg4QV",
"file_ext": "jpg",
"image_width": 612,
"image_height": 612,
"mimetype": "image/jpeg",
"base_url": "https://productimg.revcent.com",
"full_url": "https://productimg.revcent.com/2tbo12yWYrARXM6Kg4QV.jpg",
"compressed_extensions": [
"_resize_300",
"_resize_600",
"_resize_150"
]
}
],
"internal_id": "bundle_internal_id",
"is_subscription": false,
"is_trial": false,
"name": "Bundle Product",
"price": 199.99,
"quantity": 1,
"sku": "bundle_sku",
"total_amount": 199.99,
"url": ""
}
],
"products_detailed": [
{
"id": "k6EXjKzd7PHOpgvdYjXG",
"price": 100,
"quantity": 1,
"name": "USB HDD",
"description": "Great USB for data storage.",
"total_amount": 100,
"discount_amount": 2.5,
"is_subscription": false,
"is_trial": false,
"internal_id": "usb_hdd",
"sku": "usb_hdd_sku",
"uuid": "85f2a414-bc16-485e-ae63-f1dd8bf2c6cd", // match with bundle_products.bundled_product_uuids array
"url": "",
"images": []
},
{
"id": "6r8O5MLbw2t6n4v1lGqK",
"price": 99.99,
"quantity": 1,
"name": "AV 2017",
"description": "test",
"total_amount": 99.99,
"discount_amount": 2.5,
"is_subscription": true,
"is_trial": false,
"internal_id": "av_2017",
"sku": "av_2017_sku",
"uuid": "91bd5cf3-8a52-4106-98ab-8a8f500c7abb",
"url": "",
"images": []
}
],
...
}