Back to Templates

Meta Ads to Google Sheets: Daily & Historical Campaign Performance Report

Last update

Last update 3 days ago

Categories

Share


Overview

This template automatically exports Meta (Facebook) Ads campaign performance into Google Sheets — both daily and for historical backfills. It’s ideal for performance marketers, agencies, and analytics teams who want a reliable data pipeline from Meta Ads into their reporting stack.

What this workflow does

  • Runs a daily cron job to pull yesterday’s campaign-level performance from the Meta Ads Insights API.
  • Flattens the API response and calculates key KPIs like CPL, CPA, ROAS, CTR, CPC, CPM, frequency and more.
  • Appends one row per campaign per day to a Google Sheet (for dashboards and further analysis).
  • Provides a separate Manual Backfill section to import historical data using a time_range parameter (e.g. last 12–24 months).

Use cases

  • Build Looker Studio / Power BI dashboards on top of a clean, daily Meta Ads dataset.
  • Track ROAS, CPL, CPA, CTR, and frequency trends over time.
  • Combine campaign data with CRM or ecommerce data in the same spreadsheet.
  • Quickly backfill past performance when onboarding a new Meta Ads account.

How it works

  1. Daily Incremental Flow

    • A Schedule Trigger runs every day at 05:00.
    • The Set config node defines ad account, date preset (yesterday), and Google Sheet details.
    • The Meta Insights node calls the Facebook Graph insights edge at level=campaign.
    • The Code node flattens the data and derives CPL, CPA, ROAS, and other KPIs.
    • The Google Sheets node appends the rows to your Meta_Daily_Data sheet.
  2. Manual Backfill Flow

    • A Manual Trigger lets you run the flow on demand.
    • The Set backfill config node defines backfillSince and backfillUntil.
    • The Meta Insights (time_range) node fetches performance for that historical range.
    • The same transform logic is applied, and rows are appended to the same sheet.

Prerequisites

  • A Meta Business account with:
    • A system user and a long-lived access token with ads_read / read_insights.
  • A Google Sheet with a header row that matches the mapped column names.
  • n8n credentials for:
    • Facebook Graph API
    • Google Sheets OAuth2

Setup steps

  1. Import this template into your n8n instance.
  2. Open the Set config and Set backfill config nodes:
    • Set your adAccountId (e.g. act_123456789012345).
    • Set your sheetId (Google Sheet ID) and sheet name (e.g. Meta_Daily_Data).
  3. Configure your Facebook Graph API and Google Sheets credentials in n8n.
  4. (Optional) Run the Manual Backfill section for your desired historical ranges (e.g. per quarter).
  5. Enable the workflow so the Daily Incremental section runs automatically.

Customization

  • Change level from campaign to adset or ad if you need more granular reporting.
  • Add breakdowns (e.g. publisher_platform, platform_position) to split by platform and placement.
  • Extend the transform code with additional KPIs or dimensions that match your reporting needs.
  • Use a separate sheet for raw data and build dashboards on top of a cleaned or pivoted view.

Consulting & support

If you need help with:

  • E-Commerce Strategy & Development
    (Shopify, Shopware 6, Magento 2, SAP Commerce Cloud, etc.)
  • Growth & Performance Marketing
    (Google / Meta / Microsoft Ads, etc.)
  • Data & Analytics Setups
    (tracking, dashboards, attribution, gdpr, etc.)

please reach out to Serendipity Technologies:

👉 https://www.serendipity.at

We can help you turn this workflow into a full analytics stack and reporting system tailored to your business.