Build a Press Mention Monitor → Slack Alert + HubSpot + Escalation Workflow with n8n
Your brand gets mentioned in the press right now — a TechCrunch roundup, a Reddit thread that's climbing, a disgruntled customer's Medium post, a niche industry newsletter. Most of these mentions you
Your brand gets mentioned in the press right now — a TechCrunch roundup, a Reddit thread that's climbing, a disgruntled customer's Medium post, a niche industry newsletter. Most of these mentions you will never see. The good ones you miss the window to amplify. The bad ones you find out about three days later when a board member forwards you the link asking "did you see this?" By then the sentiment has calcified and you're doing damage control instead of response.
The fix is not hiring a PR agency or paying $600/month for a media monitoring SaaS. It's a single n8n workflow that polls news sources every six hours, scores the sentiment of every mention, logs each one to HubSpot, pings the right Slack channel, and escalates anything negative to a human before it spreads. Here's how to build it.
The problem: mentions are asynchronous, your team is not
Press coverage does not arrive on your schedule. A story breaks at 2 AM in a time zone you don't work in, gets picked up by aggregators through the morning, and by the time your team logs in the narrative is already set. The three failure modes are always the same:
- Latency on the negatives. A negative mention that reaches you in 30 minutes is a conversation. The same mention at 48 hours is a crisis with a comment count.
- Missed amplification. Positive coverage has a half-life. If you don't retweet, quote, and sales-enable it while it's fresh, it evaporates.
- No system of record. Mentions live in someone's inbox, a Slack DM, a screenshot. There's no searchable history tied to your CRM, so you can't answer "how has coverage trended this quarter?" without a manual audit.
Manual monitoring — someone checking Google News over coffee — fails on all three because it depends on a human being awake, attentive, and consistent. Automation doesn't get tired at 2 AM.
The solution: a six-hour polling loop with sentiment routing
The workflow does four things on a fixed cadence: it fetches every new mention, scores each one for sentiment, records it in HubSpot, and routes it — a quiet log entry for neutral coverage, a Slack ping for positive coverage, and an active escalation for anything negative.
The architecture is deliberately linear so it's easy to debug:
- Schedule Trigger fires every 6 hours.
- HTTP Request nodes pull from a news API (and optionally an RSS feed and Reddit).
- Code / dedupe filters out mentions already seen.
- An AI/sentiment node scores each mention −1 to +1.
- HubSpot logs the mention.
- A Switch routes by sentiment to Slack and/or escalation.
Six hours is the sweet spot: fast enough to catch a negative story before it snowballs, slow enough to stay inside free-tier API limits and avoid Slack fatigue. You can tighten it to hourly for launch weeks.
Step-by-step setup in n8n
1. Schedule Trigger. Add a Schedule Trigger node. Set the interval to "Hours" with a value of 6. This is your heartbeat — everything downstream runs from it.
2. Fetch the mentions. Add an HTTP Request node pointing at your news source. NewsAPI, GNews, or Bing News all work; the pattern is identical. Configure:
- Method:
GET - URL: your endpoint with a query like
q="Your Brand"&from={{ $now.minus({hours: 6}).toISO() }}&sortBy=publishedAt - Authentication:
Header Author a query-param API key — store it in n8n Credentials, never inline.
Use the expression {{ $now.minus({hours: 6}) }} for the from parameter so each run only asks for mentions since the last poll. For broader coverage, add parallel HTTP Request nodes for an RSS feed (via the RSS Read node) and Reddit's /search.json endpoint, then merge them.
3. Deduplicate. News APIs re-serve the same article across polls. Add a Code node (or the Remove Duplicates node) keyed on the article URL. The cleanest approach is n8n's built-in data deduplication: use the Remove Duplicates node in "Remove items seen in previous executions" mode, keyed on {{ $json.url }}. This persists dedupe state across runs so you never alert twice on the same story.
4. Score sentiment. Add an AI node — the Basic LLM Chain or a direct HTTP Request to an LLM API. Prompt it to return strict JSON:
Analyze the sentiment of this press mention about {brand}.
Return ONLY JSON: {"score": -1.0 to 1.0, "label": "negative|neutral|positive", "reason": "one sentence"}
Title: {{ $json.title }}
Snippet: {{ $json.description }}
Set the temperature to 0 for consistency and parse the response with a Code node or the Structured Output Parser. You now have a numeric score attached to every mention.
5. Log to HubSpot. Add a HubSpot node. Authenticate with a Private App token (Settings → Integrations → Private Apps → scope crm.objects.contacts / custom objects). Create a note or a custom "Press Mention" object with fields for URL, title, sentiment score, source, and date. This is your system of record — every mention, searchable, forever.
6. Route with a Switch. Add a Switch node with three outputs keyed on {{ $json.label }}:
- Positive →
Slacknode posting to#press-wins: "📈 Positive mention: {title} — {url}. Amplify it." - Neutral →
Slacknode posting to#press-log(low-noise channel), or no alert at all — just the HubSpot record. - Negative → the escalation branch.
7. Build the escalation branch. For negative mentions, don't just post — escalate. Chain a Slack node that posts to #press-alerts with an @here or a direct @mention of your comms lead, including the score and the AI's one-sentence reason. Then add an IF node: if score < -0.6 (genuinely hostile, not just mildly critical), fan out a second alert — an email via the Send Email node or an SMS via Twilio. Add a short Wait + follow-up if no one has acknowledged, so a 2 AM crisis doesn't sit unread until morning.
The benefits: coverage becomes a controlled input
Once this is live, press coverage stops being something that happens to you and becomes a stream you manage:
- Response time collapses. Negative mentions hit a human within six hours, worst case — usually much less. You respond while the story is still forming.
- Nothing gets missed. Every mention is logged in HubSpot whether or not anyone reads the Slack ping. Your quarterly PR review is a query, not an archaeology dig.
- Positive coverage gets amplified on time. Sales gets the wins in a dedicated channel; marketing quote-tweets while it's fresh.
- Cost is near zero. A news API free tier plus your existing n8n instance beats a $500/month monitoring tool, and you own the data.
- It's tunable. Launch week? Drop the interval to one hour. Quiet quarter? Bump it to twelve. One node, one number.
Common pitfalls (and how to avoid them)
Skipping deduplication. This is the number-one cause of "why did it alert me five times?" News APIs are messy. Use the Remove Duplicates node in cross-execution mode keyed on the canonical URL, and strip UTM parameters before comparing or the same article with different tracking tags reads as new.
Trusting keyword matching alone. A query for "Apple" returns fruit recipes. Add a Filter or refine the sentiment prompt to confirm the mention is actually about your company before scoring. For common-word brand names, include a disambiguating term in the query.
Alert fatigue. If every neutral mention pings a busy channel, people mute it — and then miss the real alert. Route ruthlessly: negatives get @here, positives get a normal post, neutrals get logged silently. Noise kills the whole system's credibility.
Non-deterministic sentiment scoring. If temperature isn't 0 and you don't force JSON output, the LLM will occasionally return prose that breaks your parser and stalls the run. Pin temperature to zero, demand strict JSON, and add an error branch that defaults unparseable mentions to "neutral — needs review" rather than crashing the workflow.
Hardcoded credentials. Never paste API keys into HTTP Request URLs. Use n8n's Credentials store so keys are encrypted and don't leak into execution logs — which, for a press-monitoring tool, tend to get shared around.
No dead-man's switch. If the news API changes its schema or your key expires, the workflow can fail silently and you'll think "no news is good news" while a story blows up. Add a catch: on error, post to Slack "⚠️ Press monitor failed — check the workflow." Monitoring that can fail invisibly is worse than no monitoring, because it manufactures false confidence.
Build this once and press coverage becomes just another input your ops stack handles automatically — scored, logged, routed, and escalated — while you sleep.
Ja construimos isso pra voce
Nao comece do zero. O Press Mention Monitor → Slack Alert + HubSpot + Escalation e um workflow n8n pronto para instalar — conecta suas ferramentas em minutos, sem codigo.
Instalar por $49 →