Quick answer
Create an API Trigger campaign in Immediate mode with the welcome email. When someone signs up in your app, call /api/campaigns/trigger with the contact as an object. BIP creates or updates the contact and sends right away. With re-entry off, each person gets the welcome only once.
Anyone who creates an account in your app gets a welcome the same instant, with their own name, from a single call from your server.
What you need
- A BIP account (the free plan works)
- Access to your app's server, where signup happens
- The name (2 characters or more) and email of whoever signs up
- An API key with Campaigns Trigger and Leads Write
- Recommended: your own verified sending domain (paid plans)
What you'll get
- A welcome the instant someone signs up, with their first name.
- Contact created and email sent in the same call: no sync job and no spreadsheet.
- No duplicate contacts: anyone already in BIP gets their profile updated.
- One welcome per person, even if your system calls the API twice.
- Signup tags and fields on the contact, ready for segmenting later.
- The email sent from your brand's address, if you use your own domain.
How it works
- 1Someone creates an account in your app
- 2Your server calls BIP with the person's details
- 3BIP creates the contact and sends the welcome right away
The campaign uses API Trigger in Immediate mode. In practice:
- Your server calls
/api/campaigns/triggerwithleadas an object. BIP looks up the contact by email or phone. If it finds one, it updates it; if not, it creates it. A new contact needs anamewith at least 2 characters. - In Immediate mode, the send is queued as soon as BIP receives the call. The response includes
"mode": "immediate"and the contact'sleadId. - With the Lead Re-entry Window off (the default), each contact gets the campaign only once, ever. For a welcome, that's exactly what you want: a repeated call shows up as Rejected and doesn't count as a send.
- On BIP Lite, each processed welcome email uses one send for the month.
Step by step
1. Create the plan field
The same call that triggers the welcome can store signup data. Create the fields your app will send ahead of time. Tags need no setup.
- In Settings → General, go to Fields and click Add Field.
- In Field Type, choose String. In Field Name, type Plano ("plan").
- Click Save.

Screenshot coming soon
2. Create the API key
- In Settings, open the API Keys tab and click Add New API Key.
- In Name, type Nimbus App — signup.
- In Scopes, turn on Campaigns Trigger and Leads Write. Together, they let you create the contact and trigger the campaign in the same call.
- Click Save and copy the API key. Keep the key on the server, in an environment variable, and never in the app's code.

Screenshot coming soon
3. Build the welcome email
- In Emails Templates, click New Template.
- Click Settings and fill in Name, Language (English), Subject, and Preview. The copy is in Ready to copy.
- Add the blocks: logo, a heading with the first name, text with the first steps, a button to the app, and a signature.
- In the subject and the heading, type
@firstand picklead.firstName(). Click each variable and fill in the Fallback Value. - Click Preview → Send Preview Email to see the email in your inbox.
- Click Save.

Screenshot coming soon
4. Send from your brand's domain
Recommended, on paid plans. The welcome is the first email the person gets from you: a sender like ola@nimbusapp.com.br is easy to recognize in the inbox, and replies land in an inbox your team reads.
- In Settings → Email Domains, add
nimbusapp.com.brand create the DNS records BIP shows. The full walkthrough is in Your own sending domain. - Once the status is Verified, go to Settings → General and fill in Email From (Name) and Email From (Address).
- Click Save.
On the free plan, skip this step: emails go out from no-reply@bip.marketing, with the name you set in Email From (Name).

Screenshot coming soon
5. Create the welcome campaign
- In Campaigns, click New Campaign.
- In Campaign Name, type Welcome — Nimbus App and pick the 👋 emoji.
- In Schedule Type, choose API Trigger and, in Trigger Mode, Immediate.
- Leave Allow Lead Re-entry off: each person gets the welcome once.
- In Channel, choose Email. In From Name, type Sofia from Nimbus App. In From Email, keep Account Default or choose your domain and type
ola. - In Email Template, link the template from step 3.

