Metrics and attributes reference
This page lists all metrics and attributes that can be selected in autorule conditions: their names in the interface, what they measure, the units they are entered in, where the data comes from and at which levels they are available. How to build conditions from them is covered in the article “Conditions: metrics, windows, attribution and comparisons”.
In the metric picker they are grouped as follows:
“Spend and delivery” — Facebook data;
“Tracker conversions” — installs, registrations, deposits, revenue;
“Derived metrics” — costs, conversion rates (CR), profit, ROI, ROAS;
“Object attributes” — status, budget, budget type, learning phase, age, time since changes, rule trigger counter.
Where the data comes from
Facebook — spend, impressions and clicks. They arrive with the profile spend sync, broken down by hour. Spend is converted to USD at the exchange rate.
Adset.pro tracker — installs, registrations, deposits, redeposits and revenue. They are linked to a Facebook campaign, ad set or ad via the ID macros in the traffic source and are updated roughly every 15 minutes.
The rule checks data freshness before every run. If the data lags more than allowed (90 minutes by default, the “Allowed data lag” setting), the run is skipped and the reason is shown in the log. Details are in the article “Schedule, guards and priorities”.
Important. Tracker metrics see conversions only from sources where the campaign, ad set and ad ID macros are set up. If none of the ad account's sources passes them, live is blocked in the ad account. If only some of them do, the preview warns that part of the traffic will have zero conversions. How to set this up is described in the article “Setting up traffic sources”.
Facebook metrics
Name in the interface | What it measures | Units | Source | Levels | Default attribution |
|---|---|---|---|---|---|
Spend | Spend according to Facebook, converted to USD | USD | campaigns, ad sets, ads | none (always by delivery hour) | |
Spend incl. fee | Spend × (1 + the profile's agency fee in %). If the profile has no agency, it equals spend. Matches the column of the same name in the Meta section tables | USD | all | none | |
Impressions | Impressions according to Facebook | count | all | none | |
Clicks | Platform clicks — link clicks according to Facebook. These are not tracker clicks | count | all | none |
Tracker conversions
Name in the interface | What it measures | Units | Source | Levels | Default attribution |
|---|---|---|---|---|---|
Installs | PWA installs and external installs | count | tracker | all | By event time |
Registrations | Registrations (hold) from CPA network postbacks | count | tracker | all | By event time |
Deposits | First deposits (FTD, accept) | count | tracker | all | By event time |
Redeposits | Repeat deposits | count | tracker | all | By event time |
Revenue | Revenue from tracker conversions | USD | tracker | all | By event time |
Tip. “Deposits” use event-time attribution by default. For stop-losses like “high spend today but no deposits”, it is better to select “By click date (cohort)” in the condition. Today's spend is then compared with deposits from today's clicks, and yesterday's deposits do not mask an ad set that is dead today. This is how the “Stop-loss: no deposits today” template works.
Derived metrics
Name in the interface | Formula | Units | Source | Levels | Default attribution |
|---|---|---|---|---|---|
CPC | Spend ÷ Clicks | USD | all | none | |
CTR | Clicks ÷ Impressions | % (0–100) | all | none | |
CPM | Spend ÷ Impressions × 1000 | USD | all | none | |
CPI | Spend ÷ Installs | USD | Facebook + tracker | all | By event time |
Cost per registration | Spend ÷ Registrations | USD | Facebook + tracker | all | By event time |
CPD | Spend ÷ Deposits | USD | Facebook + tracker | all | By click date (cohort) |
CR click → install | Installs ÷ Platform clicks | % (0–100) | Facebook + tracker | all | By event time |
CR install → registration | Registrations ÷ Installs | % (0–100) | tracker | all | By event time |
CR registration → deposit | Deposits ÷ Registrations | % (0–100) | tracker | all | By event time |
CR click → deposit | Deposits ÷ Platform clicks | % (0–100) | Facebook + tracker | all | By event time |
Profit | Revenue − Spend (spend without fee, as in the Meta section tables) | USD, can be negative | Facebook + tracker | all | By click date (cohort) |
ROI | (Revenue − Spend) ÷ Spend | %: +25 — earned a quarter on top, −100 — the whole spend is lost. Threshold from −100 to 1000 | Facebook + tracker | all | By click date (cohort) |
ROAS | Revenue ÷ Spend | multiplier: 1 — broke even, 1.5 — revenue is one and a half times the spend. Threshold from 0 to 20 | Facebook + tracker | all | By click date (cohort) |
Click-based conversion rates (CR) are calculated from platform clicks, i.e. from link clicks in Facebook, not from tracker clicks. That is why “CR click → install” in a rule may differ from the CR in tracker statistics. The builder reminds you of this with a hint next to the condition.
In formulas with spend, attribution affects only the conversion part. Spend is always taken by delivery hour within the window. With cohort attribution, revenue and deposits are taken from clicks of the same window.
Percentages (CTR, CR, ROI) are entered as percentages: 20 means 20 %. ROAS is entered as a multiplier.
Metric properties that affect conditions
Property | Which metrics | What it gives |
|---|---|---|
Can be compared with the parent | CPC, CTR, CPM, CPI, cost per registration, CPD, all CRs, ROI, ROAS | “Another metric × multiplier” with the “Parent” option. The parent value is the metric for the whole parent (total spend ÷ all installs, etc.), not the average of its children. Not available at the campaign level |
Suitable as minimum volume | Spend, Clicks, Impressions, Installs | An “at least” threshold below which the object is not evaluated |
Revenue-type (understated for “today” by event time) | Deposits, Registrations, Redeposits, Revenue, Profit, ROI, ROAS, CPD | With the “Today” window and event-time attribution, the builder warns: “Today's revenue by event time is understated” |
Has attribution | All tracker metrics and all derived metrics that involve the tracker | The condition gets the “Attribution” and “Exclude last hours” fields |
Integer thresholds | Impressions, Clicks, Installs, Registrations, Deposits, Redeposits, Rule actions on the object | The threshold is an integer from 0 |
Bounded thresholds | CTR and CR — 0–100 %, ROI — from −100 % to 1000 %, ROAS — 0–20 | A threshold outside the bounds will not be saved: “Threshold is outside the metric range” |
When a metric has “no data”
Facebook metrics are known only if the object has spend data in the window. No data means “no data”, not 0: the rule cannot tell “did not deliver” from “the sync has not arrived yet”.
Tracker metrics are calculated honestly when there is traffic in the window: many clicks and no deposits — “Deposits” = 0. There is no value only if the window has neither spend nor conversions.
Derived metrics have “no data” if any part of the formula is unknown or the denominator is zero: CPD without deposits, CTR without impressions, CR click → install without clicks.
Profit and ROI without conversions are not empty: a spend of 50 USD with no revenue gives a profit of −50 USD and ROI of −100 %.
A condition with “no data” gets “unknown” and does not fire by itself. Details are in the “Yes”, “no” and “unknown” section of the article “Conditions”.
Why rule figures may differ from the Meta section tables
Case | In the rule | In the Meta section table |
|---|---|---|
CPC, CTR, CPM with zero clicks or impressions | no data | 0 |
Profit and ROI when the object has no conversions at all | −spend and −100 % | “—” |
Tracker metrics with “By click date (cohort)” attribution | by click hour | by event time (the table does not calculate by cohort) |
Ad accounts with a half-hour offset time zone (for example, Asia/Kolkata) | conversions are counted in whole hours within the window, without the half hours at the edges | with the edge half hours |
Otherwise, for the same window by event time, the rule and the table calculate spend and conversions the same way.
Object attributes
Attributes describe the current state of the object. They have no window and no attribution. They can be compared only with a number or a range, and list attributes — only with the “equals” operator and a value from the list.
Name in the interface | What it means | Values and units | Levels | Notes |
|---|---|---|---|---|
Status | The status set by a user or a rule | Active, Paused, Deleted, Archived, In review, Disabled, With issues | campaigns, ad sets, ads | “Equals” only. If the status is unknown — no data |
Delivery status | The actual delivery status: taking into account a pause of the campaign or ad set above, moderation and payment | the same values | all | An ad set of a stopped campaign: “Status” — Active, “Delivery status” — Paused. An ad under moderation — “In review” |
Daily budget | The object's current daily budget | ad account currency, regular units: 50.5 is $50.50 for a USD ad account, 5000 is ¥5000 for a JPY ad account | campaigns, ad sets | If the budget is set at another level (ABO campaign, ad set of a CBO campaign) or the ad account currency is unknown — no data |
Lifetime budget | The current lifetime budget | ad account currency | campaigns, ad sets | Same as for the daily budget |
Budget type | Where the budget lives. For an ad set — the budget type of its campaign | CBO (campaign budget), ABO (ad set budget) | campaigns, ad sets | “Equals” only |
Learning phase | The Facebook learning phase | Learning, Learning complete, Learning limited, Learning waived, Unknown | ad sets | “Equals” only. Facebook reports the phase only for active ad sets, not for dynamic creatives and not in all ad accounts. Profiles on the Chrome extension do not pass it. If Facebook has not sent the phase — no data |
Hours since created | How much time has passed since the object was created in Facebook | hours (entered in hours or days) | all | If the creation date is unknown (happens with profiles on the Chrome extension) — no data |
Hours since start | How much time has passed since the start time set in the campaign or ad set | hours | campaigns, ad sets | Start is still in the future or not set — no data |
Hours since first spend | How much time has passed since the first hour in which the object had spend | hours | all | No spend yet — no data; the creation date is not substituted. For objects that spent before the ad account was connected, the count starts from the first spend seen by Adset.pro |
Hours since budget change | How much time has passed since the last budget change, whoever made it | hours | campaigns, ad sets | See below: if there were no changes, only the lower bound is known |
Hours since status change | How much time has passed since the last status change, whoever made it | hours | all | Same |
Rule actions on the object | How many times this rule has already fired on the object | count | all | Only live triggers are counted, including notifications. One check with actions is one trigger. In dry-run the counter does not grow. An object the rule has not touched has 0 |
Hours since budget and status change
Any change counts: made by a rule, in Facebook or Ads Manager, by a user in Adset.pro or by a rollback. Adset.pro notices changes made in Ads Manager at the next profile sync, so they appear with a delay.
If Adset.pro has not seen any change, the exact time is unknown. The rule then knows only the lower bound: “at least N hours”. It is counted from the latest of three moments: object creation, connection of the ad account to the team, and the start of change tracking in Adset.pro. If the object was created after the connection, the value is exact.
With a lower bound, a comparison is resolved only if the answer is the same for any real value. Otherwise the condition is “unknown” with the reason “Only a lower bound is known”, and the preview shows the value as “≥ N”.
Example. The ad account was connected 30 hours ago, the ad set was created a month ago, and the budget has not been changed since the connection. The “Hours since budget change” value is at least 30:
“greater than 24” — “yes”: even the minimum 30 hours is more than 24;
“greater than 48” — “unknown”: the real value may be 40 or 400;
“less than 12” — “no”: the value is definitely not less than 30.
The “Since budget change” window in conditions works from the same moment. If there were no changes, the window start is unknown, and the condition is “unknown”.
Age: what to count from
Object age is used in two places: in the scope filters (“Only new objects”, “Only objects older than”) and in the “Hours since …” attributes. They are calculated differently:
Counted from | In the “Only new” / “older than” filter | In the condition attribute |
|---|---|---|
Since first spend (default) | From the first hour with spend. While there is no spend — from creation in Facebook. For objects that existed before the ad account was connected — from creation, and if the creation date is unknown, the age is unknown and the object does not pass the filter | “Hours since first spend”: strictly from the first spend seen by Adset.pro. No spend — no data; there is no adjustment for the connection |
Since created | From the creation date in Facebook | “Hours since created” — the same |
Since start | From the campaign or ad set start time. If the start is in the future, the object is considered younger than any threshold. Not available for ads | “Hours since start”: start in the future — no data |
In the object examples on the “Which objects” step, the “Age counted from” column shows what the age was counted from: “First spend”, “Created in Facebook”, “Start time”, “Ad set start time”. If a substitution was applied, it shows “No spend yet”, “First spend may predate the connection: creation time used” or “First spend may predate the connection: age is unknown”. Details are in the article “Scope”.
Tip. To limit a rule to fresh launches, use the “Only new objects” filter rather than the condition “Hours since first spend less than …”. The filter accounts for objects without spend and the ad account connection adjustment, and cuts off extra objects before metrics are even calculated.
Attribute usage examples
“Hours since budget change · greater than 24” in a scaling rule: do not raise the budget until Facebook has processed the previous change.
“Rule actions on the object · less than 3”: the rule raises the budget no more than three times in total.
“Learning phase · equals · Learning complete”: scale only ad sets that have exited learning.
“Daily budget · less than 300”: beyond that, the budget is raised manually (in the ad account currency).
“Delivery status · equals · With issues” with the “notify” action: find out about delivery problems.
“Hours since status change · greater than 72” together with metrics over 3 days: evaluate only objects that ran all three days without restarts.
