Website change alerts to Telegram, no more refreshing
You know the routine. Open the same page, hit refresh, scan for changes, repeat. Do it often enough and you start missing the important updates because you simply can’t stay glued to one tab all day.
Recruiters chasing niche job boards feel this first. A shop owner watching supplier stock gets it too. And if you run client research, you’ve probably promised “we’ll catch changes fast” while doing it manually. This website change alerts automation stops the constant checking and sends the update to you.
Below, you’ll see exactly how the n8n workflow watches a webpage on a schedule, extracts the specific text you care about, and pushes a clean Telegram alert when something new shows up.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Website change alerts to Telegram, no more refreshing
flowchart LR
subgraph sg0["Flow 1"]
direction LR
n0@{ icon: "mdi:cog", form: "rounded", label: "Hourly Monitor Trigger", pos: "b", h: 48 }
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Fetch Webpage Content"]
n2@{ icon: "mdi:cog", form: "rounded", label: "Extract Job/Product Info", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If Items Found", pos: "b", h: 48 }
n4@{ icon: "mdi:code-braces", form: "rounded", label: "Format Notification Message", pos: "b", h: 48 }
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Send Telegram Alert"]
n3 --> n4
n1 --> n2
n0 --> n1
n2 --> n3
n4 --> n5
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n3 decision
class n1 api
class n4 code
classDef customIcon fill:none,stroke:none
class n1,n5 customIcon
The Problem: Manually checking pages is a quiet time sink
Monitoring a webpage that doesn’t offer an API or RSS feed is oddly exhausting. You can’t “just subscribe,” so you refresh and scroll like it’s your job. And the worst part is the timing: the update you needed might appear for 30 minutes and disappear, or a product goes in stock and sells out before you notice. Even when you do catch a change, you’re copying links, reformatting details, and sending messages that always look a bit different from the last one. It’s repetitive, and it steals attention from work that actually matters.
The friction compounds. Here’s where it breaks down.
- Refreshing three or four target pages a few times a day quietly turns into about 2 hours a week.
- Important updates are easy to miss because changes happen between your checks.
- When you do spot something, you still need to copy the job title, link, price, or stock status into a message.
- Without a consistent alert format, it’s harder to act quickly or forward the update to a team.
The Solution: Scheduled web monitoring that messages you on Telegram
This workflow acts like a personal web watcher for pages that don’t have feeds. It starts on a schedule (hourly by default), loads the webpage, and then extracts only the exact data points you care about from the HTML. That might be job titles and links from a niche forum, a product name plus “In stock” text on a small e-commerce site, or a specific phrase that appears when something is announced. Once those details are pulled out, the workflow checks if anything relevant is present (or has changed) and formats a clean alert message. Finally, it sends that alert straight to Telegram so you can react immediately instead of running periodic “refresh patrol.”
The workflow starts with an hourly Cron trigger. Then an HTTP request grabs the page HTML and an HTML extractor pulls structured fields using CSS selectors or XPath. If the result matches what you’re looking for, a Function node writes a readable summary and Telegram delivers the notice.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you’re watching 4 pages: two career pages and two product pages. Manually, you might spend about 5 minutes per page to load, scan, and double-check details, done 3 times a day. That’s roughly 1 hour a day of low-value checking. With this workflow, you spend about 10 minutes once to set the URL and selectors, then you only read Telegram alerts when something changes. Most days, that’s close to zero time spent.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Telegram to receive alerts in real time.
- Target webpage URL for the page you want to monitor.
- CSS selector or XPath (found via browser dev tools).
Skill level: Intermediate. You’ll be fine in n8n, but you must be comfortable grabbing CSS selectors/XPath from a webpage.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
Scheduled check kicks it off. The Cron node runs hourly (you can change it to daily, every 15 minutes, or business hours only). That single trigger is what replaces your manual refreshing habit.
The workflow loads the webpage like a browser would. n8n’s HTTP Request node fetches the HTML from the URL you specify. If the site is public, this is usually straightforward. If it’s picky (user agent rules, basic bot protection), you may need to adjust headers.
Only the important bits get extracted. The HTML Extract step pulls out the fields you define using CSS selectors or XPath, so you’re not reading a giant blob of markup. This is where you decide what “counts” as a change, like a new job title appearing or the text switching from “Out of stock” to “In stock.”
Telegram gets a human-readable alert. An “if” check confirms there’s something worth alerting on, then a Function node composes the message (title, link, key text). The Telegram node sends it instantly to your chosen chat.
You can easily modify the schedule and the extracted fields to match each website you monitor. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Cron Trigger
Set the schedule that initiates the workflow and starts the page check.
- Add the Hourly Schedule Watch node as your trigger.
- Set Mode to
everyHour. - Connect Hourly Schedule Watch to Retrieve Page HTML.
Step 2: Connect the Webpage Source
Configure the HTTP request to fetch the raw HTML content to monitor.
- Open Retrieve Page HTML and set URL to
https://www.n8n.io/blog/. - Set Response Format to
string. - Connect Retrieve Page HTML to Parse Listing Details.
Step 3: Set Up HTML Parsing and Result Checks
Extract listing details from the HTML and verify that results exist before creating alerts.
- In Parse Listing Details, set HTML to
={{ $node["Retrieve Page HTML"].json.data }}. - Add an extract operation with Selector
h3.BlogItem_title__d78Xb, AttributetextContent, and Property NameJobTitle. - Add a second extract operation with Selector
a.BlogItem_blogItem__a_H6E, Attributehref, and Property NameJobLink. - In Check Results Present, set Value 1 to
={{ $json.length }}, Operation tonotEqual, and Value 2 to0. - Connect Parse Listing Details to Check Results Present, then the true output to Compose Alert Text.
Step 4: Configure Alert Composition and Telegram Delivery
Format the notification text and send it to Telegram when new or updated items are found.
- In Compose Alert Text, keep the provided JavaScript function to generate
notificationMessagefrom parsed items. - Open Dispatch Telegram Notice and set Text to
={{ $json.notificationMessage }}. - Set Chat ID to your Telegram chat or channel ID (replace
[YOUR_ID]). - Set Parse Mode to
Markdown. - Credential Required: Connect your telegramApi credentials in Dispatch Telegram Notice.
Step 5: Test and Activate Your Workflow
Run a manual test to confirm the data extraction and Telegram delivery, then enable the automation.
- Click Execute Workflow to run the trigger and follow the flow from Hourly Schedule Watch to Dispatch Telegram Notice.
- Verify that Parse Listing Details outputs items with
JobTitleandJobLink. - Confirm that Dispatch Telegram Notice sends a formatted message to Telegram.
- Toggle the workflow to Active to start hourly monitoring in production.
Common Gotchas
- Telegram credentials can expire or need specific permissions. If things break, check the n8n Credentials tab and your Telegram bot/chat permissions first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- HTML extraction is brittle when websites redesign. If alerts suddenly stop, re-check your CSS selectors/XPath in the browser inspector and update the HTML Extract settings.
Frequently Asked Questions
About 20–40 minutes for most people, mainly because you’ll be finding CSS selectors or XPath.
No. You’ll configure nodes and paste selectors, but you won’t be writing an app.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in optional AI costs if you add OpenAI summarization (usually pennies per alert).
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, but you’ll want to loop through a list of URLs instead of hardcoding one. A common approach is keeping URLs and selectors in Google Sheets, then using n8n to read each row, fetch the page, and run the same HTML Extract logic. You can also duplicate the “Retrieve Page HTML” and “Parse Listing Details” path for a second site if you only have a couple pages to monitor.
Usually it’s an invalid or rotated bot token, so regenerate it and update the Telegram credentials in n8n. Also confirm the bot is allowed to message the chat you selected (group chats often need an extra step). If it works sometimes and fails under load, you might be hitting Telegram rate limits, which is rare but possible when you monitor many pages at once.
Dozens, realistically, as long as you’re polite with scheduling and your server has enough headroom.
Often, yes, because scraping and conditional logic get expensive and awkward in simpler tools. n8n makes it easier to control the HTTP request, parse HTML, and branch based on what you find without paying per tiny step. The tradeoff is setup: you’ll spend more time upfront getting selectors right. If you only need a basic “ping this URL” check, Zapier or Make can be quicker. If you want, Talk to an automation expert and we’ll tell you which route is honestly simpler for your exact site.
Once this is running, your browser tabs stop being a to-do list. You get the update, act on it, and move on.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.