Skip to main content

Monitor competitor Meta Ads creatives and send alerts with Google Sheets & Telegram

Workflow preview

Workflow preview
100%
Monitor competitor Meta Ads creatives and send alerts with Google Sheets & Telegram preview
Open on n8n.io

Important notice

This workflow is provided as-is. Please review and test before using in production.

1. Workflow Overview

This workflow continuously monitors the Meta Ads Library for new creatives from a specific competitor pages, logs them into Google Sheets, and sends a concise Telegram notification with the number ...

Best for

  • Market Research automation workflows
  • advanced n8n builders looking for reusable templates

Tools used

n8n-nodes-base.scheduletrigger, n8n-nodes-base.httprequest, n8n-nodes-base.switch, n8n-nodes-base.if, n8n-nodes-base.code, n8n-nodes-base.set, n8n-nodes-base.telegram, n8n-nodes-base.googlesheets

Source and attribution

This workflow is cataloged by N8N Workflows and links back to its original n8n.io source page by Kirill Khatkevich.

Original n8n.io source

1.1 Workflow description

Title
Monitor competitor Meta Ads creatives and send alerts with Google Sheets & Telegram
Workflow name
Monitor competitor Meta Ads creatives and send alerts with Google Sheets & Telegram

This workflow continuously monitors the Meta Ads Library for new creatives from a specific competitor pages, logs them into Google Sheets, and sends a concise Telegram notification with the number of newly discovered ads. It is built as a safe, idempotent loop that can run on a schedule without creating duplicates in your sheet.

Use Case

Manually checking the Meta Ads Library for competitor creatives is time‑consuming, and it’s easy to lose track of which ads you’ve already seen. This workflow is ideal if you want to:

  • Track competitor creatives over time in a structured Google Sheet.
  • Avoid duplicates by matching ads via their unique id field.
  • Get lightweight notifications in Telegram that tell you how many new ads appeared, without spamming you with full ad lists.
  • Run the process on autopilot (daily, weekly, etc.) with a single schedule.
How it Works

The workflow is organized into three logical blocks:

1. Fetch Ads & Handle Pagination

  • Configuration: The Add parameters Set node stores all key request variables:
    • ad_active_status (e.g. active),
    • search_page_ids (competitor page IDs),
    • ad_reached_countries,
    • access_token.
  • Routing: Page or keywords routes execution into one of two HTTP Request nodes:
    • Facebook Ads API by page — the main branch that queries ads by page ID.
    • Facebook Ads API by keywords — an optional branch for keyword‑based searches.
  • Normalization: Facebook Ads API by ... returns the raw ads_archive response. Check the pagination then:
    • extracts data (array of ad objects) into a dedicated field,
    • reads paging.next into next_url for pagination.
  • Pagination Loop:
    • If checks whether next_url is not empty.
    • Set Next URL assigns next_url to a generic url field.
    • Facebook Ads API pagination requests the next page and feeds it back into Check the pagination.
      This loop continues until there is no next_url, ensuring all pages of the Ads Library response are processed.

2. De‑duplicate Ads & Log to Google Sheets

  • Load Existing IDs:
    • Read existing IDs pulls the existing id column from your Google Sheet (configured to read a specific column/range).
    • Collect ID list converts these into a unique, normalized string array existingIds, which represents all ads you have already logged.
  • Attach State:
    • Attach existing ids (Merge node) combines, for each execution, the freshly fetched Meta response (data) with the historical existingIds array from Sheets.
  • Filter New Creatives:
    • Filter new creatives Code node compares each ad’s id (string) against the existingIds set and builds a new data array containing only ads that are not yet present in the sheet.
    • It also protects against duplicates inside the same batch by tracking seen IDs in a local Set.
  • Write New Ads:
    • Split Out expands the filtered data array into individual items (one item per new ad).
    • Add to sheet then performs an appendOrUpdate into Google Sheets, mapping core fields such as id, ad_creation_time, page_name, ad_creative_bodies, ad_snapshot_url, languages, publisher_platforms, and link fields.
    • The column mapping uses id as the matching column so that existing rows can be updated if needed.

3. Count New Ads & Notify in Telegram

  • Count:
    • In parallel with the write step, Split Out also feeds into Count new ads.
    • This Code node returns a single summary item with newCount = items.length, i.e. the total number of new creatives processed in this run.
  • Guard:
    • Any new ads? checks whether newCount is greater than 0. If not, the workflow ends silently and no message is sent, avoiding noise.
  • Notify:
    • When there are new creatives, Send a text message sends a Telegram message to the configured chatId.
    • The message includes {{$json.newCount}} and a fixed link to the Google Sheet, giving you a quick heads‑up without listing individual ads.

Setup Instructions

To use this template, configure the following components.

1. Credentials

  • Meta Ads / HTTP Header Auth:
    • Configure the Meta Ads HTTP Header credentials used by:
      • Facebook Ads API by page,
      • Facebook Ads API by keywords,
      • Facebook Ads API pagination.
  • Google Sheets:
    • Connect your Google account in:
      • Read existing IDs,
      • Add to sheet.
  • Telegram:
    • Connect your Telegram account credentials in Send a text message.

