# Campaigns



## Campaign types comparison

| Feature | Budget | Impression | Fixed |
| --- | --- | --- | --- |
| Billing | CPM (per 1,000 impressions) | None (quota-based) | Flat fee / sponsorship |
| Stop condition | Budget exhausted (daily or total) | Max. impressions reached | End date passed |
| Pacing | Yes (optional + Smart Boost) | Yes (optional) | No |
| CPM field required | Yes | No | No |
| Typical use | Performance campaigns | Guaranteed reach | Sponsorships, continuous presence |

## Field reference

| Field | Required | Description |
| --- | --- | --- |
| `name` | Yes | Internal campaign name. |
| `campaign_type` | Yes | Type: `budget`, `impression` or `fixed`. Cannot be changed after creation. |
| `start_date / end_date` | No | Run-time limits. Without an end date the campaign runs until the budget is exhausted. |
| `cpm` | Budget type | Price per 1,000 impressions in EUR. Determines cost calculation. |
| `total_budget` | No | Maximum total spend in EUR. The campaign stops when this value is reached. |
| `daily_budget` | No | Maximum spend per day. Limits daily delivery. |
| `max_impressions` | Impression type | Maximum number of impressions before the campaign automatically stops. |
| `pacing_enabled` | No | When `true`: budget is spread evenly across the campaign's run time. |
| `smart_pacing_enabled` | No | Enables Smart Boost: automatically increases delivery when CTR exceeds the threshold. |
| `is_active` | No | Manual on/off switch. Inactive campaigns are not served. |

## Status badges

The campaign dashboard shows a status badge on each entry reflecting the current state:

Active

Campaign is enabled, run-time is valid, budget is available. Ads are being served.

Inactive

Manually disabled (`is_active = false`). No delivery.

Scheduled

Start date is in the future.

Expired

End date passed or budget fully exhausted.

## Pacing formula

When pacing is enabled, the server calculates a target budget for each hour based on the remaining run time:

hourly\_target = remaining\_budget ÷ remaining\_hours

If the current hourly spend is below the target, the server reduces delivery. With Smart Boost, delivery is
increased when CTR exceeds the configured threshold – up to the configured boost percentage.

> More details about CPM calculation, pacing scenarios, and Smart Boost can be found under [Budget & Pacing](/docs/budgeting).
