Before you start
- A Meta access token that can read the ad account (the
ads_readpermission). A System User token from Meta Business Settings is the best choice because it does not expire. A personal user token works but expires after about 60 days. - The ad account ID, for example
act_1234567890. Lens accepts it with or without theact_prefix.
A one-click Connect Meta option is coming. Until it is generally available, use a pasted token as described here.
Add the Meta connection
- Go to Security & Access and add a connection.
- Set Provider to Meta and paste the token into Token.
- Set Token Expires to the date the token stops working, or leave it blank for a System User token, which never expires. A pasted token is never refreshed, so the expiry date is the only warning you get.
- Click Save Connection.
Create the table
- Go to Configure > Data Tables, click + New Table, and choose Meta Ads.
- Name the table and pick the Meta Connection.
- Enter the Ad Account ID.
Recommended Setups on Configure > Data Tables has a Meta Ads card that creates the standard Meta tables in one step.
Choose what one row is
| What One Row Is | Rows | Sync |
|---|---|---|
| One campaign per day | Campaign, date | Full Refresh or Incremental |
| One ad per day (with its ad set and campaign) | Ad, ad set, campaign, date | Full Refresh or Incremental |
| Account settings (currency and timezone) | One row describing the account | Full Refresh only |
Lens stores spend, impressions, all clicks and link clicks. CTR, CPC and CPM are worked out from those on the board rather than stored, because Meta's per-row rates cannot be added up.
Choose conversions
Under Conversions, pick one of:
- Count one event: store the count of one conversion event.
- Store conversions and their value: store the count and the value of one event.
- No conversions: spend, impressions and clicks only.
Then pick the Conversion Event, such as Purchases, Leads or Registrations, or enter a custom conversion as offsite_conversion.custom.<ID>. Only one event per table: Meta reports the same purchase under several names, so adding more would count it more than once. For a second event, create a second table.
Set the date range and sync mode
| Setting | Default | Notes |
|---|---|---|
| Backfill Days | 90 | History read on the first sync and on a full refresh. Meta keeps 37 months, so older dates cannot be read |
| Sync Mode | Incremental | Re-reads recent days on every sync |
| Incremental Refresh Window | 28 days | Meta keeps updating conversions within its attribution window, so recent days are re-read |
| Sync Schedule | Daily |
Click Create Table.
Rows are dated in the ad account's time zone, and values are in the account's currency. Lens reads both from Meta when you save and on every sync. If Lens could not read the time zone yet, you can enter it in Ad Account Timezone; Meta's own value replaces it once it is available.
Check it worked
When the table is active, compare yesterday's spend and impressions with the same day in Meta Ads Manager, using the ad account's time zone. Syncs end at yesterday (UTC), so today has no Meta data until the next day's sync.
Troubleshooting
The sync fails with a token or permission error
The token expired, was revoked, or cannot read this ad account. Create a new token (a System User token avoids expiry), update the connection under Security & Access, then click Sync Now on the table.
Conversions look higher than in Ads Manager
Check that the table's single event is the same one you compare against in Ads Manager. Recent days can also still be changing; they settle within the 28-day refresh window.
Days look shifted compared to other sources
Meta tables are stored in the ad account's time zone. If that differs from your other tables, joining them is refused. See Dates and Time Zones.