0Pricing
Web Scraping & Bots · Lesson

Sending Alerts and Notifications

Make deployed bots actionable by pushing alerts through email, Slack, and webhooks when they find something or fail.

Sending Alerts and Notifications is a free Web Scraping & Bots lesson on CoddyKit — lesson 4 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the Web Scraping & Bots learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.

From Data to Action

A deployed bot that quietly stores data is only half useful. The real value comes when it notifies you: a price dropped, a keyword appeared, or the bot itself broke.

This lesson covers wiring bots to notification channels.

Choosing a Channel

Pick the channel that fits urgency:

  • Email for digests and non-urgent reports.
  • Slack/Discord for team-visible real-time alerts.
  • Push/SMS for urgent, must-see events.

Sending Email

Python's smtplib sends email through any SMTP server. Build the message, connect securely, and send.

import smtplib
from email.message import EmailMessage

msg = EmailMessage()
msg['Subject'] = 'Price Alert'
msg['From'] = 'bot@example.com'
msg['To'] = 'me@example.com'
msg.set_content('Widget dropped to $7.99')

with smtplib.SMTP_SSL('smtp.example.com', 465) as s:
    s.login('bot@example.com', 'password')
    s.send_message(msg)

Slack via Webhook

Slack incoming webhooks accept a simple JSON POST. No SDK required, just a URL you keep secret.

import requests

requests.post(
    'https://hooks.slack.com/services/XXX/YYY/ZZZ',
    json={'text': 'Price dropped to $7.99 :tada:'}
)

Rich Messages

Most chat webhooks support structured blocks: titles, links, and fields. A well-formatted alert is faster to act on than a wall of text.

payload = {
  'blocks': [
    {'type': 'section', 'text': {'type': 'mrkdwn', 'text': '*Price Alert*\nWidget: $7.99'}}
  ]
}
requests.post(webhook_url, json=payload)

Generic Webhooks

Webhooks let your bot trigger anything: a Zapier flow, a custom server, or another service. Send a JSON payload and let the receiver decide what to do.

requests.post('https://my-endpoint.example/hook',
              json={'event': 'price_drop', 'price': 7.99})

Alerting Only on Change

Do not notify on every run. Compare against the last known state and alert only when something meaningful changes, to avoid notification fatigue.

if new_price < last_price:
    send_alert('price dropped to ' + str(new_price))
last_price = new_price

Throttling and Deduplication

Suppress repeat alerts for the same event within a window. Track recently-sent keys so a flapping condition does not spam you.

import time

last_sent = {}
def alert_once(key, msg, cooldown=3600):
    now = time.time()
    if now - last_sent.get(key, 0) > cooldown:
        send_alert(msg)
        last_sent[key] = now

Alerting on Bot Failure

Notify yourself when the bot itself breaks, not just on data events. Wrap the run and send an alert from the except block so silent crashes never go unnoticed.

try:
    run_bot()
except Exception as e:
    send_alert('Bot crashed: ' + str(e))
    raise

Keeping Secrets Safe

Webhook URLs, SMTP passwords, and API tokens are credentials. Store them in environment variables or a secrets manager, never hard-coded in the repository.

import os
webhook = os.environ['SLACK_WEBHOOK_URL']

Confirming Delivery

A notification call can silently fail. Check the response status and log it, so a broken webhook does not leave you unaware that alerts stopped arriving.

resp = requests.post(webhook, json=payload)
if not resp.ok:
    log.error('alert delivery failed: %s', resp.status_code)

Quick Check

Test your understanding of notifications.

Recap

You learned to make deployed bots actionable: choose a channel, send email via smtplib, post to Slack and generic webhooks, format rich messages, alert only on change, throttle duplicates, notify on bot failure, and keep credentials in environment variables.

Frequently asked questions

Is the “Sending Alerts and Notifications” lesson free?

Yes — the full text of “Sending Alerts and Notifications” is free to read here on the web, and the Web Scraping & Bots course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the Web Scraping & Bots course, upgrade to CoddyKit PRO.

What will I learn in “Sending Alerts and Notifications”?

Make deployed bots actionable by pushing alerts through email, Slack, and webhooks when they find something or fail. You practise Web Scraping & Bots with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.

Do I need any experience to start Web Scraping & Bots?

No prior experience is required. Web Scraping & Bots on CoddyKit is structured for beginners through advanced learners; this is — lesson 4 of 4, so you can start here or from the beginning and move at your own pace.

How long does the “Sending Alerts and Notifications” lesson take?

Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.

Can I write and run code in this Web Scraping & Bots lesson?

Yes. Every Web Scraping & Bots lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.

All lessons in this course

  1. Building a Price Tracker Bot
  2. Creating a Social Media Monitor
  3. Deploying Bots to Cloud Platforms
  4. Sending Alerts and Notifications
← Back to Web Scraping & Bots