> ## Documentation Index
> Fetch the complete documentation index at: https://docs.topsort.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Banners—Slot Reserve Prices for Manual Bidding

> Set minimum CPM and CPC reserve prices per banner slot to ensure optimal revenue thresholds

export const ChangelogActions = () => {
  return <>
      <style>{`
        .changelog-actions {
          display: flex;
          justify-content: center;
          gap: 12px;
          margin-top: 2rem;
          padding-top: 1.5rem;
          border-top: 1px solid #e5e7eb;
        }
        
        [data-theme="dark"] .changelog-actions {
          border-top-color: #374151;
        }
        
        .changelog-btn {
          display: inline-flex;
          align-items: center;
          gap: 6px;
          padding: 8px 16px;
          border-radius: 9999px;
          border: 1px solid #d1d5db;
          background: transparent;
          color: #6b7280;
          font-size: 14px;
          cursor: pointer;
          transition: all 0.2s ease;
        }
        
        .changelog-btn:hover {
          border-color: #9ca3af;
          background: #f9fafb;
        }
        
        [data-theme="dark"] .changelog-btn {
          border-color: #4b5563;
          color: #9ca3af;
        }
        
        [data-theme="dark"] .changelog-btn:hover {
          border-color: #6b7280;
          background: #1f2937;
        }
      `}</style>
      <div className="changelog-actions">
        <button className="changelog-btn" onClick={() => {
    const btn = event.target.closest("button");
    btn.innerHTML = "❤️ Like";
    btn.style.borderColor = "#ec4899";
  }}>
          🤍 Like
        </button>
        <button className="changelog-btn" onClick={() => {
    const btn = event.target.closest("button");
    navigator.clipboard.writeText(window.location.href);
    const originalContent = btn.innerHTML;
    btn.innerHTML = "✓ Copied";
    btn.style.borderColor = "#22c55e";
    btn.style.color = "#22c55e";
    setTimeout(() => {
      btn.innerHTML = originalContent;
      btn.style.borderColor = "";
      btn.style.color = "";
    }, 2000);
  }}>
          ↗ Share
        </button>
      </div>
    </>;
};

<div style={{ display: "flex", gap: "8px", flexWrap: "wrap", marginBottom: "16px" }}>
  <Badge color="gray" size="sm" icon="calendar">August 4, 2025</Badge>
  <Badge color="blue" size="sm" icon="rectangle-ad">Ad Platform</Badge>
  <Badge color="orange" size="sm" icon="arrow-up">Improvement</Badge>
</div>

We've added **slot-level reserve prices** for banner campaigns, allowing marketplaces to set minimum **CPM** and **CPC** thresholds for individual banner slots. This granular control ensures optimal monetization while maintaining campaign performance standards.

<Frame>
  <img src="https://mintcdn.com/topsort/M3N4mDiL0uw6VdTk/images/changelog/banner-slot-cpm.webp?fit=max&auto=format&n=M3N4mDiL0uw6VdTk&q=85&s=3ff68299805bd108628f5c422a2521c5" alt="Screenshot of reserve prices for listings." width="1044" height="567" data-path="images/changelog/banner-slot-cpm.webp" />
</Frame>

<Frame>
  <img src="https://mintcdn.com/topsort/IPYqfFwUqBX3axYX/images/changelog/banner-slot-cpc.webp?fit=max&auto=format&n=IPYqfFwUqBX3axYX&q=85&s=1c5bb38b1f425f1ecd122d260cee2fdd" alt="Screenshot of reserve prices for listings." width="1036" height="574" data-path="images/changelog/banner-slot-cpc.webp" />
</Frame>

## Key Benefits

**Granular Revenue Control**:
Set specific minimum bid thresholds for each banner slot based on placement value and performance

**Intelligent Fallback Logic**:
Slots without specific reserve prices automatically inherit marketplace-level reserve settings

**Campaign Validation**:
Manual bidding campaigns receive clear warnings when bids fall below slot reserve thresholds

**Centralized Management**:
All slot reserve prices are stored and managed through central services for consistency

## How It Works

### Reserve Price Hierarchy

When evaluating banner campaigns, the system follows this priority order:

1. **Slot Reserve Price** - If set, this takes precedence
2. **Marketplace Reserve Price** - Used as fallback when no slot-specific price exists

### Campaign Impact

* **Manual Bidding Campaigns**: Must meet or exceed slot reserve prices to participate in auctions
* **Autobidding Campaigns**: Bid amounts automatically adjust to meet minimum slot requirements
* **Exclusive Campaigns**: Unaffected by reserve price restrictions

## Setting Slot Reserve Prices

To set or update reserve prices for your banner slots, please follow these steps:

1. **Prepare a CSV File**: Create a configuration file listing the `slot_id` and your desired minimum `cpm_reserve_price` and `cpc_reserve_price` reserve prices for each banner slot.

2. **Contact Your Representative**: Share the CSV file with your Topsort account manager. Our team will handle the configuration and apply the new thresholds.

3. **Monitor Performance**: After the changes are live, monitor your campaign participation and slot revenue to ensure the new reserve prices are meeting your goals.

## Validation and Warnings

When creating or editing manual bidding campaigns, the system will:

* Check bid amounts against relevant slot reserve prices
* Display warnings like "Maximum \[CPM/CPC] must be at least \$\[slot reserve price]" when thresholds aren't met
* Prevent campaign participation if bids remain below minimum requirements

***

Slot reserve prices for banner campaigns are available now. Contact your Topsort representative to optimize your slot pricing strategy and maximize banner ad revenue.

<ChangelogActions />
