Import guide

Import LinkedIn Ads results into monday.com

LinkedIn is where the campaigns that need a job title run, and monday.com is where the follow-up lives. Joining the two by hand means pulling the same report out of Campaign Manager again every time somebody asks what last month cost.

Boardfeed reads one sponsored account’s report on a schedule and writes one item per **day per account** — or per campaign, or per creative — into a monday.com board. The credential is not a key you paste: you connect the LinkedIn account that can see the ad account, once, and Boardfeed stores the account rather than the token against the source.

Last checked : the three pivots, the columns one row holds, the header pair every call carries, the six-month daily window and the 15,000-row answer ceiling, read off the connector — whose endpoints and account listing are the controller’s own read of 2026-09-20, recorded with their URL in docs/connectors.md § LinkedIn Ads

Doing it by hand, every time

  1. Open Campaign Manager, set the date range and the pivot, and export the report.
  2. Upload that file to the board and map the columns again, every time.
  3. Keep last month’s export somewhere if you want to compare the two.
  4. Work out which days are already on the board, or accept a second copy of every one.

The scheduled route

  1. Connect the LinkedIn account that can see the ad account. Boardfeed opens LinkedIn’s own consent screen in a small window and asks for **read-only** reporting access, stores the connection encrypted (AES-256-GCM), and never lets a token reach the board, the browser or a log. You can revoke the account from the Support tab at any time.
  2. Choose the ad account from the list Boardfeed reads back, each labelled with the currency it spends in. A sponsored account is addressed by its numeric id, which is what the list answers and what a stored source keeps.
  3. Choose the **pivot**: account, campaign or creative. One import reads one of the three, and the pivot is what a row is a day of — a board that wants a campaign’s spend and the creatives behind it is two imports.
  4. Choose how many days back to read. Left empty it is the last 28 days, counted back from the day the run starts, which is what makes the next step matter. LinkedIn keeps **daily** data for six months, so a longer window is clamped to that rather than quietly widened.
  5. Key the import on the date and the pivot value and run it in **update matching items** mode. A scheduled import re-reads its whole window every time it runs, so the key is what keeps a day from being written twice; in create mode, running the same window twice is two sets of items, which is the mode rather than a bug.

Field mapping notes for LinkedIn Ads

This is the part that decides whether an import works on the first try. Everything below is handled in the mapping step, before the first run.

  • One row is one day of one account, campaign or creative: `date`, `pivot` — the id the numbers belong to — and then `impressions`, `clicks`, `landingPageClicks`, `costInLocalCurrency`, `externalWebsiteConversions`, `reactions` and `shares`.
  • The **campaign** pivot carries one column the others do not: `campaignName`, the campaign’s name in Campaign Manager. It is filled where Boardfeed could read the names, and empty on a row where it could not — the `pivot` column is the id that always resolves, which is why it is the one to key on.
  • `costInLocalCurrency` is in the **ad account’s own currency**, as LinkedIn reports it, and it arrives exactly as the API sends it — `"184.52"`, a string, not a number Boardfeed decided it was. Map it to a Numbers column and monday.com reads it as 184.52; map it to Text and the string is kept as it came. Nothing is converted and nothing is rounded.
  • `landingPageClicks` is not the same number as `clicks`, and `externalWebsiteConversions` counts the conversions LinkedIn attributes to the campaign rather than the leads themselves. Both are LinkedIn’s own definitions, reported for the day, and neither is computed here.
  • `date` is a day — `2026-08-24` — and maps to a Date column as it comes. The numbers are the day’s, one day at a time: a 28-day window is 28 items per pivot value, and nothing is summed here. The rollups belong on the board, where the people reading it can see what is in them.
  • Nothing else a report could carry becomes a column. A demographic breakdown, a creative asset, a lead and an audience are not read at all: one import reads one pivot of one account’s report and nothing beside it.

LinkedIn Ads import questions

Do I need a LinkedIn app, a developer account or an ads token?

No. You connect a LinkedIn account from the source dialog, and LinkedIn asks that account whether Boardfeed may read its ads — read-only, and nothing else. There is no key to create, paste or rotate by hand, and the token is never shown on the board or in a log.

Which ad accounts can I import?

The sponsored accounts the connected account can see. Boardfeed asks LinkedIn for the list and shows it in the source dialog, each account labelled with the currency it spends in. An account the account cannot administer is refused when a run starts, with a sentence saying so rather than a bare error.

How far back can a run read?

Six months of daily data, which is LinkedIn’s own retention: a window longer than that is read as 180 days rather than refusing, and the field says so. Four weeks (28 days) is the default because that is the window the reporting interface itself opens on, and because the numbers of a day can still move for a few days after it.

Do the numbers change after they have been imported?

They can. A conversion is attributed for days after the click that led to it, so the spend and the results of a recent day keep settling, and an import in update mode writes the new figures over the old ones on its next run. That is also why the window is not incremental: there is no “since the last run” mode, and none is needed while the key updates rather than duplicates.

Why does a report with a lot of data stop instead of finishing?

Because LinkedIn answers this report in one piece and caps that answer at 15,000 rows, with no way to ask for the next page. Boardfeed reads the rows it got, then fails the run and says so, rather than reporting a report that may have been cut short as a complete import. Fewer days, or one pivot at a time, is the lever.

Does Boardfeed change anything in my ad account?

No. The permissions it asks for are read-only (`r_ads` and `r_ads_reporting`), and the connector only reads: one report per run and nothing else. It does not create, edit, pause or delete a campaign, a creative or an audience, and it reads no lead, no billing setting and no demographic breakdown.

What happens if the connected account is revoked or expires?

The next run fails with a sentence naming the account, and it is recorded in the run history like any other source error — nothing is written to the board. Reconnect the account from the source dialog and run it again. Disconnecting an account in the Support tab names the imports that read it before it revokes anything, so you can see what a disconnection would break.

Other sources