Argument productOptions in processBundle

According to the documentation for the Infusionsoft shopping cart URL parameters, the processBundle interface supports a productOptions parameter. Unfortunately, as far as I can tell supplying a value for productOptions seems to fail silently.

Here is a demo using the addProduct interface to illustrate adding a “T-shirt” with the “Color” option “Red”:

Here is a version using processBundle which should produce the same result:

However, when the T-shirt gets added via processBundle, the Color option gets ignored.

Have I got the syntax for productOptions wrong or something?

(What I am ultimately trying to do is create a web form on my own site where people can select multiple products with multiple product options, and then to send all that information to the Infusionsoft shopping cart in one go.)


This answer might help explain a little more: Purchase Links / Shopping Cart / URL Parameters / Custom StoreFront - #2 by JonSmith

In short this is what the link would come to:


The addProduct URL works with product options, but it can only handle one product at a time. I need to make processBundle work, so that we can process multiple products at once.

The issue is that we need to support a complex interface for selecting products. The app is actually an awards program, where people are registering for multiple categories and need to submit some auxiliary information about their entries.

The desired workflow is to have the applicant interact with a carefully designed custom form on our main webite, entering their info once and then checking multiple awards categories; when they submit the form, we use a little bit of JavaScript to build up the arguments to processBundle in order to get everything into the Infusionsoft shopping cart.

Unfortunately, I haven’t figured out how to get processBundle to recognize the productOptions argument.

is what you appear to be after. What happens when you use the exact same query string from above


Either one should be functioning the same way and I’m getting the same result. What am I missing here? The issue with your link above is the the productOptions in your processBundle link isn’t a valid productOption. You are also missing the productOptionId from the query string.

I started hacking out links like this but it got to be overwhelming to manage surprisingly quickly. How many product and options are you looking to setup? Are you using WordPress? I have a plugin that syncs all your products w/ their options out to WordPress automatically so you can create your own storefront.

Hi Jon… The processBundle interface requires a different set of arguments from addProduct, so that query string won’t work with processBundle.

My goal is to get to the point where we can support adding multiple products at once. Following the documented interface, adding both a blue shirt and a red shirt simultaneously should look like this:,68&productQuantity=1,1&productOptions=68_8_14,68_8_16

However, that link adds two shirts while ignoring that one should be blue and one red.

The documentation for processBundle appears to be wrong – productOptions doesn’t work.

Hi Kevin… The task on our end is pretty contained, and I’m a software engineer by trade, so the coding isn’t a big challenge. However, the limitations of passing auxiliary product information through Infusionsoft seem to be a blocking issue for us, and we’ll have to start looking to alternatives. What’s your plugin?

Our awards registration form has to capture:

  • 15 “Division 1 Awards Category” products, each with two product options.
  • 15 “Division 2 Awards Category” products, each with two product options.
  • Application Contact information
  • Agency Contact information (for third-party submissions)

There are a few quirks I’m leaving out for brevity’s sake, and the structure is not set in stone. But that scenario conveys the two limitations that are making things difficult in Infusionsoft:

  • Can’t process multiple products with options.
  • Can’t capture form data with the “Web form submittted” Campaign Builder goal beyond what’s in the fields of a single Contact.