> For the complete documentation index, see [llms.txt](https://brandsxgames.gitbook.io/documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://brandsxgames.gitbook.io/documentation/how-it-works.md).

# How it works

The mental model is simple: **you place placements once, we serve campaigns into them over time.**

## Slots

Every placement in your game has a **slot ID** — a short string we issue to you, e.g. `studio-racing-trackside-01`. The slot is the link between a physical spot in your world and the campaigns booked for it on our side. You set the slot ID on the actor; that's the only thing a placement strictly needs.

Slots live under your studio's bxg account, which you connect once with a project key (see [Installing the plugin](/documentation/unreal-engine/installation.md)). That account link is how bookings, attribution, and revenue map back to you — slot IDs can't be claimed by anyone else.

You can have as many slots as you want, and you decide what each one is: a roadside billboard, a vending machine, a poster in a hallway, a 3D product on a shelf.

## The lifecycle of one placement

1. **Level starts.** When the placement comes into play, the SDK asks our API which creative is currently booked for its slot.
2. **Creative loads.** We return the asset for the active booking — a 2D image or a 3D model — and the SDK applies it. If nothing is booked, or the player is offline, your chosen fallback stays in place.
3. **The player sees it.** Once per second, the SDK checks whether the placement is actually within the player's view and not occluded by walls or objects. Time only counts while it's genuinely visible.
4. **View ends.** When the player looks away (or the placement swaps to a new campaign), the accumulated view time for that booking is reported back to us, tied to a privacy-preserving per-player identifier. This view-time is the basis for reporting and billing.

## Rotation without re-integration

This is the part that matters for your workload. Because each placement looks up its current booking from our side, **new campaigns appear without you doing anything.** You integrate once. After that, campaign A this month, campaign B next month, all on the same slot, with no new build required on your part.

If you want a placement to cycle within a single session, you can set a refresh interval — and optionally confine swaps to moments when the player isn't looking, so the change is never visible. See [Refresh, fallbacks & Blueprint hooks](/documentation/unreal-engine/advanced.md).

## Where the boundary sits

The SDK talks to one host over HTTPS to fetch creatives and report view-time. Everything else — your gameplay, your rendering, your build — is untouched. The only artifacts in your project are the plugin and the actors you place. Removing it is as clean as deleting those actors and disabling the plugin.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://brandsxgames.gitbook.io/documentation/how-it-works.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
