Skip to main content
Tracking Clickbank upsell flows
Zeno avatar
Written by Zeno
Updated over a week ago

If you're using Clickbank, chances are you may be experimenting with "PitchPlus" upsell flows.

Tracking these is (kinda) straightforward and just requires building out a similar funnel in FunnelFlux that mirrors your PitchPlus flow.

As an important precursor, you will need this document from Clickbank that explains how to use the flows on their side.

This is what the basic PitchPlus upsell flow looks like:

What we want to do in FunnelFlux is replicate that and use action links 1/2 for accept and decline pathways. 

In the above diagram we can click add offer and use these action URLs at each step for the pitch page URL.

Let's take a look at the example flow we made for Clickbank in the other article:

Configuring the funnel

I am going to assume you'll use the full 3 steps of upsell and will present the same offer whether they decline or accept.

Note: these must be offer pages, as each one can convert, and we want the action clicks to trigger those conversions.

Here is my initial updated funnel:

For each offer page you'll want to configure the URL to be whatever your product's upsell page is. We'll get to the accept/decline links later.

You should also make sure all these offer pages use https and 301/307 redirect modes.

Configuring the Pitch URLs (action links)

Look at the above funnel diagram. You can see the upsell 1, 2, and 3 offer nodes correspond to the ones in the Pitchplus diagram in Clickbank.

For each of the Clickbank Upsell offers, what we need to do is give the action link that takes the user to this node, i.e. the action that comes before the offer in the FunnelFlux configuration.

In the above diagram I am using Action 1 as accept and Action 2 as decline.

So, for the first upsell, I will right click on Action 1 between CB Offer X - Checkout and CB Offer X - Upsell 1 and get the action's URL, with organic parameters included.

Set this to the pitch plus URL of the first Upsell in Clickbank.

For each additional upsell, get the action link that connects the previous node to the upsell in question, with the organic parameters turned on.

Additionally, for any Action 1 links in the three levels - i.e. 

  • between the checkout page and upsell 1, 

  • between upsell 1 and upsell 2

  • between upsell 2 and upsell 3

... double click the action and toggle "this action is a conversion". This way the action 1 accept pathways will trigger conversions, the action 2 links will not.

Configuring the accept/decline links on the upsell offer pages

In the simple situation where we have a single offer and no upsells, our pitch page was able to use an action link that lead to an offer, which had the Clickbank payment link as its URL.

With the upsells our upsell pages have to be a bit different as we have multiple pages chaining together in a sequence.

In the PitchPlus settings we have already given our action links as the Pitch URLs for the accept/decline nodes, so we won't use action links on most of our upsell pages -- otherwise we'd have no point where we actually tell Clickbank that a user accepted or declined and they wouldn't process the payments.

The exception: the final upsell page in the flow - they will do something different, as detailed below.

So, on each non-terminal upsell page we need to use their accept and decline links, which are detailed in their documentation here.

For an accept link, it would look like:

and for a decline link:

It is up to you to make sure you use the appropriate Clickbank accept/decline link depending on what they are purchasing on this upsell page.

When the user accepts or declines, they would then be sent to the next Pitch URL define in your upsell flow, which would be a FunnelFlux action link.

For the accept pathway we'd load action 1 links and trigger a conversion, for decline links we'd load an action 2 link and trigger no conversion.

Tracking accepts/declines on the final upsell pages

On the final upsell pages in any branch we have to flip things up a little bit.

If we just used the Clickbank accept/decline link, Clickbank would receive that answer and send the user to the thank you page. When that happens, we'd have no easy way of telling FunnelFlux whether the user declined or accepted.

So, here we will reverse things and send the user to FunnelFlux first with an action link, which will go to accept/decline offers that use the Clickbank accept/decline URLs.

These offer nodes are a bit silly in that they won't convert themselves but make it easy for us to see the flow of traffic and track conversions. We want every accept/decline step to be visually tracked in the funnel after all.

So, I will create two new offers:

  • CB Offer X - Upsell 3 decline

  • CB Offer X - Upsell 3 accept

Then I'll modify my funnel to look like this at the end:

Looking complex! But don't be fooled, this is just because we want each node to link action 1 to the accept offer and action 2 to the decline offer.

We have to do this otherwise the nodes would be left without outgoing action pathways, and we don't want that.

Additional step: be sure to double-click all the Action 1 links and mark these as a conversion.

What do we use for the upsell decline/accept URLs?

