Lead capture workflow

Facebook Lead Ads (FBLA) to Google Sheets Without Zapier

Capture Meta form leads in Google Sheets, map the fields cleanly, and alert your team. Start with a free sheet template and a practical replay checklist.

Salon owner reviewing a Facebook lead workflow that adds a Google Sheets row and sends an email notification

Direct answer: connect Facebook Lead Ads, often shortened to FBLA, to Google Sheets with a four-node n8n workflow: Facebook Lead Ads Trigger → Edit Fields → Google Sheets → Gmail. A new Meta instant-form submission starts the workflow. n8n maps the form answers to spreadsheet columns, uses the Meta lead ID to match a row, then sends an internal email alert after the write succeeds. Download the sheet headers below and follow the mapping and replay checks.

This is not the same as linking a Google Form to its response sheet. If customers submit a Google Form rather than a Facebook or Instagram instant form, use the simpler Google Forms, Sheets, and Gmail workflow.

Partner disclosure. This guide includes a partner link to n8n Cloud. If you sign up through it, FloxoLab may earn a commission at no extra cost to you.

Short answer: this workflow replaces manual CSV downloads and copy-paste. It does not replace Ads Manager, consent language, lead ownership rules, or a proper CRM when several people need assignment, audit history, and pipeline reporting.

Start with a ready-to-map lead sheet

Import the blank CSV into Google Sheets, connect your Meta form in n8n, and map the actual test output to these columns. The download gives you the sheet structure; your credentials and form-specific expressions stay in n8n.

Download the lead sheet headers

Facebook Lead Ads Trigger
  → Edit Fields: map the form answers
  → Google Sheets: match lead_id, append or update
  → Gmail: notify the team after a successful write
Sheet columnMap from your test executionWhy it matters
lead_idThe Meta lead identifierMatch the same submission when it is replayed
created_timeThe lead's submission timestampKeep submission time separate from workflow execution time
full_name, email, phoneYour form's returned answersUse the actual question names; leave missing optional answers blank
form_id, ad_id, campaign_idAvailable source identifiersDo not invent context that the payload does not contain
source, status, ownerYour workflow and follow-up rulesSet a source label and initial status; preserve later team edits

Keep lead IDs and phone numbers as text. These are identifiers, not quantities. Check that the sheet keeps the full ID and any leading zeros or international prefix after a write.

The starter CSV contains headers only. It is not an importable n8n workflow or evidence of a live Meta integration. The remaining steps show what to configure and how to verify it in your own account.

Check Meta's direct Google Sheets option first

Some Meta Business Suite accounts now show a direct Google Sheets connection under All tools → Instant forms → CRM setup → Google Sheets. If it appears in your account and your only requirement is to place each new form submission in one spreadsheet, try that route first. It is simpler than creating a Meta developer app and does not require a separate automation-platform subscription.

What the business needs Best starting point
Send one instant form to one Google Sheet Meta's direct Google Sheets connection, when available
Rename fields, filter leads, prevent duplicate rows, and send an email n8n
Update several tools, route leads by answers, or add approval and error handling n8n, or n8n connected to a CRM
Assign owners, track a sales pipeline, and keep a complete activity history A proper CRM, with n8n handling the surrounding automation when needed

Meta rolls out and changes Business Suite features by account and region, so the Google Sheets choice may not be visible everywhere. This guide covers the n8n route because the workflow does more than copy a lead: it normalizes the data, uses the lead ID for safer writes, and sends an internal notification. The four required steps use built-in n8n nodes, so the basic workflow does not need a custom HTTP Request node.

What this workflow should do

Stage Node Output
Capture Facebook Lead Ads Trigger The lead ID, form and ad context, submission time, and submitted fields
Normalize Edit Fields Stable names such as lead_id, full_name, email, and phone
Store Google Sheets One row per lead, keyed by lead_id
Notify Gmail or Send Email An internal alert with the useful lead fields and a sheet link

Keep the email internal at first. An automatic message to the prospect is a separate business decision because the form must clearly support that use, the address must be valid, and local privacy and marketing-consent rules still apply.

Prerequisites for the n8n route

n8n's current Facebook Lead Ads credential uses OAuth2. You copy the OAuth Redirect URL from n8n into the Meta app, then add the Meta App ID and App Secret to the n8n credential. For production, n8n's official setup also calls for a Privacy Policy URL, Live app mode, advanced access for the requested feature, and business verification where Meta requires it.

Meta permissions and leads access

Meta's current lead-retrieval documentation separates access by the data you request. For complete lead and ad-level data it lists leads_retrieval, pages_show_list, pages_read_engagement, pages_manage_ads, and ads_management. Webhook setup also uses pages_manage_metadata. The token must come from someone with the required Page and advertising access.

Leads Access Manager can narrow who or which integration can retrieve leads. A person being able to view the Page does not automatically prove that the app can fetch every lead. When the trigger connects but no real data arrives, check business asset access and lead access before rebuilding the workflow.

Build the workflow in n8n

