A campaign lets you send messages at scale to a contact list via WhatsApp, LinkedIn, or other channels.
Available on: All plans.
Who can do it: Any user with permission to view campaigns.
What you need before you start
-
At least one connected WhatsApp channel
-
A contact list with phone numbers filled in
-
At least one HSM template approved by Meta (for campaigns via the WhatsApp Cloud API)
How to create and launch a campaign
Step 1: Start creating the campaign
-
In the side menu, click Campaigns
-
Click New Campaign
-
Fill in the Campaign name field (maximum 100 characters). E.g., “Enterprise Prospecting Q1”
-
Select the Campaign type – choose WhatsApp for your campaign
-
Click Next
Step 2 – Define the audience
-
For the activation type, select Manual (for your first campaign, start with manual activation)
-
Under audience source, select List
-
Choose the contact list to use as the audience
-
In the side panel, check the audience preview, which shows the number of eligible and ineligible contacts per channel
-
Under Exclusion rules, define who should be left out of the campaign (see the section below)
-
Under Additional settings, decide on the Ignore business hours toggle. It comes off by default, which makes the campaign send only Monday to Friday, from 8 a.m. to 6 p.m. Only turn it on if you want to send at any time, including overnight and on weekends
-
Click Next
Exclusion rules: who shouldn't receive the campaign
Under Exclusion rules, you define who is left out of the campaign, even if they're in the audience. People who match these rules don't receive the campaign.
-
Exclusion lists – click the field, use Search list, and select one or more lists. Anyone in any of them doesn't receive the campaign. The list chosen as the audience can't also be used as an exclusion list
-
Already has an open conversation – anyone who replied within the chosen period, counted from their last reply, doesn't join the campaign, whether they're talking to Autopilot (AI) or to an agent. You choose the period in minutes, hours, or days: at least 15 minutes and at most 30 days
Check the campaign's reach
In the side panel, the Campaign reach card shows, in real time, how many people will receive it:
-
In the list (or in the stage, when the audience comes from a funnel) – total people selected in the audience
-
Eligible – people who passed the campaign's rules and filters
-
Will receive – eligible people the campaign can act on in the channel, either by sending a message or requesting a connection
-
Channel – how many eligible people have a WhatsApp number and/or a LinkedIn profile
-
Excluded from sending – how many people were left out, broken down by reason: Outside filters, Exclusion list: list name, Already has an open conversation, and No WhatsApp number / No LinkedIn profile
When you change a rule, the previous numbers stay on screen, with a loading indicator in the title, until the new ones arrive. Meanwhile, the Next button is locked so you don't move forward with an old number.
If everyone in the audience is excluded, the Nobody will receive it warning appears. Adjust the audience or the rules to be able to activate the campaign.
See who was left out
When at least one person is excluded, the card shows the See who was left out button. It opens the Who was left out of the campaign panel:
-
Use Search by name to find a person (the search ignores accents and capitalization)
-
Filter with the reason buttons, which show the count for each: All, Outside filters (appears when the audience is a funnel or when there are people with this reason), Already has an open conversation, Exclusion list, and No channel
-
In the table, see the Person, the Reason (with details, such as “List: list name” or “Conversation open for 2 hours”), and the Channels they have
-
Use the link next to the name to open the contact, and use pagination to see the other people
Step 3 – Set up the message sequence
-
Click Add step to create the first step of the campaign
-
For each step, set:
-
Template – select an HSM template approved by Meta (for the WhatsApp Cloud API). The dropdown filters the available templates by the selected inbox
-
Default variable text – optional. Appears when the step has a variable (in a template or in text), with one field per variable. It's the text that goes into the message when the contact doesn't have that data; without it, contacts missing the data don't receive the message
-
Interval – set the waiting time between this step and the next (if there's more than one step)
-
Conversation owner – required. Defines who follows the lead. See the details below
-
Assignments – in the Handling field, define who takes over the conversation when the contact replies:
-
AI agent – the conversation is handled by the Smart Funnel (default agent set up in the funnel)
-
HubSpot owner – assigns the conversation to the Nuvia agent mapped to the contact's owner in HubSpot. Only appears with the integration connected; without a contact, owner, or mapping, the conversation has no assignee and sending isn't blocked
-
Unassigned – the conversation has no assignee
-
Agent – select an active platform user to receive the conversation directly
-
-
-
The Keep assignment for existing conversations option (checked by default) keeps whoever is already in the conversation, owner or agent alike; uncheck it to reassign those conversations too. Under Advanced settings, adjust the Service funnel and the Funnel stage; the default funnel and the first stage come preselected
-
Use the preview in the side panel to see how the message will look with a contact's real data. Move between contacts using the Previous and Next arrows
If you want, add more steps by repeating the process
Set the step's conversation owner
The Conversation owner field sits right above the Assignments block and is required: until you choose an owner, the Handling field stays disabled and the button to save the step isn't enabled.
Owner and handling are different things. The owner is who follows that lead; handling is who replies in the conversation. That's why the owner can't be the AI agent; only handling can.
The options appear in two groups:
-
Special assignment – Unassigned (the conversation has no owner) and HubSpot owner (uses the Nuvia agent mapped to the contact's owner in HubSpot; only appears with the integration connected)
-
Users – any active platform user, who becomes the fixed owner of the conversations generated by this step
On the step card, the configured owner appears as the Owner tag; older steps without an owner don't show this tag.
Step 4 – Launch the campaign
-
On the summary screen, review all settings: name, channel, audience, steps, and variable mapping
-
Click Launch campaign
-
Confirm in the confirmation dialog that appears
-
The campaign changes to Active status and sends start being processed, within the sending window
Sending window and business hours
By default, every campaign respects the sending window: Monday to Friday, 8 a.m. to 6 p.m., Brasília time. At 5:59 p.m. the campaign still sends; at 6:00 p.m. it stops. Saturday and Sunday are entirely outside the window.
The window applies to WhatsApp and LinkedIn. The only way out of it is to turn on the Ignore business hours toggle in Step 2.
What happens to what falls outside the window
Nothing is discarded. Whatever was due to go out outside the window is held and released at the next opening:
| Situation | Behavior |
|---|---|
| A scheduled campaign whose time arrived outside the window | It waits and is sent when the window opens. The campaign stays Active while it waits |
| Next steps in the sequence whose interval ran out outside the window | They go out at the next window opening. The cadence is re-anchored at the opening, so the sequence isn't dragged into the middle of the night because of the time of the first message |
| Campaign activated from the screen outside the window (e.g., on Saturday) | Contacts are enrolled right away, but the first send only goes out when the window opens |
| External CRM trigger fired outside the window (e.g., lead created at 11:45 p.m.) | The send is held until the window opens |
| Manual send of a step outside the window | The batch is queued, but the messages only go out when the window opens |
To keep everything from going out at once at 8:00 a.m. and creating a spike, the platform spreads held sends over up to 1 hour after the opening. That's why, on a Monday, the sends held over a weekend appear spread between 8:00 and 9:00 a.m. instead of all in the same minute.
The window is fixed
The 8 a.m.-6 p.m., Monday to Friday range can't be configured per customer. What you control is the on/off through the Ignore business hours toggle. If your operation needs a different range (e.g., 8:30 a.m.-5:30 p.m.), talk to the Nuvia team.
Track the campaign after launch
At the top of the campaign screen, right below the name, there's a strip with Created on and Last updated, with date and time. Both dates are in Brasília time: hover over the strip's info icon to confirm the time zone. Use the last updated date to know whether someone changed the campaign after launch, for example who added a new step.
To check how the campaign was set up, open the Campaign details. When the toggle is on, the Ignore business hours badge appears with the note “Sends made at any time, with no 8 a.m.-6 p.m. restriction”.
If this badge doesn't appear, the campaign is respecting the window.