The Kevel integration connects the Prebid Sales Agent to the Kevel (formerly Adzerk) ad serving platform. Kevel is designed for native and display advertising and is commonly used by publishers building custom ad experiences, retail media networks, and social platforms.
The adapter is identified by adapter_name: "kevel" and is implemented in a single module at src/adapters/kevel.py.
Before configuring the Kevel integration, ensure you have:
The Kevel adapter is configured through the Admin UI. Navigate to Settings > Ad Server and select Kevel as the adapter type.
| Setting | Type | Required | Description |
|---|---|---|---|
network_id |
integer | Yes | Your Kevel network ID |
api_key |
string | Yes | Kevel API key for authentication |
userdb_enabled |
boolean | No | Enable Kevel UserDB for audience targeting (default: false) |
frequency_capping_enabled |
boolean | No | Enable frequency capping on flights (default: false) |
In the Admin UI adapter config JSONB field:
{
"network_id": 12345,
"api_key": "your-kevel-api-key",
"userdb_enabled": false,
"frequency_capping_enabled": true
}
| Channel | Description |
|---|---|
social |
Social media and social-style content feeds |
retail_media |
Retail media network placements (sponsored products, sponsored listings) |
| Media Type | Description |
|---|---|
display |
Standard banner ads and rich media |
native |
Native ad formats that match surrounding content |
| Device Type | Description |
|---|---|
mobile |
Mobile phones |
desktop |
Desktop and laptop computers |
tablet |
Tablets |
| Capability | Supported | Notes |
|---|---|---|
| Inventory Sync | No | Inventory is managed directly in Kevel |
| Inventory Profiles | No | Not applicable to Kevel’s architecture |
| Custom Targeting | Limited | Via Kevel’s site and zone targeting |
| Geo Targeting | Limited | Kevel supports country and region-level geo targeting |
| Dynamic Products | No | Products are statically configured |
| Pricing Models | Subset | CPM and flat-rate pricing |
| Webhooks | No | Use polling for delivery data |
| Real-Time Reporting | No | Reporting pulled on demand |
The Kevel adapter supports a subset of targeting dimensions. Targeting rules are validated by the adapter before being sent to the Kevel API.
The adapter includes _validate_targeting() and _build_targeting() methods that:
Kevel supports frequency capping at the flight level only. Campaign-level frequency capping is not available.
frequency_capping_enabled: true in the adapter configuration. When disabled, no frequency caps are applied even if media buy requests include them.
When enabled, frequency caps are set on individual flights (Kevel’s equivalent of line items) and control how many times a single user sees an ad within a specified time window.
Compared to the GAM adapter, the Kevel integration has the following limitations:
| Area | Limitation |
|---|---|
| Channels | Only social and retail_media (vs. 5 channels in GAM) |
| Media Types | Only display and native (no video or audio) |
| Targeting | No metro-level targeting, limited geo granularity |
| Inventory Sync | Not supported — inventory must be managed in Kevel directly |
| Inventory Profiles | Not supported |
| Frequency Capping | Flight-level only, not campaign-level |
| Dynamic Products | Not supported |
| Reporting | Basic delivery metrics; no equivalent to GAM’s advanced report builder |
These limitations reflect the differences between Kevel’s API capabilities and those of a full-featured ad server like Google Ad Manager. For use cases centered on native advertising, retail media, and social feeds, Kevel provides a streamlined and effective integration.
| Error | Cause | Resolution |
|---|---|---|
AuthenticationError |
Invalid API key | Verify the api_key in adapter config |
NetworkNotFound |
Incorrect network ID | Check network_id matches your Kevel account |
UnsupportedTargeting |
Requested targeting not available in Kevel | Review the targeting dimensions supported by the Kevel adapter |
FrequencyCappingDisabled |
Frequency cap requested but not enabled | Set frequency_capping_enabled: true in config |