> For the complete documentation index, see [llms.txt](https://docs.kula.digital/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kula.digital/your-data-sources/meta.md).

# Meta — Facebook & Instagram

Connect Meta to bring in your Facebook and Instagram marketing performance and ad spend — read-only.

Meta brings your **Facebook and Instagram marketing** into Kula Intelligence — page and account performance plus ad spend — so the AI can answer where your members come from and what acquisition really costs.

## What we read — and what we don't

* **We read:** your marketing and advertising performance and spend for the accounts and pages you choose — read-only.
* **We don't:** post, run or change campaigns, or spend money.

## What you'll need

* A **system-user token** generated in **Meta Business Settings**, with read-only scopes.
* The **ad account** and **page** you want to include.

## How to connect

1. In **Meta Business Settings → System users**, create a system user, assign your ad account and page, and generate a **long-lived token** with read-only access.
2. In Kula, open **Connectors → Meta**, paste the token, and click **Test**.
3. Pick which **ad account** and **page** to include, then click **Connect** and import.

## Good to know

* Use a **long-lived system-user token**, not a short personal one — it won't expire on you mid-month.
* Instagram occasionally returns nothing even when it's correctly connected. Kula guards against reading that as a real "zero", but if your Instagram numbers look empty, double-check the Instagram account is linked to the page you selected.

## If it stops working

A Meta error usually means the token lapsed or its permissions changed. Generate a fresh system-user token and re-enter it. See [Keeping your connectors healthy](/your-data-sources/operating.md).

### "This method must be called with a Page Access Token"

Meta reads **page-level** data (posts, lead forms, page insights) with a *Page* access token, not the system-user token you pasted. Kula swaps your token for the Page token automatically at import time, so you never have to find or paste one. That swap can only work if the system user actually holds a role on the Page. If an import task shows this message (or "Invalid OAuth 2.0 Access Token" on posts, lead forms or page insights while ad spend imports fine), the swap failed:

1. In **Meta Business Settings → Accounts → Pages**, open the connected page and give the system user access (Full control, or at least the **Insights**, **Content** and **Leads** tasks).
2. Generate a **new** token that includes `pages_show_list`, `pages_read_engagement` and `read_insights` — an existing token does not pick up the new access.
3. In Kula, open **Connectors → Meta → Reconnect credentials**, paste the new token, then run **Update to now**. The ad account, page and Instagram selections stay as they were.
