So, you are running a campaign and getting conversions from some affiliate network or product sale, but conversions are not showing in FunnelFlux.
Here I'll break down some troubleshooting steps to go through -- a thought process to follow.
Firstly, how are you triggering conversions?
There are two options - using a postback URL (server-to-server), or JavaScript. Let's go through the conversion flow for both of them.
Conversions via Postback URL
If you are tracking conversions via postback URL, there are several steps that need to happen for this to work successfully:
- You need to send users to an offer page via a redirect -- i.e. a tracking link generated by FunnelFlux or an action clickthrough link
- That offer page needs to pass our hit ID in its URL, using the
{hit}
token, which you'll likely configure in the data passing section of the offer source - The network/offer platform needs to capture and store that hit ID value
- The network/offer platform later need to send a postback to FunnelFlux that passes that stored value.
All of these things need to work correctly for a postback to trigger conversions.
Let's identify some common issues at each step.
Sending users to an offer page
You have an offer added in FunnelFlux, which sends users to some network/advertiser or even an offer page you control.
Here are some things to consider:
- Are you using an offer rather than a lander? Landers do not create hits that can directly convert
- In your funnel, if you use a lander that links out to an offer, are you using an action URL on the page for the clickthrough? Without this, it won't redirect through the tracker and no hit ID would be passed
- If you are linking from ad > offer using our redirect links, then you would be redirecting the whole way -- so all good there
- But to be foolproof... are you using the FunnelFlux URL in your ads, rather than the offer URL itself?
Next up, passing data to the offer/advertiser
So, now lets consider passing data to the offer itself.
In the data passing section (ideally), you are passing some parameter = our tracking ID, which has the token {hit}
You can check if the data passing is happening as expected by editing the offer --> data passing tab. Here you can see the data passing inherited from the offer source, on the offer directly, and the final resulting URL our system will redirect to:
- Are you indeed passing {hit} to the network/advertiser? This should be under the data passing section. We need to pass to the next system the hit ID of this offer, which is created on redirect (it does not exist until we try to load the offer itself)
- Is that hit being passed under a parameter name like clickid, s5, aff_sub3, etc. that the network's platform uses and captures data on?
- If you go to the network platform and their click reporting, can you report by that parameter and see the hit IDs from FunnelFlux coming through? If they are offer hits, they will always end with an "h"
- Sometimes the network doesn't let you report by click IDs. But if you can report by this parameter, you should see our hit IDs coming through. If you can't see them, then the network doesn't have the IDs, and there's no way they could send conversion to FunnelFlux -- and you have a data passing problem to fix.
The postback to FunnelFlux
Let's assume data passing is working fine, but still you don't have conversions appearing in FunnelFlux. Consider these points:
- Your hit IDs passed to the network -- check they end with "h", which will show they are offer hits rather than lander hits
- Your global postback URL is found in system settings. It is of this format:
https://DOMAIN/pb/?hit=HIT_ID&rev=REVENUE&tx=OPTIONAL_TXID
- Is this what you're using? Make sure the HIT_ID placeholder is replaced by a token like {click_id} that the network will dynamically replace with the passed hit ID for that user
- Make sure
REVENUE
is replaced by some number value or a token like #payout# that the network will replace with real conversion value - Do you have any typos in the postback URL? A missing
?
or&
could cause invalid syntax and a URL that doesn't work at all - If in doubt, you can ask us to look at our incoming postback logs to see what we are receiving and why it might not be working
That's all for troubleshooting postback-based tracking. It all relies on data passing from one system to another and correct use of tokens.
If anything is incorrect in this process like a broken URL, not passing an ID, or setting a postback URL incorrectly, then conversions won't appear.
These systems are programmatic and explicit, so they won't be able to interpret your mistakes and fix them, they will simply not do what you expect.
Conversions via JavaScript
Tracking conversions via JavaScript is quite different as there is no need for explicit data passing from system A to B, and importantly, it happens client-side.
Postback URLs are "server-side" tracking in that its not the converting user who sends the conversion request. But with JavaScript, its loading in the user's browser and is going to rely on the context in that browser.
Because of this, its inherently less reliable -- user's browser environments vary wildly and there are many things that get in the way of tracking, like browser standards, privacy restrictions, adblock plugins, and of course -- user's doing weird stuff.
Here's how you would generally tracking with JavaScript:
- Put our global header JS on all pages involved
- Put view tracking JS on every page, since you want to track views and it has helper functions to improve tracking in general (important!)
- When you want to convert a specific offer, go to edit that offer > conversion tracking > get the conversion tracking code
- Place that code where you want to trigger the conversion -- this is usually going to be the thank you page that comes after the actual offer, and you could also manually execute the script if you have the technical skills
Pretty typical -- but there are many reasons why this may not work, and a lot of it comes down to browser nuances and issues. Lets review some of the main reasons why this tracking will fail.
Issue 1: Your JavaScript isn't actually loading properly
For the conversion code to load, you still need our global header JS on the page before the conversion script.
If you don't have it, make sure to add it. It should only be present ONCE on any page.
If you can only place one block of code on a page, just put it before the conversion code. It's ideal if its in <head> but this is not critical, it just needs to come first.
If you want to test things more specifically, you can open your browser's web developer tools > network tab, clear everything then refresh the page and look at our requests. The easiest way to do this is filtering to the domain of your tracker.
You should see our lumetric.js load, then possible view event and a conversion event.
Here's an example on the funnelflux.com homepage:
Additionally if I click the "funnel" request I can inspect the response:
Tip: click the " { } " button in the bottom left of this panel in Chrome to format things.
Here, I can see how our tracker responded. It resolved a visitor ID, which means the tracking worked fine. If not, there should be an error message, which means something is not working quite right.
Issue 2: You aren't using the correct conversion code
When you go to offer settings > conversion tracking, there is JavaScript code specific to that offer, namely that it has the offer's ID included in the code under the "p" value.
If you have not used this code specifically, then your conversion event is not saying "I want to convert this exact offer".
It could be sending a different value and cause confusion, or it could have no value. In this case, FunnelFlux will try to identify the user and convert the most recently-visited offer.
Issue 3: The code is loading, but it can't identify the user
This is also quite possible, and will be clear if you inspect the conversion code response in the console/tools above.
If it says it can't find the funnel/visitor, then chances are it has lost track of the user's session.
This comes down to the challenges with client-side tracking... if it jumps multiple pages to get here, and is on some third-party website, chances are it will need to rely on cookies (are cookies enabled in your view-tracking code?).
There's no easy way around this limitation -- it impacts all JavaScript tracking, even the likes of Facebook and Google Analytics. This is why server-side tracking is often more reliable.
If these are pages you control, then you should try to ensure you pass "vid" between pages, which always happens with our redirects, and our JS automatically tries to append this visitor/session ID to action URLs. It's basically trying to keep track of the cookie value manually through the URL.
If VID is present in the current URL or the referrer, our JavaScript will try to find it, but this isn't always within your control.
On that note, if you control the pages but are using direct links between pages (not action URLs that redirect through the tracker), make sure to:
- Use our view tracking JS on all pages
- On the clickthrough links, add
data-lum="action"
attributes to them
On the latter point, our JS will also see these links and append data to them to improve tracking. So you can change:
<a href="/somepage">Some Link</a>
to
<a href="/somepage" data-lum="action">Some Link</a>
If you do this, our JS will add data to these links so that on the next page, the JS there has more context and is more reliable.
You can see this on the homepage of funnelflux.com -- if you inspect our page, you'll see that our links have all this data appended. But if you inspect the page source, those values don't exist!
Page source:
What happens in the browser on load:
See how all this extra stuff is added? That's our JS at work, making sure that when you click that link, the next page has all the context that this page created.
This is why its so useful to have our JS on all your pages, even if you don't need it and are using redirect links the whole way!