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.
This agent works seamlessly with these platforms to deliver powerful automation.
Read / Write data from / to Google Sheets
Send messages, manage channels, and automate workflows in Slack workspaces
Connect your Telegram bot to send messages, photos, documents and receive update...
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:
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.
This workflow is ideal for:
Whether you're monitoring 5 pages or 50, this automation scales to meet your needs while maintaining accuracy and eliminating tedious manual work.
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:
Create a Google Cloud Project
Enable the Google Sheets API
Create Service Account Credentials
Generate and Download Key
Configure in TaskAGI
Prepare Your Tracking Sheet
Ad ID, Page Name, Ad Text, Image URL, Landing Page, First Seen Date
name@project-id.iam.gserviceaccount.com)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:
Create a Telegram Bot
@BotFather
/newbot
123456789:ABCdefGHIjklMNOpqrsTUVwxyz)Get Your Chat ID
@userinfobot in Telegram@getidsbot to find the group Chat IDConfigure in TaskAGI
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:
Create a Slack App
Configure Bot Permissions
chat:write (send messages)chat:write.public (post to channels without joining)Install to Workspace
xoxb-)Configure in TaskAGI
Invite Bot to Channel
/invite @Ad Monitor to add the botThe Schedule Trigger node determines how frequently your workflow checks for new ads.
interval to your preferred frequency (recommended: 3600 for hourly checks, 86400 for daily)The Configuration node is your control center. Configure these critical parameters:
Search Type:
search_type to either "page_ids" or "keywords"
"page_ids" when monitoring specific advertiser pages (more precise)"keywords" for broader industry monitoringSearch Parameters:
page_ids: ["123456789", "987654321"] (comma-separated list)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 tokenfields: 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 spreadsheethttps://docs.google.com/spreadsheets/d/1ABC...XYZ/edit
The Read Existing IDs node pulls your current ad database to enable deduplication.
sheet_url from Configuration nodeThe 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.
The Check Search Type conditional node routes the workflow:
{{$node["Configuration"].json["search_type"]}} === "page_ids"
Both HTTP Request nodes call the advertising API with different parameters:
For Page IDs:
GET
{{$node["Configuration"].json["api_endpoint"]}}/ads
page_ids={{$node["Configuration"].json["page_ids"].join(",")}}
For Keywords:
GET
{{$node["Configuration"].json["api_endpoint"]}}/search
q={{$node["Configuration"].json["keywords"].join(" OR ")}}
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 }));
The Merge Data node combines results from both search paths, ensuring the workflow continues regardless of which search type was used.
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.
The Loop node processes each new ad individually for sheet insertion.
The Add to Google Sheet node appends each new ad:
sheet_url from ConfigurationAd ID, Page Name, Ad Text, Image URL, Landing Page, First Seen Date
The Check If New Ads Found conditional determines notification behavior:
{{$node["Filter New Creatives"].json.length}} > 0
Telegram Alert:
🚨 New Ads Detected!
Found {{$node["Filter New Creatives"].json.length}} new ad(s).
Check your tracking sheet: {{$node["Configuration"].json["sheet_url"]}}
Slack Alert:
#ad-monitoring)Manual Trigger Test
Verify Data Flow
Validate Sheet Updates
Test Notifications
✅ 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)
Error: "Insufficient permissions"
Error: "Sheet not found"
/edit at the endError: "401 Unauthorized"
Error: "Rate limit exceeded"
Telegram not receiving messages:
/start to your bot)Slack messages not appearing:
chat:write scope# prefix in configurationDuplicate ads appearing in sheet:
Enhance Data Collection:
Improve Notifications:
Scale Your Monitoring:
Competitive Intelligence Dashboard:
Integration with Other Tools:
Compliance and Brand Safety:
Your ad monitoring automation is now complete and ready to save your team countless hours while ensuring you never miss important competitive intelligence! 🚀
Explore these powerful automation agents that complement your workflow.