Global AI Network

Meta Ads Competitor Monitoring AI Agent - Spy copy, banners & campaigns

Monitor ad creatives by page ID or keyword, automatically log new ads to Google Sheets, and receive instant Telegram and Slack alerts when competitors launch campaigns.

812+
Total Deployments
10 min
Setup Time
v1.0
Version

Need Help Getting Started? Our AI Specialists Will Set It Up For Free

1-Click Deployment 5-Min Setup Free Expert Support
Technology Partners

Required Integrations

This agent works seamlessly with these platforms to deliver powerful automation.

Google Sheets

Google Sheets

Read / Write data from / to Google Sheets

Slack

Slack

Send messages, manage channels, and automate workflows in Slack workspaces

Telegram

Telegram

Connect your Telegram bot to send messages, photos, documents and receive update...

Step by Step

Setup Tutorial

mission-briefing.md

What This Agent Does

This powerful automation agent monitors advertising platforms for new creative content and automatically tracks them in a centralized Google Sheet. It searches for ads either by specific page IDs or keywords, intelligently filters out duplicates by comparing against existing records, and instantly notifies your team via Telegram and Slack when new ads are discovered.

Key benefits include:

  • Save 5-10 hours weekly on manual ad monitoring and data entry
  • Never miss competitor updates with automated scheduled checks
  • Eliminate duplicate entries through intelligent deduplication
  • Instant team alerts when new creative content appears
  • Centralized tracking with all ad data organized in one accessible spreadsheet

Perfect for: Competitive intelligence teams, marketing agencies tracking client ads, media buyers monitoring ad trends, and brand protection teams watching for unauthorized use of assets.

Who Is It For

This workflow is ideal for:

  • Marketing Teams who need to monitor competitor advertising strategies and creative approaches across multiple brands or pages
  • Agency Account Managers tracking client and competitor ad campaigns to inform strategy recommendations
  • Media Buyers staying current on industry trends and creative formats that drive performance
  • Brand Protection Specialists monitoring for unauthorized use of trademarks, logos, or brand assets in advertising
  • Market Research Analysts collecting advertising data for competitive analysis and market intelligence reports
  • Social Media Managers gathering inspiration and tracking how competitors position their products

Whether you're monitoring 5 pages or 50, this automation scales to meet your needs while maintaining accuracy and eliminating tedious manual work.

Required Integrations

Google Sheets

Why it's needed: Google Sheets serves as your central database for storing ad creative information and tracking which ads have already been processed to prevent duplicates.

Setup steps:

  1. Create a Google Cloud Project

    • Visit the Google Cloud Console
    • Click "New Project" and give it a descriptive name like "TaskAGI Ad Monitoring"
    • Wait for project creation to complete
  2. Enable the Google Sheets API

    • In your project, navigate to "APIs & Services" > "Library"
    • Search for "Google Sheets API"
    • Click "Enable"
  3. Create Service Account Credentials

    • Go to "APIs & Services" > "Credentials"
    • Click "Create Credentials" > "Service Account"
    • Name it "TaskAGI Integration" and click "Create"
    • Skip optional permissions and click "Done"
  4. Generate and Download Key

    • Click on your newly created service account
    • Go to the "Keys" tab
    • Click "Add Key" > "Create New Key"
    • Select "JSON" format and click "Create"
    • Save the downloaded JSON file securely
  5. Configure in TaskAGI

    • Navigate to Integrations in TaskAGI
    • Select "Google Sheets"
    • Upload your JSON credentials file or paste the contents
    • Test the connection to verify setup
  6. Prepare Your Tracking Sheet

    • Create a new Google Sheet for ad tracking
    • Add column headers: Ad ID, Page Name, Ad Text, Image URL, Landing Page, First Seen Date
    • Share the sheet with the service account email (found in your JSON file, looks like name@project-id.iam.gserviceaccount.com)
    • Grant "Editor" permissions

Telegram

Why it's needed: Telegram provides instant mobile notifications when new ads are discovered, ensuring your team can react quickly to competitive changes.

Setup steps:

  1. Create a Telegram Bot

    • Open Telegram and search for @BotFather
    • Send the command /newbot
    • Follow prompts to name your bot (e.g., "Ad Monitor Alerts")
    • Save the Bot Token provided (format: 123456789:ABCdefGHIjklMNOpqrsTUVwxyz)
  2. Get Your Chat ID

    • Search for @userinfobot in Telegram
    • Start a conversation to receive your Chat ID
    • Alternatively, for group notifications, add your bot to a group and use @getidsbot to find the group Chat ID
  3. Configure in TaskAGI

    • Go to Integrations > Telegram
    • Enter your Bot Token
    • Save and test the connection

Slack

Why it's needed: Slack integration ensures desktop notifications reach your team where they're already collaborating, with rich formatting for easy scanning.

