Outbounds
What outbound links are, how they look in the admin UI, and how they differ from articles in the bandit.
TL;DR
An outbound is a bandit arm without its own article: /go/… sends the visitor straight to an external URL (store, landing, offer).
It competes for traffic alongside articles: it gets a share, appears on the dashboard, and collects journeys and purchases via the same tid and store tracking.
Difference: there is no content on your domain — immediate redirect. The bandit treats that hop as a CTA click (funnel stage 3).
Why use them
Sometimes you do not need a content wrapper. You want to send part of traffic directly to a store or partner URL and compare it to articles:
- quick offer test without generating copy;
- a “control” arm: direct visit vs article;
- hard share constraints: min / max / exact % on an expensive or risky channel.
How it looks in the UI
Product tab “Outbounds”
On the product page, next to Articles and Bandit, there is an Outbounds tab.
There you can:
- create an outbound: name, URL (full
https://…), optional min / max / exact % of traffic; - change status (
draft→active, etc.); - see an OUTBOUND badge on each row.
Until status is active, the outbound is not eligible for the bandit.
Bandit dashboard
In the shared arm list, outbounds sit next to articles but stand out:
- warm (orange) row background;
- OUTBOUND badge;
- if share constraints are set — labels like
≥10%,≤20%,=15%.
The Dynamics chart includes them in the legend (by name) once they are in allocation.
Pin, locked share, archive — same actions as for articles (with kind outbound).
How it works with the bandit
active articles + outbounds, shares with lock / max %
- ·view and scroll
- ·CTA click → store
- ·immediate 302 out
- ·stage 3 (like CTA)
the same tid ties the visit to the bandit arm
store_page_viewadd_to_cartpurchase- A hit to
/go/{productSlug}— the bandit looks at active articles and active outbounds. - The algorithm (Thompson, etc.) picks one arm, respecting
locked_share(“exactly N%”) andmax_share(cap). - A journey is created with
tidtied to that arm. - If an outbound is chosen:
- a CTA click event is written immediately (stage 3);
- 302 to the external URL with
tid(plus passthrough query from/go).
- The store with
bandit-store.jscontinues the funnel as usual: visit, cart, purchase.
Reward modes (depth / revenue / conversion) are the same: an outbound is a normal arm in the stats.
What the bandit does not do with outbounds
- it does not generate outbound “variants” (generation is article-only);
- it does not serve HTML content on your domain.
Archive / pause / active-arm limits are shared. You cannot remove the last active arm of any kind.
Similarities and differences vs articles
| Article | Outbound | |
|---|---|---|
In /go pool | yes | yes |
| Traffic share, pin, lock, max % | yes | yes |
Journey + tid | yes | yes |
| Dashboard metrics | yes | yes |
| Own HTML on your domain | yes | no |
| Redirect target | /articles/{slug}?tid= | external URL ?tid= |
| Funnel start | stage 1 (view) | stage 3 (CTA) immediately |
| Variant generation | yes | no |
| Created in | Articles tab | Outbounds tab |
| Dashboard look | normal row | warm background + OUTBOUND |
In short: for the bandit these are two kinds of the same “arm” entity. For the visitor — either an article with content, or an instant exit.
Practical tips
- Set a max % if you do not want a direct offer to eat all traffic early on.
- Keep the outbound
activelong enough for a fair comparison with articles. - The URL must be absolute (
https://…). The bandit appendstiditself. - Purchases only count if store tracking is installed on the destination (see the tracking integration doc).
Where to configure what
| Action | Where |
|---|---|
| Create / edit outbound | Product → Outbounds tab |
| Include in rotation | Status active |
| Share and effectiveness | Product → Bandit / dashboard |
| Share cap | “max %” on the outbound (and on articles) |
| Locked share / pin | Arm actions on the dashboard |