Scan Zendesk tickets for phishing links every 15 minutes

Every 15 minutes we check new support tickets for unsafe links, flag the risky ones on the ticket, and alert your security channel in Slack.

Agentic Task
IPQualityScoreZendeskSlack BotCustomer SupportOperationsNotifications & AlertsFeedback Triage
PromptCreate

Every 15 minutes, on a cron trigger, check our Zendesk support queue for suspicious links so that agents never click a phishing page a customer forwarded in.

Start with the Zendesk List Tickets operation to pick up tickets created since the last run, and keep track of the timestamp you stop at so the next run resumes from there without reprocessing the same tickets. For each new ticket, use Show Ticket to read the ticket details and List Ticket Comments to read the full message bodies, including the original request and any replies that came after it.

Extract every URL and bare domain you find in those message bodies. Before scanning anything, drop the links that are on an allowlist: our own domains, our help center, and well known safe senders such as major cloud, payment, and calendar providers. The goal is that agents are only warned about genuinely unusual links and never about ordinary business links. Deduplicate the remaining links across the whole batch so the same URL is only scanned once, since each scan consumes IPQualityScore credits.

Scan each remaining link with the IPQualityScore Malicious URL Scanner, which checks for phishing, malware, and suspicious domain reputation. The target URL must be URL-encoded before it is placed in the path segment, otherwise the scan will not resolve correctly. IPQualityScore returns errors as HTTP 200 with success set to false, so always branch on the success field rather than the HTTP status code. If a scan fails or the account is out of credits, treat that link as unknown and report it as unknown. A failed scan must never be read as a clean verdict.

Treat a link as unsafe when the scanner reports phishing, malware, or suspicious activity, or when the risk score is 75 or above. Scores of 90 or above are high risk and should be called out as such in the note.

When a ticket contains at least one unsafe link, use Zendesk Update Ticket to add an internal note that names the exact unsafe URL, its risk score, and what the scanner flagged, whether that was phishing, malware, or poor domain reputation. Keep the note short and factual and tell the agent not to click the link. In the same update, add a suspicious-link tag and raise the priority. Preserve the ticket's existing tags rather than overwriting the whole tag array, and only ever raise the priority, never lower it.

Then post a message to our security channel in Slack with a direct link to the ticket, the ticket subject, the unsafe URL, and its risk score, so the security team can follow up. Send one message per affected ticket rather than one per link.

Stay silent when every link in the batch is clean. Do not post to Slack, do not add internal notes, and do not tag or reprioritize tickets when there is nothing to report.

Additional information

What does this prompt do?
  • Checks your support queue every 15 minutes and reads the full message body of each new ticket, including replies
  • Pulls out every link and domain a customer sent in, then checks each one for phishing, malware, and a bad reputation
  • Leaves a private note on risky tickets naming the exact unsafe link and its risk score, adds a suspicious-link tag, and raises the priority
  • Posts an alert to your security channel with a link straight to the ticket and a summary of what was found
  • Ignores links to your own websites and to well known trusted companies, and says nothing at all when everything is clean
What do I need to use this?
  • A Zendesk account with agent or admin access to your support queue
  • An IPQualityScore account for checking links
  • A Slack workspace and the channel where your security alerts should land
  • A short list of your own domains and any trusted senders you never want flagged
How can I customize it?
  • Change how often it runs, from every few minutes for a busy queue to once an hour for a quieter one
  • Adjust how cautious it is, so only clearly dangerous links get flagged or borderline ones do too
  • Edit the safe list of your own websites and trusted partners so ordinary links never trigger a warning
  • Pick which Slack channel gets the alert and how high the ticket priority should be raised

FAQs

Will my agents get warned about every link a customer sends?
No. Links to your own websites and to well known trusted companies are skipped entirely, and the workflow stays completely silent when every link in a batch is safe. Agents only hear about links that actually look dangerous.
What counts as a suspicious link?
A link is flagged when the scan reports phishing, malware, or suspicious activity, or when the risk score is high. The score runs from 0 to 100, and anything at 75 or above is treated as suspicious while 90 and above is called out as high risk.
Does the customer see any of this?
No. The warning is added as a private internal note that only your team can see, and the alert goes to your own Slack channel. Nothing is sent back to the person who opened the ticket.
Do I need a paid IPQualityScore plan?
You can start with a free IPQualityScore account. Each link check uses credits from your plan, so a high volume support queue may need a larger plan. Repeated links in the same batch are only checked once to keep usage down.
What happens if a link check fails or times out?
A failed check is never treated as a clean result. The workflow reports it as unknown so nobody assumes a link was verified when it was not.
Will this change tickets that are already tagged or prioritized?
It only adds to what is already there. Existing tags are kept and the suspicious-link tag is added alongside them, and priority is only ever raised, never lowered.

Related templates

Chase past-due JobNimbus invoices with escalating emails

Every weekday, find every unpaid JobNimbus invoice, email each customer one reminder that gets firmer as it ages, and post a receivables summary to Slack.

JobNimbus
Gmail
Slack Bot
Agentic Task
Flag at-risk students in Canvas before they fall behind

Every weekday at 7am, your active courses are checked for missing work, silent logins, and slipping grades, with a ranked list sent to your advising channel.

Canvas
Google Sheets
Slack Bot
Agentic Task
Catch Jira service desk tickets before their SLA runs out

Every hour, find the tickets closest to breaching, leave a nudge on each one, and post a ranked at-risk list to your support channel.

Jira Service Management
Slack Bot
Agentic Task
Send Canvas students a kind nudge about missing work

Every weekday afternoon, each student who is behind gets a warm, personal message in their Canvas inbox listing exactly what they owe.

Canvas
Slack Bot
Agentic Task
Weekly Canvas grading backlog report in Slack and Sheets

Every Monday at 8am, see exactly which assignments have work waiting, sorted worst first, posted to Slack and logged to a spreadsheet.

Canvas
Slack Bot
Google Sheets
Deterministic Code
Revoke Bitwarden access when someone leaves in BambooHR

Every weekday morning we compare your password vault against your HR records and suspend access for anyone who has already left.

Bitwarden
BambooHR
Slack Bot
Agentic Task

Stop hoping your agents spot the phishing link.

Put an automatic link check in front of every ticket that lands in your support queue, so a forwarded phishing page gets flagged before anyone clicks it.