Demographic / Custom Properties

User targeting allows you to deliver more relevant ads by tailoring them to known attributes, behaviors, or audience memberships of individual users. Whether you’re aiming to improve ad performance, increase relevance, or enable high-value audience-based selling, user targeting gives you the tools to reach the right people at the right time.

While segment targeting is the recommended approach—using Kevel Audience or synced external systems like a CDP—you can also target users based on custom properties you collect and store in Kevel’s system. Demographic and custom property targeting works by associating key/value data with a user via a persistent UserKey. This data is saved in UserDB, Kevel’s platform for storing user-level information. You provide the data—such as age, gender, preferences, or browsing behavior—and Kevel uses it during ad delivery to determine if a user is eligible for a targeted ad.

Preferred Method: Segment Targeting

Segment targeting using Kevel Audience or a synced external system provides a scalable, centralized way to manage and apply user cohorts across campaigns.

This approach is particularly useful when targeting based on structured demographic information or behavioral signals collected through onboarding flows, surveys, or analytics. For example:

KeyValue
GenderMale, Female
Age18+, 30–39, 50+
Favorite WebsitePinterest, Hacker News
Logged In Count1, 5, 50+

All of this data is stored under the custom field in the user profile tied to a UserKey. To use it for targeting, your ad requests must include the same UserKey in the user.key field of the Decision API. You can then create targeting expressions based on these values at the flight or ad level using custom targeting syntax.

The sections below walk through how to send, store, and target on custom properties using Kevel’s API and UI.

Using API to Add Custom Properties to a User

To tie custom property data to a UserKey (the key field in UserDB), use the UserDB API Custom Property Endpoint.

Targeting Custom Properties

To target these segments, refer to our Custom Targeting and UserDB Reserved Keys docs.

Example queries:

UserDB Custom Property Key/ValueExample Custom Targeting Query
Age: 30$user.custom.age > 25
Gender: Female$user.custom.gender = "Female"
FavWebsite: Pinterest$user.custom.favwebsite contains "Pinterest"

Setting Up Custom Property Targeting – Flight Level

When creating flights via the Create Flight endpoint, include the Reserved Keys targeting string under the CustomTargeting parameter. You can also update CustomTargeting with the Update Flights endpoint.

Use Reserved Keys with the format $user.custom.[Key].

Example JSON request:

{
  "CampaignId":1234,
  "PriorityId":1325,
  "Name":"People Over 25-Years-Old",
  "StartDateISO":"2017-05-01T00:00:00.00.0000000",
  "GoalType": 1,
  "CustomTargeting":"$user.custom.gender = \"Male\""
}

Setting Up Custom Property Targeting – Ad Level

Use the Create Ads endpoint. Example:

{
    "CampaignId":123,
    "Creative":{
    "Id":12345
  },
    "FlightId":1234,
    "IsActive":true,
    "CustomTargeting":"$user.custom.age > 25"
}

Setting Up with UI

  • Flight-Level – Go to Flight Settings, click "Custom Targeting" on the left.
  • Ad-Level – Click on the Creative in the Flights page, put details under "Delivery Settings."
📘

Make sure to include a UserKey in the user.key field of the Decision API request. Without it, Kevel cannot match the user to stored demographic or custom data for targeting.