Setup steps:

  1. Create a Slack App

    • Visit api.slack.com/apps
    • Click "Create New App" > "From Scratch"
    • Name it "Ad Monitor" and select your workspace
  2. Configure Bot Permissions

    • Navigate to "OAuth & Permissions"
    • Under "Scopes" > "Bot Token Scopes", add:
      • chat:write (send messages)
      • chat:write.public (post to channels without joining)
  3. Install to Workspace

    • Click "Install to Workspace" at the top
    • Review permissions and click "Allow"
    • Copy the Bot User OAuth Token (starts with xoxb-)
  4. Configure in TaskAGI

    • Navigate to Integrations > Slack
    • Paste your Bot User OAuth Token
    • Test the connection
  5. Invite Bot to Channel

    • In Slack, go to your desired notification channel
    • Type /invite @Ad Monitor to add the bot

Configuration Steps

Step 1: Schedule Trigger Setup

The Schedule Trigger node determines how frequently your workflow checks for new ads.

  • Set interval to your preferred frequency (recommended: 3600 for hourly checks, 86400 for daily)
  • For competitive monitoring: hourly during business hours
  • For general tracking: daily checks are sufficient
  • Consider API rate limits when setting frequency

Step 2: Configuration Node

The Configuration node is your control center. Configure these critical parameters:

Search Type:

  • Set search_type to either "page_ids" or "keywords"
  • Use "page_ids" when monitoring specific advertiser pages (more precise)
  • Use "keywords" for broader industry monitoring

Search Parameters:

  • For page_ids: page_ids: ["123456789", "987654321"] (comma-separated list)
  • For keywords: keywords: ["running shoes", "athletic wear"]

API Configuration:

  • api_endpoint: Your ad library API URL (e.g., Meta Ad Library, Google Ads Transparency Center)
  • api_token: Your API authentication token
  • fields: Specify which ad data to retrieve: ["id", "page_name", "ad_creative_body", "ad_snapshot_url"]

Google Sheet URL:

  • sheet_url: Full URL of your tracking spreadsheet
  • Example: https://docs.google.com/spreadsheets/d/1ABC...XYZ/edit

Step 3: Read Existing IDs

The Read Existing IDs node pulls your current ad database to enable deduplication.

  • Automatically uses sheet_url from Configuration node
  • Reads all rows from your tracking sheet
  • No additional configuration needed

Step 4: Collect Existing IDs

The Collect Existing IDs function node processes the sheet data:

// Extracts Ad IDs into an array for comparison
const existingIds = items.map(item => item.json['Ad ID']);
return [{ json: { existing_ids: existingIds } }];

This creates a lookup list to identify new ads.

Step 5: Check Search Type

The Check Search Type conditional node routes the workflow:

  • Condition: {{$node["Configuration"].json["search_type"]}} === "page_ids"
  • True path → Fetch Ads by Page IDs
  • False path → Fetch Ads by Keywords

Step 6 & 7: Fetch Ads Nodes

Both HTTP Request nodes call the advertising API with different parameters:

For Page IDs:

  • Method: GET
  • URL: {{$node["Configuration"].json["api_endpoint"]}}/ads
  • Query Parameters: page_ids={{$node["Configuration"].json["page_ids"].join(",")}}
  • Authentication: Bearer Token from Configuration

For Keywords:

  • Method: GET
  • URL: {{$node["Configuration"].json["api_endpoint"]}}/search
  • Query Parameters: q={{$node["Configuration"].json["keywords"].join(" OR ")}}

Step 8: Extract API Response

The Extract API Response function standardizes the API data:

// Transforms API response into consistent format
const ads = items[0].json.data.map(ad => ({
  ad_id: ad.id,
  page_name: ad.page_name,
  ad_text: ad.ad_creative_body,
  image_url: ad.ad_snapshot_url,
  landing_page: ad.ad_creative_link_url,
  first_seen: new Date().toISOString()
}));
return ads.map(ad => ({ json: ad }));

Step 9: Merge Data

The Merge Data node combines results from both search paths, ensuring the workflow continues regardless of which search type was used.

Step 10: Filter New Creatives

The Filter New Creatives function identifies truly new ads:

const existingIds = $node["Collect Existing IDs"].json["existing_ids"];
const newAds = items.filter(item => !existingIds.includes(item.json.ad_id));
return newAds;

Only ads not in your sheet proceed to the next step.

Step 11: Loop Over New Ads

The Loop node processes each new ad individually for sheet insertion.

  • Automatically iterates through filtered ads
  • Passes one ad at a time to the next node

Step 12: Add to Google Sheet

The Add to Google Sheet node appends each new ad:

  • Uses sheet_url from Configuration
  • Maps fields: Ad ID, Page Name, Ad Text, Image URL, Landing Page, First Seen Date
  • Automatically formats data for your sheet structure

Step 13: Check If New Ads Found

