A campaign runs a published flow with its own accounts, option values, group and schedule. You build a flow once in Studio, then run it as many campaigns as you like from Operate › Campaigns: 𝕏 Auto Reply on @a1, @a2, @b1 and @b2, each its own campaign, all in one group so none of them replies to the same post.
How it fits together
| Piece | Where | What it does |
|---|---|---|
| Flow | Studio › Flows | What to do. Its Options say what it asks for (accounts, values). |
| Campaign | Operate › Campaigns | Runs the flow's published version with the options filled in, on a schedule. |
| Group | A campaign's field | Campaigns in one group share their group tables: replied posts, authors, removed posts. |
| Account | Dataset › Accounts | Credentials and a proxy, nothing more. The campaign owns its browsers (x, shopee…); the flow's Sign in nodes sign the accounts in there. |
Example with two Shopee accounts:
| Campaign | 𝕏 option | Shopee option | Group |
|---|---|---|---|
| ID affiliate 1 | @a1 | Shopee A | ID affiliate |
| ID affiliate 2 | @a2 | Shopee A | ID affiliate |
| ID affiliate 3 | @b1 | Shopee B | ID affiliate |
| ID affiliate 4 | @b2 | Shopee B | ID affiliate |
- The four 𝕏 accounts never reply to the same post: they share
x/collect/postin group "ID affiliate". - Each campaign has its own browsers (its
xandshopeeprofiles), so campaigns 1 and 2 both sign in to Shopee A, each in its own profile. - Each campaign's affiliate links carry its own Sub ID (the campaign's id), so earnings land on the right dashboard.
Create a campaign
Operate › Campaigns › New campaign. The form is built from the flow you pick:
- Name and Flow: only published flows are listed (campaigns run the published version).
- Group: pick one in use or type a new one (
defaultif you don't care). - Options: by section (the side nav: Accounts, Content or Collect, Shopee, Brand, Voice, Review, Pace, Behaviour) and group (cards), each option with its label and description in your language; a called flow's options (e.g. Shopee Product Finder's Shopee account) join the same sections, marked with the flow's name. Accounts list only those of the right platform, AI key options your AI keys (one
account.aifills the flow and the flows it calls); a section with a required option still empty shows a red dot. The form changes with your choices: an option, a card or a whole section with a rule appears only while it holds (in a publisher, Post fromsetshows just the post set, its order and repeat). Rarely changed ones sit under a card's Advanced. Any value can be a template (Use a template), e.g. Wait after each reply{{ random:"2m","4m" }}. - When it runs: windows (days + from–until), timezone, and "start again every N minutes".
- Restarts.
- Save. A new campaign starts off; turn it on with Auto run schedule (top right).
Saving checks that required options have values, accounts are yours and of their platform, AI keys are yours. It keeps your account, AI key and post set picks and only the values that differ from the flow's defaults, so a default you change in the flow reaches every campaign that kept it. Closing the form (or the page) with changes not saved asks first.
A campaign uses the workspace's as its Brand section says: none, official (it speaks as the brand) or mention (a persona brings it up, at most as often as you allow).
Schedule
A campaign runs inside its windows. Each window has its own days and hours, and you can add up to 20:
| Window | Days | From – until |
|---|---|---|
| 1 | Mon–Fri | 19:00 – 23:00 |
| 2 | Sat | 10:00 – 14:00 |
| 3 | Sat | 20:00 – 01:00 |
- Days with no window don't run (Sunday above).
- A window can cross midnight (Saturday 20:00 – 01:00 ends Sunday 01:00; Monday 21:00 – 03:00 runs from Monday 9 PM to Tuesday 3 AM).
- Windows can't overlap, midnight crossings and the turn of the week included: saving refuses "Two windows overlap" (a window starting at the minute another ends is fine).
- Times are in the campaign's timezone. So is everything the campaign's runs read as a timezone (waits, schedules). Post, quote and reply limits don't follow the clock: they roll (1 every 3 hours, 30 in any 24 hours).
- The same From and Until is the whole 24 hours (09:00 – 09:00: a day starting at 9).
- No window at all: only Run now. There's no Auto run schedule switch (the header and the Campaigns list hide it). A run goes until it finishes or you stop it. A run that fails restarts after Restart after minutes, at most At most times in a row (Run now starts the count again), and one cut off by an engine restart resumes at once, like inside a window. The endless templates never finish by themselves, so Run now keeps them going 24/7, paced by their post, quote and reply limits (e.g. 1 post every 3 hours).
The campaign's engine runs its schedule: it keeps the campaign's config (mooflair sends it when you save, turn it on or off, or pick its browsers; it also pulls every campaign's every 5 minutes) and its own state (the window it's in, restarts in a row, failures in a row). It checks every minute, and at once when a run ends:
| Situation | What happens |
|---|---|
| A window opens, nothing runs | It starts (once per window). |
| Inside a window, the last run ended, Start again every is set | It starts again N minutes after the last start. |
| Inside a window, the last run failed | It restarts after Restart after minutes, at most At most times per window, then stops trying and tells you. |
| The window ends, a real run is still going | The run gets Stop and ends at its next safe point (a reply being sent finishes first). It shows as Stopped by schedule. Test runs are never stopped by the schedule. |
| The engine restarted mid-run (inside a window, or a Run now run) | The cut-off run resumes at once from the node it was on, once the engine has its campaigns' config from mooflair (a run cut off in a reply or other step that acts on the outside world isn't resumed: you get a notification to check it). |
| mooflair restarted mid-window | Nothing changes: the schedule runs on the engine. |
| A run ended | The engine checks the campaign at once, so the next start or restart doesn't wait for the minute tick. |
Run now works any time. Started inside a window, it stops at that window's end; started outside every window, the scheduler leaves it (stop it yourself). Test campaign starts a test run with the campaign's own options: effect nodes are simulated and tables write under test:.
Controls
| Control | What it does |
|---|---|
| Run now / Test campaign | Starts a real / test run with its options (one button group at the top right). |
| ⋯ › Clear… | Opens a dialog to pick what to delete: Dashboard (starts the Overview fresh), Runs and logs (finished runs, their logs and notifications; one still going stays), Records (rows its real runs wrote; its group shares them, so it may reply to the same posts again), Test data (rows its test runs wrote) and Browsers (their sign-ins are lost and its runs stop). Dashboard is ticked to start with; after that the dialog remembers what you ticked, for every campaign (in this browser). |
| Auto run schedule switch (left of the buttons; hidden with no window) | On: the scheduler runs it in its windows. Off asks first, then turns it fully off (see below). The switch on the Campaigns list (a table: name, flow, group, next run, control, switch; the next 20 load as you scroll. Next run reads "Next run in 3 hours", "Today at 7:00 PM", "Tomorrow at 7:00 PM" or "Monday at 7:00 PM" in the campaign's timezone; "Open now" inside a window, "Off" when the switch is off, "Run now only" with no window or none in the next week) does the same. |
| Pause / Resume | Pauses at the step it's on (the step reruns on resume). |
| Stop | Ends the run at its next safe point. The campaign stays on schedule. |
On the Campaigns list, the Control column shows each campaign's latest run (Running, Paused, Needs you, Failed…, refreshed every 5 seconds) with its buttons: Run when nothing is going (off while the campaign shows a ⚠ problem), Pause / Resume and Stop while a run is. They act on the campaign's main run, like the buttons on its page.
On the Campaigns list, tick campaigns (or the header box for every loaded one): a bar shows how many are picked, with Export (one file, like Export campaigns), Delete (asks first; they go to the Trash turned off, stopping at the first one it can't delete) and Clear.
Turning it off
Switching Auto run schedule off opens Turn off?. Confirming:
- Stops scheduling it (no more runs in its windows).
- Stops everything of it still going on the engine: its run, its called flows' own runs (Find on Shopee in the Shopee browser) and row actions, at their next safe point. A reply being sent finishes first; a step waiting for you or a wait ends at once. Queued runs are cancelled. They end Cancelled with "Turned off".
- With Also close its browsers ticked: once those runs have ended (2 minutes at most), the browsers it used stop. Their profiles stay, so the next run starts signed in. A browser another campaign is using stays open.
An AI call in flight is aborted too, so it isn't left running after the stop.
A campaign also turns itself off when its flow's Turn off after failures in a row () is reached: that many of its main runs failed one after another (row actions don't count, a success resets the count). It stops like above, with its browsers closed, and you get a notification with the last error.
Publishing a new version
A running campaign keeps the version it started with. When you publish a newer one, the dashboard shows New version published · Restart to apply: it stops the run (at its safe point) and starts a new one, which waits in the browser's queue until the old one ends. The next window start uses the new version anyway. Saving Options while a run is going does the same: the run keeps the options it started with, and the dashboard shows Options changed · Restart to apply.
When it can't run
A campaign whose flow was deleted or unpublished, or whose option points at a removed account or AI key, shows ⚠ why under its name in the list and above every tab. Deleting a flow or an account also turns Auto run schedule off for the campaigns using it. Fix it in Options, then turn it back on.
Shopee: one browser per campaign, cached per account
A campaign's Shopee steps run in its own shopee browser, one run at a time like the rest of the campaign. Run flow's cache minutes skip the whole called flow when the same input was answered recently.
Nothing is fetched twice when it's already known:
| Kept | Per | For | Skips |
|---|---|---|---|
Run flow's result (cache minutes) | campaign + input | the whole called flow | the called flow's steps |
Search results (shopee/search/product) | Shopee account + keyword | 1 day | the search, for every campaign on that account |
Affiliate links (shopee/affiliate/link) | Shopee account + product + Sub ID | 30 days | the Get link dialog |
Notifications
Under the bell: a run waiting for you, a start that failed, restarts and restarts used up. (A Notify node in your flow still sends its own messages where it's set to.)
FAQ
Do I need a campaign to run a flow?
No. Studio's Run and the Schedule, Webhook and Form triggers still run flows. A campaign is for running a flow with different accounts and options, on windows, with a dashboard.
Can two campaigns use the same 𝕏 account?
Yes. Each campaign has its own browsers, so they run side by side; the account signs in once in each.
What does the group change?
Only the rows in group tables: replied posts, authors and removed posts. Campaigns in different groups don't see each other's.
What happens to records when I delete a campaign?
They stay in their tables (Dataset › Tables); the campaign just stops running.
See also: · ·
Why did some options disappear?
They have a Show when rule: they only show while another option holds certain values (for example the post set only with Post from dataset). Pick that value and they're back, with what you set before.
Browsers: pick one per browser name
The Browsers tab has one tab per browser name (threads, x, facebook…) with its account. Browser picks the it acts in: one of the workspace's on the campaign's engine (each shows who else uses it, also Facebook Auto Reply), or New browser (made on its next run, <campaign> · <name>). Two campaigns picking the same one share it: each run gets a window of its own (up to 3 at once), sign-ins and posts take turns, and its sign-in and proxy are the same for both. It applies from the next run. Also running here lists the other campaigns or tests in that browser now; the live view shows the window in front. Name, proxy and deleting are on Operate › Browsers.
Turning a campaign off with close its browsers leaves a browser up while another campaign's run still uses it. Deleting a campaign, or Clear data › Browsers, deletes only its browsers nobody else uses.