Pause Klaviyo emails to customers with open Zendesk complaints

By General Input

Every hour, spot real complaints and cancellation requests in Zendesk, then quietly pause those customers in Klaviyo until their issue is solved.

Integrations

  • Zendesk
  • Klaviyo
  • Slack

Type

Agentic Task

Categories

  • Customer Support
  • Marketing

Every hour on a cron, I want an agent to protect Zendesk-active customers from tone-deaf Klaviyo marketing sends. This is CS-driven marketing hygiene, and the judgement call about what counts as a real complaint vs. a neutral question is the reason this needs to be an agent and not straight code.

Trigger: cron, every hour.

Step 1 — Find newly upset customers in Zendesk. Use Zendesk Search Tickets to pull tickets that were opened or updated in the last 24 hours. Filter down to ones that look like real complaints or escalations: high or urgent priority, or wording that signals a refund request, a cancellation, a broken product, angry sentiment, or 'cannot use' / 'doesn't work'. Skip neutral how-to questions and calm feature questions — a happy customer asking how to export a report should not be pulled off marketing. Collect the requester email for each qualifying ticket, and remember the ticket URL and a one-line reason (the priority, or the phrase that flagged it) so we can show it in the Slack recap.

Step 2 — Suppress those customers in Klaviyo. For each qualifying requester email, look them up with Klaviyo Get Profiles. If the profile exists and is currently marketable (on any marketing list, not already suppressed), do two things: call Klaviyo Add Profiles to List to put them on a dedicated list called 'Support-Active Suppression' (create the list the first time the workflow runs if it doesn't already exist), and call Klaviyo Suppress Profiles (Bulk) so no campaigns or flows go out while their issue is open. If the profile doesn't exist in Klaviyo at all, skip it silently — there's nothing to suppress.

Step 3 — Reinstate customers whose issues are resolved. In the same run, pull the current members of the 'Support-Active Suppression' list from Klaviyo. For each of those profiles, re-check their Zendesk tickets. If every one of that customer's tickets has been solved or closed for 48 hours or more (i.e. no open, pending, or on-hold tickets, and the most recent solved/closed timestamp is at least 48 hours ago), call Klaviyo Unsuppress Profiles (Bulk) and Klaviyo Remove Profiles from List so they start receiving marketing again. If the customer still has any active ticket, or was resolved less than 48 hours ago, leave them on the list.

Step 4 — Post a Slack summary to #cs-ops. Use Slack Send a Message to post a single recap message. Include three sections: 'Paused this run' (customer email, ticket link, one-line reason), 'Reinstated this run' (customer email, most recent resolved ticket), and 'Flagged for human review' (edge cases like: profile has multiple emails and it's unclear which to suppress, ticket wording is borderline, customer is on multiple suppression-eligible lists, or Zendesk returned an error for a specific requester). If there is nothing in a section, say 'None'. Keep the message tight — this is an ops channel, not a report.

Constraints: never suppress a profile that is not currently marketable (already suppressed, already unsubscribed, or not on any list) — that would be a no-op that clutters the recap. Never unsuppress a profile the workflow did not originally add to the 'Support-Active Suppression' list; use the list as the source of truth for who this workflow is managing. Batch the Klaviyo bulk calls where possible to stay under rate limits.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentWin back LiveChat visitors whose chats went unansweredChat quality review board for LiveChat support leadsPause marketing emails to escalated customers, then restore themWin back no-show and cancelled appointments every morningLive Loop returns analytics with product-level drill-downNewsletter pre-flight and approval board for Mailjet sendsTurn a prospect spreadsheet into personalized sequence enrollmentsLook up any customer's email delivery history in one placeMailjet email delivery lookup console for support teams