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 }  
)