PHPackages                             tde/craft-commerce-product-bundles - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. tde/craft-commerce-product-bundles

ActiveCraft-plugin[Utility &amp; Helpers](/categories/utility)

tde/craft-commerce-product-bundles
==================================

Combine multiple products into a purchasable bundle to sell these for a special price.

2.0.4(1y ago)02.0k2[5 issues](https://github.com/onyourmarks-agency/craft-commerce-product-bundles/issues)proprietaryPHPPHP ^8.0

Since Oct 29Pushed 1y ago3 watchersCompare

[ Source](https://github.com/onyourmarks-agency/craft-commerce-product-bundles)[ Packagist](https://packagist.org/packages/tde/craft-commerce-product-bundles)[ RSS](/packages/tde-craft-commerce-product-bundles/feed)WikiDiscussions master Synced yesterday

READMEChangelog (10)Dependencies (2)Versions (18)Used By (0)

Craft Commerce Product Bundles
==============================

[](#craft-commerce-product-bundles)

Plugin for [Craft CMS](https://craftcms.com/) with [Craft Commerce](https://craftcms.com/commerce)
--------------------------------------------------------------------------------------------------

[](#plugin-for-craft-cms-with-craft-commerce)

Combine multiple products into a purchasable bundle to sell these for a special price. Thanks to the inspiration coming from the existing [Commerce Bundles](https://plugins.craftcms.com/commerce-bundles) plugin, this plugin allows you to create bundles from products and not just their variants. Users can now order bundles and choose their desired variant, eg. shirt size M with trousers size L.

Requirements
------------

[](#requirements)

This plugin requires:

- Craft CMS 4 or later
- Craft Commerce 4.1 or later

Installation
------------

[](#installation)

This plugin can either be installed through the Plugin Store or using Composer.

### Plugin Store

[](#plugin-store)

- In the Craft Control Panel, go to Settings -&gt; Plugins
- Search for 'Commerce Product Bundles'
- Hit the "Install" button

### Composer

[](#composer)

1. Open your terminal and go to your Craft project:

    ```
     cd /path/to/project

    ```
2. Download the plugin using Composer

    ```
     composer require tde/commerce-product-bundles

    ```
3. In the Craft Control Panel, go to Settings → Plugins
4. Hit the "Install" button for 'Commerce Product Bundles'.

Usage
-----

[](#usage)

The "Product bundles" navigation item will be added in the subnav of Commerce. Add your desired bundles and set the new price. Through the plugin settings it is also possible to add custom fields to enhance the user experience of the bundles and provide more information.

[![Add product bundle in CP](https://github.com/tdeNL/craft-commerce-product-bundles/raw/master/resources/screenshot-cp.png?raw=true)](https://github.com/tdeNL/craft-commerce-product-bundles/blob/master/resources/screenshot-cp.png?raw=true)

### Twig example

[](#twig-example)

The plugin is designed to promote product bundles from within the product detail page. When viewing product A, the user may be encouraged in buying a bundle containing product A and product B. The Twig example below illustrates how to render bundles in a product detail page:

[![Twig example](https://github.com/tdeNL/craft-commerce-product-bundles/raw/master/resources/screenshot-twig.png?raw=true)](https://github.com/tdeNL/craft-commerce-product-bundles/blob/master/resources/screenshot-twig.png?raw=true)

```
{# templates/shop/products/_entry.html #}

{% set productBundles = craft.commerceProductBundles.getProductBundles(product) %}
{% if productBundles|length %}
    Bundle tips
    {% for productBundle in productBundles %}

            {{ csrfInput() }}
            {{ redirectInput('shop/cart') }}
            {{ hiddenInput('action', 'commerce/cart/update-cart') }}
            {{ hiddenInput('qty', 1) }}
            {{ hiddenInput('purchasableId', productBundle.id) }}

            {{ productBundle.title }}

            {% for product in productBundle.getProducts() %}
                {{ product.title }}

                {% if product.variants|length > 1 %}

                        {% for purchasable in product.variants %}
                            {{ purchasable.description }}
                        {% endfor %}

                {% else %}
                    {{ hiddenInput('options[productBundleProductsVariantIds][]', product.variants[0].id) }}
                {% endif %}

                {% if not loop.last %}
                    +
                {% endif %}
            {% endfor %}

            {{ productBundle.price|commerceCurrency(cart.currency) }}
            Add to cart

    {% endfor %}
{% endif %}

```

Make sure to disable product variants if they are out of stock.

### Field type

[](#field-type)

Since 1.0.3 there is also a custom field type available to add product bundles directly into your content.

---

Brought to you by [TDE](https://www.tde.nl/en)

###  Health Score

37

—

LowBetter than 83% of packages

Maintenance34

Infrequent updates — may be unmaintained

Popularity17

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity71

Established project with proven stability

 Bus Factor1

Top contributor holds 79.5% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~147 days

Recently: every ~155 days

Total

13

Last Release

620d ago

Major Versions

1.1.2 → 2.0.02022-11-24

1.1.3 → 2.0.42024-08-30

### Community

Maintainers

![](https://www.gravatar.com/avatar/4b2aa8d40c0c2a030783f3ffa433d7e4c7dcc05998485530fbfb305cd74e1c1b?d=identicon)[tde](/maintainers/tde)

---

Top Contributors

[![jerome2710](https://avatars.githubusercontent.com/u/4600095?v=4)](https://github.com/jerome2710 "jerome2710 (35 commits)")[![jordikroon](https://avatars.githubusercontent.com/u/2232811?v=4)](https://github.com/jordikroon "jordikroon (6 commits)")[![rvgool-oym](https://avatars.githubusercontent.com/u/103516738?v=4)](https://github.com/rvgool-oym "rvgool-oym (3 commits)")

---

Tags

craft-commercecraft-plugincraftcms

### Embed Badge

![Health badge](/badges/tde-craft-commerce-product-bundles/health.svg)

```
[![Health](https://phpackages.com/badges/tde-craft-commerce-product-bundles/health.svg)](https://phpackages.com/packages/tde-craft-commerce-product-bundles)
```

###  Alternatives

[spicyweb/craft-neo

A Matrix-like field type with block hierarchy

395798.1k10](/packages/spicyweb-craft-neo)[verbb/events

A full-featured plugin for event management and ticketing.

2311.7k](/packages/verbb-events)[verbb/vizy

A flexible visual editor field for Craft.

4348.6k](/packages/verbb-vizy)[verbb/social-poster

Automatically post entries to social media.

918.5k](/packages/verbb-social-poster)[verbb/icon-picker

A slick field to pick icons from. Supports SVGs, Sprites, Webfonts, Font Awesome and more.

16162.4k4](/packages/verbb-icon-picker)[craftcms/shopify

Shopify for Craft CMS

549.2k1](/packages/craftcms-shopify)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
