Hourly
Tell the team when a campaign goes out
Within the hour, Slack shows the name and audience of every campaign Klaviyo sent.
- Runs
- Hourly
- Apps
- Klaviyo
- AI
- Not needed
- Access
- read (campaigns)
Send this to your assistant
Create a ClickRuntime automation: every hour, check for Klaviyo campaigns sent since the last check and post each name and audience to #marketing in Slack.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
In a company where marketing, support and sales all talk to the same customers, the worst way to learn about an email campaign is from an angry reply. Support gets tickets about a discount that the team did not know existed, sales hears prospects mention an announcement, and nobody can tell whether the campaign that was meant to go Tuesday went out Monday night.
Every hour, ClickRuntime asks Klaviyo for campaigns whose status is Sent since the previous check and posts each one to Slack, with its name and the time it went out. The team gets a simple broadcast that a send has happened, without anyone from marketing having to remember to announce it.
It is particularly useful when several people can schedule campaigns in one Klaviyo account. The notice takes only seconds to read.
What you get out of it
Support is ready for the questions
Once a campaign has gone out, replies and tickets follow within hours. A notice in Slack lets support read the email and prepare answers before the first customer asks. That context saves a lot of back-and-forth later.
Accidental sends are noticed quickly
If a campaign goes to the wrong segment or earlier than planned, someone seeing the notice at the unexpected time can react. A quick correction beats finding out through complaints.
Sales can follow up while it is fresh
A rep who knows a promotion has gone out can mention it on calls or reach out to engaged prospects the same afternoon. That timing is lost if they only hear about it later.
A running log of sends builds up
The channel becomes a timeline of every campaign with its send time. When someone asks what went out the week revenue dipped, you can scroll and answer. It also shows the pace of your sending over a quarter.
Marketing stops writing announcements
Posting a heads-up for each send is a small chore that is easy to forget. Handing it off means the communication happens every time, whoever pressed send. The announcement then happens every time, however busy the day is.
How it works
What happens, step by step
Every hour ClickRuntime checks Klaviyo for email campaigns sent since its last check, so each one is announced only once.
For each campaign it looks up the names of the lists and segments it went to.
A message goes to your #marketing Slack channel with the campaign name and its audience.
Before it runs live
- Connect Klaviyo
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Act only on the items that match your own rules, and skip the rest
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Slack
- Combine it with other Klaviyo steps into one automation
Under the hood
The code that runs this automation
from datetime import datetime, timezone
from clickruntime import on_trigger, credentials, http, state, notify, report_fetched
API = "https://a.klaviyo.com/api"
def klaviyo():
return {"Authorization": f"Klaviyo-API-Key {credentials.secret('KLAVIYO_API_KEY')}",
"revision": "2024-10-15", "accept": "application/vnd.api+json", "content-type": "application/vnd.api+json"}
@on_trigger
def run(event):
h = klaviyo()
since = state.get("since") or datetime.now(timezone.utc).isoformat()
data = http.get(f"{API}/campaigns", headers=h, params={
"filter": f"equals(messages.channel,'email'),equals(status,'Sent'),greater-than(send_time,{since})"}).json()["data"]
report_fetched(len(data))
if not data:
return {"summary": "Nothing new"}
lists = {l["id"]: l["attributes"]["name"] for l in http.get(f"{API}/lists", headers=h).json()["data"]}
for c in data:
a = c["attributes"]
audience = ", ".join(lists.get(i, i) for i in a["audiences"]["included"])
notify.slack(f"Campaign sent: {a['name']} → {audience}", channel="#marketing")
state.set("since", max(c["attributes"]["send_time"] for c in data))
return {"posted": len(data)}FAQ
Common questions
What counts as a sent campaign?
Will I get a notice for SMS campaigns as well?
Why hourly instead of immediately?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Post new VIP list members to Slack
Within 15 minutes of joining your VIP list, each person appears in Slack with name and email.
See how it worksHear who enters a key segment
New members of a segment such as 'At risk' are posted to Slack so someone can follow up.
See how it worksPost big orders to Slack
Orders above your threshold show up in Slack with the customer and amount.
See how it worksKeep exploring
Set up “Tell the team when a campaign goes out” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.
