Docs › Settings
Infrastructure

Settings

Settings is the boring-but-important room. No charts here, no green revenue, no drama. What it does have are the levers that quietly decide half of what you'll see on every other screen: what your goals are called, whether you get an email when a domain is about to die, and whether the landing file manager even starts. The classic UI scattered these levers across three or four different screens — we consolidated them into one tabbed screen, opened from the account menu.

Everything you change here lands in the same tracker config blob the classic interface reads. Rename a goal in Lighter and the classic Reports and campaign postbacks see exactly the same thing. This isn't "interface settings" — it's tracker settings.

Five tabs: Goals, Events, Domains (notifications), Storage and PrivateFlare. Up top, a scope switch (Mine / Team) for gang admins. Each tab saves with its own Save button — they're independent sections of one config.
You know that web who surfs traffic for two months and then asks the chat, "why are my goal columns in Reports empty?" That web simply never came here and never set up a single goal. The column honestly shows what exists — nothing. Don't be that web. Open Goals.

What's on screen

Up top, a tab strip and, for gang admins, a scope switch. Below, the active tab's body with its own Save button. Tabs are independent: save one and the rest are untouched (the config merges partially — keys you didn't touch survive).

Scope switch (scope) — gang admins only:

Goals tab

A goal is a named action you count on a postback: registration, deposit, repeat order. It's what later shows up as its own column in Reports and its own filter in Conversions. There are exactly five slots — g1..g5.

A five-row table, each row three fields:

  1. Active — a toggle. A disabled slot shows nowhere.
  2. Code — the short machine id (reg, dep, rebill). Cleaned like a link: latin, digits, hyphen/underscore.
  3. Name — the human-readable label ("Registration", "First feed").
The Goals tab: five slots, each with a toggle, code, and name. An active slot must have a code.

Name and activate a goal:

  1. Open the Goals tab.
  2. In a free slot, flip Active on.
  3. Type a Code — short, latin (e.g. dep).
  4. Type a Name — how it should read in reports ("First feed").
  5. Click Save.

Done — the tracker shows a "Settings saved" toast, and the new goal appears immediately as a Reports column and a Conversions filter option. No page reload needed.

An active slot must have a code. If you flip Active on but leave Code empty, the field turns red, the save is blocked, and you get the error «Укажите код для каждого активного слота.» ("Set a code for every active slot.") The logic is simple: an active goal with no code is a goal with nothing to count. Fill the code or turn the slot off.
You can leave the name empty — the tracker survives. But a code on an active goal is like a name on a cat: without it, nobody knows who to call to the bowl.

Events tab

Events are exactly like goals but for intermediate actions: "add to cart", "catalog view". Also five slots — e1..e5, same fields (Active · Code · Name) and the same rules. Configure it identically to goals (see the steps above), save with its own button.

The goal-vs-event distinction is purely semantic: a goal is usually what pays (registration, deposit), an event is what happens along the way (click, scroll, cart). Technically they're two identical sets of five slots. What goes where is your call.
The Events tab: the same five slots (Active · Code · Name) as Goals, for intermediate actions.

Domains tab (notifications)

This is where domain-expiry notifications live — the ones not on the Domains screen itself. The Domains screen only shows the "days left to live" counter; to make the tracker message you when a domain is about to die, you switch it on here.

Email block:

Telegram block:

The Domains tab: expiry notifications by email and Telegram — the bot key and chat ID are shown masked.

Configure domain-expiry alerts:

  1. Open the Domains tab.
  2. Want emails — flip Notify by email on; want one summary — add Email digest.
  3. Want Telegram — flip Notify in Telegram on.
  4. Create a bot with @BotFather, copy the issued token into Bot key.
  5. Fill in the Chat ID — where the bot should write.
  6. Click Save.
Where the bot key comes from. Message @BotFather in Telegram, /newbot, give it a name — it hands you a token like 1234:AbCd…. That goes in Bot key. To get the Chat ID, send your bot any message and read chat.id — the @BotFather hint sits right under the field.
Domains are mortal. Registration lapses quietly, with no farewell letter from the registrar (well, there'll be a letter, but you won't read it). Better the tracker DMs you a week ahead than you learn of the domain's death from a traffic drop.

Storage tab

Storage is the remote server where your landings physically live. Lighter has no local disk: every landing file sits on a storage server, and the file manager on the Landings screen talks to it over HTTP. Until storage is set up, the landing file manager doesn't work (the server simply returns nothing, silently).

Fields:

The Storage tab: domain, control URL, key, and parking IPs of the remote landing server; the key is shown masked.

Set up landing storage:

  1. Open the Storage tab.
  2. Click copy on the install one-liner — you get a command like wget -q https://cpa.st/setup/track.sh && bash track.sh {host} {key}.
  3. Run it on your server — it deploys the control script.
  4. Come back, fill in the server's Domain, Control URL and Key.
  5. Fill in the Parking IPs.
  6. Check the proxy-IP note — allow-list that IP on the server side.
  7. Flip Active on and click Save.

After that, the file manager on the Landings screen comes alive: file listing, code editor, ZIP upload — all of it now runs through this storage.

Storage is a prerequisite for the landing file manager. While Active is off or the domain/key are empty, the Landings screen shows a "storage not configured" banner and you can't edit files. Set storage up before you go poking around in a landing's files.
The install one-liner and proxy IP are for reference. The tracker computes and shows them so you have something to copy; they are not saved to the config. Only domain, control URL, key, parking IPs and the Active flag are persisted.

PrivateFlare tab

PrivateFlare is a landing-delivery accelerator/optimiser (cache, WebP, minify, HTTPS). The whole tab is not always available: if the service isn't enabled for you, the tab simply isn't there.

Fields:

The PrivateFlare tab: API key, balance, and the cache, WebP, minify, and HTTPS toggles; the key is shown masked.

Configure PrivateFlare:

  1. Open the PrivateFlare tab (no tab = the service isn't enabled for you).
  2. Enter the API key.
  3. Check the Balance — it loads automatically.
  4. Pick a Cache mode and flip the toggles you want (WebP · minify · HTTPS).
  5. Optionally turn on Auto-IP.
  6. Flip Sync on and click Save.
Opening this tab fires an external balance call. The balance is fetched lazily — the moment you open the PrivateFlare tab. And switching scope (Mine ↔ Team) while this tab is active also triggers a fresh balance request to the external service. Not a bug, by design — just know the PrivateFlare tab is live, not static.

Scope: mine and team settings

The Mine / Team switch up top exists only for gang admins. It decides whose config you edit: your personal one or the shared team one. Everything reads and writes the same — only the target changes.

A fresh team's goals are empty — that's normal. A team's default config contains no goal slots at all. So after switching to Team, you'll see all five slots off and empty — that's not a breakage. Team goals only appear once you set them up here and save them. Set them up, save, they appear.

The core principle: it's one config for the whole tracker

Everything you edit on this screen lands in one tracker config blob (partial-merge: edit one section and the other keys survive). Three things worth keeping in mind follow from that: