AutomationFlowsSocial Media › Facebook Ads Reporting Automation with Facebook Graph API and Google Sheets

Facebook Ads Reporting Automation with Facebook Graph API and Google Sheets

ByJacob @jacobgad on n8n.io

This automation enables you to automatically fetch daily campaign data from Facebook Ads without manual exports. It requires connection to the Facebook Graph API and a Google Sheets account where all data is stored and updated in real time.

Cron / scheduled trigger★★★★☆ complexity17 nodesGoogle SheetsHTTP RequestFacebook Graph Api
Social Media Trigger: Cron / scheduled Nodes: 17 Complexity: ★★★★☆ Added:

This workflow corresponds to n8n.io template #6328 — we link there as the canonical source.

This workflow follows the Facebookgraphapi → Google Sheets recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "nzmEkWPbBiHNGEHY",
  "name": "Facebook Ads Reporting Automation",
  "tags": [],
  "nodes": [
    {
      "id": "13b4b7b4-bb8f-4e7b-b86a-91aaa7d8e4de",
      "name": "Code1",
      "type": "n8n-nodes-base.code",
      "position": [
        272,
        -48
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "ec2581f8-5dd9-47ab-98b5-5c61228a0858",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        944,
        400
      ],
      "parameters": {},
      "typeVersion": 3.2
    },
    {
      "id": "18117c12-c21d-47f1-8280-a1554c3dcbef",
      "name": "Aggregate",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        1104,
        400
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "0034041e-1ee3-41de-a17e-afc2546ea742",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -320,
        -224
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "5a3eb79b-335f-4b80-95f7-8924060a91d1",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -320,
        224
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "2dd91c7b-f4ed-474a-98f7-c5a6729146ac",
      "name": "Update row in sheet4",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        576,
        304
      ],
      "parameters": {},
      "typeVersion": 4.6
    },
    {
      "id": "7c03d461-7275-44c9-a59b-7c6546714d5a",
      "name": "Get Only Active Campaign",
      "type": "n8n-nodes-base.if",
      "position": [
        416,
        -48
      ],
      "parameters": {},
      "typeVersion": 2.2
    },
    {
      "id": "e4927546-0316-4634-825e-347e3187bd0d",
      "name": "Get Campaign from AD Account",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        112,
        -48
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "1a7a9b7d-c769-4d4c-a7ee-eb681f878251",
      "name": "Checking if Campaign have data",
      "type": "n8n-nodes-base.if",
      "position": [
        400,
        384
      ],
      "parameters": {},
      "typeVersion": 2.2
    },
    {
      "id": "8416ea84-e302-4fdc-a181-80199e7fe4cb",
      "name": "Update Campaign statistics",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1264,
        400
      ],
      "parameters": {},
      "typeVersion": 4.6
    },
    {
      "id": "ac39c093-b614-4051-9586-2116c998f0e4",
      "name": "Get Campaign statistics",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        208,
        384
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "a23906cb-9511-4fd9-b097-5e488f00015b",
      "name": "Checking Conversion",
      "type": "n8n-nodes-base.code",
      "position": [
        784,
        400
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "5dbfde3b-41b4-4e7c-bdb1-e92855e958af",
      "name": "Get Campaign ID",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        0,
        400
      ],
      "parameters": {},
      "typeVersion": 4.6
    },
    {
      "id": "3e6c0fb2-e88c-4000-b750-90627c011c29",
      "name": "Add credentials to the Facebook Graph API",
      "type": "n8n-nodes-base.facebookGraphApi",
      "position": [
        -80,
        -48
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "a17542a1-74c9-422f-849c-9d56e8bd727e",
      "name": "Add your campaign to file",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        608,
        -48
      ],
      "parameters": {},
      "typeVersion": 4.6
    },
    {
      "id": "68a07250-2181-4fe3-b203-43af62c739cc",
      "name": "Set Schedule",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -256,
        -48
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "93d18b11-1994-4070-859a-6d8a087a6b32",
      "name": "Set Schedule1",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -256,
        400
      ],
      "parameters": {},
      "typeVersion": 1.2
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "8593801c-c727-42b7-a660-6f6302379da7",
  "connections": {
    "Code1": {
      "main": [
        [
          {
            "node": "Get Only Active Campaign",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge": {
      "main": [
        [
          {
            "node": "Aggregate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate": {
      "main": [
        [
          {
            "node": "Update Campaign statistics",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Schedule": {
      "main": [
        [
          {
            "node": "Add credentials to the Facebook Graph API",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Schedule1": {
      "main": [
        [
          {
            "node": "Get Campaign ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Campaign ID": {
      "main": [
        [
          {
            "node": "Get Campaign statistics",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Checking Conversion": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update row in sheet4": {
      "main": [
        [
          {
            "node": "Get Campaign ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Campaign statistics": {
      "main": [
        [
          {
            "node": "Checking if Campaign have data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Only Active Campaign": {
      "main": [
        [
          {
            "node": "Add your campaign to file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Campaign statistics": {
      "main": [
        [
          {
            "node": "Get Campaign ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Campaign from AD Account": {
      "main": [
        [
          {
            "node": "Code1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Checking if Campaign have data": {
      "main": [
        [
          {
            "node": "Update row in sheet4",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Checking Conversion",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Add credentials to the Facebook Graph API": {
      "main": [
        [
          {
            "node": "Get Campaign from AD Account",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This automation enables you to automatically fetch daily campaign data from Facebook Ads without manual exports. It requires connection to the Facebook Graph API and a Google Sheets account where all data is stored and updated in real time.

Source: https://n8n.io/workflows/6328/ — original creator credit. Request a take-down →

More Social Media workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Social Media

How it works

Google Sheets, Google Drive, HTTP Request +1
Social Media

Wait Schedule. Uses scheduleTrigger, googleSheets, chainLlm, lmChatGoogleGemini. Scheduled trigger; 26 nodes.

Google Sheets, Chain Llm, Google Gemini Chat +3
Social Media

Automate your cross-platform publishing workflow by automatically uploading Instagram videos to YouTube with AI-optimized titles and tags. 🚀🎬 This workflow runs every six hours, fetches newly posted I

HTTP Request, Facebook Graph Api, Agent +5
Social Media

This n8n workflow automates the process of uploading video and image advertisements to Meta Ads Manager via the Meta Graph API (Facebook Ads) directly from Google Sheets and Google Drive. The workflow

Facebook Graph Api, Google Sheets, HTTP Request +2
Social Media

📘 Multi-Photo Facebook Post (Windows Directory) – How to Use ✅ Requirements To run this automation, make sure you have the following:

Read Write File, Execute Command, Facebook Graph Api +1