Guides

Swell products have four basic product types: physical, virtual, bundle, and gift card. Each type has a distinct way of operating within the API. Each type has unique dashboard UI fields and setting configurations. You can use any of the default product types to build your own custom product types.

These are tangible products that exist in the real world. They either need to be shipped to the customer or picked up at a store location. Physical products have shipping details like weight and package dimensions. They can have inventory tracking enabled if desired.

Set delivery="shipment" to create a physical product.


Digital products exist only in the virtual realm and are either delivered digitally or used for billing services. It's up to you to deliver that product or service to the customer. Virtual products have no shipping details, but they can have inventory tracking enabled.

Set virtual=true to create a virtual product.


Bundle products are made up of multiple products from your catalog. These are ideal for selling kits or combinations of products together. Bundle products appear in carts as a single product and can have inventory tracking for both the bundle itself and the products contained within it. Bundles can be any combination of physical, virtual, and gift card product types. Each product within a bundle needs its own fulfillment method

Set bundle=true to create a bundle product.


Gift card products work like customer credit, which can be applied to later orders. These products have enumerated denominations chosen by the purchaser. Gift cards can either be delivered digitally or physically, and they do support inventory tracking.

Set delivery="giftcard" to create a gift card product.

Gift cards act as a payment method and are stored in a customer's account as credit. This credit can be applied to purchases directly from their account balance during checkout. They do not operate like promotions and will not affect the order total.


You can use any of these product types as the basis for creating a custom type. Custom product types can group together products with similar characteristics. You can define the custom type's attributes, categories, options, variant settings, and more—allowing you to streamline the process for creating new products and ensuring consistency across product families within your catalog.

The only required field when creating a new product is name. Swell automatically creates a URL-friendly slug based on the product's name. You can substitute this slug in place of the id when fetching the product in an API call.

Product attributes are a first-class feature in Swell, and they support a variety of data types like text, image, file, and number. When creating a product, you can assign existing attributes or define new ones. Attributes can be used as filters when fetching products and can be further specified as to whether they are displayed on the product page.

Use categories to relate and organize products together. Product categories can also be nested within one another, meaning a category can contain several sub-categories. This allows for additional organizational flexibility.

Designate the product sku (stock keeping unit) for inventory tracking purposes.

Product options define choices for a product that the customer chooses from. Some common examples of product options are size and color. Swell offers a variety of product option types including select, toggle, and text.

Product variants are an instance of a product that has a specific combination of options. Variants can have their own pricing, images, shipping properties, and inventory tracking. When variables=true, Swell automatically generates variants for products from all options that have variant=true. These entries are paginated, and there is no technical limit on the number of variants per product. Please be aware that high variant counts might affect performance. When creating product variant options, attributes of the same name will also be created if they do not already exist. This assists in filtering for the variant options within a UI that uses attributes as the filtering mechanism.

Basic pricing functionality provides the ability to designate the list price for the product and its sale_price. The list price specifies the default price of a product. When enabled, the sale_price overrides the default price.

Swell also allows for additional price rules. Through these, you can manage the product price for particular customer groups in addition to minimal and maximum quantities.

Designate which products a customer would see when on a particular product page by designating additional products as up_sells or cross_sells.