For these you will need to use the usual Clickbank accept and decline links, in the same way you were using them in the buttons on the previous upsell pages -- now they are just the URL of the offer in FunnelFlux instead.

Using the The CBF Session Identification Parameter

This parameter is used to ensure the PitchPlus flow works for users who are not using cookies. This apprently accounts for a significant percentage of users so it's worth configuring this to be used.

You can read Clickbank's documentation here.

So, how does this work?

When the user first goes through the checkout and are redirected to Upsell #1, Clickbank passes a cbf parameter to the URL of the PitchPlus page.

You can turn this on in your PitchPlus config:

What we need to do is grab that parameter and carry it through the flow so that we can always append it to the Clickbank payment URLs - i.e. they would look like:

This is quite easy to accomplish using the accumulated URL params feature.

So how do we set that up?

Firstly, Clickbank will send users to this URL:

We want FunnelFlux to pass on the cbf=value part to the offer URL. So, for each upsell offer, including the final accept/decline ones, double click the offer and turn on this option:

Secondly, in each upsell page you need to be sure to append this cbf=value part to the accept/decline links, whether they are Clickbank or FunnelFlux action links, it has to be appended to them.

You can do this on your upsell pages using PHP or Javascript.

Using PHP

To do this, you can add <?php echo $_GET['cbf']; ?>  to your link, e.g.

This will require the page to be hosted in an environment that can process PHP, so you'd need the page to be on your own server, not running on a CDN.

Using Javascript

This is better for most people since you don't require server-side processing by PHP.

With Javascript, you will want to first add a unqiue class to your outgoing accept and decline links (or FunnelFlux action links) so we can tell JS to modify it, e.g.

<a class="outgoing-link" href="">Some Button/Link Here</a>

Secondly, we can add Javascript to modify this link. Unlike PHP it's not easy to write Javascript inside HTML tags, so it's better we modify the href property of the "outgoing-link" class.

The following code would append cbf=value  to the link:

Firstly place jQuery in your page <head> if not already present:

Secondly place the following code near </body>

function getURLParameter(name) {
    return decodeURI(
        (RegExp(name + '=' + '(.+?)(&|$)').exec(||[,null])[1] || ''


function appendCBFtoLinks()
    if (typeof getURLParameter('cbf') !== 'undefined') {
        $("a.outgoing-link").attr('href') + '&cbf=' + getURLParameter('cbf'));


This will find all links with class = outgoing-link and will append the cbf parameter to them, provided that parameter is present in the URL.

Changes to the original product's settings and the thank you page

Lastly, you may want to make a minor modification to your core product settings - the one that is sending people to the upsell flow after purchase.

If following the other Clickbank guide you will likely have a FunnelFlux action URL as the thank you page, with organic parameters encoded.

However, with the PitchPlus approach, the user will at the end be sent to your final accept/decline offers, and Clickbank will then redirect them to an order confirmation page that lists out links to the thank you pages for each product bought.

This is a little awkward, as those products might have thank you pages configured that are using FunnelFlux action links from entirely separate funnels!

These links will still work though - the final accept/decline offer nodes in your above funnel have no action links coming out of them right? So if a user then loaded an action link such as:

Which is what your other product thank you page links may look like, it will fall back and use the organic parameters as it can otherwise not provide an "Action 1" result.

This would however result in potential visits to action links that trigger additional conversions in other funnels, and that's no bueno!

How to resolve?

So, ideally you should make separate products for the upsell offers and the core product that is doing the upsells, so that they can all use independently configured thank you page URLs that are relevant to the above, complex upsell funnel.

This is only necessary if you have multiple funnels that would conflict.

Then, in your complex upsell funnel here, you can add lander nodes at the bottom for each thank you page, and you can get links to these using the "send traffic here" option. 

These nodes don't need to be connected to anything as the clicks are coming from a Clickbank order summary page that we can't control.

You could use them by linking the final accept or decline page to all these thank you page landers, then getting the action 1, 2, 3, 4 URLs with organic params for each one and using them as the thank you URLs for each offer.

However, this is a bit laborious unless you need to specifically pass some data e.g. traffic source custom fields, cbf, etc. to these pages.

Any questions?

Let us know how you get on and any issues you face. We are keen to update this documentation based on your experience - on our end we aren't Clickbank vendors so can't face every possible scenario you might, so any feedback is appreciated.

Did this answer your question?