2. The Add parameters Node Open the Add parameters Set node and customize:

  • ad_active_status: Which ads to monitor (active, all, etc.).
  • search_page_ids: The numeric ID of the competitor Facebook Page you want to track.
  • ad_reached_countries: Comma‑separated list of country codes (US, US, CA, etc.).
  • access_token: A valid long‑lived access token with permission to query the Ads Library.

3. Google Sheets Configuration

  • Read existing IDs
    • Set documentId and sheetName to your tracking spreadsheet and sheet (e.g. an ads tab).
    • Configure the range to read only the column holding the ad id values.
  • Add to sheet
    • Point documentId and sheetName to the same spreadsheet/sheet.
    • Make sure your sheet has the columns expected by the node (e.g. id, creation time, page, title, description, delivery_start_time, snapshot, languages, platforms, link).
    • Confirm that id is included in matchingColumns so de‑duplication works correctly.

4. Telegram Configuration

  • In Send a text message, set:
    • chatId: Your target Telegram chat or channel ID.
    • text: Customize the message template as needed, but keep {{$json.newCount}} to show the number of new creatives.

5. Schedule

  • Open Schedule Trigger and configure when you want the workflow to run (e.g. every morning).
  • Save and activate the workflow.

Further Ideas & Customization

This workflow is a solid foundation for systematic competitor monitoring. You can extend it to:

  • Track multiple competitors by turning search_page_ids into a list and iterating over it with a loop or separate executions.
  • Enrich the log with performance data by creating a second workflow that reads the sheet, pulls spend/impressions/CTR for each logged ad_id from Meta, and merges the metrics back.
  • Add more notification channels such as Slack or email, or send a weekly summary that aggregates new ads by page, format, or country.
  • Tag or categorize creatives (e.g. “video vs image”, “country”, “language”) directly in the sheet to make later analysis easier.

1.2 Logical Blocks

This catalog entry is organized from the workflow JSON. The node-level section below shows the executable blocks available for review before importing the template.

2. Block-by-Block Analysis

Block 1 - Schedule Trigger

Type / Role
n8n-nodes-base.scheduleTrigger - scheduleTrigger
Config choices
Version 1.2

Block 2 - Facebook Ads API by page

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.3

Block 3 - Facebook Ads API by keywords

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.3

Block 4 - Page or keywords

Type / Role
n8n-nodes-base.switch - switch
Config choices
Version 3.3

Block 5 - If

Type / Role
n8n-nodes-base.if - if
Config choices
Version 2.2

Block 6 - Check the pagination

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 7 - Facebook Ads API pagination

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.3

Block 8 - Set Next URL

Type / Role
n8n-nodes-base.set - set
Config choices
Version 3.4

Block 9 - Send a text message

Type / Role
n8n-nodes-base.telegram - telegram
Config choices
Version 1.2

Block 10 - Collect ID list

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 11 - Read existing IDs

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.7

Block 12 - Attach existing ids

Type / Role
n8n-nodes-base.merge - merge
Config choices
Version 3.2

Block 13 - Filter new creatives

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 14 - Count new ads

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 15 - Any new ads?

Type / Role
n8n-nodes-base.if - if
Config choices
Version 2.2

Block 16 - Add parameters

Type / Role
n8n-nodes-base.set - set
Config choices
Version 3.4

Block 17 - Add to sheet

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.7

Block 18 - Split Out

Type / Role
n8n-nodes-base.splitOut - splitOut
Config choices
Version 1

Block 19 - Sticky Note - Overview

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 20 - Sticky Note

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 21 - Sticky Note1

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 22 - Sticky Note2

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 23 - Sticky Note3

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 24 - Sticky Note4

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Showing the first 24 of 34 workflow blocks. Download the JSON for the full node graph.

3. Summary Table

Workflow Monitor competitor Meta Ads creatives and send alerts with Google Sheets & Telegram
Complexity advanced
Nodes 34
Categories Market Research
Author Kirill Khatkevich
Published 27 Nov 2025

4. Reproducing the Workflow from Scratch

  1. 1. Download the workflow JSON

    Use the JSON export at /data/workflows/11270/11270.json as the source template for this automation.

  2. 2. Import the template into n8n

    Open n8n, import the downloaded JSON, and review each node before activating the workflow.

  3. 3. Configure credentials and variables

    Replace placeholder credentials, API keys, webhook URLs, account IDs, and environment-specific values with your own settings.

  4. 4. Test with sample data

    Run the workflow manually or in a staging workspace, inspect node output, and confirm downstream systems receive the expected data.

  5. 5. Activate and monitor

    Enable the workflow only after testing, then monitor executions, errors, and rate limits during the first production runs.

5. General Notes & Resources

Review imported nodes carefully before activation. This catalog entry is intended to help you inspect the workflow structure, understand required services, and find related templates faster.

Node names, credentials, schedules, webhook paths, and external service limits may need adjustment for your workspace.

Frequently asked questions

What does Monitor competitor Meta Ads creatives and send alerts with Google Sheets & Telegram do?

This workflow continuously monitors the Meta Ads Library for new creatives from a specific competitor pages, logs them into Google Sheets, and sends a concise Telegram notification with the number ...

What do I need before importing this workflow?

Review the workflow JSON, configure any required credentials in n8n, and test the automation in a safe workspace before using it in production.

Can I customize this workflow?

Yes. Use the block-by-block analysis and the downloadable JSON to inspect each node, then adjust credentials, prompts, schedules, filters, or destinations for your Market Research use case.