Skip to Content
Campaigns & FlowsCampaigns Overview

Campaigns Overview

A campaign is the core unit of tracking. Each campaign owns:

  • a public tracking linkhttps://<domain>/t/<campaignId>,
  • a flow — the routing logic that decides where each visitor goes,
  • and all the clicks, conversions, and revenue that flow through it.

You paste the tracking link into your ad. From then on, every visitor is recorded and routed by that campaign’s flow.

Graph vs. Flow — two views of one campaign

This distinction is important and trips up newcomers. A campaign stores two JSON representations:

GraphFlow
What it isThe visual editor state — every node, edge, and position on the canvas, including sticky notes and notification blocks.The semantic routing config — a minimal decision tree.
Who reads itThe Visual Builder (to redraw your canvas exactly).The routing engine and the Cloudflare edge (to make decisions fast).
Editable?Yes — it’s what you drag around.No — it’s compiled from the graph when you save.

The split is deliberate: the graph is rich and lossless for editing; the flow is a small, fast structure for evaluating millions of clicks. Both are saved together every time you hit Save.

Why you sometimes see a campaign “rebuild” when you open it. When you reopen a campaign, the builder loads in priority order: a local draft (for unsaved new campaigns) → the saved graph → a reconstruction from the flow if no graph exists. Reconstruction can’t recover positions or sticky notes, so it auto-arranges the nodes for you.

The lifecycle of a campaign

Create

Start in the Visual Builder (or via Quick Setup for a minimal redirect-only campaign). A new campaign always begins with a single, non-deletable Campaign node.

Build

Drag nodes onto the canvas and connect them to express your routing — a geo rule here, an A/B split there, an offer at the end. Each node type does one job.

Save & publish

On Save, the graph is compiled into a flow, both are saved, caches are refreshed, and the routing is published to the Cloudflare edge so your links are served globally.

Test

Open the tracking link, watch the click land in Live Logs, and confirm it routed where you expected.

Iterate

Clone a campaign to experiment without touching the original (clones start paused). Reset wipes a campaign’s clicks/conversions when you want a clean slate.

Campaign states

StateBehavior
ActiveRecords clicks and routes normally.
PausedStill redirects visitors (traffic is never blocked) but does not record the click. At the edge, a paused campaign returns 410 Gone.

Pausing is not the same as deleting. A paused campaign keeps redirecting so you don’t break links that are already live in ads — it just stops recording. If you truly want traffic to stop, point your ad elsewhere first.

Plan gating

The advanced routing nodes — Rule, % Split, Bot Filter, Dayparting, Offer Cap, Smart Rotator — require a Pro or Scale plan. The basic building blocks (Domain, Campaign, Landing, Offer, Pixel, notifications) are available on every plan. Saving a graph that contains a Pro-only node on a lower plan is rejected. See Plans & Billing.

Next