openreport / Setup

Generate a Meta token

openreport reads your Meta ad data using a token you generate yourself. The whole flow takes about two minutes the first time. Read the permissions section first. Granting too much access is the only meaningful way you can put yourself at risk with this tool.

01

Permissions: only grant ads_read

openreport only reads your ad data. It cannot pause campaigns, change budgets, or create ads.

When you generate a token, grant ads_read only. Never grant ads_management or any write permission. If you do, a leaked token would let an attacker modify your campaigns. Stick to read-only.

02

Two kinds of tokens

Pick one based on how often you plan to use openreport:

User Access Token
1 to 2 hours
First-time use, testing, occasional ad-hoc reports.
System User Token
No expiry
Regular use after you're comfortable with the tool.

The User Access Token is safer because the risk window is small. Start there. Switch to System User only when you're using the tool weekly or biweekly.

03

Option A: User Access Token (easiest)

The fastest path. Token expires in 1 to 2 hours.

  1. Go to Meta Graph API Explorer.
  2. In the "Meta App" dropdown (top right), pick any app you have access to. If you don't have one, create a basic app in the Meta App Dashboard — no app review needed for ads_read.
  3. Click Generate Access Token.
  4. In the permissions dialog, grant ads_read only. Uncheck everything else if it's pre-selected.
  5. Copy the token. It looks like EAAGm0PX4ZCpsBA….
  6. Paste it into the connect page.

When the token expires, repeat the steps to generate a fresh one.

04

Option B: System User Token (recommended for regular use)

System User tokens don't expire. You generate them once per ad account.

  1. Go to Meta Business Manager Business Settings.
  2. Users → System Users. Click Add and create a system user (e.g. "Reporting User"). Role: Employee.
  3. Assign Assets → assign the ad accounts you want to report on. Permission: View.
  4. Click your system user → Generate New Token.
  5. Pick the app you want the token associated with.
  6. Permissions: select ads_read only. Nothing else.
  7. Click Generate Token. Copy it.
  8. Paste into openreport.

The token persists across sessions. Store it somewhere safe (a password manager).

05

Business Manager assignment

The #1 source of "why isn't it working".

Even with a valid token and ads_read permission, the user generating the token must be assigned to the ad account in Business Manager.

Symptoms: token validates, but openreport shows "zero ad accounts" on the picker screen.

Fix:

  1. Go to Business Settings → Ad Accounts.
  2. Click the account → Add People (or Add System Users).
  3. Add the user that owns the token. Permission: View is enough for openreport.

Wait a minute, refresh openreport, try again.

06

Troubleshooting

Empty account list / zero ad accounts accessible

The token is valid but has no ad accounts assigned. See the Business Manager assignment section above.

Invalid OAuth access token (HTTP 190)

The token has expired (User Access Tokens last only 1–2 hours) or was revoked. Generate a fresh one.

User does not have permission to perform this action

You're trying to read an account you don't have access to in Business Manager. Either request access from the account owner, or pick a different account.

Application request limit reached (HTTP 17)

Meta's rate limit. openreport retries automatically with exponential backoff (up to 3 attempts). If you keep hitting it, wait a minute and try a smaller date range.

The dashboard is empty even though I have campaigns

Check the date range. By default openreport loads the last 14 days. If your account ran zero ads in that period, every KPI tile reads zero. Switch to 30d or 90d.

07

Revoking access when you stop

When you're done using the tool, revoke the token. Takes 10 seconds.

  1. Go to Meta Business Settings → Business Integrations.
  2. Find the app you used to generate the token.
  3. Click Remove.

Or, for a System User token: Business Settings → System Users → click the user → Delete or revoke the specific token.