# Meta Ads automation

Source: https://skro.eu/docs/facebook/meta-ads-automation

Create performance-based or scheduled rules for Meta campaigns, ad sets, and ads. Configure conditions, budget limits, notifications, and action logs.

Meta Ads automation applies repeatable campaign controls using the conditions and schedules you configure in Skro. Use it to pause or enable entities, adjust daily budgets, or notify your team when a rule matches.

<Callout title="Availability">
Automation is currently only for Meta Ads**. It requires a paid Skro plan and an integrated Meta traffic source. Owners and managers can create and edit rules.
</Callout>

## Before you begin [#before-you-begin]

1. Complete the [Meta Ads integration](/docs/integrations/facebook-meta-ads-integration).
2. Link the integration to your Meta traffic source in Skro.
3. Confirm that your campaign tracking, cost synchronization, and conversion reporting work correctly.
4. Open **Automation** in the Ads Manager navigation.

Rules depend on the data available in your reports. Allow for delayed costs or conversions when choosing periods and thresholds.

## Create your first rule [#create-your-first-rule]

<Steps>

### 1. Name the rule and select a traffic source [#1-name-the-rule-and-select-a-traffic-source]

Select **Create** in the Automation toolbar. Enter a recognizable **Rule name**, such as `Notify about spend without conversions`.

Choose an integrated Meta **Traffic Source**. Review the displayed **Ad account**, **Reporting timezone**, and **Currency** to confirm that you selected the correct account.

A rule name must contain between 4 and 100 characters.

### 2. Choose the targets [#2-choose-the-targets]

Select the **Entity type** you want the rule to evaluate:

| Entity type | What it controls |
| --- | --- |
| **Campaigns** | Meta campaign entities associated with the selected scope. |
| **Ad sets/groups** | Ad set entities within the selected scope. |
| **Ads** | Individual ads within the selected scope. |

Then choose **Apply this rule to**:

- **All campaigns with traffic**: applies to the eligible campaigns associated with the selected traffic source.
- **Selected Skro campaigns**: limits the scope to the campaigns you select. You can select up to 50.

Start with a small, explicit scope so that you can review the behavior of the rule before expanding it.

### 3. Choose the trigger [#3-choose-the-trigger]

<Tabs items={["Metric conditions", "Scheduled action"]}>
<Tab value="Metric conditions" keepMounted>

Choose **When metric conditions are met**. Add up to five conditions, each containing a **Metric**, **Operator**, **Value**, and **Period**.

With multiple conditions, choose:

- **Match ALL conditions (AND)**: every condition must match.
- **Match ANY condition (OR)**: one matching condition is enough.

For example, use **AND** to require both `Cost > 50` and `Conversions Approved = 0`. Using **OR** would also match entities with zero approved conversions regardless of their spend.

Select the **Check frequency** and **Run window** as described below.

</Tab>
<Tab value="Scheduled action" keepMounted>

Choose **On a schedule**, select the weekdays, and set the time when the rule should run.

Scheduled rules run without metric conditions. Use this trigger for actions that should occur at a specific time, rather than actions that depend on campaign performance.

Review the account’s displayed timezone before selecting the time.

</Tab>
</Tabs>

### 4. Choose the action [#4-choose-the-action]

Select one action from the **Actions** section.

| Action | Configuration |
| --- | --- |
| **Pause** | Pauses the matching campaign, ad set, or ad. |
| **Enable** | Enables the matching campaign, ad set, or ad. |
| **Increase daily budget** | Choose a percentage or fixed increase, enter the amount, and set a **Maximum daily budget**. |
| **Decrease daily budget** | Choose a percentage or fixed decrease, enter the amount, and set a **Minimum daily budget**. |
| **Send notification only** | Reports the rule result through an in-app notification without changing Meta entities. |

Budget actions are available for **Campaigns** and **Ad sets/groups**. They are not available for individual **Ads**. Budget change values and the required maximum or minimum must be greater than zero.

<Callout title="Review first with notifications">
For your first rule, choose **Send notification only**. Review whether its conditions and scope identify the entities you intended before switching to an action that changes their status or budget.
</Callout>

### 5. Configure notifications and save [#5-configure-notifications-and-save]

Enable **In-app notification** if you want updates in your workspace’s notification inbox. This option is required and remains enabled for notification-only rules.

Select **Create rule**. For an existing rule, select **Save changes**.

Back in the Automation list, review the rule’s scope and enabled status. Use the status switch to control whether it should run.

</Steps>

## Metric reference [#metric-reference]

The metric selector includes the following reporting values:

| Category | Metrics |
| --- | --- |
| Traffic | Visits, Clicks |
| Financial results | Revenue, Cost, Profit |
| Conversions | Conversions Approved, Conversions All |
| Return | ROI %, ROAS, ROAS % |
| Unit economics | CPA, EPC, CPC, CPV |
| Rates | LP CTR %, CR % |
| Custom conversion events | Revenue and conversion count for each available custom event |

