The moment it happens
Add form sign-ups to a Klaviyo list
People who submit your own form are created as profiles and subscribed to your list.
- Runs
- The moment it happens
- Apps
- Klaviyo
- AI
- Not needed
- Access
- write (profiles, lists, subscriptions)
Send this to your assistant
Create a ClickRuntime automation: give me a link my signup form can post to. When it sends an email and name, add the profile to my Klaviyo 'Newsletter' list.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Forms and tools outside Klaviyo, a Typeform quiz, a checkout page built elsewhere, a Webflow site with a custom signup form, collect email addresses that need to end up on a Klaviyo list. Without a connection, someone downloads a CSV every week and uploads it, so new signups wait days for a welcome email and some never make it to the list at all.
When the form tool sends its webhook, ClickRuntime creates or updates the matching profile in Klaviyo and subscribes it to the list you choose. The welcome flow in Klaviyo can start straight away, because the person is on the list within moments of signing up.
It is a good fit for sites that use more than one form builder and want a single path into Klaviyo.
What you get out of it
Welcome emails go out while interest is high
The first message after a signup gets the best open rate of any email you will send that person. Subscribing immediately means that welcome arrives within minutes rather than after a CSV upload.
Nobody loses signups to a forgotten upload
Manual imports fail when the person responsible is on vacation or busy. A webhook that runs on every submission means each address reaches the list, with no gaps in the data.
Existing profiles are updated, not duplicated
If a person is already in Klaviyo, the profile is updated and subscribed rather than created twice. That keeps your reports honest and stops a customer from receiving duplicate messages.
Any form tool can feed the same list
Whether the signup comes from a quiz, a popup built elsewhere or a partner landing page, they all use one path. You do not need a separate integration for each form builder.
List growth is measured accurately
Because each address is added the moment the form is submitted, the growth chart in Klaviyo reflects real signup timing. That makes campaign attribution and weekly comparisons believable. Reports then show the real shape of growth, day by day.
How it works
What happens, step by step
When someone submits your own sign-up form, the form sends their email and name to ClickRuntime straight away.
The automation creates their profile in Klaviyo, or updates it if they are already there.
It subscribes them to your newsletter list with email marketing consent, so they receive your next campaign.
Before it runs live
- Connect Klaviyo
- Paste your automation's link into the other app's webhook settings
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 clickruntime import on_event, credentials, http
API = "https://a.klaviyo.com/api"
NEWSLETTER_LIST_ID = "Xy12Ab"
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_event
def handle(event):
body = event.json
h = klaviyo()
http.post(f"{API}/profile-import", headers=h, json={"data": {"type": "profile", "attributes": {
"email": body["email"], "first_name": body.get("name")}}}).raise_for_status()
job = {"data": {"type": "profile-subscription-bulk-create-job", "attributes": {"profiles": {"data": [
{"type": "profile", "attributes": {"email": body["email"],
"subscriptions": {"email": {"marketing": {"consent": "SUBSCRIBED"}}}}}]}},
"relationships": {"list": {"data": {"type": "list", "id": NEWSLETTER_LIST_ID}}}}}
http.post(f"{API}/profile-subscription-bulk-create-jobs", json=job, headers=h).raise_for_status()
return {"subscribed": True}FAQ
Common questions
Does this respect consent and double opt-in?
What data can I save besides the email address?
Which form tools work with it?
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
Send your app's events into Klaviyo
Actions in your own product become Klaviyo events you can use in flows and segments.
See how it worksPost yesterday's Klaviyo revenue to Slack
Each morning Slack shows the revenue Klaviyo attributed to campaigns and flows yesterday, compared with the day before.
See how it worksGet a weekly Klaviyo campaign report
Every Monday you see open rate, click rate and revenue for each campaign sent last week.
See how it worksKeep exploring
Set up “Add form sign-ups to a Klaviyo list” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.
