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.
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 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.
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”.
3. Important considerations
-
Budgets are in cents by default. Meta expects budget values in the account currency minor unit. For Brazilian Reais,
3000 means R30,00and‘2000‘meansR20,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.
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.
4. Add your Facebook Campaign Management access
-
In the 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.
-
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.
-
Click Next.
5. Select your data to send
-
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.
-
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. |
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.
Once the fields are configured, click Next.
-
Describe your destination for easy identification within your organization. You can inform things like what data it brings, to which team it belongs, etc.
-
To define your Trigger, consider how frequently you need the changes applied on Facebook (every day, once a week, only at specific times, etc.).
-
Click Done.
Check your new destination!
-
Once completed, you’ll receive confirmation that your new destination is set up!
-
You can view your new destination on the Destinations page. For the changes to reach Facebook, you have to wait for the pipeline to run. You can monitor it on the 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!