Choose the operator **is greater than**, **is less than**, **is equal to**, or **is not equal to**.

### ROAS and ROAS % [#roas-and-roas-]

**ROAS** uses the ratio `revenue / cost`. **ROAS %** uses `revenue / cost × 100`. For example, revenue of 200 and cost of 100 corresponds to ROAS `2` or ROAS `200%`. Enter the threshold in the unit used by the selected metric.

### Reporting periods [#reporting-periods]

Each condition can use **Today**, **Yesterday**, **Last 24 hours**, or **Last 3, 5, 7, 14, or 30 days**. The period determines the data evaluated by the condition; it does not determine how often the rule runs.

## Check frequency and run windows [#check-frequency-and-run-windows]

For metric-based rules, the available check frequencies are:

- Every 15 or 30 minutes.
- Every 1, 3, 6, or 12 hours. The form defaults to 12 hours.
- Daily, or every 3, 5, 7, or 14 days.

The **Run window** controls when the metric rule is allowed to run:

| Window | Use |
| --- | --- |
| **Continuously** | Evaluates at the selected frequency without an additional time restriction. |
| **Date range** | Restricts the rule to a start and end date and time. |
| **Weekly time range** | Restricts the rule to selected weekdays and time ranges. |

The frequency, run window, and reporting period are separate settings. A rule can check every hour during a weekly window while evaluating today’s metrics.

## Example: monitor spend without conversions [#example-monitor-spend-without-conversions]

The following values illustrate a rule configuration. Choose thresholds and periods that suit your own reporting and campaign goals.

| Setting | Example |
| --- | --- |
| **Rule name** | Notify about spend without conversions |
| **Entity type** | Ads |
| **Scope** | Selected Skro campaigns |
| **Match conditions** | ALL (AND) |
| **Condition 1** | Cost is greater than 50; period Today |
| **Condition 2** | Conversions Approved is equal to 0; period Today |
| **Check frequency** | Every 1 hour |
| **Run window** | Continuously |
| **Action** | Send notification only |

The cost threshold uses the currency displayed for the selected ad account. After reviewing results, you can edit the rule and choose **Pause** if that is the behavior you want.

## Review action logs [#review-action-logs]

Select a rule and choose **View logs**, or use the log icon in its row. The list shows external action results, including the time in **UTC**, campaign, action, status, and duration.

Open a row’s details to inspect the entity, HTTP status, request, and response. Results can be **Success**, **Failed**, or **Skipped**. Review the recorded details to understand a particular outcome.

A notification can open the associated execution. Use **Show all executions** to return to the full history for the rule.

<Callout title="An execution can have no external actions">
Notification-only rules do not change Meta entities. An execution with no recorded external actions does not, by itself, indicate an error. Check the notification and execution details alongside the action log.
</Callout>

## Manage existing rules [#manage-existing-rules]

- Use the **Enabled** switch to control a rule’s status.
- Select one rule and choose **Edit** to change its settings.
- Use **Refresh** to reload the list or action history.
- Use **Delete** only when you want to permanently remove the rule.

## Troubleshooting [#troubleshooting]

### The traffic source is rejected [#the-traffic-source-is-rejected]

Confirm that the traffic source has an integration and that its integration is for Meta Ads. A traffic source template without a connected account is not sufficient.

### The rule matches more entities than expected [#the-rule-matches-more-entities-than-expected]

Check **Entity type**, campaign scope, the condition periods, and **AND/OR** logic. Use selected campaigns and notification-only actions while reviewing the configuration.

### A budget action is unavailable [#a-budget-action-is-unavailable]

Select **Campaigns** or **Ad sets/groups**. Individual ads do not have the budget actions in the rule editor. For an available budget action, fill in the positive change value and the required maximum or minimum daily budget.

### Results differ from a report you are viewing [#results-differ-from-a-report-you-are-viewing]

Compare the same reporting period and account currency. Check for delays in synchronized cost or conversion data, and review the displayed reporting timezone. Action-log timestamps are shown in UTC.

### An action failed or was skipped [#an-action-failed-or-was-skipped]

Open the action details and review the recorded response. Check the connected Meta account and integration access, along with any budget limit you configured, before changing or re-enabling the rule.

## Related guides [#related-guides]

<Cards>
  <Card title="Meta Ads integration" href="/docs/integrations/facebook-meta-ads-integration" />
  <Card title="Manual Meta Ads optimization" href="/docs/facebook/how-to-optimize-facebook-meta-ads-directly-from-skro" />
  <Card title="Custom conversions" href="/docs/postback/custom-conversions" />
</Cards>
