> For the complete documentation index, see [llms.txt](https://docs.getuntitled.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.getuntitled.ai/integrations/destinations/meta-facebook-ads.md).

# Meta (Facebook Ads)

By syncing your audiences directly to Meta, your team can better automate and streamline your Facebook Ads Custom Audience and Lookalike Audience activation strategies.

## Accepting Custom Audience Terms of Service

{% hint style="info" %}
Before you can sync Untitled Audiences to Meta, you’ll need to accept Meta’s Custom Audience Terms of Service if you haven’t created a custom audience in your account prior. You can use the link below to navigate directly to the relevant section to complete this in Facebook.\
\
<https://business.facebook.com/ads/manage/customaudiences/tos/>\
\
Ensure that, if you have multiple Facebook accounts, you use the account selector at the top-right of the page to select the advertising account you're going to use the custom audience with.
{% endhint %}

<details>

<summary>Terms of service webpage troubleshooting</summary>

If you are being redirected to the Ads Manager page on Facebook while trying to navigate between ad accounts on this page: <https://business.facebook.com/ads/manage/customaudiences/tos/>, you may need to append "?act=\[ad account ID]" to the URL like this:\
<https://business.facebook.com/ads/manage/customaudiences/tos?act=XXXXXXXXXXXXXXXX>

Replace the X's with your ad account ID. To find your ad account ID, visit <https://adsmanager.facebook.com/adsmanager/manage/campaigns> while logged in, and from the top drop-down, select the ad account you'd like to use with Untitled Audience syncs. The screenshot below shows where you will find the Ad account ID.

<figure><img src="https://312477262-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGoQsfzqc7OhGHTIseEas%2Fuploads%2FM8WkEoDk6ilBHlysr13T%2FFind%20Facebook%20Ad%20Account%20ID.png?alt=media&amp;token=11e51d9c-7707-428e-b88f-7c6a2f8c5eca" alt=""><figcaption></figcaption></figure>

</details>

## Setting up Facebook Connections

{% embed url="<https://youtu.be/aCnmFg3DKoc>" %}

<details>

<summary>Step-by-step setup guide with screenshots</summary>

{% hint style="info" %}
**Before you start**

* You need **admin** access to the Meta business portfolio that owns your ad account.
* You'll switch between Untitled, Meta Business Suite, and Meta for Developers. Keep all three tabs open.
* Meta shows the token only once. You only need to copy/paste it into Untitled one time, and generating a new token is straightforward.
  {% endhint %}

### Start the Facebook connection

{% stepper %}
{% step %}

#### Open Integrations and add a destination

In the left sidebar, click **Integrations**. Then click **New integration** and choose **Connect a destination**.

<kbd>Integrations</kbd> → <kbd>New integration</kbd> → <kbd>Connect a destination</kbd>

![Integrations page with the New integration menu open, showing Connect a source and Connect a destination](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/QaPH3SHPD8vclZe8pXWX/images/01-new-integration.jpg)
{% endstep %}

{% step %}

#### Choose Facebook

Under **Destinations**, click **Facebook**.

<kbd>Destinations</kbd> → <kbd>Facebook</kbd>

![Connect a destination menu listing Google Sheets, Facebook, and legacy destinations](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/pxURDSPewOwYGmDb7Vf6/images/02-choose-facebook.jpg)
{% endstep %}

{% step %}

#### Name the connection and keep System User selected

Enter a **Connection name**, such as “Facebook” and click Continue.

![Connect Facebook dialog with a connection name field, System User authorization selected, and setup instructions](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/O0ORExHucnSoXoxHvphe/images/03-connect-facebook.jpg)
{% endstep %}

{% step %}

#### Leave the token screen open

Untitled now asks for a **System User Access Token**. Leave this tab as it is. You'll come back and paste the token at the end of this guide. Open Meta Business Suite in a new tab. This is the address you can open: [business.facebook.com/latest/settings/apps](https://business.facebook.com/latest/settings/apps).

![Link Facebook (System User Token) Account dialog with an access token field and a Connect button](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/3enaV9hzk4wFvPTObbhT/images/04-token-modal.jpg)
{% endstep %}
{% endstepper %}

### Create a Meta app

The app is how Untitled calls the Marketing API on your behalf.

{% stepper %}
{% step %}

#### Go to Apps in business settings

Navigate to [business.facebook.com/latest/settings/apps](https://business.facebook.com/latest/settings/apps) and click **Add.**

<kbd>Settings</kbd> → <kbd>Accounts</kbd> → <kbd>Apps</kbd> → <kbd>Add</kbd>

![Meta Business Suite settings, Apps page showing No apps added and an Add button](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/YGYy79oXYv9JkUqt7R0Y/images/05-meta-apps.jpg)
{% endstep %}

{% step %}

#### Create a new app ID

In **What do you want to do?**, choose **Create a new app ID**. Meta for Developers opens in a new tab.

<kbd>Create a new app ID</kbd>

![What do you want to do dialog with Create a new app ID, Connect an app ID, and Request access options](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/krOq5xcJWTXLp6ddwsQI/images/06-create-new-app-id.jpg)
{% endstep %}

{% step %}

#### Enter the app details

Enter an **App name** (“getUntitled” is common) and an **App contact email** you check regularly. An email address may already be pre-filled. Click **Next**.

![Create an app, App details step with the app name filled in and the contact email hidden](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/m6rdCpQLRnrYNQK0qdfk/images/07-app-details.jpg)
{% endstep %}

{% step %}

#### Choose the Marketing API use case

Check **Create & manage ads with Marketing API**, then  scroll down and click **Next**.

![Add use cases list with Create and manage ads with Marketing API checked](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/xOUve9EPeiJvAtkw63Iw/images/08-use-case.jpg)
{% endstep %}

{% step %}

#### Connect your business portfolio

Select the business portfolio that owns your ad account, then click **Next**.&#x20;

![Which business portfolio do you want to connect to this app, with a portfolio selected](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/HFlxV4Q02Su0IKeOddaP/images/09-business-portfolio.jpg)
{% endstep %}

{% step %}

#### Review and create the app

The **Requirements** step should say "no requirements were found". Click **Next**. On **Overview**, check the details and click **Create app**.

![Create an app Overview showing the app name, Marketing API use case, business portfolio, and a Create app button](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/CpEtVJYe4IdNnPYCkt0K/images/10-overview.jpg)
{% endstep %}

{% step %}

#### Go back to Business Suite

The app dashboard opens. There's nothing to change here. Switch back to the Meta Business Suite tab.

![New app dashboard in Meta for Developers](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/sw6vkWyrrhwaOvdQPBpx/images/11-app-dashboard.jpg)
{% endstep %}

{% step %}

#### Refresh Apps and confirm the app is listed

Close the **What do you want to do?** dialog and refresh the page. Your new app now appears under **Apps**.

![Apps page in business settings now listing the getUntitled app](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/fh81OnbHGKy2RoTbxmKZ/images/12-app-listed.jpg)
{% endstep %}
{% endstepper %}

### Create a system user and give it access

A system user isn't tied to a person, so the connection keeps working if someone leaves the team.

{% stepper %}
{% step %}

#### Open System users

In the settings sidebar, under **Users**, click **System users**.

<kbd>Settings</kbd> → <kbd>Users</kbd> → <kbd>System users</kbd>

![System users page in business settings](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/omHVli5q7fAgrOPq4IjQ/images/13-system-users.jpg)
{% endstep %}

{% step %}

#### Add an admin system user

Click **Add**. Enter a **System user name** like “getUntitled”, set **System user role** to **Admin**, and click **Create system user**.

<kbd>Add</kbd> → <kbd>Name system user</kbd> → <kbd>Apply Admin role</kbd> → <kbd>Create system user</kbd>

![Create system user dialog with the name getUntitled and the Admin role selected](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/NN8oGeETvyNwxP47n4Xf/images/14-create-system-user.jpg)
{% endstep %}

{% step %}

#### Select the new system user

A confirmation appears and the new user shows with **Admin access**. Select it, then click **Assign assets**.

![System user getUntitled with Admin access, no assets assigned, and a confirmation message](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/hypQykbkHUXp5hxH5uyq/images/15-system-user-created.jpg)
{% endstep %}

{% step %}

#### Give it full control of the app

Under **Select asset type**, click **Apps**. Select your app, toggle on **Manage app** under Full access, and click **Assign assets**.

<kbd>Apps</kbd> → <kbd>Manage app</kbd> → <kbd>Assign assets</kbd>

![Select assets dialog with Apps selected, the getUntitled app checked, and Manage app turned on](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/6fZAA1mfgqtN3PFSfXis/images/16-assign-app.jpg)
{% endstep %}

{% step %}

#### Give it full control of your ad account

Click **Assign assets** *again*. Choose **Ad accounts**, check the ad account Untitled should sync to, turn on **Manage ad accounts**, and click **Assign assets**. Click **Done** on the confirmation.

<kbd>Assign assets</kbd> → <kbd>Ad accounts</kbd> → <kbd>Manage ad accounts</kbd> → <kbd>Assign assets</kbd> → <kbd>Done</kbd>

![Select assets dialog with Ad accounts selected, one ad account checked, and Manage ad accounts turned on](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/mGsu7Q7b3pUo1aKNJZ83/images/17-assign-ad-account.jpg)
{% endstep %}

{% step %}

#### Check both assets are assigned

Refresh the page. Under **Assigned assets** you should see the ad account and the app, both with **Full access**.

![System user's assigned assets listing one ad account and one app, both with full access](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/bmMMCO8HZlzjtTqXwADl/images/18-assets-assigned.jpg)
{% endstep %}
{% endstepper %}

### Generate the access token

{% stepper %}
{% step %}

#### Generate a token for your app

With the system user selected, click **Generate token**. Under **Select app**, choose your app and click **Next**.

<kbd>Generate token</kbd> → <kbd>Next</kbd>

![Generate token dialog on the Select app step with getUntitled chosen](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/eKTLZN6pNgHy8h1RUPXD/images/19-token-select-app.jpg)
{% endstep %}

{% step %}

#### Set the token to never expire

Under **Token expiration**, choose **Never** and click **Next**. This selection is what makes this a one-time process for your entire account.

<kbd>Never</kbd> → <kbd>Next</kbd>

![Token expiration step with Never selected](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/vdm0xbXWpczolr1Qfyov/images/20-token-expiration.jpg)
{% endstep %}

{% step %}

#### Add permissions to the token

Open **Select permissions** and check `ads_management` and `business_management`. Click **Generate token**.

<kbd>Select permissions</kbd> → <kbd>Generate token</kbd>

![Assign permissions step with the permissions list open and ads\_management checked](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/APxFer5p1rvdhyGuv3Ot/images/21-token-permissions.jpg)
{% endstep %}

{% step %}

#### Copy the token

Meta shows the token once. Click **Copy**, then **Done**.

{% hint style="danger" %}
**Treat this token like a password.** Anyone who has it can manage your ad account. Don't paste it into chat or email, and hide it before you record or share your screen.
{% endhint %}

<kbd>Copy</kbd> → <kbd>Done</kbd>

![Token created dialog with the token hidden and a Copy button](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/TuDy02lICvWCmhjx557D/images/22-token-created.jpg)
{% endstep %}
{% endstepper %}

### Connect and move your existing syncs

{% stepper %}
{% step %}

#### Paste the token and connect

Go back to the Untitled tab you left open. Paste the token into **System User Access Token** and click **Connect**.

<kbd>Connect</kbd>

![Link Facebook dialog in Untitled with a masked token pasted and the Connect button](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/wdmWVskrjCKp7wUzH7ue/images/23-paste-token.jpg)
{% endstep %}

{% step %}

#### Choose where to move legacy destinations

If you have older Facebook destinations, Untitled asks which Facebook account to move them to. Pick the connection you just made and click **Continue**. If you see no prompt, you're done.

<kbd>Integrations</kbd> → <kbd>Legacy Connections</kbd> → <kbd>Migrate</kbd> → <kbd>Continue</kbd>

![Migrate destination dialog asking which Facebook account to use, with Facebook selected](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/bT6ZKRPJyxWua3HFrxEA/images/24-migrate-destination.jpg)
{% endstep %}

{% step %}

#### Check the audience matches and migrate

Untitled matches each sync to a Facebook audience by name. Check each match, change any that are wrong, then click **Migrate**. The button shows how many syncs will move.

<kbd>Migrate</kbd>

![Match syncs to audiences dialog with one sync auto-matched to an audience of the same name](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/zce1qlu5zO8N8ehFaoU2/images/25-match-syncs.jpg)
{% endstep %}

{% step %}

#### Confirm the migration

A confirmation appears and the destination shows its syncs as migrated. They keep writing to the same audiences on the same schedule.

![Legacy Connections page with a Migrated 1 sync confirmation](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/O5EJfgMoVVUR3inRRn1t/images/26-migrated.jpg)
{% endstep %}
{% endstepper %}

{% hint style="success" %}
**Facebook is connected**

Untitled can now send audiences to your ad account with the system user token. If syncs stop later, check that the system user still has **Manage ad accounts** access and that nobody revoked its token.
{% endhint %}

</details>

## Migrating Facebook Connections

If your Facebook <> Untitled accounts were connected prior to October 23, 2026, you will need to migrate to a new connection type. Migration is a one-time task that takes \~5 minutes. Please follow the guide below to migrate.

{% embed url="<https://youtu.be/1Lx3TuPQGNk>" %}

<details>

<summary>Step-by-step migration guide with screenshots</summary>

Move an older (Before October 20, 2026) Facebook destination and its syncs to the new Integrations workflow. Create a Meta app and a System User, generate a token that doesn't expire, and connect it to Untitled.

{% hint style="info" %}
**Before you start**

* You need **admin** access to the Meta business portfolio that owns your ad account.
* You'll switch between Untitled, Meta Business Suite, and Meta for Developers. Keep all three tabs open.
* Meta shows the token only once. Have somewhere safe to keep it, like your password manager.
  {% endhint %}

{% stepper %}
{% step %}

### Start the migration in Untitled

#### Open Integrations

If you have connections to migrate, the **Home** page says so. In the left sidebar, click **Integrations**.

<kbd>Integrations</kbd>

![Untitled Home page with a You have connections to migrate notice and Integrations in the left sidebar](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/8HqGoXlrhSX6Lyvau8Do/images/01-home.jpg)

#### Find the destination under Legacy Connections

Click the **Legacy Connections** tab. Under **Migrate your destinations**, find the Facebook destination you want to move and click **Migrate**.

<kbd>Legacy Connections</kbd> → <kbd>Migrate</kbd>

![Legacy Connections tab listing a Facebook destination with 1 sync to migrate and a Migrate button](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/fwh2OgtcyZfOygZXTn5j/images/02-legacy-connections.jpg)

#### Create a new connection

Untitled asks which Facebook account to migrate the destination to. Open **Select a connection** and choose **Create new connection**.

<kbd>Select a connection</kbd> → <kbd>Create new connection</kbd>

![Migrate dialog with the Select a connection list open and a Create new connection option](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/Q129yXolBCGdUQBRTmUz/images/03-migrate-select-connection.jpg)

#### Name the connection and keep System User selected

Enter a **Connection name**, such as “Facebook”. Leave **System User (recommended)** selected and click **Continue**. The dialog summarizes the Meta setup. The next sections walk through it.

<kbd>System User (recommended)</kbd> → <kbd>Continue</kbd>

![Connect Facebook dialog with the connection name Facebook, System User authorization selected, and setup instructions](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/zHNTHHKskCSmlaI5dhfZ/images/04-connect-facebook.jpg)

#### Leave the token screen open

Untitled now asks for a **System User Access Token**. Leave this tab as it is. You'll come back and paste the token at the end of this guide. Switch to Meta Business Suite.

![Link Facebook (System User Token) Account dialog with the token field hidden and a Connect button](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/f1vGm4vkV7Nn1pu6BzEd/images/05-token-modal.jpg)
{% endstep %}

{% step %}

### Create a Meta app

The app is how Untitled calls the Marketing API on your behalf.

#### Go to Apps in business settings

In Meta Business Suite, open **Settings**. Under **Accounts**, click **Apps**, then click **Add**.

Go to [business.facebook.com/latest/settings/apps](https://business.facebook.com/latest/settings/apps).

<kbd>Settings</kbd> → <kbd>Accounts</kbd> → <kbd>Apps</kbd> → <kbd>Add</kbd>

![Meta Business Suite settings, Apps page showing No apps added and an Add button](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/YZqANZ9ySjop0Sn1BWwh/images/06-meta-apps.jpg)

#### Create a new app ID

In **What do you want to do?**, choose **Create a new app ID**. Meta for Developers opens in a new tab.

<kbd>Create a new app ID</kbd>

![What do you want to do dialog with Create a new app ID, Connect an app ID, and Request access options](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/7BHEJk6HNVZt3YFN6hPu/images/07-create-new-app-id.jpg)

#### Enter the app details

Enter an **App name** (the video uses “getUntitled”) and an **App contact email** you check regularly. Click **Next**.

Go to [developers.facebook.com/apps/creation](https://developers.facebook.com/apps/creation).

<kbd>Next</kbd>

![Create an app, App details step with the app name getUntitled and the contact email hidden](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/5Bhe1XAjsiX4xSzv4TGY/images/08-app-details.jpg)

#### Choose the Marketing API use case

Check **Create & manage ads with Marketing API**, then click **Next**.

<kbd>Create & manage ads with Marketing API</kbd> → <kbd>Next</kbd>

![Add use cases list with Create and manage ads with Marketing API checked](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/QxZ6C0LE6vpEIKJiY348/images/09-use-case.jpg)

#### Connect your business portfolio

Select the business portfolio that owns your ad account, then click **Next**.

<kbd>Next</kbd>

![Which business portfolio do you want to connect to this app, with a portfolio selected](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/Jil546SqFAvh0ZtWZtIS/images/10-business-portfolio.jpg)

#### Review and create the app

The **Requirements** step should say no requirements were found. Click **Next**. On **Overview**, check the details and click **Create app**.

<kbd>Next</kbd> → <kbd>Create app</kbd>

![Create an app Overview showing the app name, Marketing API use case, business portfolio, and a Create app button](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/BJu5VxeZOVLsTjgWIhm2/images/11-overview.jpg)

#### Go back to Business Suite

The app dashboard opens. There's nothing to change here. Switch back to the Meta Business Suite tab.

![New getUntitled app dashboard in Meta for Developers](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/OZoETF3RHJHgxrspQRa6/images/12-app-dashboard.jpg)

#### Refresh Apps and confirm the app is listed

Close the **What do you want to do?** dialog and refresh the page. Your new app now appears under **Apps**.

![Apps page in business settings now listing the getUntitled app](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/mjQmXh6RFlEZkbfZ62hv/images/13-app-listed.jpg)
{% endstep %}

{% step %}

### Create a system user and give it access

A system user isn't tied to a person, so the connection keeps working if someone leaves the team.

#### Open System users

In the settings sidebar, under **Users**, click **System users**. Then click **Add**.

<kbd>Settings</kbd> → <kbd>Users</kbd> → <kbd>System users</kbd> → <kbd>Add</kbd>

![System users page in business settings with an existing system user and an Add button](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/qTR7Rvx7OkEfg3OVZkDX/images/14-system-users.jpg)

#### Add an admin system user

Enter a **System user name** (the video uses “getUntitled”), set **System user role** to **Admin**, and click **Create system user**.

<kbd>Create system user</kbd>

![Create system user dialog with the name getUntitled and the Admin role selected](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/DNWPl1Ky3Vhern1FbdmL/images/15-create-system-user.jpg)

#### Select the new system user

A confirmation appears and the new user shows with **Admin access**. Select it, then click **Assign assets**.

<kbd>Assign assets</kbd>

![System user getUntitled with Admin access, no assets assigned, and a confirmation message](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/oLeOEYASxPWkuDr6avYD/images/16-system-user-created.jpg)

#### Give it full control of the app

Under **Select asset type**, click **Apps**. Check your app, turn on **Manage app** under Full access, and click **Assign assets**. Click **Done** on the confirmation.

<kbd>Apps</kbd> → <kbd>Manage app</kbd> → <kbd>Assign assets</kbd> → <kbd>Done</kbd>

![Select assets dialog with Apps selected, the getUntitled app checked, and Manage app turned on](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/4DGZvsYh2qCLUcrmj2aj/images/17-assign-app.jpg)

#### Give it full control of your ad account

Click **Assign assets** again. Choose **Ad accounts**, check the ad account Untitled should sync to, turn on **Manage ad accounts**, and click **Assign assets**. Click **Done** on the confirmation.

<kbd>Assign assets</kbd> → <kbd>Ad accounts</kbd> → <kbd>Manage ad accounts</kbd> → <kbd>Assign assets</kbd> → <kbd>Done</kbd>

![Select assets dialog with Ad accounts selected, one ad account checked, and Manage ad accounts turned on](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/UEC0kvpZqXW1Q0qocMzm/images/18-assign-ad-account.jpg)

#### Check both assets are assigned

Refresh the page. Under **Assigned assets** you should see the ad account and the app, both with **Full access**.

![System user's assigned assets listing one ad account and one app, both with full access](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/DWNSZqHxFFUFjY7bGBm2/images/19-assets-assigned.jpg)
{% endstep %}

{% step %}

### Generate the access token

#### Start a token for your app

With the system user selected, click **Generate token**. Under **Select app**, choose your app and click **Next**.

<kbd>Generate token</kbd> → <kbd>Next</kbd>

![Generate token dialog on the Select app step with getUntitled chosen](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/VimS3RWHbT3MLWKNYCHX/images/20-token-select-app.jpg)

#### Set the token to never expire

Under **Token expiration**, choose **Never** and click **Next**. Meta suggests 60 days, but a token that expires would stop your syncs until someone makes a new one.

<kbd>Never</kbd> → <kbd>Next</kbd>

![Token expiration step with Never selected](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/eNja7m7U1YLVaBcoKaa1/images/21-token-expiration.jpg)

#### Add the two permissions

Open **Select permissions** and check `ads_management` and `business_management`. Click **Generate token**.

<kbd>Select permissions</kbd> → <kbd>Generate token</kbd>

![Assign permissions step with ads\_management and business\_management checked](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/5JNNe5wwzJ78PwQisUIM/images/22-token-permissions.jpg)

#### Copy the token

Meta shows the token once. Click **Copy**, then **Done**.

{% hint style="danger" %}
**Treat this token like a password.** Anyone who has it can manage your ad account. Don't paste it into chat or email, and hide it before you record or share your screen.
{% endhint %}

<kbd>Copy</kbd> → <kbd>Done</kbd>

![Token created dialog with the token hidden and a Copy button](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/eoVvOUnPsHbyiZ2TogRS/images/23-token-created.jpg)
{% endstep %}

{% step %}

### Connect and finish the migration

#### Paste the token and connect

Go back to the Untitled tab you left open. Paste the token into **System User Access Token** and click **Connect**. Untitled confirms the connection and moves on to your syncs.

<kbd>Connect</kbd>

![Link Facebook dialog in Untitled with a masked token pasted and the Connect button](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/glgU3NAbUaUWZp7cYXWL/images/24-paste-token.jpg)

#### Check the audience matches and migrate

Untitled matches each sync to a Facebook audience by name. Check each match, change any that are wrong, then click **Migrate**. The button shows how many syncs will move.

<kbd>Migrate</kbd>

![Match syncs to audiences dialog with one sync auto-matched to an audience of the same name and a Migrate 1 sync button](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/b6gEwOPIdRP1YSVZXO3s/images/25-match-syncs.jpg)

#### Confirm the migration

A **Migrated** confirmation appears and the destination shows its syncs as migrated. They keep writing to the same audiences on the same schedule.

![Legacy Connections page with a Migrated 1 sync confirmation](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/co2eQRE6HK4354zlsm03/images/26-migrated.jpg)

#### Check the new connection

Click the **Integrations** tab. The new Facebook connection is listed with its ad account and syncs.

<kbd>Integrations</kbd>

![Integrations tab listing the Facebook system user connection with 1 ad account and 1 sync](https://content.gitbook.com/content/GoQsfzqc7OhGHTIseEas/blobs/MSaT0IF90vvUPzRDOj5I/images/27-connected.jpg)

{% hint style="success" %}
**Your Facebook destination is migrated**

Untitled now sends these audiences through the new connection. If you have other legacy Facebook destinations, click **Migrate** next to each one and choose this connection instead of creating a new one. If syncs stop later, check that the system user still has **Manage ad accounts** access and that nobody revoked its token.
{% endhint %}
{% endstep %}
{% endstepper %}

</details>

Prefer to migrate alongside an Untitled team member? Email <support@getuntitled.ai> to set up a one-on-one meeting to migrate!

<details>

<summary>Legacy Walkthrough Video for System User Method</summary>

{% embed url="<https://www.youtube.com/watch?v=yErM4l3cdsg>" %}

</details>

<details>

<summary>Legacy Step-by-Step Guide for System User Setup</summary>

### Destination Overview

Meta (Facebook Ads) is one of the most powerful digital advertising platforms available, enabling businesses to reach their audiences across Facebook, Instagram, and the broader Meta ecosystem.\
This guide will walk you through how to configure Meta as a destination within Untitled and how to send audiences effectively for advertising activation.

### Connection Setup <a href="#instructions" id="instructions"></a>

#### Log into Untitled <a href="#log-into-distilled" id="log-into-distilled"></a>

1. First, log into your Untitled account.
2. Select Destinations in the left navigation menu.
3. Find Meta (Facebook Ads) and click Connect.
4. A popup modal will appear with a link. Select `Continue` and you'll be redirected to a new window.

<figure><img src="https://312477262-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGoQsfzqc7OhGHTIseEas%2Fuploads%2F1OzGSQSQH3j7BdqpFXGX%2Fimage.png?alt=media&amp;token=a28889b2-1d26-460a-96ea-ded38f958c8a" alt=""><figcaption></figcaption></figure>

5. Press `Continue` on this authentication page.

<figure><img src="https://312477262-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGoQsfzqc7OhGHTIseEas%2Fuploads%2FllKCfFWnxo9AasmVtgdM%2FScreenshot%202025-04-18%20at%204.21.36%E2%80%AFPM.png?alt=media&amp;token=816c3550-b4d4-4de0-9887-190e40b20220" alt=""><figcaption></figcaption></figure>

6. Proceed with Authenticating Facebook Ads (META) via your preferred Authentication Method.

<figure><img src="https://312477262-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGoQsfzqc7OhGHTIseEas%2Fuploads%2FoTN6DcotNeDecbSYiv0P%2FScreenshot%202025-04-18%20at%204.22.00%E2%80%AFPM.png?alt=media&amp;token=4d272dce-f858-420c-a2c5-3f4134704e63" alt=""><figcaption></figcaption></figure>

### Meta / Facebook Ads Authentication Methods

Facebook Ads supports two separate authentication mechanisms: OAuth (Login with your Facebook profile) and System User. **We recommend using System User for the most reliable connection** long term as it does not require re-authentication every 30 days. Both methods are documented in this article, so you may proceed with the option that best suits your workflow.

{% hint style="info" %}
The System User Authentication method typically takes 10–15 minutes to complete. Please plan accordingly if you choose this option.
{% endhint %}

### **1. System User (Recommended)**

For long-term stability, we recommend using a System User, which doesn't require periodic re-authentication every 30 days. The setup steps to complete this preferred authentication method are contained below.

#### **Steps to set up a System User—Part A, Creating an Application**

To generate a System User token, you'll first need to create an app. In the Facebook ecosystem, a custom application serves primarily to manage authentication tokens for accessing the Meta API platform.

If you don't have an app already, you can create one with the following steps:

1. Navigate to [Facebook Business Manager](https://business.facebook.com/).
2. Go to **Business Settings > Accounts > Apps**.
3. Click **Add** and select **Create New App ID**.
4. Choose `Other` for the use case.

   <figure><img src="https://312477262-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGoQsfzqc7OhGHTIseEas%2Fuploads%2Fvq4qCaGtsRP408j5n7ju%2Fimage.png?alt=media&amp;token=84a90a97-af91-41d1-901c-881c71976c8d" alt=""><figcaption></figcaption></figure>
5. Then for the Type, select `Business`.

<figure><img src="https://312477262-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGoQsfzqc7OhGHTIseEas%2Fuploads%2FJl0ovicr3OSDxnK83UxS%2Fimage%20(1).png?alt=media&amp;token=aeffd21d-df06-4b59-b6be-677740fce86b" alt=""><figcaption></figcaption></figure>

6. Fill out the relevant details for the app (name the app something descriptive and memorable such as '*Untitled Audience Integration*', and fill in your own email for the app contact).

<figure><img src="https://312477262-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGoQsfzqc7OhGHTIseEas%2Fuploads%2FLKkc31aZm30iSRqgLUSE%2Fcreate%20an%20app.png?alt=media&amp;token=455f63a0-75e2-4d62-a413-94ea69a2ae04" alt=""><figcaption></figcaption></figure>

Now you can move on to generating a system user for the app!

#### **Steps to set up a System User—Part B, Creating a System User for the App**

1. Go to your Business Manager and navigate to **Business Settings > Users > System Users**
2. Click **Add** to create a new System User.
3. Assign a name and select the `Employee` role.

#### **Steps to set up a System User—Part C, Assigning the System User to the App**

1. After creating the System User, click **Add Assets**.
2. Assign the App you created in previous steps to the System User. Make sure to assign ***full control*****&#x20;(**`Manage app: True` ) of the app to the System User and then press `Save changes`.

<figure><img src="https://312477262-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGoQsfzqc7OhGHTIseEas%2Fuploads%2FELHNj9KS9yKy0DudLvnz%2Fmanage%20app.png?alt=media&amp;token=ba3dda83-536b-4578-98b2-275b74d5174a" alt=""><figcaption></figcaption></figure>

3. You'll also need to assign your System User ***full control*** (`Manage ad accounts: True`) over any Ad Accounts that you'd like to sync Untitled data to for Custom Audiences. Once you've done so, press `Save changes`.

<figure><img src="https://312477262-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGoQsfzqc7OhGHTIseEas%2Fuploads%2FUrQKUbDU6KyDHnnLCbK8%2Fmanage%20ad%20account.png?alt=media&amp;token=5d49b672-fcb5-4c61-a445-e554002869b4" alt=""><figcaption></figcaption></figure>

{% hint style="danger" %}
Step 3 is commonly overlooked by users during setup!\
To ensure your **Meta destination** is properly configured in Untitled, you must assign the **System User** **full control** **of the Ad Account.**
{% endhint %}

#### **Steps to set up a System User—Part D, Generating an Access Token for the System User**

1. Within the System User settings, click **Generate New Token**.
2. Select the app you created.
3. Ensure the token has the `ads_management` Permissions scope.
4. Set the token to **Never Expire** (this will prevent the need to re-authenticate your integration within Untitled every 60 days).

<figure><img src="https://312477262-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGoQsfzqc7OhGHTIseEas%2Fuploads%2FtMZuXPkrzTLoPM1Ae5hB%2Fimage%20(5).png?alt=media&amp;token=993a68d3-fb14-427e-a98f-73526e6caef3" alt="" width="375"><figcaption></figcaption></figure>

5. Press `Generate token`.
6. Save this token securely; it will be used to authenticate the connection in Untitled (see following step).
7. **Paste** the System User Token into the 'System User Token' text box field and press `Continue`.

<figure><img src="https://312477262-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGoQsfzqc7OhGHTIseEas%2Fuploads%2FiiWCfbVLmP6mBrqKG21l%2FScreenshot%202025-04-21%20at%2011.01.08%E2%80%AFAM.png?alt=media&amp;token=7a6feedf-a161-4331-b050-bf940e7e98cf" alt=""><figcaption></figcaption></figure>

8. Once the System User has been successfully authenticated, the Facebook Ads (Meta) Destination will appear in your 'Connected Destinations' library. If the setup is complete, a green success indicator will be displayed next to the destination (see image below for reference).

<figure><img src="https://312477262-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGoQsfzqc7OhGHTIseEas%2Fuploads%2FW1SbPbUoF9EIowHCad50%2FScreenshot%202025-04-21%20at%2011.04.06%E2%80%AFAM.png?alt=media&amp;token=e85a0d78-bb68-4d63-9bd5-97d8ca8e78c5" alt=""><figcaption></figcaption></figure>

9. Once you see this green success indicator and the authentication test has been completed, feel free to close the connection bridge URL.

Now that you've successfully authenticated your Meta destination using a System User token, please proceed to the '[Syncing an Untitled Audience to Meta (Facebook Ads)](#syncing-an-untitled-audience-to-meta-facebook-a-ds)' section of this article.

### **2. Using OAuth (**&#x4C;ogin with your Facebook Profile)

Alternatively, you can use OAuth to authenticate the Destination. However, please note that **this connection WILL EXPIRE after 30 days.** Once expired, your Untitled Audiences will no longer sync or update in Meta until the connection is re-authenticated.

#### **Steps to set up an OAuth Connection**

1. Within the initial Destination setup steps, you were asked to [open the connection bridge url link](#log-into-distilled). Navigate to this URL.
2. Select the "Login" authentication preference

<figure><img src="https://312477262-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGoQsfzqc7OhGHTIseEas%2Fuploads%2Fq4ACCwAlOiQSaWrGKJcR%2Flogin-fb-destination.png?alt=media&amp;token=3b0fe49d-4996-42ec-bf91-6d265a053c04" alt=""><figcaption></figcaption></figure>

3. Follow the on-screen prompts to sign in with your Facebook account and select the Ad Accounts you plan to sync Untitled Audiences to.

{% hint style="info" %}
Note: If your user is not assigned the Manager role for the Facebook Ad Account(s) you plan to connect, you will not be able to complete this step successfully until access is granted.
{% endhint %}

4. Once you've successfully logged in and authorized the connection, press `continue` to verify the authentication.
5. Once the authentication test has been completed, feel free to close the connection bridge URL and proceed to the Audience Sync setup steps below.

Now that you've successfully authenticated your Meta destination using an OAuth sign-in (Login with your Facebook profile), please proceed to the '[Syncing an Untitled Audience to Meta (Facebook Ads)](#syncing-an-untitled-audience-to-meta-facebook-a-ds)' section of this article.

</details>

### Syncing an Untitled Audience to Meta (Facebook Ads)

1. Navigate to the Audience Library in your Untitled Account
2. Click on the audience you want to sync to Facebook.
3. Navigate to the "Destinations" tab within the Audience, and click `Setup sync`

<figure><img src="https://312477262-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGoQsfzqc7OhGHTIseEas%2Fuploads%2F8aI7Cv2j2WC8KMAZaQuC%2Ffbsync-1.png?alt=media&amp;token=73a7cc68-f677-451c-ae9c-ac8cd37ab71f" alt=""><figcaption></figcaption></figure>

4. A pop-up confirmation modal will appear. Type in the audience name and then click `Continue`

<figure><img src="https://312477262-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGoQsfzqc7OhGHTIseEas%2Fuploads%2FhmxDT3XHkxJurav7X2v8%2Ffb-sync2.png?alt=media&amp;token=fa4eb2ef-2ea0-4050-b0a3-070b79a5bb13" alt=""><figcaption></figcaption></figure>

5. After completing this step, you’ll see a confirmation screen and a green ' ✔️ Connected' message will also appear on the Facebook Available Destination tile.

<figure><img src="https://312477262-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGoQsfzqc7OhGHTIseEas%2Fuploads%2FpLgBeImmxeol1wLgG68D%2Ffb-6.png?alt=media&amp;token=21371782-129f-4979-8911-ccf220097792" alt=""><figcaption></figcaption></figure>

6. A Custom Audience will be created in Meta and will begin populating shortly with your selected Untitled Audience. Once active, you can attach it to any existing or new ad campaign to begin advertising to your target segment. The audience will automatically refresh daily at 12:15 EST in Meta from that point forward.

## Need Further Support or Have Additional Questions?

Check out our[ <mark style="color:blue;">FAQs</mark> ](/misc/frequently-asked-questions.md)to get some answers, start a chat on our [website](https://getuntitled.ai/), or get connected directly with our team [<mark style="color:blue;">here</mark>](https://getuntitled.ai/contact/).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.getuntitled.ai/integrations/destinations/meta-facebook-ads.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