Screenshot coming soon
6. Test and activate
- Click Save → Save Draft.
- Click Test Campaign, type your email, and click Send Test. If you're not a contact yet, add yourself first in Leads → Create Lead.
- Check the sender, the subject, and your name in the email. The test doesn't use any sends.
- Click Save → Save and Activate and confirm with Activate API Trigger. The campaign switches to Active and starts accepting calls.

Screenshot coming soon
7. Connect your app's signup to BIP
- In the campaign, open API Integration. The commands already include the campaign ID, which is also at the end of the page address.
- On your server, right after creating the user's account, call
/api/campaigns/triggerwithleadas an object:name,email, and the signuptagsandfields. - Store the
leadIdfrom the response with the user. You'll use it to log events for this contact later. - Don't let a failed call block signup: log the error and move on.
If your signup form doesn't ask for a name, start asking for one. BIP needs a name with at least 2 characters to create the contact. If you send a phone, always include + and the country code.

Screenshot coming soon
Ready to copy
Campaign
| Option | Value |
|---|---|
| Campaign Name | 👋 Welcome — Nimbus App |
| Schedule Type | API Trigger |
| Trigger Mode | Immediate |
| Lead Re-entry Window | Allow Lead Re-entry off |
| Channel | |
| From Name | Sofia from Nimbus App |
| From Email | ola@nimbusapp.com.br (or Account Default) |
| Email Template | Welcome · Nimbus App |
Field
| Field Name | Field Type | Sample value |
|---|---|---|
| Plano | String | Trial |
Wherever you see [@first name], type @first, pick lead.firstName(), and use the Fallback Value from the table at the end of this section.
[@first name], your Nimbus App account is ready
Three steps to organize your team's first week.
| Order | Block | Suggested setting |
|---|---|---|
| 1 | Add Image | Nimbus App logo, Max Width (px) 160, centered |
| 2 | Add Heading | Greeting with the first name |
| 3 | Add Text | The first three steps |
| 4 | Add Button | A single action, Width 50 |
| 5 | Add Text | An invitation to reply |
| 6 | Add Signature | Simple |
So glad you're here, [@first name]!
Your Nimbus App account is now active. To make the most of your first few days, start here:
- Create your first project.
- Invite the people you work with.
- Set this week's deadlines and track everything in one dashboard.
Open Nimbus App
https://nimbusapp.com.br/entrar
Have a question? Just reply to this email: your message goes straight to our team.
The closing text works with your own domain, where replies reach the sending inbox. On the free plan, use this instead:
Have a question? Write to ajuda@nimbusapp.com.br.
| Signature field | Value |
|---|---|
| Preset | Simple |
| Name | Sofia Costa |
| Title | Customer Success |
| Company | Nimbus App |
| Website | nimbusapp.com.br |
| Variable | Where | Fallback Value |
|---|---|---|
lead.firstName() | Subject | Hello |
lead.firstName() | Heading | friend |
Every contact created through the API has a name, so the fallback rarely appears.
Sender
| Where | Field | Value |
|---|---|---|
| Settings → General | Email From (Name) | Nimbus App |
| Settings → General | Email From (Address) | ola@nimbusapp.com.br |
| Campaign | From Name | Sofia from Nimbus App |
API
Replace YOUR_API_KEY with your key and CAMPAIGN_ID with the ID from 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": {
"name": "Tiago Pereira",
"email": "tiago.pereira@exemplo.com",
"tags": ["trial"],
"fields": [{ "key": "Plano", "value": "Trial" }]
}
}'{"campaignId": "CAMPAIGN_ID", "leadId": "CONTACT_ID", "mode": "immediate"}// On the Nimbus App server const API_KEY = process.env.BIP_API_KEY ?? 'YOUR_API_KEY'; const CAMPANHA_BOAS_VINDAS = 'CAMPAIGN_ID';type NovoUsuario = { nome: string; email: string; telefone?: string; plano: string }; type RespostaDisparo = { campaignId: string; leadId: string; mode: 'immediate' | 'delay' };
export async function darBoasVindas(usuario: NovoUsuario): Promise<RespostaDisparo> { const res = await fetch('https://api.bip.marketing/api/campaigns/trigger', { method: 'POST', headers: { 'Content-Type': 'application/json', 'x-bip-api-key': API_KEY }, body: JSON.stringify({ campaignId: CAMPANHA_BOAS_VINDAS, lead: { name: usuario.nome, // 2 characters or more email: usuario.email, ...(usuario.telefone ? { phone: usuario.telefone } : {}), // with + and the country code tags: ['trial'], fields: [{ key: 'Plano', value: usuario.plano }] } }) }); if (!res.ok) throw new Error(
BIP ${res.status}: ${await res.text()}); return res.json(); }// Right after creating the account: signup completes even if BIP doesn't respond export async function aoCriarConta(usuario: NovoUsuario) { try { const { leadId } = await darBoasVindas(usuario); // store the leadId with the user to log events later return leadId; } catch (erro) { console.error('Boas-vindas não disparadas', erro); return null; } }
How to measure
In Campaigns, open Campaign Stats (from the chart icon in the list or at the top of the campaign).
- Processed (N runs): how many welcomes BIP processed. Compare it with the number of signups in your app over the same period.
- Delivered, Open Rate, and Click Rate: how many emails arrived, were opened, and led to a click.
- Top clicked links: how many people opened the app from the button.
- Recipient Interactions: filter by Rejected to see repeated calls, with the reason Lead has already received this campaign. Filter by Error to see the emails that couldn't be sent.
To count how many contacts came in through the integration, create a segment with First / Last Source → First Source (Type) → API. Add Creation Date to see only the signups from a given period.
Variations
WhatsApp instead of email
On paid plans, with a connected number, create the campaign with Channel set to WhatsApp and send the phone in lead, with + and the country code. The person's reply arrives in the WhatsApp Business app.
nimbus_boas_vindas · MARKETING
Static URL button: https://nimbusapp.com.br/entrar. Sample for {{1}}: Tiago.
| Campaign variable | Lead field | Sample value |
|---|---|---|
| Body · {{1}} | first name | Tiago |
Notify your team in the same send
Email campaigns accept up to 3 webhooks. Create the webhook in the Webhooks menu and link it in the campaign's Webhooks section: the new signup's data goes to your CRM or your team's channel in the same send as the welcome. A webhook sent along with the email doesn't count as an extra send. See Webhooks.
No integration: daily welcomes
Without access to the app's server, use a Recurring campaign with Frequency set to Daily and re-entry off, linked to a segment like this one:
| Criterion | Operator | Value |
|---|---|---|
| Creation Date | After or equals | Relative: -1 Days, Start of Day |
Each new contact gets the welcome once, on the first run after they arrive. Keep the window short: on BIP Lite, each run of a Recurring campaign deducts the segment's entire count from your capacity, including people who already received it. See Campaigns and Plans and limits.
BIP Full only
On BIP Full, a flow with the Lead Created trigger continues the conversation after the welcome: a Timer node waits a few days and a Send Email node sends the next tip.
Frequently asked questions
Does the contact get duplicated if the person was already in BIP?
No. BIP recognizes the person by email or phone and updates the same profile: the name becomes the one from signup, new tags are added, and the fields you send are updated.
If my system calls twice, does the person get two emails?
Not with the Lead Re-entry Window off. The second call shows up as Rejected in the stats, with the reason Lead has already received this campaign, and doesn't count as a send.
Do I need my own domain?
No. On the free plan, welcomes go out from no-reply@bip.marketing, with the name you set in Email From (Name). On paid plans, your own sending domain puts your brand's address in the sender and routes replies back to you.
Can I call the API directly from the app or the browser?
No. The key would be visible to anyone. Call the API from your server, right after creating the account.