# Advanced
The following are tips for advanced use cases.
# Override Properties
You may explicitly set or override properties
and have then be recalled even in subsequent user visits where the original or full context may not be available.
// Examples: bta('set{PropertyName}')
// Sets UserId. If property is not defined in subsequent
// data, it will still be populated from the previous value
// Note: getRequest() is just a placeholder function that
// returns the data like:
// return { currency: "USD", value: 1234.56}
bta('setUserId', "mynewuserid");
bta('download', {...getRequest(), userId: undefined});
# Send Data for Multiple Keys
You may send data to multiple keys
.
// multiple keys
bta('registerKey', '{{ KEY_1 }}');
bta('registerKey', '{{ KEY_2 }}');
bta('registerKey', '{{ KEY_3 }}');
bta('registerKey', '{{ KEY_1 }}');
// remove 'KEY 1' from receiving data
bta('unregisterKey', '{{ KEY_1 }}');
// will send data to both 'KEY_2' and 'KEY_3'
bta('lead', getRequest());
// send data only for 'KEY_1'
bta('viewitem', getRequest(), '{{ KEY_1 }}')
// send data event only for 'KEY_2'
bta('viewitem', getRequest(), '{{ KEY_2 }}')
# Selective Data for Multiple Keys
You may send different data to different keys
.
// send one event only for 'KEY_1'
bta('viewitem', getRequest1(), '{{ KEY_1 }}')
// send one event only for 'KEY_2'
bta('viewitem', getRequest2(), '{{ KEY_2 }}')
// send one event with the intial config key from
// the install/page load
bta('viewitem', getRequest1())
# Callbacks
If you need to run code after the data is sent, you may execute callbacks
.
// Run callback/execute code on success
function withcallbacksuccess() {
window['onBacktracksAttributionSuccess'] = function (result) {
console.log('Success:', result);
window['onBacktracksAttributionSuccess'] = undefined;
};
bta('purchase',
// ...
);
};
// Run callback/execute code on failure
function withcallbackfailure() {
window['onBacktracksAttributionFailure'] = function (result) {
console.log('Failure:', result);
window['onBacktracksAttributionFailure'] = undefined;
};
bta('addtocart',
// ...
);
};
# Delay Event Fires
If you want to delay the recording of events to do something like only track data for engaged visitors or after N seconds
on a page you can accomplish this by adding a delay
with setTimeout
.
// Delay by N seconds
var seconds = 5;
setTimeout(function() {
bta('viewitem',
// ...
);
}, seconds * 1000);
# Install Using IMG Tag or Pixel
In cases where you cannot execute JavaScript, you may install and run the Backtracks Attribution tracker with a HTML <img>
tag or pixel.
<img src="https://api.backtracks.fm/v1/attribution/image?k=YOUR_BT_KEY
&e=purchase
&d[transactionId]=dd5b098d-f628-4076-9b2a-7020e8fe1f57
&d[discountCode]=abc-123
&d[value]=1234.56
&d[currency]=USD"
height="1" width="1" style="display:none"/>
To fire a purchase
event for example, you may construct an event similar to the following, while passing in any custom parameters that are applicable to your scenario.
<img height="1" width="1" style="display:none"
src="https://api.backtracks.fm/v1/attribution/image?k=abc123&e=purchase&d[currency]=USD&d[value]=123.45&d[tax]=1.23&d[shipping]=1.24&d[transactionId]=67ebba62-5534-4048-b74a-9e6ff15bd90a" />
If the <img>
tag is loaded within an iframe
that is sandboxed with the sandbox
attribute, then allow-scripts
property must be added to the iframe
.
<iframe src="https://example.com/example-iframe-with-img-tag" sandbox="allow-scripts"></iframe>
# Track Ad Impressions via Serverside or API
Backtracks can track campaign and ad impression data for podcasts, streaming audio, digital radio, etc. for any ad campaign or ad buy. In cases where ads are served dynamically, through a listening platform, or pings for ad impressions can/should be sent serverside, the Backtracks Ad Impression API may be utilized. This is also called a tag/pixel.
If you are setting up or purchasing ads in a listening app or platform, you or your account manger may configure measurement and tracking calls to Backtracks for any of your ad campaigns and ads.
https://api.backtracks.fm/v1/tracking/pixel?k=YOUR_BT_KEY
&e=impression.listen
&d[campaignId]=79af8773-a058-4f6a-b31d-87d08aa072bb
&d[campaignName]=This%20Is%20A%20Campaign%20Name
&d[adId]=dd5b098d-f628-4076-9b2a-7020e8fe1f57
&d[adName]=Podcast%20A%20Ad%20Version%201
&d[seriesName]=Example%Series
&d[episodeName]=Example%20Episode
&ua=Mozilla/5.0%20(Macintosh;%20Intel%20Mac%20OS%20X%20x.y;%20rv:42.0)%20Gecko/20100101%20Firefox/42.0
&uip=89.21.235.86
&cachebuster=4ebac87306df
TIP
If you cannot perform the setup steps directly (some listening apps or platforms will have an account manager set this up), ask or send a link to this section to your account manager in the platform that you are purchasing or setting up advertising in to ask them to setup the Backtracks pixel/tag for your ads.
# Supported Pixel/Tag Parameters
The image pixel/tag or serverside API pixel/tag methods of tracking support the following parameters (typically sent as querystring parameters).
Parameter Name | Description | Required |
---|---|---|
k | Backtracks Tracking or Project Key | Yes |
e | Event name, set to "impression" (without quotes) | Yes |
d[campagnId] | Campaign identifier | Optional |
d[campaignName] | Campaign name | Optional |
d[adId] | Ad identifier | Optional |
d[adName] | Ad name or description, i.e. Ad In Podcast A | Optional |
d[seriesId] | Id that represents the series identifier | Optional |
d[seriesName] | Name or title of the series or show | Optional |
d[episodeId] | Id that represents the episode identifier | Optional |
d[episodeName] | Name or title of the episode | Optional |
ua | User-Agent (override) | Optional |
uip | User IP address (override) | Optional |
cachebuster | Cachebuster string that is sometimes used to prevent client caching on GET requests | Optional |
# Content Security Policy
If your website has implemented a Content Security Policy, allow JavaScript to load from https://c.backtracks.fm
and/or *.backtracks.fm
.