Klaviyo List Hygiene Agent with OpenCode

Every bounce takes the same walk: profile history, hard or soft, suppress or count, write the reason property, check the account rate, decide about Slack. OpenCode is a light thing to aim at one narrow job, and this one is narrow to the point of being repetitive, which is the argument for choosing the model rather than accepting a fixed rate for it.

Loading preview…
Free to start · guided setup

Watch it work before it's live

Run a staged conversation — no account needed. The agent handles it for real while a simulated world answers its tool calls; nothing touches real accounts, and nothing is actually sent.

Bounce: August Restock Announcement

priya.ramaswamy@northgate-optics.co.ukNewsletter Master List

Hard bounce. 550 5.1.10 RESOLVER.ADR.RecipientNotFound, recipient not found by SMTP address lookup. First failure ever recorded for this address, which opened 23 of the last 30 sends and clicked a product link eight days ago. Account bounce rate today is 0.2 percent.

Set up in minutes

Using this template drops you into a guided setup. It asks exactly this, nothing else:

  1. Connect Klaviyo

    One sign-in. The agent acts through your account, scoped to what this template uses.

  2. Connect Slack

    One sign-in. The agent acts through your account, scoped to what this template uses.

  3. Hygiene rules

    Which bounces earn a suppression and which only get counted, how many soft failures in what window make a streak, the profile property that stores the reason, the bounce rate you treat as a spike, and the domains worth waking someone for.

  4. Runs on OpenCode

    Preselected for this page — connect your OpenCode account during setup, or switch to NoClick's built-in models with one click.

  5. Watch it handle a test run

    A staged conversation against a simulated world — then it’s live.

Why OpenCode for this agent

The same six steps, always

There is no branching worth the name beyond hard versus soft. Repetition at that level is where model size stops being a preference and becomes a budget lever.

One write, one property

The heaviest run suppresses a profile and sets a property holding the type, the response and the date. Small bounded writes on a repeating loop are undemanding work.

Before you fork

How do we stop it messaging us about every dead address?

The rate threshold does that, not the bounce. A single hard bounce inside a healthy account rate is ordinary traffic and stays silent by design, and Slack only hears about a rate past the level you named or a domain you called important. If the channel is noisy in week one, your spike threshold has been set below your normal bounce rate.

Run it with a different agent

Put Klaviyo List Hygiene Agent to work on OpenCode

Free to start. Guided setup, a test run against staged conversations, and it's live.