Quick answer
In Campaigns → New Campaign, pick the Schedule Type (One-time, Recurring or API Trigger), a channel (Email, with up to 3 webhooks, or WhatsApp), the segments and the Lead Re-entry Window. Test with a real contact, activate and track processed, delivered, opens, clicks, opt-outs and errors.
Send the right message to the right people at the right time: just once, every Monday at 9 a.m., or the second someone abandons their cart. A campaign brings together the when (schedule), the how (email, WhatsApp or webhooks) and the who (segments).
What you need
- A BIP account (the free plan works)
- A saved segment, for One-time and Recurring campaigns
- A ready email template, or an approved WhatsApp template and a connected number (paid plans)
- For API Trigger: an API key with the campaigns:trigger scope
What you'll get
- A single send right now or at a set date and time, in the time zone you choose.
- Recurring sends every day, on a day of the month or on specific weekdays, with the segment recalculated on every run.
- API triggers for one contact at a time, immediately or with a delay, with cancellation before the send.
- Webhooks to your CRM or system for every contact in the campaign, alongside the email or instead of it.
- Live stats: deliveries, opens, clicks, opt-outs, errors, top clicked links and each recipient's history.
How it works
- 1Choose the schedule type: One-time, Recurring or API Trigger
- 2Set the channel and the message: email, WhatsApp or webhooks
- 3Activate and track the stats
On every send, BIP:
- recalculates the segments with the data at that moment;
- sends once per contact, even if they're in more than one of the campaign's segments;
- skips anyone who unsubscribed from the channel or from all communications;
- applies the Lead Re-entry Window, which decides whether someone who already got the campaign can get it again;
- on BIP Lite, including the free plan, checks the month's send balance before starting. If the balance doesn't cover every contact, the send doesn't start: nobody gets part of the campaign.
Each campaign uses one channel: Email or WhatsApp. To reach the same audience on both, create one campaign per channel.
Step by step
1. Create the campaign
- In the menu, click Campaigns. The list shows each campaign with its Type, Performance, Status and Updated date, organized by group.
- Click New Campaign. BIP creates a campaign in Draft, named [untitled] followed by the date and time, and opens the edit screen.

Screenshot coming soon
2. Fill in the details
In Campaign Details:
- Type the Campaign Name and, next to it, pick an emoji to spot it in the list.
- In Group, choose where it goes in the list. Groups are created in Settings → Groups → Campaigns Groups.
- In Description, write down the goal so your team knows what it's about.

Screenshot coming soon
3. Choose when to send
In Schedule Type, pick a tab:
- One-time: leave Start Date blank to send as soon as you activate, or pick the date, the Time and the Timezone.
- Recurring: choose the Frequency (Daily, Monthly or Custom), the Time and the Timezone. Below, BIP spells out the schedule, like Every day at 09:00.
- API Trigger: choose the Trigger Mode, Immediate or Delay. Your system calls BIP for each contact.
All the options are in the Reference section below.

Screenshot coming soon
4. Set re-entry
In Lead Re-entry Window, decide whether the same person can get this campaign more than once:
- With Allow Lead Re-entry off (the default), each contact gets the campaign only once.
- With it on, enter the Cooldown Period (Days): the minimum number of days between two sends to the same person. With
0, there's no limit.
For recurring campaigns that should reach people on every run, like a weekly newsletter, turn re-entry on.

Screenshot coming soon
5. Choose the channel and the message
In Channel, click Email or WhatsApp.
With Email:
- In From Name, type the name that shows in the inbox. Leave it empty to use the account's name.
- In From Email, keep Account Default or, if you have a verified domain, pick the domain and type the part before the @.
- In Email Template, turn on the campaign's template. Search finds templates by name.
- In Webhooks, turn on up to 3 webhooks to receive each contact's data in your system.
An email campaign can send webhooks only: leave Email Template unselected and turn on at least one webhook.
With WhatsApp (paid plans, with a connected number), fill in the WhatsApp Template section: the approved Template, the sending Phone Number, the header media if the template has any, and the Variable mappings.

