Everything You Need to Build a World-Class Retail Media Network
The Retail Media CloudTM is the ultimate SaaS platform for building retail media networks that maximize your share of advertiser budgets.
Launch high-impact ads that your brands will love in as little as 14 days.
Trusted by innovative brands around the world
Introducing
The Retail Media CloudTM
Built for Retailers, Marketplaces, and eCommerce
Built for Retailers, Marketplaces, and eCommerce
The Retail Media CloudTM
Kevel Ad Server
Our full suite of composable ad serving APIs to power ad decisioning, campaign management, reporting, and catalog ingestion. Work via API or use our intuitive UI to power all of your owned inventory.
Kevel Audience
Our customer data platform that harnesses your first-party data into a single customer view for AI-powered segmentation, audience activation, and ad personalization.
The Retail Media CloudTM
Kevel Ad Server
Our full suite of composable ad serving APIs to power ad decisioning, campaign management, reporting, and catalog ingestion. Work via API or use our intuitive UI to power all of your owned inventory.
Kevel Audience
Our customer data platform that harnesses your first-party data into a single customer view for targeting segmentation, audience activation, and ad personalization.
Why Retailers Build on The Cloud
Safely Harness Your First-Party Data for Performance
Your ads, your way
Fast track your ad stack
Revenue that stays in your pocket
Soc 1 and 2 compliant
Don’t forfeit your data to use it
Bring your own ML models
Build beyond traditional ad formats
Sponsored Listings
Native Banner Companion
Video Sponsored Shelf
Email Banner
Digital In-Store
8598
<
50
ms
0
import adzerk_decision_sdk
# Demo network, site, and ad type IDs; find your own via the Kevel UI!
client = adzerk_decision_sdk.Client(23, site_id=667480)
request = {
"placements": [{"adTypes": [5]}],
"user": {"key": "abc"},
"keywords": ["keyword1", "keyword2"],
}
response = client.decisions.get(request)
print(response)
<!DOCTYPE >
<html>
<head>
<title>Kevel Decision API - JavaScript Request</title>
<script type="text/javascript" src="https://unpkg.com/@adzerk/decision-sdk/dist/adzerk-decision-sdk.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script type="text/javascript">
requestNativeAd = function() {
// Demo network, site, and ad type IDs; find your own via the Kevel UI!
let client = new AdzerkDecisionSdk.Client({
networkId: 23,
siteId: 667480
});
let request = {
placements: [{
adTypes: [5]
}]
};
client.decisions.get(request).then(response => {
let decision = response.decisions.div0[0];
// Inject ad contents into page
$("#div0").replaceWith(decision.contents[0].body);
$("#response").text(JSON.stringify(response));
$("#clickUrl").text(decision.clickUrl);
// Record the impression
client.pixels.fire({
url: decision.impressionUrl
});
}).catch(error => {
console.log("ERROR!", error.toString());
});
};
</script>
</head>
<body>
<h1>Kevel Native Ad Request</h1>
<p>Press the button to make an ad request, record the impression, and display both the internal JSON and HTML payload of the response. The response includes data like Impression URL, Click URL, Campaign ID, Metadata, and more. (Note: May not work if you're using an ad blocker).</p>
<button type="button" onclick="requestNativeAd()">Request Ad</button>
<hr />
<h4>Image:</h4>
<div id="div0">
<code>(Nothing yet; please click the button!)</code>
</div>
<h4>JSON Response:</h4>
<code id="response">(Nothing yet; please click the button!)</code>
<h4>Click URL:</h4>
<code id="clickUrl">(Nothing yet; please click the button!)</code>
</body>
</html>
package com.adzerk.examples;
import java.util.*;
import com.adzerk.sdk.*;
import com.adzerk.sdk.generated.ApiException;
import com.adzerk.sdk.generated.model.*;
import com.adzerk.sdk.model.DecisionResponse;
public class FetchAds {
public static void main(String[] args) throws ApiException {
// Demo network, site, and ad type IDs; find your own via the Kevel UI!
Client client = new Client(new ClientOptions(23).siteId(667480));
Placement placement = new Placement().adTypes(Arrays.asList(5));
User user = new User().key("abc");
DecisionRequest request = new DecisionRequest()
.placements(Arrays.asList(placement))
.keywords(Arrays.asList("keyword1", "keyword2"))
.user(user);
DecisionResponse response = client.decisions().get(request);
System.out.println(response.toString());
}
}
import { Client } from "@adzerk/decision-sdk";
// Demo network, site, and ad type IDs; find your own via the Kevel 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 });
});
require "adzerk_decision_sdk"
# Demo network, site, and ad type IDs; find your own via the Kevel UI!
client = AdzerkDecisionSdk::Client.new(network_id: 23, site_id: 667480)
request = {
placements: [{ adTypes: [5] }],
user: { key: "abc" },
keywords: ["keyword1", "keyword2"],
}
pp client.decisions.get(request)
(ns example-ad-request
(:import (com.adzerk.sdk Client ClientOptions)
(com.adzerk.sdk.generated.model DecisionRequest Placement User)))
(defn -main []
; Demo network, site, and ad type IDs; find your own via the Kevel UI!
(let [client (Client. (doto (ClientOptions. (int 23)) (.siteId (int 667480))))
request (doto (DecisionRequest.)
(.placements [(doto (Placement.) (.adTypes [5]))])
(.keywords ["keyword1" "keyword2"])
(.user (doto (User.) (.key "abc"))))
response (-> client (.decisions) (.get request))]
(println response)))
curl -H 'Content-Type:application/json' \
-X POST \
-d '{"placements":[{
"divName":"div1",
"networkId":23,
"siteId":667480,
"adTypes":[5]}],
"user":{"key":"abc"}}' \
\
https://e-23.adzerk.net/api/v2