Every 15 minutes
Post new VIP list members to Slack
Within 15 minutes of joining your VIP list, each person appears in Slack with name and email.
- Runs
- Every 15 minutes
- Apps
- Klaviyo
- AI
- Not needed
- Access
- read (lists, profiles)
Send this to your assistant
Create a ClickRuntime automation: every 15 minutes, check my Klaviyo VIP list for new members and post each one's name and email to #vip in Slack.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A VIP list in Klaviyo is meant to feel special: early access, a private discount, a message from the founder. That promise falls apart when the person who joined on a Sunday is not noticed until the next newsletter. Brands with a loyalty club or an invite-only list lose the very sense of exclusivity they wanted to build when new members hear nothing for days.
Every fifteen minutes, ClickRuntime lists the profiles in your VIP list who joined after the time of its previous check, using the joined group date in Klaviyo. Each new member is posted to Slack, and the check time is saved so the next run starts exactly where this one ended.
It helps community and customer teams who want to greet each new member personally. It keeps the program feeling personal even as it grows.
What you get out of it
New members get a prompt welcome
Joining a VIP list is a moment of enthusiasm. A personal hello within the hour tells the person the list is real and gives them a reason to stay engaged.
The team sees who is joining
A name in Slack lets a founder or community manager recognize a repeat buyer, an influencer or a friend of the brand and treat them accordingly, which no automated welcome email can do.
Signup problems show up early
If the VIP form changes and nobody has joined for days during a promotion, the empty channel makes that visible. You can repair the form while the campaign is still running.
List growth becomes tangible
Watching members trickle into a channel gives a sense of progress that a number in a dashboard does not. It motivates a team to keep inviting people. That keeps the program's sense of a close community alive.
Outreach is tied to the actual join time
Because the check uses the date each profile joined the list, the message reflects when someone joined, not when they were last updated. That keeps the alerts accurate and avoids repeated posts.
How it works
What happens, step by step
Every 15 minutes ClickRuntime checks your Klaviyo VIP list for people who joined since its last check, so each person is posted only once.
For each new member it picks out their name and email address.
Each one is posted to your #vip Slack channel.
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"
VIP_LIST_ID = "Vp9Lst"
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):
since = state.get("since") or datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")
profiles = http.get(f"{API}/lists/{VIP_LIST_ID}/profiles", headers=klaviyo(), params={
"filter": f"greater-than(joined_group_at,{since})", "fields[profile]": "email,first_name,last_name,joined_group_at"}
).json()["data"]
report_fetched(len(profiles))
if not profiles:
return {"summary": "Nothing new"}
for p in profiles:
a = p["attributes"]
notify.slack(f"New VIP: {a.get('first_name') or ''} {a.get('last_name') or ''} <{a['email']}>".replace(" ", " "),
channel="#vip")
state.set("since", max(p["attributes"]["joined_group_at"] for p in profiles))
return {"posted": len(profiles)}FAQ
Common questions
Does it announce people who were already on the list?
Can it post to a private channel?
Can the post include purchase history or other profile details?
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
Hear 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 worksTell the team when a campaign goes out
Within the hour, Slack shows the name and audience of every campaign Klaviyo sent.
See how it worksKeep exploring
Set up “Post new VIP list members to Slack” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.
