Daily IP reputation screening with Slack threat alerts
Every morning we check your list of IP addresses for abusive activity, update your spreadsheet, and alert your team only about the risky ones.
Every morning at 7am, run on a cron schedule to screen my IP watchlist against AbuseIPDB and only bother me about the risky ones.
First, read the column of IP addresses from my Google Sheet using Google Sheets' Get Values. These are the IPs hitting our login and API endpoints, or an allowlist we want to keep clean. Assume the IPs sit in a single column (for example column A, with a header row) and read the current values each run so we always work from the latest list.
For each IP, check its abuse reputation with AbuseIPDB's Check IP Reputation. AbuseIPDB enforces a daily per-endpoint quota, so cap how many rows are checked per run (default to the first 200 IPs) to avoid exhausting the quota. The abuseConfidenceScore is an integer from 0 to 100, where higher means more likely malicious.
Write the abuse confidence score, the last-reported date, and the top abuse category back next to each IP using Google Sheets' Update Values, so the sheet stays current. AbuseIPDB returns abuse categories as integer IDs, so translate them to words before writing (for example 18 = Brute-Force, 22 = SSH, 14 = Port Scan, 4 = DDoS, 10 = Email Spam). Use the most-reported category as the top abuse category.
For any IP whose confidence score crosses the threshold I set (default 75), post a Slack alert with Send a Message that names the IP, its score, and what it has been reported for, so my team can decide whether to block it. Only alert on IPs at or above the threshold to avoid noise; the clean IPs should still be updated in the sheet but should not trigger a message.
If several IPs cross the threshold in the same run, group them into a single Slack alert so the channel is not flooded, listing each risky IP with its score and top abuse category.
Additional information
What does this prompt do?
- Reads a column of IP addresses from your Google Sheet each morning, such as the IPs hitting your login and API endpoints or an allowlist you want to keep clean.
- Checks each address against a global abuse database and records its risk score, when it was last reported, and what it was reported for.
- Writes those results back next to each IP so your spreadsheet always reflects the latest reputation.
- Sends a Slack alert only for the high-risk addresses, so your team can decide what to block without wading through noise.
What do I need to use this?
- A Google account with the spreadsheet that holds your IP list.
- An AbuseIPDB account (the free tier works for modest lists).
- A Slack workspace and the channel where you want threat alerts to land.
How can I customize it?
- Change the alert threshold (the default risk score is 75) to make alerts stricter or more sensitive.
- Adjust the run time or how many IPs are checked each morning to stay within your AbuseIPDB plan's daily limit.
- Point it at a different sheet, column, or Slack channel.
Frequently asked questions
What counts as a risky IP address?
Will this change my spreadsheet?
Does it alert me about every IP?
Do I need a paid AbuseIPDB plan?
Can I run it more or less often than daily?
Related templates
Stop manually checking IPs against threat lists.
Let this run every morning so risky addresses surface in Slack before they cause trouble.