Screenshot coming soon
6. Select the segments
In Segments, turn on one or more segments. Search finds segments by name. Anyone in more than one segment gets the campaign only once.
API Trigger campaigns don't have this section: the contact comes in with the API call.

Screenshot coming soon
7. Test with a real contact
- Click Save → Save Draft. The test uses the saved version.
- Click Test Campaign.
- Type the email, phone, ID or tracker of a contact who's already in BIP, ideally yourself.
- Click Send Test.
The test sends for real: the email, the WhatsApp message and the webhooks go out to that contact exactly as they will to everyone. BIP opens Campaign Stats, where the test shows up with the [test] prefix. Tests don't use sends from your balance.

Screenshot coming soon
8. Activate
- Click Save and pick the option for your schedule type:
- Save and Send (One-time with no date);
- Save and Schedule (One-time with a date);
- Save and Activate (Recurring and API Trigger).
- Review the confirmation window and click Send Campaign Now, Schedule Campaign, Activate Recurring Campaign or Activate API Trigger. To go back and review, click Review Again.
- BIP opens Campaign Stats.

Screenshot coming soon
Reference
Schedule types
| Type | Options | When it goes out |
|---|---|---|
| One-time | Start Date (blank = immediately), Time and Timezone | Once, on activation or on the set date |
| Recurring | Frequency, days, Time and Timezone | On every date in the schedule, until you pause it |
| API Trigger | Trigger Mode: Immediate or Delay, with Delay (Seconds) | One contact at a time, when your system calls the API |
In the campaign list, the Type column shows One-time, Scheduled (One-time with a date), Recurring or API Trigger.
One-time
| Option | What it does |
|---|---|
| Start Date | The send date. Leave it blank and the campaign goes out as soon as you activate it. The date must be in the future |
| Time | Hour and minute, in 5-minute steps. Appears after you pick the date and starts at 09:00 |
| Timezone | The time zone of the chosen time. Defaults to the account's time zone; for Brasília, BRT (Sao Paulo) (-03:00) |
Recurring
| Option | What it does |
|---|---|
| Frequency → Daily | Every day, at the chosen time |
| Frequency → Monthly | Once a month, on the chosen Day of Month (1st to 31st) |
| Frequency → Custom | On the Days of Week you check. Hover over each letter to see the day's name |
| Time | Hour and minute, in 5-minute steps |
| Timezone | The schedule's time zone. Defaults to the account's time zone |
The schedule is spelled out below the options: Every day at 09:00, Weekends at 10:00, Monday, Wednesday and Friday at 18:30 or 1st day of every month at 09:00.
On every run, BIP recalculates the segments. Anyone who joined the segment since the last run gets it; anyone who left doesn't. The Lead Re-entry Window decides whether someone who already got it gets it again.
API Trigger
| Option | What it does |
|---|---|
| Immediate | The campaign goes out to the contact as soon as BIP receives the call |
| Delay | BIP waits for the Delay (Seconds) before sending. If another call arrives for the same contact, the timer restarts from zero |
| API Integration | Panel with ready-made commands that already include the campaign ID: POST and GET on /api/campaigns/trigger and, in Delay mode, on /api/campaigns/cancel |
- The API key needs the
campaigns:triggerscope, sent in thex-bip-api-keyheader or the?api-key=parameter. - In
lead, send the email, phone, ID or tracker of an existing contact. Or send an object with the contact's data: BIP creates or updates the contact and triggers the campaign in the same call. For that, the key also needs theleads:writescope. - In Delay mode,
/api/campaigns/cancelcancels that contact's pending send. A canceled send doesn't go out and doesn't count against your balance. - The campaign only accepts triggers while its status is Active.
Lead Re-entry Window
| Setting | Who gets it |
|---|---|
| Allow Lead Re-entry off | Each contact gets the campaign only once. In a recurring campaign, each run includes only people who haven't received it yet |
On, Cooldown Period (Days) = 0 | No limit: the contact gets it every time they're in the audience or are triggered |
| On, Cooldown Period (Days) = N | The contact gets it again only N days after the previous send |
With 0, BIP warns that the same person may get it several times on the same day. In a recurring campaign, use a period shorter than the interval between runs: for a weekly campaign, 6 days. In the stats, anyone the window held back shows up as Rejected, with the reason Lead has already received this campaign or Lead is within the re-entry window.
Email channel
| Option | What it does |
|---|---|
| From Name | The name that shows in the inbox. Empty, the account's name is used |
| From Email | Account Default or an address on a domain verified in Settings → Email Domains |
| Email Template | The email's content. One template per campaign |
| Webhooks | Up to 3 webhooks fired for each contact in the campaign |
An email campaign needs an Email Template, at least one webhook, or both.
WhatsApp channel
The WhatsApp tab becomes available once you connect a number (paid plans). In the WhatsApp Template section:
| Option | What it does |
|---|---|
| Template | An approved template, marketing or utility |
| Phone Number | The sending number. Use account default phone number uses the number marked as default |
| Header image / Header media URL | Appears when the template has header media. Empty, the template's own media is used |
| Variable mappings | Links each template variable to a piece of contact data. Every variable needs a value |
Segments
- You can turn on several segments. Each contact gets one message per send.
- Only saved segments appear in the list; those in Draft don't.
- API Trigger campaigns don't use segments.
Status
| Status | What it means |
|---|---|
| Draft | Being edited. Nothing goes out |
| Scheduled | One-time with a set date, waiting for the time |
| Active | Recurring and waiting for the next run, or API Trigger ready to receive calls |
| Queued | Waiting to be processed |
| Sending | The send is in progress |
| Completed | The One-time send is done |
| Paused | Stopped by you. Can be edited and activated again |
Actions
| Action | What it does |
|---|---|
| Save Draft | Saves changes without activating |
| Save and Send / Save and Schedule / Save and Activate | Saves and activates, after confirmation |
| Test Campaign | Sends the saved campaign to a contact in BIP |
| Campaign Stats | Opens the campaign's numbers |
| Pause Campaign to Edit | Appears on Active and Scheduled campaigns. Pauses sending and unlocks editing. To resume, save and activate again |
| Duplicate (in the list) | Creates a copy in Draft, with (Clone) added to the name and the same settings, except Start Date, which comes back blank |
| Trash can (in the list) | Deletes Draft, Paused or Completed campaigns |
Scheduled, Active, Queued, Sending and Completed campaigns are locked for editing. To repeat a completed campaign, use Duplicate.
Send balance
On BIP Lite, including the free plan, BIP adds up the contacts in the segments before each send and checks the month's balance. If there isn't enough balance for everyone, the campaign doesn't start and no contact receives it. Adjust your volume in Settings → Billing or use a smaller segment, then activate again. With API Trigger, each trigger that goes out uses one send from the balance.
Ready to copy
Schedules
| Campaign | Schedule Type | Frequency | Time and time zone | Lead Re-entry Window |
|---|---|---|---|---|
| Today's birthdays | Recurring | Daily | 09:00, BRT (Sao Paulo) (-03:00) | On, 300 days |
| Weekly newsletter | Recurring | Custom: Monday | 09:00, BRT (Sao Paulo) (-03:00) | On, 6 days |
| Monthly recap | Recurring | Monthly: 1st | 10:00, BRT (Sao Paulo) (-03:00) | On, 25 days |
| Welcome for newcomers | Recurring | Daily | 10:00, BRT (Sao Paulo) (-03:00) | Off: each contact gets it once |
| Deal of the week | One-time | Start Date: the promotion date | 08:00, BRT (Sao Paulo) (-03:00) | Off |
| Abandoned cart | API Trigger | Delay: 3600 seconds | — | On, 1 day |
For "Welcome for newcomers", use a segment like Creation Date → Equals → Relative -1 Days: people who joined BIP yesterday. That way each daily run counts only the previous day's contacts, and send balance isn't reserved again for people already included in past runs. See more rules in Segments.
Name and description
🎂 Today's birthdays — Padaria Aurora Birthday wishes with a coupon for everyone whose birthday is today. Recurring, daily at 09:00; each person gets it once a year.
Trigger via API
Replace YOUR_API_KEY with your key and CAMPAIGN_ID with the ID shown in the API Integration panel.
curl -X POST https://api.bip.marketing/api/campaigns/trigger \
-H "Content-Type: application/json" \
-H "x-bip-api-key: YOUR_API_KEY" \
-d '{"campaignId": "CAMPAIGN_ID", "lead": "marina.alves@exemplo.com"}'curl -X POST https://api.bip.marketing/api/campaigns/trigger \
-H "Content-Type: application/json" \
-H "x-bip-api-key: YOUR_API_KEY" \
-d '{"campaignId": "CAMPAIGN_ID", "lead": {"name": "Marina Alves", "email": "marina.alves@exemplo.com", "phone": "+5541998765432", "tags": ["cart"]}}'curl "https://api.bip.marketing/api/campaigns/trigger?campaignId=CAMPAIGN_ID&lead=marina.alves@exemplo.com&api-key=YOUR_API_KEY"
curl -X POST https://api.bip.marketing/api/campaigns/cancel \
-H "Content-Type: application/json" \
-H "x-bip-api-key: YOUR_API_KEY" \
-d '{"campaignId": "CAMPAIGN_ID", "lead": "marina.alves@exemplo.com"}'Responses:
{"campaignId": "CAMPAIGN_ID", "leadId": "CONTACT_ID", "mode": "delay"}{"campaignId": "CAMPAIGN_ID", "cancelled": true, "leadId": "CONTACT_ID"}On cancellation, "cancelled": false means there was no pending send for that contact.
How to measure
Open Campaign Stats (at the top of the campaign or with the chart icon in the list). The Live badge shows that the numbers update in real time, even during the send. At the top, Edit Campaign takes you back to editing and Test Campaign sends a new test.
For email campaigns:
| Metric | What it shows |
|---|---|
| Processed | Contacts BIP has processed. For One-time, it shows progress against the send's total. For Recurring and API Trigger, Processed (N runs) adds up all runs |
| Delivered | Emails sent out of those processed |
| Open Rate | Unique opens out of emails sent |
| Click Rate | Unique clicks out of emails sent |
| Click-to-Open Rate | Clicks out of opens |
| Opt Outs | People who unsubscribed through this campaign. With Opt Outs (prev: N), N is the number of people who had already unsubscribed and didn't receive it |
| Errors | Emails that couldn't be sent, such as to contacts with no email |
| Webhook Delivery / Webhook Errors | Webhooks delivered and failed, when the campaign has webhooks |
| Delivery Breakdown | Chart splitting sent, opens, clicks, opt-outs and errors |
| Top clicked links | The 10 links with the most clicks |
For WhatsApp campaigns, the metrics are Sent, Delivered, Read Rate, Reply Rate, Reply-to-Read Rate, Opt Outs, Errors, Rejected, Unsubscribed and Held.
Below the numbers, Recipient Interactions lists each contact with date, type and status. Filter by status (for example Clicked, Opened, Error or Rejected), search by name or email and click View Lead to open the profile.
BIP ignores opens in the first 30 seconds after the send (they're automatic previews from some providers) and clicks from known bots. A click also counts as an open, even if the email client blocked images.
Frequently asked questions
Can I send email and WhatsApp in the same campaign?
No. Each campaign uses one channel. Create the email campaign, click Duplicate in the list and switch the copy's Channel to WhatsApp.
How do I resend a campaign that's already completed?
In the campaign list, click Duplicate. The copy comes back as a Draft, with the same settings and a blank Start Date. Pick the new date before activating: with no date, the campaign goes out as soon as you click Save and Send.
Does the test use up sends?
No. Test Campaign sends for real to the chosen contact, but doesn't count against your balance. The contact must be in BIP and can't have unsubscribed from the channel.
My recurring campaign only sent the first time. Why?
With Allow Lead Re-entry off, each contact gets the campaign only once, and later runs reach only people who joined the segment afterward. To send on every run, pause the campaign, turn re-entry on with a Cooldown Period (Days) shorter than the schedule's interval, and activate it again.