Log: runs, “Why?” and rollback
The rule log is the history of everything the rule has checked and done. Every ad account check, every action on an object and the reason for every skip are recorded here. The log shows why the rule paused an ad set or why it left it alone, and this is also where you can roll back a mistaken action.
The log works the same in test mode (Dry-run) and in live mode (Live). In Dry-run, the rule changes nothing in Facebook but writes to the log what it would have done. So before switching to Live, review the log for at least a day or two.
How to open the log
From the rule list (Meta / TikTok → Autorules): the “Log” button in the rule row or the time in the “Last run” column — it is an “Open the rule log” link.
From the rule builder: the “Log” button in the header.
From a notification: clicking a notification in the notification bell opens the log of that rule. In Telegram and email, the end of the message has a
Rule log:line with a link to the log.Via a colleague's link: the open tab and the object being checked are saved in the page address. You can send a team lead a link to the log, to the “Scheduled enables” tab or to the check of a specific object: they will see the same thing.
The log header shows the rule name, its state (“Enabled”, “Disabled” or “Deleted”), mode, level, priority, ad accounts and the time of the last run. Buttons: “Back to the rules”, “Edit rule” (or “Open rule” if your role cannot change it) and “Refresh”.
Log tabs
Tab | What it shows | When to look |
|---|---|---|
Runs | Every check of every ad account: how many objects are under the rule, how many matched, what was applied, skipped and with what errors. A row can be expanded to see actions per object. | Every time you want to understand what the rule did. |
Scheduled enables | Objects the rule paused until the end of the day and must enable at 00:00 in the ad account time zone. | In the morning after a stop-loss has worked: did everything get enabled? |
Why not now? | A live check of a single object against current data: whether it is in the rule, what each condition gives and what the rule would do right now. | When the rule does not touch an object that, in your opinion, it should have. |
Runs: how to read them
A run is one check of one ad account by one rule. If a rule has three ad accounts, each scheduled launch produces three rows. Runs appear only when the rule is enabled and its scheduled time has come in the ad account. If the rule is disabled, outside its activity window, or its scheduled time has not come yet, there will be no rows.
Runs table columns
Column | What it means |
|---|---|
Started | Start time in the ad account time zone. If your time zone is different, your time is shown below in gray. Under the time — where the run came from: “Schedule” or “Rollback” (a rollback is recorded as a separate run). |
Ad account | The ad account that was checked. |
Mode | Dry-run or Live at the time of the run. |
Status | The result of the run (table below); under it, the reason for the skip or error. An orange triangle means the run has warnings — hover over it to read them. The filter icon means “The scope hit the object limit: not every object was evaluated.” |
In scope | How many objects of the ad account fell under the rule: level, masks, statuses, “only new”. |
Matched | How many objects met the conditions. Hover over the number: the “Did not match” tooltip shows why the rest did not qualify (“Conditions not met”, “Not enough data to decide”, “Below the minimum volume”). |
Applied | Changes applied in Facebook. Under the number — changes awaiting confirmation from Facebook and notifications sent. |
Simulated | Test mode: how many actions the rule would have taken. |
Skipped | Actions stopped by guards, conflicts with other rules or inapplicability, as well as “No action needed”. The “By outcome” tooltip breaks the number down by reason. |
Errors | Facebook API and token errors. A non-zero number is highlighted in red. |
Data | Data freshness: “Fresh” or “Stale” and the lag. The tooltip shows “Data as of …”, “Rule limit: …” and the reasons if the data is lagging. |
Duration | How long the run took. |
Above the table there are filters by status, ad account and period (days are counted in your time zone) and a “Refresh” button. A run with the “Running” status does not update on its own: click “Refresh” after a minute.
Run statuses
Status | What it means | What to do |
|---|---|---|
Running | The run is in progress right now. | Wait and refresh the log. |
Completed | The ad account was checked and decisions were recorded. This does not mean the rule did anything: look at the counters. | Nothing, if the counters are as expected. |
Skipped: stale data | The data is older than the rule's “Allowed data lag” permits (90 minutes by default). Objects were not evaluated, so as not to decide on old numbers. | See the reason in the “Data” column and the breakdown in the article on reasons. |
Skipped | The run did not take place for another reason: the ad account is not available to the rule owner, the ad account time zone is unknown, the rule owner is unavailable, autorules are not on the plan, or the rule was changed during the run. | The reason is shown under the status. |
Failed | The run crashed. Usually this is an internal failure, and the rule will repeat the check on schedule. The exception is “Rule configuration is no longer valid”. | For “Rule configuration is no longer valid”, open the rule, fix it and save it. |
Example of reading a run
Stop-loss on the “UA Nutra 3” ad account, run at 14:30: “In scope: 42”, “Matched: 3”, “Applied: 2”, “Skipped: 1”, “Errors: 0”, “Data: Fresh · 25 min”. This means the rule checked 42 active ad sets; for three of them today's spend exceeded the threshold without deposits; two were paused until the end of the day, and one action was skipped. Expand the row and look at that ad set: for example, “Skipped: recent manual change” — the buyer enabled it by hand an hour ago, and the rule respects that decision.
Executions: what the rule did with an object
Expand a run row (the arrow on the left) to see object cards. The log contains only objects that met the conditions. Non-matching ones are visible only as a number in the “Did not match” tooltip. If you need to investigate a specific non-matching object, use the “Why not now?” tab.
The object card contains:
Level and name (campaign, ad set or ad), object ID and ad account.
Buttons: “Copy ID”, “Ads Manager” (opens the object in Ads Manager), “Meta section” (the table of this level for the ad account in adset.pro), “Rule history” and “Why not now?”.
A line for each action:
the action with its parameters, for example “Pause until end of day” or “Daily budget: +20%, limits 20 … 500”;
before → after, for example “Daily budget: 100.00 USD → 120.00 USD” or “Status: Active → Paused”. If the field did not change, it shows “No change”;
the outcome as a colored label with the reason below it (full breakdown in the table below and in the article on reasons);
in case of a conflict — “Won by rule X” with a link to the winning rule's log;
which profile the change went through: “Via Developer token, profile …”, “Via Browser agent, profile …”, etc.;
the Facebook error text, if there was one (“Facebook API error: …”);
the “Roll back” button or the “Rolled back” label.
The “Why?” button under the actions expands a snapshot of the conditions at the time of the decision (section below).
Executions are shown 100 per page. Above the list there are quick filters “Errors: N”, “Awaiting confirmation: N”, “Skipped: N” and the “Outcome” filter. Important records come first within a page. To see all of them, use the outcome filter.
Action outcomes
The outcome shows how a specific action on a specific object ended. Names are as in the UI.
Outcome | Group | What it means | What to do |
|---|---|---|---|
Applied | Done | The change was sent to Facebook and confirmed. The reason “Confirmed by the Facebook state” means there was no immediate response, but on checking the object turned out to be in the required state. | Nothing. If the rule made a mistake, roll back the action. |
Notified | Done | A Live rule performed the “Notify” action. Nothing was changed in the ad account. | Check the object from the notification. |
Scheduled | Done | A service outcome for actions deferred until later. In the beta, the rule usually does not write it: the enable at 00:00 is shown on the “Scheduled enables” tab. | — |
Awaiting confirmation | In progress | The change was sent, but Facebook has not confirmed it yet. Reasons: “Being sent to Facebook”, “Checking the result”, “Facebook did not confirm the change”, “Facebook returned no response”. The change may already have been applied. In about 10 minutes, the rule checks with Facebook: if the object is in the required state, the outcome becomes “Applied”; if not — “Facebook API error” with the reason “Result is unknown”. The rule does not blindly repeat the change. | Do not edit the object by hand until the outcome is clear. Check it in Ads Manager. |
Simulated (dry-run) | Test | The rule is in Dry-run: in Live it would have performed this action. Nothing was changed in Facebook. “Before → after” shows what would have changed. | Evaluate whether you agree with the decision. If so, switch the rule to Live. |
No action needed | Skipped | The object is already in the required state: “Object is already in the target status” or “Budget already has the target value”. | Nothing. |
Skipped: cooldown | Skipped | The “Pause after an action” since this rule's previous action on the object has not passed yet. The reason “The previous action is not confirmed yet” means the previous change is still awaiting confirmation from Facebook. | Nothing, this is a guard. If the pause is too long, reduce it in the rule. |
Skipped: daily limit | Skipped | The “Actions per object a day” limit is exhausted (the day follows the ad account time zone; notifications also count). | Nothing. The limit resets at 00:00 ad account time. |
Skipped: recent manual change | Skipped | The object was recently changed by hand, and the rule is waiting out the “Pause after a manual change”. For enabling: the object was not turned off by a rule, so the rule does not enable it. | Nothing, this protects manual decisions. |
Skipped: conflict with another rule | Skipped | In this run, the object is being changed by another rule with a higher priority, or a pause won (a pause takes precedence over enabling and a budget increase). The winner is shown as a link. | Check the rule priorities if the wrong rule won. |
Skipped: not applicable | Skipped | The action cannot be applied to this object: the object is deleted, archived or disabled by Facebook, the ad has no budget, the budget is at another level (CBO/ABO), tracker attribution is not set up, etc. | See the reason and the table of reasons. |
Skipped: object changed | Skipped | Before sending, the rule re-read the object in Facebook, and the status or budget is no longer what it was at the time of the decision. The rule does not apply a decision calculated on old data. | Nothing. The object will be re-evaluated on the next run. |
Skipped: no profile can make changes | Skipped | There is no profile through which the ad account can be changed: changes are not allowed on the profile, the ad account is available only via the Chrome extension, the agent has no proxy, or the profile is busy. | Enable the permission in social profiles or connect the ad account with a token or the browser agent. |
Skipped: no permission | Skipped | The profile token lacks the ads_management permission or has no role in the ad account. | Reconnect the profile with the required permission. |
Skipped: ad account budget cap | Skipped | After the action, the sum of the ad account's daily budgets would exceed the “Ad account budget cap”, or this sum could not be calculated. | Raise the cap if the budget growth is planned. |
Skipped: budget would not change | Skipped | The new budget is the same as the current one: for example, the budget is already at the “Not above” limit or the “Daily growth limit” is exhausted. | Check the limits in the action. |
Facebook API error | Error | Facebook rejected the change or did not respond, the change was not sent because of a failure, or the result is unknown. The Facebook error text is in the action line. | See the reason; for “Result is unknown”, check the object in Ads Manager. |
Token error | Error | The profile's token or browser session is no longer valid. The profile is marked as requiring reconnection. | Reconnect the profile; for the browser agent, open the antidetect profile so the agent picks up a fresh session. |
Facebook rate limit | Error | Facebook has limited the number of requests. The ad account is paused (for 15 minutes by default), and the remaining actions for the ad account in this run are not sent. | Nothing. The rule will retry on the next runs. |
Important. Skips by guards (“cooldown”, “daily limit”, “manual change”, “conflict”) are normal operation, not a failure. Errors are worth worrying about only if the “Errors” column regularly shows non-zero numbers or a Live rule constantly reports “no profile can make changes”.
“Why?”: snapshot of conditions
The “Why?” button on an object expands the “Why it fired” table: the values at the time of the decision for each condition. It answers the question “why did the rule decide this way”, even if the numbers have changed since then.
Column | What it contains |
|---|---|
Condition | Metric, window (“Today”, “Yesterday”, “Last 3 d”, “Lifetime”, “Today, without the last 2 h”), attribution (“By event time” or “By click date (cohort)”) and the exact window boundaries with the ad account time zone. |
Value | What the object got: spend and revenue in USD, budgets in the ad account currency, ROI and CTR in percent. |
Compared with | Threshold or range. If the comparison is relative, you can see what the threshold was calculated from: “1.5 CPD of the parent, Last 3 d: $40” or “CTR, Last 3 d: 2.1%, change −30%”. |
Result | “Yes”, “No” or “Unknown”. For “Unknown”, the reason is written under the label, for example “No data” or “No complete hours in the window yet”. |
Above the table is a summary “Yes: N”, “No: N”, “Unknown: N”. Below the table is the “Significance threshold” if the rule has a minimum volume set: for example, “Clicks: 180 of 100 · Reached”.
Example: stop-loss
A rule from the “Stop-loss: no deposits today” template, target CPD $30. The ad set “nutra_ua_video_03” has been paused until the end of the day. “Why?” shows:
Condition | Value | Compared with | Result |
|---|---|---|---|
Spend · Today | $64.20 | greater than $60.00 | Yes |
Deposits · Today · By click date (cohort) | 0 | equals 0 | Yes |
Both conditions are “Yes” and are combined with “AND”, so the rule fired. If a deposit from today's clicks arrived in the evening, that does not make the decision wrong: the snapshot honestly shows what was known at 14:30. The text above the table says exactly that: “Values as of the decision. Tracker revenue may have matured since then.”
How to read “Unknown”
“Unknown” means “there is no data to answer”, not “no”. The rule does not touch an object if the result of the conditions is “Unknown”.
In an “AND” group: at least one “No” — the result is “No”; all “Yes” except one “Unknown” — the result is “Unknown”, and the rule does not fire.
In an “OR” group: at least one “Yes” — the result is “Yes”, even if the others are unknown.
Example: the condition “ROI · Yesterday · cohort less than −30%”, value “—”, result “Unknown — No data”. The ad set had no spend yesterday, so there is nothing to calculate ROI from. All “Unknown” reasons are covered in the article on reasons.
Rule history for an object
The “Rule history” button on an object opens all actions of all autorules available to you on this object over the last 90 days, newest first. Here you can see, for example, that in the morning a scaling rule cut the ad set, in the afternoon a stop-loss turned it off, and at 00:00 it was enabled again.
Each record has the rule with a link to its log, time, action, “before → after”, outcome and reason.
There is a filter by outcome.
From the history you can also roll back an action and expand “Why?”.
Tip. If an object “jumps around” (the budget goes up, then down), open its history: most often two rules with overlapping conditions work on the same object. Separate them by masks or priorities.
“Why not now?”
A live check of a single object against current data. Useful when you are looking at an ad set in Ads Manager and do not understand why the rule does not touch it.
Open the “Why not now?” tab or click the button of the same name on an object in the log: the fields are filled in automatically.
Enter the Facebook object ID — of a campaign, ad set or ad, digits only.
Select the ad account if the rule has several.
Click “Check”.
What the result shows:
“Evaluated at …” — the check time and a link to Ads Manager.
If the ad account data is stale — “The data of this ad account is stale, so the rule would skip it now.” If the ad account is skipped for another reason — “The rule would skip this ad account now: …”.
If live is blocked — “Live actions are blocked in this ad account: Tracker attribution is not set up”.
Plan warnings (for example, “No minimum volume threshold”).
Scope — “In scope” or “Not in scope” and why: “Matches the filters”, “Added manually”, “Excluded”, “Filtered out”, “Filters could not decide”. The “Filters that excluded the object” block shows the specific filter and its value, for example “Name matches: *_nutra”.
Conditions — “The rule would fire” or “The rule would not fire” with the reason, and the “Conditions now” table in the same format as “Why?”.
What the rule would do — a list of actions or “Nothing: the object does not match the rule or is outside its scope.”
Important. The check does not take into account the pause between actions, daily limits, conflicts with other rules or the ad account budget cap: those are checked by the run itself. So “The rule would fire” does not guarantee an action on the next run. Look for the reason of an actual skip in the outcome on the “Runs” tab.
If the object is not in the ad account, you will see “Object … was not found in ad account ….” Check the ID and the ad account: campaign and ad set IDs are often confused.
Scheduled enables
When a rule sets an object to “Pause until end of day”, it promises to enable it at 00:00 in the ad account time zone. The “Scheduled enables” tab shows these promises and how they were kept.
Column | What it means |
|---|---|
Object | ID and level, a link to Ads Manager and the rule history. |
Ad account | The object's ad account. |
Enable at | The enable moment in ad account time and in your time. |
Paused at | When the rule set the pause. |
Attempts | How many times enabling was attempted, and “Next attempt: …” if there will be a retry. |
Result | Outcome, reason, rule state and the Facebook error, if there was one. |
Statuses: “Waiting” (00:00 has not come yet or a retry is pending), “Sending”, “Done”, “Cancelled”, “Failed” (retries are exhausted, the object stayed off). Attempt results: “Enabled”, “Enabled (confirmed)”, “Cancelled”, “Failed”, “Will retry”, “Skipped”.
Enabling is cancelled if the object was touched after the pause: “Object was changed after the pause”, “Object was edited in Facebook after the pause”, “The pause was rolled back”, “Another rule pauses the object permanently”. The rule does not enable what a person or another rule turned off after the pause.
The object is enabled even if the rule has since been disabled or deleted: the pause was set by the rule, and the promise holds. The rule state is shown in the result: “Rule active”, “Rule paused”, “Rule deleted”, “Rule not found”.
If enabling fails (no profile, token, Facebook limits), the rule retries at increasing intervals (5, 10, 20, 40, 60 minutes) within 24 hours after 00:00. The rule owner gets a notification if the object stays off. More in the article “Notifications”.
Rollback
If a rule did the wrong thing — turned off a live ad set or raised the budget of the wrong one — the action can be rolled back. A rollback returns the object to the state it was in before the rule's action and immediately sends this change to Facebook.
How to roll back, step by step
Open the rule log → the “Runs” tab → expand the run you need. Or open “Rule history” on the object.
Find the action with the “Applied” outcome and click “Roll back”.
In the “Roll back the action” dialog, check the “after the rule action → after rollback” line, for example “Status: Paused → Active” or “Daily budget: 120.00 USD → 100.00 USD”.
Click “Roll back”.
Read the result:
“The action was rolled back.” — done; the record gets the “Rolled back” label;
“The rollback was sent. Waiting for Facebook to confirm it.” — check the log in a few minutes;
“This action was already rolled back (…), nothing was sent again.” — a rollback already took place;
“The rollback was not applied: …” — the reason is in the text; the rollback can be retried.
What happens after a rollback:
The rollback is recorded as a separate run with the “Rollback” label in the “Started” column, and the original action gets the “Rolled back” label.
Rolling back a “Pause until end of day” cancels its enable at 00:00.
For rules, a rollback is the same as a manual change. During the “Pause after a manual change” (24 hours by default), rules do not change the rolled-back field of the object: the status after rolling back a pause, or the budget after rolling back a budget change. Otherwise the rule would immediately repeat the same action.
The change is sent through a profile available to the person rolling back, not to the rule owner.
Who can roll back
The team owner, team lead, tech specialist and admin — the roles that can change rules. The “Meta autorules” plan feature is also required. A buyer sees the “Rolled back” label but has no “Roll back” button. Without the plan feature, the log opens read-only, and the button is disabled with the tooltip “Rollback is not available on your plan”.
When a rollback is impossible
Situation | What you will see | What to do |
|---|---|---|
The action was not applied: simulation, skip, error, awaiting confirmation, notification, or a rollback itself | There is no “Roll back” button. If the request was sent anyway — “This action cannot be rolled back”. | There is nothing to roll back: nothing was changed in Facebook, or the outcome is not yet known. |
The object was changed after the action — by you in Ads Manager, by a colleague in adset.pro or by another rule | “The object was changed after the rule action, so the rollback was refused to keep that change. The log has been refreshed.” | Adjust the object by hand. A rollback does not overwrite other people's changes. |
A rollback is already in progress | “A rollback of this action is already in progress. Refresh the log in a minute.” | Wait and refresh the log. |
There is no profile through which the ad account can be changed | “No connected profile can change this ad account right now: …” | Allow changes on the profile or connect the ad account with a token or the browser agent. |
Facebook rate limit | “Facebook rate limit reached. Try again in …” | Try again later. |
Facebook did not return the object state | “Facebook did not return the object state. Nothing was changed, try again later.” | Try again later. |
The server did not respond | “The server did not respond. The rollback may have been applied, so refresh the log before trying again.” | Refresh the log and check for the “Rolled back” label. |
No access to the ad account or no right to roll back | “You do not have access to this ad account” or “You do not have the right to roll back actions of this rule”. | Ask a team lead or the team owner to roll it back. |
The record is older than 90 days | “The record was not found: it may have expired, or you lost access to the rule.” | Change the object by hand. |
Tip. Roll back as soon as you notice a mistake. The longer you wait, the higher the chance that someone else changes the object and the rollback is refused.
Retention and access
What | How long it is kept |
|---|---|
Runs (rows of the “Runs” tab with counters) | 180 days |
Executions: actions on objects, “Why?”, rollback | 90 days. An older run will show “Execution records of this run are no longer available: they are kept for 90 days.” |
Rule history for an object | Last 90 days |
Scheduled enables | 90 days |
Who sees what: a buyer — logs of rules where they are the owner; a team lead — their own and their buyers'; the team owner — all team rules. A deleted rule is kept together with its log. After the rule owner changes, old records stay with the previous owner, and the new owner may not see them.
What to read next
Notifications — what arrives in the notification bell, Telegram and email.
Why a rule did not fire: reasons, limitations and FAQ — the full table of reasons from the log.
Schedule, guards and priorities — pause, limits, pause after a manual change.
