1. Wiki
  2. Features

Campaigns: one-time, recurring and API-triggered

Send email or WhatsApp to your segments once, on a schedule or the moment your system calls the API. Options, statuses and stats.

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.

EffortNo-codeChannelEmail + WhatsApp + WebhookPlanFree

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

  1. 1Choose the schedule type: One-time, Recurring or API Trigger
  2. 2Set the channel and the message: email, WhatsApp or webhooks
  3. 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

  1. In the menu, click Campaigns. The list shows each campaign with its Type, Performance, Status and Updated date, organized by group.
  2. Click New Campaign. BIP creates a campaign in Draft, named [untitled] followed by the date and time, and opens the edit screen.
dash.bip.marketing/…/campaigns
Campaign list with the New Campaign button

Screenshot coming soon

Campaign list with the New Campaign button

2. Fill in the details

In Campaign Details:

  1. Type the Campaign Name and, next to it, pick an emoji to spot it in the list.
  2. In Group, choose where it goes in the list. Groups are created in Settings → Groups → Campaigns Groups.
  3. In Description, write down the goal so your team knows what it's about.
dash.bip.marketing/…/campaigns/…
Campaign Details with name, emoji, group and description

Screenshot coming soon

Campaign Details with name, emoji, group and description

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.

dash.bip.marketing/…/campaigns/…
Schedule Type with the One-time, Recurring and API Trigger tabs

Screenshot coming soon

Schedule Type with the One-time, Recurring and API Trigger tabs

4. Set re-entry

In Lead Re-entry Window, decide whether the same person can get this campaign more than once:

  1. With Allow Lead Re-entry off (the default), each contact gets the campaign only once.
  2. 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.

dash.bip.marketing/…/campaigns/…
Lead Re-entry Window with Allow Lead Re-entry on and the Cooldown Period in days

Screenshot coming soon

Lead Re-entry Window with Allow Lead Re-entry on and the Cooldown Period in days

5. Choose the channel and the message

In Channel, click Email or WhatsApp.

With Email:

  1. In From Name, type the name that shows in the inbox. Leave it empty to use the account's name.
  2. In From Email, keep Account Default or, if you have a verified domain, pick the domain and type the part before the @.
  3. In Email Template, turn on the campaign's template. Search finds templates by name.
  4. 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.

dash.bip.marketing/…/campaigns/…
Email channel with sender, email template and webhooks

Screenshot coming soon

Email channel with sender, email template and webhooks

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.

dash.bip.marketing/…/campaigns/…
Segments section with two segments turned on

Screenshot coming soon

Segments section with two segments turned on

7. Test with a real contact

  1. Click Save → Save Draft. The test uses the saved version.
  2. Click Test Campaign.
  3. Type the email, phone, ID or tracker of a contact who's already in BIP, ideally yourself.
  4. 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.

dash.bip.marketing/…/campaigns/…
Test Campaign window with the contact field and the Send Test button

Screenshot coming soon

Test Campaign window with the contact field and the Send Test button

8. Activate

  1. 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).
  2. 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.
  3. BIP opens Campaign Stats.
dash.bip.marketing/…/campaigns/…
Ready to Launch Your Campaign? confirmation window

Screenshot coming soon

Ready to Launch Your Campaign? confirmation window

Reference

Schedule types

TypeOptionsWhen it goes out
One-timeStart Date (blank = immediately), Time and TimezoneOnce, on activation or on the set date
RecurringFrequency, days, Time and TimezoneOn every date in the schedule, until you pause it
API TriggerTrigger 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

OptionWhat it does
Start DateThe send date. Leave it blank and the campaign goes out as soon as you activate it. The date must be in the future
TimeHour and minute, in 5-minute steps. Appears after you pick the date and starts at 09:00
TimezoneThe time zone of the chosen time. Defaults to the account's time zone; for Brasília, BRT (Sao Paulo) (-03:00)

Recurring

OptionWhat it does
Frequency → DailyEvery day, at the chosen time
Frequency → MonthlyOnce a month, on the chosen Day of Month (1st to 31st)
Frequency → CustomOn the Days of Week you check. Hover over each letter to see the day's name
TimeHour and minute, in 5-minute steps
TimezoneThe 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

OptionWhat it does
ImmediateThe campaign goes out to the contact as soon as BIP receives the call
DelayBIP waits for the Delay (Seconds) before sending. If another call arrives for the same contact, the timer restarts from zero
API IntegrationPanel 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:trigger scope, sent in the x-bip-api-key header 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 the leads:write scope.
  • In Delay mode, /api/campaigns/cancel cancels 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

SettingWho gets it
Allow Lead Re-entry offEach 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) = 0No limit: the contact gets it every time they're in the audience or are triggered
On, Cooldown Period (Days) = NThe 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

OptionWhat it does
From NameThe name that shows in the inbox. Empty, the account's name is used
From EmailAccount Default or an address on a domain verified in Settings → Email Domains
Email TemplateThe email's content. One template per campaign
WebhooksUp 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:

OptionWhat it does
TemplateAn approved template, marketing or utility
Phone NumberThe sending number. Use account default phone number uses the number marked as default
Header image / Header media URLAppears when the template has header media. Empty, the template's own media is used
Variable mappingsLinks 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

StatusWhat it means
DraftBeing edited. Nothing goes out
ScheduledOne-time with a set date, waiting for the time
ActiveRecurring and waiting for the next run, or API Trigger ready to receive calls
QueuedWaiting to be processed
SendingThe send is in progress
CompletedThe One-time send is done
PausedStopped by you. Can be edited and activated again

Actions

ActionWhat it does
Save DraftSaves changes without activating
Save and Send / Save and Schedule / Save and ActivateSaves and activates, after confirmation
Test CampaignSends the saved campaign to a contact in BIP
Campaign StatsOpens the campaign's numbers
Pause Campaign to EditAppears 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

CampaignSchedule TypeFrequencyTime and time zoneLead Re-entry Window
Today's birthdaysRecurringDaily09:00, BRT (Sao Paulo) (-03:00)On, 300 days
Weekly newsletterRecurringCustom: Monday09:00, BRT (Sao Paulo) (-03:00)On, 6 days
Monthly recapRecurringMonthly: 1st10:00, BRT (Sao Paulo) (-03:00)On, 25 days
Welcome for newcomersRecurringDaily10:00, BRT (Sao Paulo) (-03:00)Off: each contact gets it once
Deal of the weekOne-timeStart Date: the promotion date08:00, BRT (Sao Paulo) (-03:00)Off
Abandoned cartAPI TriggerDelay: 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

Campaign 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.

Trigger for an existing contact (POST)
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"}'
Create or update the contact and trigger (POST)
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"]}}'
Trigger with GET
curl "https://api.bip.marketing/api/campaigns/trigger?campaignId=CAMPAIGN_ID&lead=marina.alves@exemplo.com&api-key=YOUR_API_KEY"
Cancel a delayed send (POST)
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:

Trigger response
{"campaignId": "CAMPAIGN_ID", "leadId": "CONTACT_ID", "mode": "delay"}
Cancellation response
{"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:

MetricWhat it shows
ProcessedContacts 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
DeliveredEmails sent out of those processed
Open RateUnique opens out of emails sent
Click RateUnique clicks out of emails sent
Click-to-Open RateClicks out of opens
Opt OutsPeople 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
ErrorsEmails that couldn't be sent, such as to contacts with no email
Webhook Delivery / Webhook ErrorsWebhooks delivered and failed, when the campaign has webhooks
Delivery BreakdownChart splitting sent, opens, clicks, opt-outs and errors
Top clicked linksThe 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.

See also