# Set up programmatic ads in your feeds

Set up programmatic ads in your Business Account so external demand fills ad slots in feeds and embedded players automatically.

Programmatic ads fill the ad slots in your social experience in real time from external demand sources, such as SSPs and ad exchanges. There's no manual campaign management or trafficking: once you save your setup, Genuin fills each slot automatically. Programmatic ads are part of [Monetize](https://begenuin.com/developers/browse-by-products/monetize/monetize-what-it-does-and-where-to-start), and [Genuin Ad Server](https://begenuin.com/developers/browse-by-products/monetize/genuin-ad-server) explains where the demand comes from.

You control programmatic ads with monetization presets in your Business Account. A preset sets where ads run, how often they appear, which ad types fill a slot, and on which platforms. Learn more about every preset setting in [Create and manage monetization presets](https://begenuin.com/developers/browse-by-products/monetize/how-can-a-brand-configure-and-control-ad-monetization-using-presets-in-the-brand-control-center).

Programmatic ads run alongside paid partnerships and premium access. Paid partnerships bring direct revenue, and programmatic ads bring automated revenue. Learn more about paid partnerships in [Create a paid partnership](https://begenuin.com/developers/browse-by-products/monetize/how-do-i-create-a-sponsorship-campaign-in-the-business-account).

## Choose a preset and where it runs

1. In your Business Account, go to **Settings** > **Ad Configuration**. Programmatic ads are controlled here, through **Monetization Presets**.
   ![The Settings page in your Business Account with Ad Configuration selected, listing four of the five default Monetization Presets: premium, balanced, conservative, and aggressive, each marked Default.](https://cdn.sanity.io/images/lnrtvsvr/development/f8240d2d38c62bb09ccd9f2636c2fffba68a44f5-1874x909.jpg)
   *Step 1: Programmatic ads are set up under Settings > Ad Configuration.*
2. Choose a default preset, or create a custom preset for full control.
   ![The Monetization Presets list on the Ad Configuration page, with the + New Preset button highlighted above four of the five default presets: premium, balanced, conservative, and aggressive.](https://cdn.sanity.io/images/lnrtvsvr/development/e3183d65bf3edb2b2f16156074c129050308755e-1878x909.jpg)
   *Step 2: Start from a default preset, or click + New Preset to create your own.*
3. Select the placements and embeds where ads run: community feeds, group feeds, brand feeds, and embedded players.
   ![The New Preset form with the Select Placements & Embeds dropdown open under Show ads on selected placements, showing the Placements and Embeds tabs, a placement checklist, and an Apply button.](https://cdn.sanity.io/images/lnrtvsvr/development/89a5014c4b09b52e422430433fdcc27a0e5ebed0-1875x911.jpg)
   *Step 3: Ads run only on the placements and embeds you select.*

Programmatic ads appear only where a preset covers the placement or embed. The Home, Latest, and Popular feeds use the **Global** preset.

A placement or embed belongs to one preset at a time. If you select one that's already in another preset, Business Account asks you to confirm the reassignment.

**Confirm & Apply** keeps your selection, and the move happens when you save the preset. **Cancel** clears the items you selected.

The default presets balance revenue and the viewing experience in different ways:

| Preset | What it does |
| --- | --- |
| Balanced | Avoids back-to-back ad fatigue |
| Aggressive | Maximizes revenue, with back-to-back ads |
| Conservative | Keeps video content pure: ads appear only while scrolling |

Two more default presets sit in the same list:

| Preset | What it does |
| --- | --- |
| Global | Sets ads for the Home, Latest, and Popular feeds of the web app and mobile app |
| Premium | Gives a premium experience with only direct sourced paid partnerships |

**Global** has no placements or embeds, and it's active by default. It turns inactive when **In-Feed**, **In-Stream**, and **Partnered Takeover** are all off.

You can edit all of **Global**'s ad settings, but not its name or description, and you can't duplicate it.

The ad settings of **Premium**, **Balanced**, **Conservative**, and **Aggressive** are read-only, and you can't delete these presets. You can still change their placements and embeds, and **Save** turns on once you change an assignment.

To copy a preset, click its **Duplicate** icon. The copy appears at the bottom of the list right away, named **Preset** plus the next free number. Placements and embeds aren't copied.

### Who can change presets

| Role | What they can do |
| --- | --- |
| Owner or Admin | View, create, edit, duplicate, and delete custom presets |
| Content Manager | View and edit presets, but not delete custom presets |
| Viewer | View only: New Preset, Duplicate, Delete, and Save are disabled |

Users without access can't open the **Ad Configuration** page, even from a direct link.

## Turn on in-feed ads

In-feed ads appear between items in a feed.

1. Select **In-Feed Configuration** to turn on ads between feed items.
2. Choose a **Start Slot** to set the position of the first ad in the feed.
3. Choose a **Repeat Frequency** to set the spacing between ads.
4. Under **Ad Events**, choose whether ads show in card view and full screen, or in full screen only.
   ![The In-Feed Configuration section of a new preset, switched on, with Start Slot and Repeat Frequency both set to 2 and the Ad Events options for card view and full screen.](https://cdn.sanity.io/images/lnrtvsvr/development/02a99ad961e0f890e2945afc3c4bbdb4ed35a3c8-1877x912.jpg)
   *Step 4: Start Slot and Repeat Frequency decide where in-feed ads land.*

Learn how these two settings turn into ad positions in [How the Genuin SDK places ads in a feed](https://begenuin.com/developers/browse-by-products/monetize/how-does-the-genuin-sdk-render-ads-and-deliver-the-consumer-experience#how-ad-slot-positions-are-computed).

**Start Slot** and **Repeat Frequency** are dropdowns with values from 1 to 10, and both default to 2. **Ad Events** defaults to **Show ads in card view & in full screen**.

## Set ad types and priority

1. Under **Ad Types & Priority**, select the ad types you want: **Partnered Post** and **Video Ads**. **House (Fallback Content)** is always on.
2. Check the order. **Partnered Post** always comes first and **House (Fallback Content)** always comes last. Genuin tries the highest-priority type first, and lower types serve as fallbacks.
   ![The Ad Types & Priority list of a preset, with Sponsored Post, Video Ads, Native Ads, and Display Cards, each with a drag handle and a switch turned on.](https://cdn.sanity.io/images/lnrtvsvr/development/ae5f0643bd711a5a0159ac141f9202e7b6c8c4cf-1874x911.jpg)
   *Step 2: Genuin tries the ad types in this order.*

| Ad type | Role |
| --- | --- |
| Partnered Post | Posts from your paid partnerships |
| Video Ads | The primary revenue driver, with a high CPM |
| House (Fallback Content) | Your own content, which plays when ad inventory is empty |

Video ads, in-feed and in-stream, earn the highest CPM of these types.

**Partnered Post** must be on for posts from your paid partnerships to show in the feed.

**Video Ads** fill a slot only when the preset's ad server supports them, even with the switch on.

### Partnered Takeover

Every preset has a **Partnered Takeover** section, and its switch is on by default. Takeovers from your paid partnerships show only while it's on.

While it's on, a takeover overrides all other ad types in the **Feed Preview**. A smaller **Video Feed Preview for Partnered Takeover** appears below the switch.

## Turn on in-stream ads

In-stream ads play inside videos and are a high revenue driver.

1. Select **In-Stream Ads** to turn on ads inside videos.
2. Choose a **Start Content Video** to set the first video that triggers ads.
3. Choose a **Repeat Frequency** to set how often in-stream ads play.
4. Choose the ad types: **Pre-roll**, **Mid-roll**, or **Post-roll**.
   ![The lower part of a preset form, with the Display Cards and House (Fallback Content) switches on the left and the Pre-roll, Mid-roll, and Post-roll switches highlighted on the right.](https://cdn.sanity.io/images/lnrtvsvr/development/20add825186cda6a23408f97b24e4ac4e2ef611c-1873x910.jpg)
   *Step 4: Switch on Pre-roll, Mid-roll, or Post-roll to choose when in-stream ads play.*

We recommend **Pre-roll** with **Mid-roll** because that pair earns the most revenue. Avoid turning on all three types unless necessary, because that overloads viewers with ads.

In-stream ads are on in a new preset. **Start Content Video** and **Repeat Frequency** take values from 1 to 10, default to 2, and count content cards only.

Business Account doesn't show separate pre-roll, mid-roll, and post-roll switches. The selected demand source decides the ad types, and pre-roll, mid-roll, and post-roll ads play automatically.

Each roll type plays only when the preset's ad server supports it, even with its switch on.

## Set up fallback content

1. **House (Fallback Content)** is always on, so ad slots fall back to house content when programmatic demand has no fill.
2. (Optional) Select **Monetize fallback with In-Stream Ads** to keep earning revenue while fallback content plays.

Learn how to choose the posts that serve as fallback in [Mark and manage house ads](https://begenuin.com/developers/browse-by-products/control/how-do-i-mark-and-manage-house-ads-in-the-business-account).

## Choose where ads run

1. Under **Select environment to show ads**, choose **Global** to run ads on all platforms, or **Custom settings** to pick specific platforms: Web, iOS, Android, or Mobile Web. By default, ads run on **Global**.
   ![The Select environment to show ads option of a new preset, with Global selected and Custom settings beside it, above the placement selector and the Feed Preview.](https://cdn.sanity.io/images/lnrtvsvr/development/87b5137c2f079a053ab556cae1828a75c4399516-1878x910.jpg)
   *Step 1: Keep Global to run ads on every platform, or pick Custom settings to choose platforms.*

With custom settings, each platform gets its own tab with independent settings. Switching between **Global** and custom settings, either way, asks you to confirm.

Going from custom settings back to **Global** resets the platform tabs. The **Web** tab's settings then apply to every platform.

## Choose ad servers

A preset lists the ad servers set up in **Demand Settings**, under **Settings** > **Ad Configuration**, plus **Header Bidding** as a single option. The individual Header Bidding servers aren't listed.

Your default ad server is preselected on a new preset. You can remove it once you select another ad server.

## Set ad experience controls

1. Select **Mute on Start** to start ads muted, which suits autoplay.
2. Select **Duration** to show viewers how long the ad lasts.
3. Set **Ad Aspect Ratio** to match the player, for a consistent experience.
   ![Two settings panels of a preset, each with Ad Aspect Ratio options for all aspect ratios or the video player ratio, a Mute on Start switch, and a Duration switch.](https://cdn.sanity.io/images/lnrtvsvr/development/2c1e55aa33b70fa790b09fd5dd8434b16de4bdad-1873x911.jpg)
   *Step 3: These settings shape how an ad looks and sounds to viewers.*

In-feed and in-stream ads each have their own **Ad Aspect Ratio**, **Mute on Start**, and **Duration** controls. In a new preset, **Mute on Start** is on for in-feed ads and off for in-stream ads.

**Duration** starts off for both. **Ad Aspect Ratio** starts at **Allow all aspect ratios**; choose **Match video player ratio** to match the player.

## Preview and save

1. Use **Feed Preview** to see where ads appear in the feed.
2. Check the spacing and density of the ads.
3. Click **Save**.

**Feed Preview** shows a live 15-card preview. Choose **Content**, **In-Feed**, or **In-Stream** to change what it previews.

A custom preset needs a **Preset Name** of 3 to 50 characters, with no leading or trailing spaces, that no other preset uses. **Preset Description** is optional, up to 200 characters, with no trailing spaces.

**Save** stays disabled until you make a change and every field is valid. After you save, a success toast appears, and the breadcrumb changes from **New Preset** to the preset's name.

A saved preset becomes active, and a new one appears at the bottom of the list. **Cancel**, or leaving with unsaved changes, shows an **Unsaved Changes** warning first.

Your programmatic ads go live and start earning revenue automatically. To see what they earn, see [Track programmatic ad performance](https://begenuin.com/developers/browse-by-products/monetize/what-analytics-are-available-for-programmatic-advertising-on-genuin).

## How Genuin fills an ad slot

Genuin fills each slot in real time:

| Rule | Behavior |
| --- | --- |
| Real-time fill | Ads are served dynamically through the ad server |
| Priority-based serving | Ad types are tried in the order you set under Ad Types & Priority |
| No-fill handling | The slot falls back to the next ad type, then to house content |
| Slot collapse | If nothing fills the slot, the empty slot is removed from the feed |

You control how often ads appear with **Start Slot** and **Repeat Frequency**.

## Example setups

| Goal | Settings | Result |
| --- | --- | --- |
| Always-on monetization | In-Feed Configuration on, Video Ads on, Repeat Frequency 4 | Continuous revenue across feeds |
| High-revenue video | In-Stream Ads with Pre-roll and Mid-roll, Repeat Frequency 2 | Maximizes video monetization |
| Balanced viewing experience | Moderate in-feed frequency, Pre-roll only, no Mid-roll | Keeps engagement up while monetizing |

## Performance targets

| Requirement | Target |
| --- | --- |
| Ad load time | 800 ms or less |
| Pre-roll start time | 1 second or less |
| Layout stability | No visible shifts (CLS under 0.1) |

## Limitations

- **No campaign-level targeting**: Programmatic ads don't support campaign-level targeting or manual control of individual campaigns.
- **Demand-driven revenue**: Revenue comes from the demand available for each slot, so it rises and falls with that demand.

## See also

- [Genuin Ad Server](https://begenuin.com/developers/browse-by-products/monetize/genuin-ad-server)
- [Create and manage monetization presets](https://begenuin.com/developers/browse-by-products/monetize/how-can-a-brand-configure-and-control-ad-monetization-using-presets-in-the-brand-control-center)
- [Track programmatic ad performance](https://begenuin.com/developers/browse-by-products/monetize/what-analytics-are-available-for-programmatic-advertising-on-genuin)
- [How the Genuin SDK places ads in a feed](https://begenuin.com/developers/browse-by-products/monetize/how-does-the-genuin-sdk-render-ads-and-deliver-the-consumer-experience)
- [Mark and manage house ads](https://begenuin.com/developers/browse-by-products/control/how-do-i-mark-and-manage-house-ads-in-the-business-account)
