With Kevel, you can pair video, image, and text elements with a selection of promoted products. Layout, creative assets, and appearance are completely customizable with [creative templates](https://dev.kevel.com/docs/creative-templates) and server-side integration.

You will also be able to identify the purchase events associated with products, category + brand combination, and/or brands that should be attributed back to each ad, given the goals for that campaign.

# Example sponsored brands placements

Here are some examples of sponsored brands placements you can create with Kevel.

### Brand video + products

### Brand image + logo + tagline + products

### Logo + tagline + products

# Structure within Kevel

In Kevel, each sponsored brands ad is created as a single [creative](https://dev.kevel.com/docs/creatives) and [ad](https://dev.kevel.com/docs/ads) within a [flight](https://dev.kevel.com/docs/flights), which lives within a [campaign](https://dev.kevel.com/docs/campaigns).

The **creative** holds data as defined in the structure of your creative template. This will include:

- Creative assets such as brand logo, lifestyle image, and brand video
- String, number, and URL data such as taglines, brand names, and click-through links
- An array of product IDs eligible to serve within the sponsored brands placement

### Attribution settings

[Attribution](https://dev.kevel.com/docs/attribution-overview) is an important selling point for sponsored brands placements. Using Kevel’s attribution engine requires:

1. Syncing a product catalog with Kevel using [Kevel Catalog](https://dev.kevel.com/docs/catalog), and
2. Sending Kevel purchase events for sales transactions.

#### Attribution settings in campaign setup

On the **flight**, you will specify the post-view and/or post-click [lookback window](https://dev.kevel.com/docs/attribution-overview#lookback-windows) and [match type](https://dev.kevel.com/docs/attribution-overview#attribution-match-types). For sponsored brands ads, it's common to use **same brand** halo matching for **post-click** attribution.

Because sponsored brands placements are fundamentally about promoting products within the advertiser's brand, the **ad** should hold attribution data linked to the brand. We recommend specifying the **brand ID** within an [attributable item](https://dev.kevel.com/docs/attribution-overview#attributable-items) on the ad.

#### Attribution settings on event URLs

Using [metadata on impression and click URLs](https://dev.kevel.com/docs/metadata-on-impressions-and-clicks), you will pass data associated with products and components that were viewed or clicked.

For sponsored brands ads, we recommend:

**Impression**: When a sponsored brands placement is seen, pass the following metadata on the impression URL:

1. The ad component(s) displayed (for example: `?component=logo,video,CTA`)
2. The product(s) displayed (for example: `?productId=12345,23456,34567`)

**Click**: When a sponsored brands placement is clicked, pass metadata on the click URL to indicate what was clicked.

- If the user clicked on a non-product element, pass the component name (for example: `?component=logo`)
- If the user clicked on a product, pass the product ID (for example: `?productId=12345`)

### Decision API request & response

A single HTTP Ad [Decision Request](https://dev.kevel.com/reference/request) is used to fetch each sponsored brands ad placement.

Here is an example Ad Decision API request for a sponsored brands ad. Note that the `{{adTypeId}}` should be the ad type you specified for sponsored brands ads:

```javascript
{
   "user": {
    "key": "{{userId}}"
   },
   "placements": [
    {
        "divName": "sponsored-brands",
        "networkId": {{networkId}},
        "siteId": {{siteId}},
        "zoneIds": [{{zoneId}}], // if using zone targeting
        "adTypes": [
            {{adTypeId}}
        ],
        "count": 1
    }
   ],
   "ip": "{{ipAddess}}",
   "consent": {
    "gdpr": {{true/false}}
   },
   "keywords": [ // if using keyword targeting
    "{{category=xx}}",
    "{{search=}}"
   ]
}
```

Here is an example Ad Decision API response for a sponsored brands ad:

```javascript
{
    "adId": 12345,
    "creativeId": 23456,
    "flightId": 34567,
    "campaignId": 45678,
    "advertiserId": 55555,
    "priorityId": 77777,
    "clickUrl": "https://e-23.adzerk.net/r?e=eyJ2...",
    "impressionUrl": "https://e-23.adzerk.net/i.gif?e=eyJ2I...",
    "contents": [
        {
            "type": "raw",
            "data": {
                "height": 2,
                "width": 1,
                "externalUrl": "https://image.assets.kevel.com/D401hVfrc.png",
                "ctlogo": "https://image.assets.kevel.com/D401hVfr5y.png",
                "ctLifestyleImage": "https://image.assets.kevel.com/A40U.png",
                "ctProducts": [
                    "123456",
                    "234567",
                    "345678",
                    "456789",
                    "567890",
                    "098765",
                    "987654",
                    "876543",
                    "765432",
                    "654321"
                ],
                "cttagline": "The Power You Eat.",
                "ctBrandName": "Big Cashew"
            }
        }
    ],
    "height": 2,
    "width": 1
}
```

### One-time configuration steps

There are several configuration steps that will need to be done one time upfront in order to use sponsored brands placements.

The one-time setup steps are as follows:

- Create an [ad size / type](https://dev.kevel.com/docs/ad-sizes) in your Kevel account in the Kevel ad server specific to sponsored brands.
- Create a [creative template](https://dev.kevel.com/docs/creative-templates) in your Kevel account in the Kevel ad server for sponsored brands.
- Sync your product catalog with Kevel using [Kevel Catalog](https://dev.kevel.com/docs/catalog).
- Send Kevel purchase events for sales transactions.
