JavaScript Decision SDK
This page describes the JavaScript Software Development Kit for Kevel Decision & UserDB APIs. You will find examples that you can use for client-side and server-side applications using TypeScript or JavaScript.
Installation
Server-Side via NPM
To install the Kevel Decision SDK, you must have Node.js v10 or higher installed.
npm install --save @adzerk/decision-sdk
Client-Side via CDN
To fetch the latest version of the Decision SDK using the CDN, run the command below.
<script src="https://unpkg.com/@adzerk/decision-sdk/dist/adzerk-decision-sdk.js"></script>
If you are using a fixed version, run the following command:
<script src="https://unpkg.com/@adzerk/[email protected]/dist/adzerk-decision-sdk.js"></script>
Examples
Fetching an Ad Decision
import { Client } from "@adzerk/decision-sdk";
// Demo network, site, and ad type IDs; find your own via the Adzerk UI!
let client = new Client({ networkId: 23, siteId: 667480 });
let request = {
placements: [{ adTypes: [5] }],
user: { key: "abc" },
keywords: ["keyword1", "keyword2"]
};
client.decisions.get(request).then(response => {
console.dir(response, { depth: null });
});
Recording Impression & Clicks
Use with the fetch ad example above.
// Impression pixel; fire when user sees the ad
client.pixels.fire({ url: decision.impressionUrl });
// Click pixel; fire when user clicks on the ad
// status: HTTP status code
// location: click target URL
client.pixels.fire({ url: decision.clickUrl }).then(r => {
console.log(`status ${r["status"]}; location: ${r["location"]}`);
});
UserDB: Reading User Record
import { Client } from "@adzerk/decision-sdk";
// Demo network ID; find your own via the Adzerk UI!
let client = new Client({ networkId: 23 });
client.userDb.read("abc").then(response => console.log(response));
UserDB: Setting Custom Properties
import { Client } from "@adzerk/decision-sdk";
// Demo network ID; find your own via the Adzerk UI!
let client = new Client({ networkId: 23 });
let props = {
favoriteColor: "blue",
favoriteNumber: 42,
favoriteFoods: ["strawberries", "chocolate"]
};
client.userDb.setCustomProperties("abc", props);
UserDB: Forgetting User Record
import { Client } from "@adzerk/decision-sdk";
const apiKey = process.env.ADZERK_API_KEY;
// Demo network ID and API key; find your own via the Adzerk UI!
let client = new Client({ networkId: 23, apiKey });
client.userDb.forget("abc");
Decision Explainer
import { Client } from "@adzerk/decision-sdk";
const apiKey = process.env.ADZERK_API_KEY;
// Demo network, site, and ad type IDs; find your own via the Adzerk UI!
let client = new Client({ networkId: 23, siteId: 667480 });
let request = {
placements: [{ adTypes: [5] }],
user: { key: "abc" },
keywords: ["keyword1", "keyword2"]
};
const options = {
includeExplanation: true,
apiKey
};
client.decisions.get(request, options).then(response => {
console.dir(response, { depth: null });
});
Using CNAME
When using CNAME, you can use this syntax, where your CNAME is engine.yourdomain.com
:
let client = new AdzerkDecisionSdk.Client({ networkId: 10328, siteId: 1157752, host: "engine.yourdomain.com" });
Sending User Agent When Firing Impression Pixels
When you want to send a user agent when firing impression pixels, use the command below.
client.pixels.fire(
{ url: 'pixel url here' },
{ userAgent: navigator.userAgent }
)
Updated 4 months ago