The Check If New Ads Found conditional determines notification behavior:

  • Condition: {{$node["Filter New Creatives"].json.length}} > 0
  • True → Send notifications
  • False → Skip to No Operation node

Step 14 & 15: Send Notifications

Telegram Alert:

  • Chat ID: Your saved Telegram Chat ID
  • Message:
🚨 New Ads Detected!

Found {{$node["Filter New Creatives"].json.length}} new ad(s).

Check your tracking sheet: {{$node["Configuration"].json["sheet_url"]}}

Slack Alert:

  • Channel: Your notification channel (e.g., #ad-monitoring)
  • Message format: Similar to Telegram with rich formatting

Testing Your Agent

Initial Test Run

  1. Manual Trigger Test

    • Click "Execute Workflow" in TaskAGI
    • Watch each node execute in sequence
    • Green checkmarks indicate successful execution
  2. Verify Data Flow

    • Check Read Existing IDs output shows your sheet data
    • Confirm Fetch Ads nodes return API results
    • Verify Filter New Creatives identifies new ads correctly
  3. Validate Sheet Updates

    • Open your Google Sheet
    • Confirm new rows appear with correct data
    • Check formatting and column alignment
  4. Test Notifications

    • Verify Telegram message arrives on your device
    • Check Slack channel for notification
    • Confirm message content is clear and actionable

Success Indicators

Green execution across all nodes
New ads appear in Google Sheet with accurate data
Notifications received in both Telegram and Slack
No duplicate entries when re-running with same data
Execution time completes within expected timeframe (typically 30-60 seconds)

Troubleshooting

Google Sheets Issues

Error: "Insufficient permissions"

  • Solution: Verify service account email has Editor access to your sheet
  • Check the sharing settings in Google Sheets
  • Ensure the sheet URL in Configuration is correct

Error: "Sheet not found"

  • Solution: Confirm the full sheet URL includes /edit at the end
  • Verify the sheet hasn't been deleted or moved
  • Test the sheet URL in your browser while logged in

API Connection Problems

Error: "401 Unauthorized"

  • Solution: Verify your API token is current and valid
  • Check if the token has expired and needs renewal
  • Confirm the token has necessary permissions for ad data access

Error: "Rate limit exceeded"

  • Solution: Reduce schedule frequency (increase interval seconds)
  • Implement exponential backoff in HTTP request settings
  • Contact API provider about rate limit increases

Notification Failures

Telegram not receiving messages:

  • Solution: Verify Bot Token is correct
  • Ensure Chat ID is accurate (try sending /start to your bot)
  • Check that bot isn't blocked by user or removed from group

Slack messages not appearing:

  • Solution: Confirm bot is invited to the target channel
  • Verify OAuth token has chat:write scope
  • Check channel name includes # prefix in configuration

Deduplication Not Working

Duplicate ads appearing in sheet:

  • Solution: Verify "Ad ID" column name matches exactly in your sheet
  • Check that the Collect Existing IDs function is reading the correct column
  • Ensure Ad IDs from API match format in your sheet (string vs. number)

Next Steps

After Successful Setup

  1. Monitor for 48 hours to ensure stable operation and catch any edge cases
  2. Review collected data to verify all desired fields are capturing correctly
  3. Adjust schedule frequency based on your monitoring needs and API limits
  4. Create a backup of your workflow configuration for disaster recovery

Optimization Suggestions

Enhance Data Collection:

  • Add custom fields to track additional ad metadata (spend estimates, engagement metrics)
  • Implement screenshot capture for visual ad archives
  • Create separate sheets for different advertiser categories

Improve Notifications:

  • Add conditional logic to only alert on high-priority advertisers
  • Include ad preview images in notifications (requires additional processing)
  • Create digest notifications (daily summary instead of per-ad alerts)

Scale Your Monitoring:

  • Duplicate workflow for different product categories or regions
  • Implement parallel processing for faster execution with large page lists
  • Add data enrichment nodes to append competitor analysis

Advanced Usage Tips

Competitive Intelligence Dashboard:

  • Connect your Google Sheet to Data Studio or Tableau for visualization
  • Track trends in ad frequency, messaging themes, and creative formats
  • Set up automated weekly reports summarizing new ad activity

Integration with Other Tools:

  • Export data to your CRM to inform sales conversations
  • Feed ad data into your marketing analytics platform
  • Trigger creative brief workflows when competitors launch new campaigns

Compliance and Brand Safety:

  • Add keyword filtering to flag potentially problematic ads
  • Implement sentiment analysis on ad copy
  • Create alerts for specific brand mentions or trademark usage

Your ad monitoring automation is now complete and ready to save your team countless hours while ensuring you never miss important competitive intelligence! 🚀

Similar Solutions

Related Agents

Explore these powerful automation agents that complement your workflow.

Meta ads performance tracker AI agent

Meta ads performance tracker AI agent

Automatically export Facebook Ads performance data to Google Sheets daily with historical backfill capability for seamle...