Detect competitor launch signals from ads with OpenAI and Google Sheets
Needs changesNeeds changes. This template uses 1 thing(s) that n8n 3.0 removes: AI Agent v1 (old agent modes). 1 breaking item(s) found. Static check, last run 2026-10-19.
What to replace before upgrading
| Removed in 3.0 | Replace with |
|---|---|
| AI Agent v1 (old agent modes) AI Agent — Classify Terms (v1.7) | Latest AI Agent node (Tools Agent). For SQL Agent, use a Postgres or MySQL tool with a recent AI Agent. |
Community nodes
These come from third-party npm packages. In n8n 3.0 unverified community packages are off by default (N8N_UNVERIFIED_PACKAGES_ENABLED=false).
n8n-nodes-adyntel(Search Facebook Ads, Search Google Ads, Search LinkedIn Ads)
Nodes used (10)
- Google Sheets
n8n-nodes-base.googleSheets - Loop Over Items (Split in Batches)
n8n-nodes-base.splitInBatches - Adyntel
n8n-nodes-adyntel.adyntel - Merge
n8n-nodes-base.merge - Code
n8n-nodes-base.code - If
n8n-nodes-base.if - No Operation, do nothing
n8n-nodes-base.noOp - AI Agent
@n8n/n8n-nodes-langchain.agent - OpenAI Chat Model
@n8n/n8n-nodes-langchain.lmChatOpenAi - Schedule Trigger
n8n-nodes-base.scheduleTrigger
What it does
Quick Overview This workflow runs weekly to scan competitor ad copy from Meta, Google Ads, and LinkedIn via Adyntel, detects newly emerging terms, uses OpenAI to assess launch signals, and records results in Google Sheets while sending a Slack alert when a launch signal is detected. How it works 1. Runs every week on a schedule (Monday) to start the competitor monitoring cycle. 2. Reads competitors marked as Pending from Google Sheets and processes them one by one. 3. For each competitor domain, pulls current ads from Meta, Google Ads, and LinkedIn using Adyntel and combines the results. 4. Extracts and deduplicates ad titles and body copy, then loads the competitor’s previously known terms from Google Sheets. 5. Extracts candidate new terms from this week’s ad copy, filters for terms that recur across multiple ads, and decides whether there are meaningful new terms to analyze. 6. If meaningful new terms exist, sends the context to OpenAI to classify the terms and determine whether a product launch signal is present, then appends the signal record and the newly classified terms to Google Sheets. 7. If no meaningful new terms exist, appends baseline terms from this week’s ad titles to Google Sheets to prevent future false “new term” detections. 8. Updates the competitor’s status to Done in Google Sheets and, when a signal is detected, formats a Slack alert message and continues to the next competitor. Setup 1. Connect Google Sheets OAuth credentials and update the spreadsheet ID/sheet tabs for competitors (with a status column), knownterms, and launchsignals. 2. Add an Adyntel API credential and ensure each competitor row includes a valid domain value for ad lookups. 3. Add an OpenAI API key for the OpenAI Chat Model used by the AI Agent. 4. Configure a Slack notification step (this template formats a message but does not send it) by adding a Slack node/webhook and posting the formatted slackmessage to your chosen channel. 5. Confirm the schedule settings (weekly on Monday) and adjust term extraction thresholds in the code steps if you want different sensitivity.