1. Configure Facebook Lead Ads Trigger

  1. Add Facebook Lead Ads Trigger and create its OAuth2 credential.
  2. In Meta for Developers, add the n8n OAuth Redirect URL to the allowed redirect URIs.
  3. Enter the Meta App ID and App Secret in n8n, then complete the Facebook authorization.
  4. Select the Page and form that should start this workflow.
  5. Run a test with Meta's Lead Ads Testing Tool and inspect the actual output before mapping fields.

Do not test against a live production app casually. n8n documents that Facebook Lead Ads allows one webhook per app. Switching between test and production overwrites the registered webhook URL. If a live workflow must be tested, plan a short controlled window, unpublish it, test, then publish it again and verify a fresh production lead.

2. Normalize the lead fields

Add an Edit Fields node after the trigger. Use the test execution to map the fields actually returned by your form. Meta forms can use custom question names, and their answers may arrive inside a field-data collection rather than as the exact column names you want.

Use a small stable record:

lead_id
created_time
full_name
email
phone
form_id
ad_id
campaign_id
source
status
owner

Store the Meta lead ID even if nobody sees it day to day. It gives the next node a durable key for a basic duplicate check and makes support investigations much easier than matching by name or email alone.

3. Write to Google Sheets without duplicate rows

Create the header row in Google Sheets first, then add the Google Sheets node. Choose Sheet Within Document → Append or Update Row, select the spreadsheet and tab, and match on lead_id. n8n also offers Append Row, but the append-or-update operation is safer when a delivery or execution is retried.

Map each normalized field to one column. On later writes, leave team-owned status and owner columns out of the update mapping unless the workflow is deliberately responsible for them. Keep computed formulas and team notes in separate columns. A lightweight sheet can start with status = New and a blank owner, but it should not pretend to be a full CRM forever.

If several forms or channels feed the same CRM, a source lead ID is not enough to recognize the same person across systems. Use the broader n8n lead deduplication pattern to normalize identity keys, route conflicts, and update the right contact.

4. Send the internal email after the row succeeds

Put the Gmail or Send Email node after Google Sheets. This order matters: the team should not receive a success alert for a lead that failed to save. A concise internal message can include the name, email, phone, form source, submission time, and a link to the shared sheet.

Subject: New Facebook lead: {{ full_name }}

Name: {{ full_name }}
Email: {{ email }}
Phone: {{ phone }}
Form: {{ form_id }}
Lead ID: {{ lead_id }}

Open lead sheet: https://docs.google.com/spreadsheets/d/...

The placeholders above describe the message shape. Insert them through n8n's expression picker from your normalized node instead of pasting names that do not exist in your execution.

Test the path before publishing

  1. Create one test lead with a recognizable test name and a safe email address.
  2. Confirm the trigger execution contains the expected Page, form, lead ID, and question values.
  3. Confirm one row appears under the correct headers.
  4. Run the same normalized item again and confirm it updates the existing lead_id row instead of adding another row.
  5. Confirm the internal email arrives only after the sheet operation succeeds.
  6. Publish the workflow and create a separate production test lead.
  7. Record who owns Meta access, Google access, and the alert mailbox so the integration is maintainable.

Replay checklist: one row is not the same as one email

Append or Update Row matches a spreadsheet record; it does not remember whether an email was already sent. A replay can update the same row and still reach the email node again. If the team must receive only one alert, add a persistent sent-state check keyed by lead_id, and verify failure recovery before relying on it. Concurrent writes and uncertain email delivery need their own handling.

TestExpected result to verify
Send a new test leadCorrect fields in one row; email follows the successful sheet write
Replay the same normalized leadExisting row matched; check whether another email is sent
Leave an optional phone answer blankMapping succeeds without shifting another answer into the phone column
Change a lead's status manually, then replayTeam-owned status and notes remain intact
Use an isolated test destination with write access removedThe write fails visibly and no success email follows it

These are acceptance checks to run, not reported FloxoLab test results. Use a separate test sheet and approved test leads.

Common failures and the fastest checks

Symptom Check first
The trigger connects but receives no real leads Live app mode, Page selection, form selection, Leads Access Manager, and required Meta permissions
Testing works, production does not Whether the test webhook replaced the production webhook, then republish and retest
Production works, testing does not The same single-webhook limitation and whether the workflow is still published
Names or answers land in the wrong columns The real test payload, custom form question names, and Edit Fields mapping
One lead creates several rows Use Append or Update Row with lead_id, then inspect execution retries
The sheet saves but no email arrives Email credential, sender permissions, recipient address, provider quota, and spam folder
Meta OAuth suddenly fails App status, business verification, changed permissions, removed business integration, or expired access

Privacy and operating rules

If your intake already starts with Google Forms rather than Meta instant forms, the simpler Google Forms, Sheets, and Gmail workflow may be enough. This guide is specifically for retrieving leads submitted inside Facebook or Instagram lead ads and routing them through n8n.

Sources checked

n8n Cloud for small teams

Try the workflow without maintaining a server

n8n Cloud is the simplest place to build and test this workflow if you do not want to manage hosting. FloxoLab may earn a commission if you sign up through this link, at no extra cost to you.

Try n8n Cloud

Need the lead path mapped?

Send the form fields, Page and account setup, spreadsheet columns, notification owner, and expected response time. We will help scope a workflow with clear access, duplicate, and failure handling.

Map the workflow