Import guide

Import Facebook lead form leads into monday.com on a schedule

A Facebook lead form is a good way to collect a name, an e-mail address and a phone number, and a bad place to keep them. The leads sit in Facebook’s own screen until somebody downloads them, which means the sales team works from a CSV that is a day old on a good day.

Boardfeed reads one lead form on a schedule and writes one item per lead into a monday.com board: the lead’s id, when it arrived, the ad it came from, and **one column per question the form asked** — in the form’s own words, so the board is the form.

Last checked : the four columns every lead has plus the form’s own questions, the 90-day note the reference carries and why nothing here acts on it, and the page ceiling, read off the connector — whose form-list endpoint is marked unverified in docs/connectors.md § Facebook lead forms

Doing it by hand, every time

  1. Open the form’s leads in Facebook and download them.
  2. Import the file into the board and map the columns again, every time.
  3. Notice that a question someone added to the form last week came through as a column nobody mapped.
  4. Repeat daily, because a lead answered yesterday is worth following up today.

The scheduled route

  1. Connect the Meta account that manages the Page the form belongs to. Boardfeed opens Meta’s own consent screen, asks for **read-only** access to that Page’s leads, and stores the connection encrypted (AES-256-GCM). No token reaches the board, the browser or a log.
  2. Enter the Page, press Check connection, and choose the form from the list Boardfeed reads back — the forms that Page holds, each with its status (`ACTIVE`, `PAUSED`).
  3. Read the value check. The columns Boardfeed proposes are **the form’s own questions**: this is a form somebody built, so `full_name`, `email` and `phone_number` are typical names but they are not a fixed list, and a question the first rows did not answer still becomes a column.
  4. Key the import on the lead id and run it in **update matching items** mode. A lead is not edited after it arrives, so a create-mode import of the same form twice would be two copies of every lead: the match column is what prevents that.
  5. Every run reads the leads the form holds, 100 a request, and stops rather than importing part of the form if the source answers more than 200 requests of them.

Field mapping notes for Facebook lead forms

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 lead. Four columns are always there — `id`, `created_time`, `ad_id` and `form_id` — and then one column per `field_data` question, named exactly as the form’s own question is.
  • A question answered with several values (a multi-select, or a form that asks the same thing twice) arrives as those values joined with `, `. A question answered with nothing arrives **empty**, so a blank cell on the board means the person left it blank rather than that Boardfeed dropped it.
  • A question that happens to be named `id`, `created_time`, `ad_id` or `form_id` is skipped: a form is your own document, and a question with one of those names must not overwrite the lead’s own id with somebody’s answer.
  • `ad_id` is the ad the lead came from, which is what makes a board able to say which campaign produced the leads — Meta’s own id for it, so it resolves through the Facebook Ads import rather than by name.
  • `created_time` arrives in the form Facebook writes it (`2026-09-19T10:12:04+0000`) and maps to a date column as it comes, time zone included.
  • The four fixed columns are the ones to key on: `id` is unique and stable, and an e-mail address is a workable second choice for a form that always asks for one.

Facebook lead forms import questions

What personal data does this import bring into the board?

Whatever the form asked for — typically a name, an e-mail address and a phone number — written to your own monday.com board. Inside Boardfeed those values are stored in the same two places any source’s values are: a bounded 40-character fragment of a **failed** row’s cell inside the run’s error, and the match value of a row a run could not write, so that "re-import the failed rows" can find it again. Neither is a log line, and both go when the run does.

How far back does a run read?

As far as the form’s leads go. This connector sends no date filter at all, deliberately: a leads import that silently dropped everything older than some window would be a board that quietly stopped matching the form. Meta’s own documentation mentions a 90-day limit on the leads endpoint, so if a run comes back with only recent leads, that window is Meta’s and it is a finding for us — say so on the support page rather than assuming the connector lost them.

Which forms can I import?

The forms of the Page you chose, which is what Boardfeed reads back and lists with each form’s status. One import reads one form, so a Page with a form per campaign is one import per form.

Do I need a Meta app or a developer account for this?

No. You connect the Meta account that manages the Page, and Meta asks that account whether Boardfeed may read its leads — read-only, and nothing else. There is no key to create, paste or rotate.

Can Boardfeed write a lead back to Facebook, or mark it as handled?

No. The connector only ever reads: it lists a Page’s forms and reads one form’s leads, and issues no write of any kind. A "handled" flag belongs on the monday.com board, where the people working the lead can see it.

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 — no lead is written anywhere. Reconnect the account from the source dialog and run it again.

Other sources