Skip to content

The moment it happens

File new leads into a Brevo list

Each lead your CRM sends is checked, created or updated in Brevo and added to the right list.

Runs
The moment it happens
Apps
Brevo
AI
Not needed
Access
read+write

Send this to your assistant

Create a ClickRuntime automation: give me a link my CRM can post new leads to. Check each email, create or update the contact in Brevo, add them to my 'Prospects' list, and email me a daily count.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

A marketing team collects leads from many places at once: a landing page form, a webinar signup, a partner export, a chat widget. Each source ends up in a different spreadsheet or inbox, and someone has to retype the addresses into Brevo and pick the right list. Leads wait for days, some are mistyped, and the welcome email that should have gone out within minutes never does.

As soon as a lead arrives at the webhook, ClickRuntime checks that the email address is valid, creates the contact in Brevo or updates it if it already exists, and adds it to the list IDs you specify. When the batch is processed, you receive an email with a count of how many were added.

It works for agencies, event teams and small businesses that gather leads from several tools.

What you get out of it

  • Leads receive a welcome while interest is high

    A contact created within moments can enter an automated welcome sequence the same hour. Interest fades fast, so that early touch is when replies and sign-ups are most likely. Fast welcome emails make a visible difference to reply rates.

  • Typos and junk are filtered first

    Checking that the email is valid before creating the contact keeps obviously broken addresses out of Brevo. Your bounce rate and sender reputation stay in better shape. Lists built from clean data also cost less to send to, since many plans price by contact count.

  • The right list gets every contact

    Because the list IDs are set in the workflow, leads from a webinar and leads from a partner never get mixed up. Each campaign reaches the audience it was meant for.

  • No retyping or spreadsheet shuffling

    Nobody copies addresses between files and forgets half of them. Hours of weekly data entry disappear, and so does the risk of copying the wrong column. The weekly cleanup of messy sheets stops being a chore.

  • Existing contacts are updated, not duplicated

    Creating or updating avoids a second record for someone who signs up twice. Brevo stays tidy, and your subscriber count reflects real people. Segments and automations then work from reliable data, avoiding the confusion of two records for one person.

How it works

What happens, step by step

  1. When your CRM sends a new lead to your ClickRuntime link, the automation runs straight away.

  2. It checks the email address looks valid and skips the lead if it doesn't.

  3. It creates the contact in Brevo, or updates them if they already exist, with their name, and adds them to your Prospects list.

  4. At the end of the day you get an email with how many contacts were added or updated.

Before it runs live

  • Connect Brevo
  • Paste your automation's link into the other app's webhook settings

What you get

RunsThe moment it happens
File new leads into a Brevo listjust nowSucceeded
Email · Leads added to Brevo today38 contacts were added or updated in Prospects.

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • 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 Brevo steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
add_incoming_leads_to_brevo_contacts_and_lists.pyexample
import re
from datetime import date
from clickruntime import on_event, on_trigger, credentials, http, state, notify, log

PROSPECTS_LIST_ID = 7

@on_event
def handle(event):
    lead = event.json
    email = (lead.get("email") or "").strip().lower()
    if not re.fullmatch(r"[^@\s]+@[^@\s]+\.[^@\s]+", email):
        log.warning("skipped invalid email", {"email": email})
        return {"added": False}
    http.post("https://api.brevo.com/v3/contacts", headers={"api-key": credentials.secret("BREVO_API_KEY")},
              json={"email": email, "attributes": {"FIRSTNAME": lead.get("first_name"), "LASTNAME": lead.get("last_name")},
                    "listIds": [PROSPECTS_LIST_ID], "updateEnabled": True}).raise_for_status()
    state.increment_metric("leads_added", ttl_days=30)
    return {"added": email}

@on_trigger
def daily_count(event):
    today = state.query_metric("leads_added", bucket="day", from_time=f"{date.today()}T00:00:00Z")
    total = sum(p["value"] for p in today) if today else 0
    notify.email_me("Leads added to Brevo today", f"{total} contacts were added or updated in Prospects.")
    return {"total": total}

FAQ

Common questions

What happens if a contact already exists in Brevo?
The workflow uses create or update behavior, so the existing contact is updated with the new details and added to the list rather than duplicated. Existing information you do not send is generally left as it is.
Does it check that people consented to marketing email?
The workflow validates address format, but consent is a matter of how your form collects it. Only send leads from sources where people agreed to hear from you, and keep the opt-in evidence from your form.
Can leads from different sources go to different lists?
Yes. If the incoming data says where the lead came from, a rule can choose the list ID accordingly, for example webinar leads to one list and demo requests to another. Describe the mapping in chat and look it over.
What permissions does it need?
read+write. Nothing else in your accounts is used.
Does it need AI?
No. It runs without AI, so it doesn't use your plan's AI allowance.
How many runs does it use?
One run for each event the app sends.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “File new leads into a Brevo list” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.