Scope: ad accounts, level, name masks and “only new”
The scope answers the question which campaigns, ad sets or ads the rule checks at all. It is set on two steps of the builder:
“Name and ad accounts” — ad accounts, level (campaigns, ad sets or ads) and priority;
“Which objects” — name masks, “Only new objects”, the other filters, manual objects and exclusions.
Conditions, actions and guards work only with objects in the scope. The rule does not touch anything outside it, even if budget is being drained there.
The list of objects is not fixed on save. The rule rebuilds it on every check of every ad account. New ad sets with a matching name are picked up automatically. Objects that no longer match leave the rule on their own: for example, an ad set became older than 7 days, or the rule paused it while the filter has “Status: Active”. There is no need to clean up the list manually.
Ad accounts
In the “Ad accounts” field, select the Facebook ad accounts the rule works with. The list contains your team's synced Meta ad accounts, each shown with its currency and time zone. One rule can have up to 50 ad accounts.
If an ad account is connected through several social profiles (for example, of two buyers), it is still a single account in the rule, and its objects are not duplicated.
The rule runs on behalf of its owner and sees only the owner's ad accounts. An ad account that is not visible to you or to the rule owner is marked “Not visible”. You cannot create a rule with such an ad account or add it to an existing rule.
Ad account currency
Rules deal with two kinds of money, and they are calculated differently:
What | Currency |
|---|---|
Spend, revenue, profit, CPC, CPM, CPI, CPD, cost per registration | Always in USD, whatever the ad account currency |
Budgets: “Daily budget” and “Lifetime budget” thresholds in conditions, amounts of budget actions, “Not below” and “Not above” limits, the ad account budget limit | In the currency of each ad account |
If the selected ad accounts use different currencies, the builder warns: “The ad accounts use different currencies (…): budget limits are applied as numbers in each account's currency. Spend and revenue metrics are in USD”. In that case “Not above 500” means 500 dollars for a USD account and 500 yen for a JPY account.
Tip. Do not mix ad accounts with different currencies in one budget rule: create a separate rule for each currency.
Ad account time zone
The time zone of each ad account is used for the “Today”, “Yesterday” and “Last N days” windows, the schedule, activity windows and pause until the end of the day. If a rule has ad accounts in Europe/Kyiv and America/New_York, their “today” starts at different times. So a “daily at 06:00” run happens in each ad account at its own 06:00.
If the time zone of an ad account is unknown, the selected ad account is marked “time zone unknown”. Checks for such an ad account are skipped with the reason “Ad account time zone is unknown”.
Connection method: whether the rule can change objects
A rule can calculate metrics and run in dry-run in any ad account. Pausing, enabling and changing budgets in live mode works only through a profile that supports it and has allowed it:
Profile connection method | What the rule can do in live |
|---|---|
Developer token, OAuth | Pause, enable, change budget, notifications, if changes are allowed in the profile |
Browser agent | The same. Changes go through the profile's browser session and its proxy, the same way as the sync. An agent without a proxy does not send changes |
Chrome extension (plugin) | Only notifications and dry-run: live actions are skipped |
The builder marks such ad accounts right in the list:
“Chrome extension only” — the ad account is connected only through the plugin. Live actions will be skipped; the rule can only notify and run in dry-run.
“Changes not allowed” — none of the ad account's profiles allows rules to change campaigns. Enable the permission: Meta / TikTok → Social profiles → profile → “Allow autorules to change statuses and budgets of this profile's campaigns”.
For more on profiles and the permission, see “Preparation: profiles, change permission and data”.
Level: campaigns, ad sets or ads
The “Level” field defines what the rule manages. The builder hint says: “Ad sets suit most rules for new campaigns”. The level determines which filters, metrics and actions are available. If you change the level, the builder rechecks the conditions and actions and highlights what is not available at the new level.
What changes | Campaigns | Ad sets | Ads |
|---|---|---|---|
Name mask checks | campaign name | ad set name | ad name |
Budget actions | only for CBO campaigns (campaign budget) | only for ad sets of ABO campaigns | no: ads have no budget |
Comparison with parent | no | with the campaign | with the ad set |
“Budget type” filter | yes | yes (campaign budget type) | no |
“Learning phase” filter | no | yes | no |
“Campaign objective” filter | objective of the campaign itself | objective of the ad set's campaign | objective of the ad's campaign |
“Since start” age | yes | yes | no |
“Since budget change” window, budget attributes | yes | yes | no |
Important. The name mask checks the name of the object at the selected level. In an ad set rule, the mask *nutra* looks for “nutra” in the ad set name, not the campaign name. To select ad sets by campaign, use the “Tracker campaign” filter or name ad sets using the same scheme as campaigns.
Priority
A number from 1 to 100, 50 by default. Priority matters when several rules on one ad account want to do different things with the same object:
the rule with the higher priority wins; with equal priority, the one created earlier wins;
a pause always beats enabling and budget increases, regardless of priority. If one rule pauses an ad set while another wants to raise its budget at the same moment, the ad set is paused. The increase is logged as “Skipped: conflict with another rule” with the reason “A pause wins over this action”.
For more on conflicts and guards, see “Schedule, guards and priorities”.
How the rule builds the list of objects
On every check, separately for each ad account:
objects of the selected level are taken from the ad account;
filters are applied to them (“Only new objects”, masks, status and the rest);
manually specified objects are added;
exclusions are removed.
What is set | What gets into the rule |
|---|---|
There are filters | Objects that passed the filters + manual objects − exclusions |
No filters, there are manual objects | Only manual objects − exclusions |
Neither filters nor manual objects | All objects of the level in the selected ad accounts − exclusions |
Important. “All objects of the level” really means all of them, including stopped, deleted and archived ones. Rules that pause objects or change budgets almost always need the “Status: Active” filter. All templates take only active objects by default.
Name masks
The most common filter is by name. In simple mode it consists of two fields:
“Name matches a mask” — an object passes if its name matches at least one mask;
“Name does not match the masks” — an object is filtered out if its name matches at least one mask.
Mask rules
*— any sequence of characters, including an empty one.?— exactly one arbitrary character.Case does not matter:
*nutra*finds both “NUTRA” and “Nutra”.The mask is compared with the whole name, not searched inside it. The mask
nutrawithout asterisks finds only an object named exactly “nutra”. To search for “contains”, put asterisks on both sides.Regular expressions are not supported. All other characters, including
.,[,],(,^,$,|,+, are taken literally: the mask[UA]*looks for names that start with the text “[UA]”.One filter holds up to 5 masks, each up to 120 characters long. An empty mask cannot be saved.
A mask is added on Enter, with the “Add” button, or when you leave the field.
Examples
Mask | Meaning | Matches | Does not match |
|---|---|---|---|
| ends with “_nutra” | fb_us_nutra, TEST_NUTRA | nutra_us, fb_nutra_v2 |
| starts with “video” | video_01, Video UA | my_video, vid_01 |
| contains “nutra” anywhere | nutra, us_nutra_v2, KetoNutra | nutr_a, keto |
| exact name (case-insensitive) | nutra_us_v1, NUTRA_US_V1 | nutra_us_v1_copy, old_nutra_us_v1 |
| “adset_” and exactly two arbitrary characters | adset_01, adset_AB | adset_1, adset_100 |
| ends with “_v” and one character | creo_v1, creo_v9 | creo_v10, creo_v |
| “nutra”, and “_us” somewhere after it | nutra_keto_us_01 | us_nutra_01 |
| starts with the text “[UA]”, the brackets are ordinary characters | [UA] gambling 01 | UA gambling 01 |
Several masks and “name does not match”
Masks in one field are combined with “OR”:
*nutra*and*keto*in the “Name matches a mask” field take both nutra and keto.“Name does not match the masks” removes an object if it matches at least one mask. For example,
*_testand*copy*remove test ad sets and copies.Both fields work together: “matches”
*nutra*+ “does not match”*_test— all nutra except tests.If a name must match two masks at once regardless of order (for example, contain both “nutra” and “_us”), use advanced mode: two separate “Name matches” filters in an “All (AND)” group.
Tip. After entering masks, look at the “Objects in the rule now” counter and turn on “Show objects”. This immediately shows whether the mask caught anything extra: for example, *us* finds both “bonus” and “Russia”.
“Only new objects”
Rules are usually needed on fresh launches: Facebook itself already optimizes campaigns that have ramped up. For this, the “Only new objects” toggle sits at the top of the “Which objects” step. It works in both simple and advanced mode: an object must pass it together with all other filters.
After turning it on, set:
younger than N d — from 1 to 365 days, 7 by default;
what the age is counted from: “Since first spend” (default), “Since created” or “Since start”. “Since start” is not available for ads.
How age “since first spend” is calculated
Age is counted from the first hour in which the object had spend.
While there is no spend, age is counted from the object's creation date in Facebook. A newly created ad set gets into the rule immediately, not after the first impression, if its creation date is known.
The boundary is strict: an object created exactly N days ago is no longer considered younger than N days.
When an object becomes older than N days, it leaves the rule on its own at the next check.
Example. An ad set rule “younger than 7 d, since first spend”. The ad set was created on Monday, and its first spend was on Wednesday at 14:00. The ad set is in the rule from the moment of creation until the next Wednesday, 14:00. After that, the rule no longer touches it.
Why first spend is the default rather than creation: a campaign created 10 days ago and launched yesterday is already “old” by creation date, although it has actually just started.
Objects that existed before the ad account was connected
Adset.pro sees spend from the moment the ad account was connected to the team. If an object was spending before that, its real first spend is unknown: the sync sees only the beginning of its own window. To keep an old ad set from “getting younger”, the rule does the following:
if the object's creation date is known and is earlier than the ad account connection, age is counted from the creation date. In the object samples, the “Age counted from” column shows “First spend may predate the connection: creation time used”;
if the creation date is unknown (this happens with profiles on the Chrome plugin) and the first observed spend falls within the first week after connection, age is considered unknown. Such an object does not get into “only new”, and the counter shows a warning about objects with unknown age;
if the first spend was later, it can be trusted, and age is counted from it.
Important. Right after an ad account is connected, “only new” by first spend is stricter than you might expect: some old objects will not get into the rule. This is intentional, so that the rule does not start scaling or cutting the budget of an old campaign, mistaking it for a new one.
“Only objects older than”
The reverse filter is available in simple mode: “Only objects older than” N days (30 by default) with the same counting options. It is useful, for example, for notification rules on long-running setups. “Only new” and “older than” can be turned on together to get “age from 3 to 14 days”.
Other filters
Filter | What it checks | Levels | What to keep in mind |
|---|---|---|---|
Status | The status set by the user or a rule: Active, Paused, Deleted, Archived, In review, Disabled, With issues | all | This is not the delivery status. An ad set of a stopped campaign remains “Active” by itself. An object with an unknown status does not pass the filter |
Budget type | CBO (campaign budget) or ABO (ad set budget). For an ad set — the budget type of its campaign | campaigns, ad sets | Objects with an unknown budget type do not pass the filter. Handy for budget rules: CBO for campaigns, ABO for ad sets |
Learning phase | Learning, Learning complete, Learning limited, Learning waived, Unknown | ad sets | Facebook reports the phase only for active ad sets and not in all ad accounts. The plugin does not pass it. An ad set without a phase does not pass the filter |
Campaign objective | Facebook objective code, for example | all | The code is entered in capital letters, digits and “_”, up to 100 values |
Tracker campaign | The Adset.pro tracker campaign the ad link points to (determined during sync) | all | An ad passes if its link points to the selected campaign. An ad set or campaign passes if it contains at least one such ad. Up to 100 campaigns |
Tracker source | The traffic source linked to the ad account's social profiles | all | Works for the whole ad account: either all of its objects match or none. If the ad account's profile is not visible to you, the filter may be unable to decide. Up to 100 sources |
Only new objects / Only objects older than | Object age in days | all (“Since start” — except ads) | See the section above. An object with unknown age does not pass |
Name matches / Name does not match | Name of the object at the selected level | all | Up to 5 masks per filter |
In simple mode an empty field means “Any”: the filter does not restrict anything. A filter that is not available at the selected level is disabled with the caption “Not available for this level”.
Important. If the rule must enable objects, do not set the “Status: Active” filter, otherwise stopped objects will not get into the rule. Note that the “enable” action only removes a pause set by rules: it does not touch a manual pause.
Simple and advanced mode
The switch above the filters: “Simple” and “Advanced (AND/OR)”.
Simple: all filled-in filters are combined with “AND”, and an object must pass each of them. This is enough almost always.
Advanced: filters are assembled into a tree of “All (AND)” groups (an object must pass every filter of the group) and “Any (OR)” groups (one is enough). The filter type is selected from a list; groups are added with the “Add an AND group” and “Add an OR group” buttons.
Advanced filter example. You need active ad sets whose name contains “nutra” or that point to the “Keto DE” tracker campaign:
All (AND)
Status: Active
Any (OR)
Name matches:
*nutra*Tracker campaign: Keto DE
Tree limits: 2 to 16 items per group, up to 32 filters and groups in total, nesting up to 4 levels. Under the tree there is a counter “Nodes: N of 32, depth: N of 4”.
If a filter cannot be shown in simple mode, the rule opens in advanced mode with the note “The filter is more complex than the simple mode can show”, and simple mode is unavailable. The builder does not silently simplify such a filter.
When a filter “cannot decide”
Sometimes an object lacks the required value: its status, budget type, learning phase or age is unknown. Then the filter answers neither “yes” nor “no”, and the object does not get into the rule. This way the rule does not touch an object it knows little about. In an “Any (OR)” group, such an object still gets in if it passed another filter of the group. The counter shows how many objects were filtered out this way.
Manual objects and exclusions
“Manual objects” — Facebook IDs of objects added to the filter results. A manual object gets into the rule without filter checks, but only if it exists in the selected ad accounts.
“Exclusions” — Facebook IDs of objects the rule does not touch, even if they pass the filters or are added manually. Exclusions take precedence over everything.
IDs are entered as digits only, separated by commas or spaces; you can paste a whole list. Each field holds up to 500 IDs: anything that does not fit stays in the field with a hint. The ID level must match the rule level: an ad set rule needs ad set IDs.
Important. If there are no filters but there are manual objects, the rule works only with them. The builder reminds you: “There are no filters, so the rule works only with manually added objects. Remove them to cover all objects of the level”.
Examples:
a rule by the mask
*nutra*, but one test campaign must not be touched — add its ID to the exclusions;an “only new” rule, but you also need to watch one old ad set — add its ID to “Manual objects”;
a rule for three specific ad sets — no filters, three IDs in “Manual objects”.
The “Objects in the rule now” counter
At the bottom of the “Which objects” step, the builder shows how many objects match the scope right now. The counter updates about half a second after each edit. It shows:
“Total: N” across all ad accounts;
per ad account: “objects”, “manual”, “excluded” and “checked” (how many objects of the ad account were scanned);
“Updating” if a recount is already in progress, and “Outdated” if the numbers refer to a previous version of the filter. The refresh button recounts manually.
The “Show objects” toggle displays up to 20 samples per ad account with the columns “Name”, “Status”, “Age”, “Age counted from” and “Budget”. Manual objects are marked “manual”. If there are more objects, the bottom shows “Showing 20 of N”.
The counter appears when at least one ad account is selected and the filters have no errors. While there are errors, a hint and a list of problems are shown instead of numbers.
Important. The counter shows which objects the rule checks, not which ones it will act on. Usually far fewer objects match the conditions. What the rule would do right now is shown on the “Preview” step (see “Preview, test and live modes”).
Counter warnings
Warning | What it means and what to do |
|---|---|
“The filter matches no objects: the rule will do nothing” | No ad account has matching objects. Check the masks (did you forget |
“No objects match in …” | Other ad accounts have objects, but this one does not. Perhaps the ad account is unnecessary or uses a different naming scheme |
“Ad account … is not visible in the team: it adds no objects” | The ad account is not synced in the team or is not visible. Check the profile and the sync |
“…: N objects, more than 500. Make sure the filter is not too broad” | A rule with a budget action on hundreds of objects is more often a filter mistake than intent. Narrow the masks or add “Only new” |
“…: more than 5000 objects, the rule will process only the first 5000” | Per check, the rule takes no more than 5000 objects per ad account, in ID order. The rest are skipped. Be sure to narrow the filter |
“…: objects without a known age do not pass the age filter: N” | The age of these objects is unknown (see the section on objects that existed before the ad account was connected). If you need them, add them manually |
“…: objects the filters could not decide on (unknown status or budget type): N” | These objects lack the value the filter checks: Facebook did not send it or the sync has not received it yet. Such objects do not get into the rule. If you need them, add them manually or remove the filter |
“Manual objects not found in the selected ad accounts: N” | A mistyped ID, an object from another ad account or another level |
Why a specific object did not get into the rule
Open the rule log, the “Why not now?” tab, and enter the object ID. It shows whether the object is in the scope (“Matches the filters”, “Added manually”, “All objects of the level”, “Excluded”, “Filtered out”, “Filters could not decide”, “Not among the manually added objects”), as well as which filter cut it off and with what value. For details, see “Log: runs, “Why?” and rollback”.
Limits
What | Limit |
|---|---|
Ad accounts per rule | up to 50 |
Priority | 1–100, 50 by default |
Masks in one name filter | up to 5, each up to 120 characters |
Values in the “Campaign objective”, “Tracker campaign”, “Tracker source” filters | up to 100 |
“Younger than” and “older than” age | from 1 to 365 days |
Filter tree (advanced mode) | up to 32 filters and groups, nesting up to 4, 2–16 items per group |
Manual objects | up to 500 IDs |
Exclusions | up to 500 IDs |
Objects per ad account per check | up to 5000 (the rest are skipped) |
“Too many objects” warning threshold | more than 500 per ad account |
Samples in “Show objects” | up to 20 per ad account |
Ready-made setups
Task | How to set up |
|---|---|
Stop-loss on new nutra ad sets, except test ones | Level: Ad sets. Only new objects: younger than 7 d, since first spend. Name matches a mask: |
Scaling CBO campaigns of one setup | Level: Campaigns. Budget type: CBO. Tracker campaign: the required campaign. Status: Active |
Cutting the budget of ad sets in ABO campaigns | Level: Ad sets. Budget type: ABO. Status: Active |
Turning off ads without installs in fresh launches | Level: Ads. Only new objects: younger than 3 d. Status: Active |
All active campaigns of the ad account except one | Level: Campaigns. Status: Active. Exclusions: the ID of that campaign |
Watching three specific ad sets | No filters. Manual objects: three ad set IDs |
