Create or edit a campaign
The six-step campaign workspace: basics, tracking, payout, targeting, fallback rules and launch. For network admins.
This is where you build an offer publishers can run: who the advertiser is, where clicks go, what you earn and pay per conversion, who may send traffic, and when it runs. The form is split into six steps; each step is checked before you can move past it, and a draft is saved automatically while you work on a new campaign.
What you can do here
- Six guided steps — Basics → Tracking → Pricing → Targeting → Fallback → Launch. The stepper at the top jumps between steps; you can always go back, but moving forward runs that step's checks first.
- Objective-driven payout — The objective you pick (Conversions, Sale, Leads, Impressions, Clicks) decides which payout models are offered on the Pricing step, so you can't combine, say, Impressions with a revenue share.
- Live margin preview — For RevShare and Hybrid payouts a preview shows advertiser revenue, publisher payout, your profit and margin, and warns in red when the margin is negative.
- Automatic drafts — While you create a new campaign, a draft is saved 30 seconds after your last change once it has a name. Reopening Create Campaign within 7 days offers to restore it. The draft id is kept in localStorage (
aff_react_draft_id); drafts are real campaign rows withisDraft: true. Editing an existing campaign does not autosave. - Fallback rules — Decide what happens to traffic the campaign can't take — cap reached, country blocked, campaign paused and more — instead of showing the visitor an error.
Fields and settings
| Field | What it does |
|---|---|
| Objective | What the advertiser is paying for. It sets which payout models you can use and when money is recorded. Stored as objective/pricingModel. Objectives with accrual click/impression create conversion rows automatically (CPC: only clicks with status tracked and not test). Values: Conversions (CPA) pays per approved conversion — CPA, Hybrid or RevShare; Sale (CPS) for e-commerce — CPS, RevShare or Hybrid; Leads (CPL) per approved lead; offers a Reject duplicate submissions option; Impressions (CPM) billed automatically per 1,000 tracked impressions; Clicks (CPC) billed automatically per clean, non-test click; App Installs (CPI) not created here — opens the App Campaigns module. Effect: Impressions and Clicks bill without any advertiser postback, so their rate must be greater than 0. |
| Visibility | Who can get a working tracking link. Enforced on every click by campaignTrackingEntitlement(); a refused click returns 403 or follows a Publisher not allowed fallback rule. Values: Public every publisher sees it and can apply; by default their tracking link unlocks once you approve the application; Permission only publishers ticked under Permitted publishers (Targeting step) or with an approved application; Private no publisher can track it, even ones listed — clicks are refused. |
| Status | Active campaigns redirect traffic. Paused campaigns refuse clicks and hide the tracking link. Pending review only accepts test traffic (links carry test=1). Depends on: With an advanced schedule enabled, the schedule switches the status between active and paused every minute. |
| Destination URL | Where the visitor lands after clicking. Put {click_id} in it so the advertiser can send that ID back with the conversion — without it, conversions can't be matched to clicks. Must be a valid http(s) URL once macros are replaced. The Insert macro chips add any of the 20 listed macros at the cursor. Values: {click_id} unique click ID (required for postbacks); {sub1}…{sub5} the publisher's sub IDs; {affiliate_id} publisher ID; {source} traffic source (when Source capture is on). |
| Tracking domain override | Saved and shown on the campaign page, but publisher tracking links are always issued on the platform tracking domain from Settings → Tracking. Limits: Not applied to generated links today. |
| Conversion flow & postback method | Describes how the advertiser confirms conversions (single or double opt-in, sale, install) and whether they use S2S, a pixel or both. Publishers see the flow on the campaign page. Limits: Informational: the platform accepts both S2S postbacks and pixels whatever you pick here. |
| Attribution window | How long after a click a conversion still counts, in hours (1–43,800). Later conversions are flagged expired attribution and held as pending for review. Values: 168 7 days; 720 30 days (default); 1440 60 days. Depends on: The action set on the Expired attribution rule in Fraud Control (Flag by default) decides whether a late conversion is held, rejected or only monitored. |
| Cookie lifetime | Recorded with the campaign for publishers' reference. Attribution is decided by the attribution window, not by this value. |
| Optional tracking parameters | Which extra values are added to publisher links and stored with each click: source, Android GAID, Apple IDFA, an impression pixel link, and your own custom parameters. Captured values can be used as macros. Source reads source, utm_source, sub1 or p1; GAID reads gaid/adid/google_aid; IDFA reads idfa/ios_ifa. Custom names must start with a letter (a–z, 0–9, _), up to 30; click_id, campaign_id, affiliate_id and their aliases are reserved. |
| Payout model | How the publisher is paid. Values: CPA / CPS / CPL a fixed amount per approved conversion; RevShare a percentage of the advertiser revenue; Hybrid a fixed amount plus a percentage; CPM / CPC a fixed rate per 1,000 impressions or per click. Depends on: Only the models that fit the chosen objective are offered. |
| Publisher payout | The fixed amount you pay the publisher per approved conversion (for Hybrid, the fixed base before the share is added). Required and must be greater than 0 for fixed models. Per-publisher overrides set on the campaign page replace this for that publisher only. Limits: If you also enter advertiser revenue, it must be at least the payout. |
| Publisher share % | For RevShare and Hybrid: the share of advertiser revenue paid to the publisher, above 0 and up to 100. Effect: Payout = revenue × share% (RevShare) or fixed base + revenue × share% (Hybrid). |
| Advertiser revenue source | Where the revenue for a share comes from: a fixed amount you enter, or the revenue value the advertiser sends on each postback (dynamic). Effect: With dynamic revenue, a postback that sends no revenue (and no fixed fallback exists) is held as pending with a revenue missing warning instead of paying the publisher 0. |
| Advertiser revenue | What the advertiser pays you per conversion. For share-based payouts with a fixed source it is required and is the base of the share. |
| Recognized revenue % (advanced) | For RevShare/Hybrid only: records just this percentage of revenue as network revenue in reports. Leave 0 to record the full amount. The publisher's share is still calculated from the full revenue. |
| Accept payout from advertiser postback | When on, a payout value sent by the advertiser replaces your campaign payout for that conversion. Leave it off unless the advertiser decides what each publisher earns. Depends on: Only offered for objectives billed on conversion (not Impressions or Clicks). |
| Delivery caps | Daily conversions and daily revenue limits. 0 means unlimited. Daily caps reset at midnight UTC. When a cap is reached new clicks are refused (HTTP 429) or follow a Cap reached fallback rule, and conversions that still arrive are flagged. Weekly windows are a rolling 7 days; monthly is the UTC calendar month. Caps count approved conversions only. Limits: Daily budget and Total budget are saved but not enforced. For spend limits use the Payout caps (daily, monthly, total) on the campaign's page after saving. |
| Country targeting | Which visitor countries may click: all, include only, exclude, or both. Depends on: Country targeting is enforced only while the Geo mismatch rule is enabled in Fraud Control. Device, OS, browser and IP blocks always apply. Effect: A blocked click is rejected (not redirected) unless a Country blocked fallback rule sends it somewhere else. |
| City targeting & traffic channels | Recorded on the campaign and shown to publishers as rules to follow. Limits: Not enforced on clicks — the platform does not block traffic by city or channel. |
| Permitted publishers | Shown when Visibility is Permission. Ticked publishers get access immediately, without applying. |
| Start/end dates & advanced schedule | Turn on Enable advanced schedule to let the platform activate and pause the campaign by itself — inside a date range, daily or weekly hours, chosen days of the month, and never on blackout dates. Times use the campaign timezone. A background job re-evaluates scheduled campaigns every 60 seconds and writes the result to status, with an audit entry campaign.schedule.status_changed. Depends on: Start and end dates only take effect when the advanced schedule is on. |
| Priority & Featured | Saved with the campaign. Featured campaigns appear on the admin Campaigns → Featured tab. Limits: The publisher Offers page does not currently sort by priority or highlight featured campaigns. |
| Fallback rules | Each rule pairs a condition (cap reached, country blocked, campaign inactive, publisher not allowed, duplicate click, fraud flagged…) with an action. Rules run lowest priority number first; every hit is written to the fallback log. Values: Return 404 refuse the click; Redirect to campaign send the visitor to another campaign; Redirect to custom URL send them to any URL; Silent continue let the visitor through, but hide the conversion from the publisher (no publisher postback). |
How to use it
- Basics — name the campaign (3+ characters), pick the advertiser and objective, and choose who can see it.
- Tracking — paste the advertiser's landing URL with
{click_id}in it and set the attribution window. - Pricing — choose the payout model, enter what you pay and what you earn, and check the margin preview. Validation order: required fields, objective/model compatibility, share 0–100, fixed revenue present for share models, revenue ≥ payout, Hybrid total ≤ revenue.
- Targeting — restrict countries, devices, OS and browsers if the advertiser requires it; for Permission campaigns tick the publishers allowed.
- Fallback — add a rule for cap overflow or blocked geos so traffic isn't wasted.
- Launch — set the schedule if needed, add creatives and coupon codes, then press Launch Campaign (or Save Draft at any step).
Examples
Simple CPA lead offer for India
Pay publishers a flat amount per approved lead and only accept Indian traffic.
- Objective: Leads
- Payout model: CPL
- Publisher payout: 2.50
- Advertiser revenue: 4.00
- Country targeting: Include only → IN
- Fallback: Country blocked → Redirect to campaign (a global offer)
Revenue share on e-commerce sales
The advertiser reports each order value; publishers earn 60% of it. If a postback arrives without revenue, the conversion is held as pending with meta.pricingWarning = revenue_missing.
- Objective: Sale
- Payout model: RevShare
- Publisher share %: 60
- Revenue source: Dynamic from postback
- Advertiser postback:
…&revenue={order_total}&txid={order_id}
Business-hours campaign
Run only Monday–Friday, 09:00–18:00 in the advertiser's timezone.
- Enable advanced schedule: On
- Schedule type: Weekly
- Mon–Fri windows: 09:00–18:00
- Timezone: Asia/Kolkata
Limitations
- Depends on: Country targeting blocks clicks only while the Geo mismatch rule is enabled in Fraud Control.
- Depends on: Start and end dates are applied only when Enable advanced schedule is on.
- Not supported: City targeting and traffic channels are guidance for publishers; clicks are not blocked by them.
- Not supported: Daily budget and Total budget are stored but not enforced — use Payout caps on the campaign page.
- Not supported: The tracking domain override, cookie lifetime, conversion flow and postback method are descriptive; they don't change link generation or which postback types are accepted.
- Restricted: App install (CPI) campaigns can't be created here — they live in App Campaigns.
- Supported: Caps by conversions, clicks, revenue and payout over daily, monthly and total windows (weekly for conversions) — edit them on the campaign page after saving.
Common mistakes
- No {click_id} in the destination URL — The advertiser has nothing to send back, so every conversion postback fails with Unknown click_id. Add
click_id={click_id}(or the advertiser's own parameter name). - Dynamic revenue without revenue on the postback — RevShare conversions are held as pending. Ask the advertiser to append
&revenue=with the sale amount, or switch to a fixed revenue. - Expecting dates to pause the campaign — Without the advanced schedule, the campaign keeps running past its end date. Turn the schedule on (type Date range).
- **Turning on Accept payout from advertiser postback by accident** — Publishers are then paid whatever the advertiser sends in
payout, ignoring your campaign payout.
Troubleshooting
- “Destination URL must be a valid http/https URL” — Start the URL with
https://and keep macros inside braces, e.g.{click_id}. Spaces and unknown characters outside macros make it invalid. - Clicks from the right country are rejected — Check the country lists, then test without a VPN. Rejected clicks show their reason in Reports → Click Intelligence.
- “Campaign cap reached” (HTTP 429) — A daily/monthly/total cap was hit. Raise or clear it under Caps on the campaign page, or add a Cap reached fallback rule.
- A restored draft is missing — The restore prompt only appears on the same browser, for drafts saved in the last 7 days. The draft itself is a saved campaign, so it can still be opened from the campaign list.