The moment it happens
Add sign-ups from your site to Mailchimp
People who fill in your own form are added to your audience with a tag, without a Mailchimp embed.
- Runs
- The moment it happens
- Apps
- Mailchimp
- AI
- Not needed
- Access
- read+write
Send this to your assistant
Create a ClickRuntime automation: give me a link my website form can send to. When it sends a name and email, add them to my Mailchimp audience with the tag website-signup.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Most sites collect emails through a custom form, a checkout, a booking tool or a no-code page builder, and none of those writes into Mailchimp by itself. So someone copies addresses over by hand on Fridays, a few get missed or mistyped, and the person who signed up on Monday does not receive the welcome email until the following week, if ever.
This gives your form or tool a web address to call. When it posts a name and email, ClickRuntime adds that person to your Mailchimp audience, updating them if they already exist so no duplicates are created, and attaches the tag you choose, for example the form name or lead source. It runs the instant the data arrives.
Developers and site owners whose form has no native Mailchimp connection will find it most useful.
What you get out of it
Signups reach the list immediately
A new reader is in Mailchimp seconds after submitting the form, so a welcome sequence starts while their interest is high. Waiting days for a manual import loses many of those first impressions.
No more copy and paste errors
A typo in an email address means a lost subscriber and sometimes a bounce. Passing the data straight through removes the retyping step where those mistakes happen. Clean data at the start saves cleanup work later in the list.
Existing contacts are updated, not duplicated
Because people are added with an upsert, a returning visitor does not create a second record. Your audience count stays accurate and nobody receives the same campaign twice. Reports then reflect real people instead of repeated rows.
Tags tell you where people came from
Adding a tag on arrival, such as the page or promotion, lets you segment later. You can send a webinar follow-up only to webinar registrants without cleaning a spreadsheet first.
Works with tools that lack a Mailchimp option
Any form builder, checkout or script that can send a web request can feed your audience. You are not limited to the handful of tools that have a built-in connector.
How it works
What happens, step by step
When someone signs up on your website, ClickRuntime receives their details straight away.
It adds them to your Mailchimp audience, or updates them if they are already there.
It tags them, for example website-signup, so you know where they came from.
Before it runs live
- Connect Mailchimp
- 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 Mailchimp steps into one automation
Under the hood
The code that runs this automation
import hashlib
from clickruntime import on_event, http, credentials
LIST_ID = "AUDIENCE_ID"
def mailchimp(method, path, **kw):
key = credentials.secret("MAILCHIMP_API_KEY")
r = http.request(method, f"https://{key.split('-')[-1]}.api.mailchimp.com/3.0{path}", auth=("clickruntime", key), **kw)
r.raise_for_status()
return r.json() if r.content else None
@on_event
def handle(event):
f = event.json or {}
email = f.get("email", "").strip().lower()
if "@" not in email:
return {"added": False}
first, _, last = f.get("name", "").partition(" ")
h = hashlib.md5(email.encode()).hexdigest()
mailchimp("PUT", f"/lists/{LIST_ID}/members/{h}", json={
"email_address": email, "status_if_new": "subscribed", "merge_fields": {"FNAME": first, "LNAME": last}})
mailchimp("POST", f"/lists/{LIST_ID}/members/{h}/tags", json={"tags": [{"name": "website-signup", "status": "active"}]})
return {"added": True}FAQ
Common questions
What does my form need to send?
Does it respect Mailchimp's consent rules?
What happens if someone who unsubscribed submits the form again?
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 Mailchimp unsubscribes to Slack
When someone unsubscribes, your team sees who it was and which campaign it came from.
See how it worksPost each new Mailchimp subscriber to Slack
Every new subscriber shows up in Slack with their email and details the moment they join.
See how it worksGet a weekly Mailchimp campaign report
Each Monday you see open rate, click rate and unsubscribes for every campaign sent the week before.
See how it worksKeep exploring
Set up “Add sign-ups from your site to Mailchimp” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.