> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nekt.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Facebook Campaign Management as a destination

> Update the status and budgets of your Meta campaigns, ad sets, and ads from Nekt.

Facebook Campaign Management lets you control your Meta advertising objects, campaigns, ad sets, and ads, directly from your data. Instead of manually editing each object in Ads Manager, you keep the desired state in a table and let Nekt apply it.

The Facebook Campaign Management connector reads a table where each row describes how a single Meta object should look, and applies those changes through Meta's Marketing API. This is ideal for automating routine ad operations: pausing under-performing campaigns, activating seasonal ones, or adjusting budgets in bulk based on the metrics already living in your catalog. By driving these changes from data, marketing and operations teams can react faster, keep spend under control, and avoid the errors that come with editing dozens of objects by hand.

## 1. Overview

Each row of your input table represents the **desired state of one Meta object**, identified by its ID. For every row, the connector sends an update to that object with the fields you mapped.

* One column must map to `id`, the Meta object you want to update.
* Every other mapped column (for example `status` or `daily_budget`) is a value to apply to that object.
* The same connector works for **campaigns, ad sets, and ads**, since they are all updated the same way by their ID.

The most common use cases are pausing/activating objects and changing budgets.

## 2. How the input table works

Think of your input table as "what each object should look like after the sync". Here is a simple example:

| id                 | status | daily\_budget |
| :----------------- | :----- | :------------ |
| 120247332527910413 | PAUSED | 3000          |
| 120247332527910999 | ACTIVE |               |

When this table is synced, the connector will:

* **Row 1**: pause campaign `120247332527910413` and set its daily budget to `3000` (which is R\$30,00, see [Important considerations](#3-important-considerations) about units).
* **Row 2**: activate campaign `120247332527910999` and leave its budget unchanged.

A few rules that make the table easy to work with:

* **Empty cells are ignored.** In row 2 the `daily_budget` cell is empty, so the budget is not touched. This means you only need to fill the columns you actually want to change.
* **A row needs at least the `id` plus one field to change.** A row with only an `id` and no other values is skipped.
* **You can mix object types.** Some rows can be campaigns and others ad sets or ads, as long as each `id` is correct.

<Tip>
  You usually build this table with a transformation that selects the objects you want to manage and computes the new `status` or budget from your metrics, for example "pause every campaign whose ROAS in the last 7 days is below 1".
</Tip>

## 3. Important considerations

* **Budgets are in cents by default.** Meta expects budget values in the account currency minor unit. For Brazilian Reais, `3000` means R$30,00 and `2000` means R$20,00. If you would rather enter values in your account currency (for example `30` for R\$30,00), enable **"Enter budgets in your account currency?"** in the configuration, and Nekt will multiply your value by 100 before sending it. This applies to `daily_budget` and `lifetime_budget`.

* **Activating objects can spend money.** Setting `status` to `ACTIVE` makes the object eligible to deliver and spend, exactly as if you flipped it on in Ads Manager. Make sure the budgets and the objects are correct before activating.

* **Status accepts `ACTIVE` or `PAUSED`.** These are applied as-is to the object.

<Warning>
  The access token used by this connector can modify real campaigns, ad sets, and ads. We strongly recommend testing on a paused campaign first to confirm your table and mapping behave as expected before managing live objects.
</Warning>

## 4. Add your Facebook Campaign Management access

1. In the [Destinations](https://app.nekt.ai/destinations) tab, click on the "Add destination" button located on the top right of your screen. Then, select the Facebook Campaign Management option from the list of connectors.

2. Click **Next** and you'll be prompted to add your access.

   * **Facebook authorization**: Complete Facebook authorization with an account that has the `ads_management` permission on the Facebook Ad Account whose objects you want to manage.
   * **Account ID**: Select the specific Facebook Ad Account that owns the objects you want to update.
   * **Enter budgets in your account currency?**: When enabled, you can provide budgets in your account currency major unit (for example `30` for R\$30,00) and Nekt multiplies the value by 100 to send it in cents, as Meta requires. Applies to `daily_budget` and `lifetime_budget`. Leave it disabled if your table already stores budgets in cents.
   * **Continue after a failed update?**: When enabled, if one object fails to update (for example an ID that no longer exists), the error is logged and the sync continues with the remaining rows, instead of stopping the whole run on the first error.
   * **Log request payload**: When enabled, the fields sent to the Marketing API for each updated object are written to the run logs. Useful for auditing budget and status changes.

3. Click **Next**.

## 5. Select your data to send

1. The next step is letting us know which data you want to send to the Facebook Campaign Management destination. Select the layer and then the desired table.

   > Tip: The table can be found more easily by typing its name.

2. Click **Next**.

## 6. Map your data to the destination

In this step, you map the columns from your input table to the Meta object fields. One column must be mapped to `id`; the others are the values that will be applied to each object.

### Available fields

| Field name        | Description                                                                                                                                                                                                                             |
| :---------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id`              | **(required)** The ID of the Meta object to update: a campaign, ad set, or ad. You can find these IDs in Ads Manager or bring them into your catalog with the Facebook Ads source.                                                      |
| `status`          | The delivery status to apply to the object. Accepted values are `ACTIVE` and `PAUSED`.                                                                                                                                                  |
| `daily_budget`    | The daily budget of the object, in the account currency minor unit (cents), e.g. `3000` = R\$30,00, unless "Enter budgets in your account currency?" is enabled. Applies to campaigns using Campaign Budget Optimization or to ad sets. |
| `lifetime_budget` | The total budget for the whole lifetime of the object, with the same unit rules as `daily_budget`. The object must have a defined end date for a lifetime budget to be valid.                                                           |

<Note>
  The only required field is `id`. Map at least one other field (`status`, `daily_budget`, or `lifetime_budget`) so each row has something to apply. For the exact behavior of each field, see Meta's [Marketing API reference](https://developers.facebook.com/docs/marketing-api/reference/ad-campaign-group#Updating).
</Note>

Once the fields are configured, click **Next**.

## 7. Configure your Facebook Campaign Management data destination

1. Describe your destination for easy identification within your organization. You can inform things like what data it brings, to which team it belongs, etc.

2. To define your [Trigger](https://docs.nekt.com/runs/scheduling-and-triggers), consider how frequently you need the changes applied on Facebook (every day, once a week, only at specific times, etc.).

3. Click **Done**.

### Check your new destination!

1. Once completed, you'll receive confirmation that your new destination is set up!

2. You can view your new destination on the [Destinations](https://app.nekt.ai/destinations) page. For the changes to reach Facebook, you have to wait for the pipeline to run. You can monitor it on the [Destinations](https://app.nekt.ai/destinations) page to see its execution and completion. If needed, manually trigger the pipeline by clicking on the refresh icon. Once executed, your updated statuses and budgets should be reflected in Facebook Ads Manager.

> If you encounter any issues, reach out to us via Slack, and we'll gladly assist you!
