>_bandit
changelog

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 (draftactive, 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

Ad
click on the ad
/go/{product}bandit entry
Bandit
arm selection

active articles + outbounds, shares with lock / max %

Article
/articles/…?tid=
  • ·view and scroll
  • ·CTA click → store
Outbound
https://…?tid=
  • ·immediate 302 out
  • ·stage 3 (like CTA)
Store / offer
tracking + purchase

the same tid ties the visit to the bandit arm

events
store_page_viewadd_to_cartpurchase
  1. A hit to /go/{productSlug} — the bandit looks at active articles and active outbounds.
  2. The algorithm (Thompson, etc.) picks one arm, respecting locked_share (“exactly N%”) and max_share (cap).
  3. A journey is created with tid tied to that arm.
  4. 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).
  5. The store with bandit-store.js continues 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

ArticleOutbound
In /go poolyesyes
Traffic share, pin, lock, max %yesyes
Journey + tidyesyes
Dashboard metricsyesyes
Own HTML on your domainyesno
Redirect target/articles/{slug}?tid=external URL ?tid=
Funnel startstage 1 (view)stage 3 (CTA) immediately
Variant generationyesno
Created inArticles tabOutbounds tab
Dashboard looknormal rowwarm 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 active long enough for a fair comparison with articles.
  • The URL must be absolute (https://…). The bandit appends tid itself.
  • Purchases only count if store tracking is installed on the destination (see the tracking integration doc).

Where to configure what

ActionWhere
Create / edit outboundProduct → Outbounds tab
Include in rotationStatus active
Share and effectivenessProduct → Bandit / dashboard
Share cap“max %” on the outbound (and on articles)
Locked share / pinArm actions on the dashboard