# Welcome Wi-Fi visitors on their first connection

> In BIP, create an API Trigger campaign in Immediate mode, with re-entry turned off. In Easy Auth, create an On Connect webhook, limited to Once per user, that calls /api/campaigns/trigger with the visitor's data. Each person gets the welcome once, on their first connection.

Fonte: https://wiki.bip.marketing/en-us/wifi-welcome · Atualizado: 2026-10-08

<UseCaseMeta effort="nocode" channel="whatsapp,email" plan="lite" />

First-time visitors to your Wi-Fi get a welcome on their phone while they're still at the counter, with their own name and a first-visit offer. Nobody has to press a button.

<Checklist items="Easy Auth connected to BIP (see the guide Connect Easy Auth to BIP)|An EasySpot that asks for the visitor's phone (for WhatsApp) or email (for email)|For WhatsApp: a paid BIP plan, a connected number and an approved Marketing template|For email: a ready email template (the free plan already sends email)|Admin access in BIP, to create the API key, and access to Webhooks in the Easy Auth Dashboard" />

## What you'll get

- A welcome message that goes out on its own as soon as a visitor connects for the first time.
- One message per person: regulars who come back every day don't get the welcome again.
- The contact created or updated in the same call, with name, phone, email and the `wifi` tag.
- WhatsApp with an approved template, or email, depending on what your EasySpot asks for.
- Every send tracked on both sides: in the campaign stats in BIP and in the webhook logs in Easy Auth.

## How it works

<Steps items="Create an API Trigger campaign in BIP, in Immediate mode|Create an On Connect webhook in Easy Auth, once per user, that calls the campaign|Every new visitor gets the welcome right away" />

The integration from [Connect Easy Auth to BIP](/en-us/wifi-connect-easy-auth) brings in the contact, but it doesn't trigger campaigns. To respond the moment someone connects, you link both ends:

- in BIP, an **API Trigger** campaign in **Immediate** mode, which sends the message as soon as it receives the call;
- in Easy Auth, a second webhook, with the **On Connect** topic, that calls `POST https://api.bip.marketing/api/campaigns/trigger` with the campaign ID and the visitor's data. BIP creates or updates the contact and sends the message, all in the same call.

Two locks guarantee one message per person:

- in Easy Auth, **Limit Calls per User** set to **Once per user**: the webhook calls BIP only once for each visitor;
- in BIP, the **Lead Re-entry Window** turned off, which is the default: each contact gets the campaign once, ever.

<Callout type="tip">
The key the integration created, **EasyAuth API Key**, only has **Leads Write**. To trigger campaigns, create a new key with **Campaigns Trigger** and **Leads Write**, and leave the integration key as it is.
</Callout>

## Step by step

### 1. Create the API key for Easy Auth

1. In BIP, go to **Settings**, open the **API Keys** tab and click **Add New API Key**.
2. In **Name**, type _Easy Auth — campaigns_.
3. Leave **Active** on. Under **Automatic Expiration**, leave **Enabled** off, so the webhook never stops working on a set date.
4. Under **Scopes**, turn on **Campaigns Trigger** and **Leads Write**.
5. Click **Save** and copy the **API key**. You'll paste it into Easy Auth in step 6.

<Shot src="/img/wifi-boas-vindas/1-en-us.png" alt="API key Easy Auth — campaigns with the Campaigns Trigger and Leads Write scopes" url="dash.bip.marketing/easyauth-…/settings?tab=api-keys" />

### 2. Prepare the message

Choose the channel based on what your EasySpot asks for: phone for WhatsApp, email for email.

- **WhatsApp**: in **WhatsApp**, open the **Templates** tab and click **Create template**. Build the `aurora_wifi_welcome` template with the copy from [Ready to copy](#ready-to-copy), with **Category** set to **Marketing** and **Language** set to **English (US)**. Click **Save Template** and wait for the **Approved** status.
- **Email**: in **Emails Templates**, click **New Template** and build the welcome email with the copy from [Ready to copy](#ready-to-copy). Click **Save**.

<Shot src="/img/wifi-boas-vindas/2-en-us.png" alt="Approved aurora_wifi_welcome template in the WhatsApp Templates tab" url="dash.bip.marketing/easyauth-…/whatsapp?tab=templates" />

### 3. Create the API Trigger campaign

1. In **Campaigns**, click **New Campaign**. In **Campaign Name**, type _Wi-Fi welcome_.
2. Under **Schedule Type**, choose **API Trigger** and, under **Trigger Mode**, **Immediate**.
3. Under **Lead Re-entry Window**, leave **Allow Lead Re-entry** off. That's the default, and it's what you want: each contact gets the welcome once.
4. Under **Channel**, choose **WhatsApp**: select the approved **Template** and the **Phone Number**. Under **Variable mappings**, click **Add variable mapping** and link **Body · {{1}}** to **first name**. For email, choose **Email**, fill in the **From Name** (_Padaria Aurora_) and link the **Email Template**.
5. Open **API Integration** and copy the campaign ID. It's also at the end of the page URL.

<Shot src="/img/wifi-boas-vindas/3-en-us.png" alt="Wi-Fi welcome campaign with API Trigger in Immediate mode and the WhatsApp template mapped" url="dash.bip.marketing/easyauth-…/campaigns/…" />

### 4. Test and activate the campaign

1. Click **Save** → **Save Draft**.
2. Click **Test Campaign**, enter your phone number (with `+` and the country code) or your email and click **Send Test**. You need to be a BIP contact, so connect to the Wi-Fi once first. Tests don't use up sends.
3. Check the message on your phone or in your inbox.
4. Click **Save** → **Save and Activate** and confirm in **Activate API Trigger**. The status changes to **Active** and the campaign starts accepting calls.

<Shot src="/img/wifi-boas-vindas/4-en-us.png" alt="Activate API Trigger confirmation dialog for the welcome campaign" url="dash.bip.marketing/easyauth-…/campaigns/…" />

### 5. Copy the body of the integration webhook

The webhook BIP created in Easy Auth already has the right variables for your EasySpot fields. You'll reuse that text.

1. Sign in to the Easy Auth Dashboard at app.easyauth.net and click **Webhooks** in the side menu.
2. On the webhook with the URL `https://api.bip.marketing/api/leads`, click **Edit Webhook**.
3. In **Body**, copy the lines inside the curly braces. The name, for example, comes as `"name": "{{ field('field-name.value') }}"`.
4. Click **Hide Edit Webhook** without changing anything in that webhook.

<Shot src="/img/wifi-boas-vindas/5-en-us.png" alt="Integration webhook body with the Easy Auth variables for name, phone and email" url="app.easyauth.net" />

### 6. Create the welcome webhook in Easy Auth

1. Click **Add Webhook** → **Custom**.
2. In **Name**, type _Welcome → BIP_. In **Topic**, choose **On Connect**. In **Language**, choose **English**.
3. In **Limit Calls per User**, choose **Once per user**.
4. In **Method**, leave **POST**. In **URL**, paste `https://api.bip.marketing/api/campaigns/trigger`.
5. If **Trigger Tags** shows up, leave all tags off: the webhook applies to every visitor.
6. Under **Headers**, click **Add Header** twice. Fill in **Key** `Content-Type` with **Value** `application/json`, and **Key** `x-bip-api-key` with the key from step 1.
7. In **Body**, delete the default text and paste the body from [Ready to copy](#ready-to-copy). Replace `CAMPAIGN_ID` with the ID from step 3 and, inside `lead`, use the lines you copied in step 5.

<Shot src="/img/wifi-boas-vindas/6-en-us.png" alt="Welcome → BIP webhook with the On Connect topic, Once per user and the BIP trigger URL" url="app.easyauth.net" />

### 7. Test the webhook and save

1. Click **Test Webhook**.
2. In **Load sample data**, enter the phone number or email you already used to sign in to the Wi-Fi and click **Load**. The body shows your data in place of the variables.
3. Click **Send Test**. Under **Response**, status `200` and a **Response Body** with `"mode": "immediate"` show that BIP sent the message. It arrives on your phone or in your inbox.
4. Click **Close**. Make sure the webhook **Status** is on and click **Save** at the top of the page.

<Callout type="warning">
The webhook's **Send Test** is a real send: the message goes out and counts as one send. With re-entry off, your contact won't get this welcome again. To repeat the test, use another team member's details.
</Callout>

<Shot src="/img/wifi-boas-vindas/7-en-us.png" alt="Webhook test with the 200 response from BIP and the immediate mode" url="app.easyauth.net" />

## Ready to copy

### Webhook body

Padaria Aurora example: the EasySpot asks for name, phone (the license key) and email. Replace `CAMPAIGN_ID` with your campaign ID.

<Copy label="Webhook body (Easy Auth)" code>
{
  "campaignId": "CAMPAIGN_ID",
  "lead": {
    "name": "{{ field('field-name.value') }}",
    "phone": "+{{ key('raw-full') }}",
    "email": "{{ field('field-email.value') }}",
    "tags": ["wifi"]
  }
}
</Copy>

| Line         | What it sends                                                                      |
| ------------ | ---------------------------------------------------------------------------------- |
| `campaignId` | The welcome campaign ID, from the **API Integration** panel                        |
| `name`       | The name the visitor typed in the EasySpot                                         |
| `phone`      | The license key phone number, with `+` and the country code, ready for WhatsApp    |
| `email`      | The email from the EasySpot **Email** field                                        |
| `tags`       | The `wifi` tag, so you can separate Wi-Fi visitors in your segments                |

Always use the lines from your integration body (step 5): they match your EasySpot fields. If your license key is the email, for example, the line comes as `"email": "{{ key('value') }}"`. If the integration body includes the `fields` list (birthdate, city), paste the whole list inside `lead` to keep those fields up to date.

### Webhook in Easy Auth

| Field                    | Value                                                                              |
| ------------------------ | ---------------------------------------------------------------------------------- |
| **Name**                 | Welcome → BIP                                                                      |
| **Topic**                | **On Connect**                                                                     |
| **Language**             | **English**                                                                        |
| **Limit Calls per User** | **Once per user**                                                                  |
| **Method**               | **POST**                                                                           |
| **URL**                  | `https://api.bip.marketing/api/campaigns/trigger`                                  |
| **Trigger Tags**         | All off                                                                            |
| **Headers**              | `Content-Type`: `application/json` · `x-bip-api-key`: the key with both scopes     |

### Campaign in BIP

| Option                   | Value                                                                    |
| ------------------------ | ------------------------------------------------------------------------ |
| **Schedule Type**        | **API Trigger**                                                          |
| **Trigger Mode**         | **Immediate**                                                            |
| **Lead Re-entry Window** | **Allow Lead Re-entry** off                                              |
| **Channel**              | **WhatsApp** with the template below, or **Email** with the email template below |

### WhatsApp template

<WaTemplate name="aurora_wifi_welcome" category="MARKETING" header="Welcome to Padaria Aurora" footer="Padaria Aurora · Offer valid today, at the counter" buttons="See the menu">
Hi, {{1}}! We're so glad you're here at Padaria Aurora. On your first visit, your drip coffee is on us when you buy any savory snack. Just show this message at the register. Enjoy!
</WaTemplate>

**URL** button: `https://www.exemplo.com.br/cardapio`

| Campaign variable | Lead field     | Sample value |
| ----------------- | -------------- | ------------ |
| **Body · {{1}}**  | **first name** | Marina       |

### Welcome email

Wherever you see `[@first name]`, type `@first`, choose `lead.firstName()` and use `friend` as the **Fallback Value**.

<Copy label="Subject">
[@first name], your first coffee is on us ☕
</Copy>

<Copy label="Preview">
Thanks for using the Padaria Aurora Wi-Fi. Show this email at the register.
</Copy>

<Copy label="Heading">
So glad you're here, [@first name]!
</Copy>

<Copy label="Text">
You just joined the Padaria Aurora Wi-Fi. Make yourself at home: fresh bread comes out of the oven from 7 a.m., every day.

To celebrate your first visit, your drip coffee is on us when you buy any savory snack. Just show this email at the register today.
</Copy>

<Copy label="Button — Name">
See the menu
</Copy>

<Copy label="Button — Link URL">
https://www.exemplo.com.br/cardapio
</Copy>

## How to measure

- **In BIP**: in **Campaigns**, open **Campaign Stats** for _Wi-Fi welcome_. For WhatsApp, track **Sent**, **Delivered**, **Read Rate**, **Reply Rate** and **Errors**. For email, **Processed (_N_ runs)**, **Delivered**, **Open Rate** and **Click Rate**.
- **Who got it**: in **Recipient Interactions**, each visitor shows up with a date and status. **Rejected**, with the reason **Lead has already received this campaign**, is a repeat call that BIP held back.
- **In Easy Auth**: in **Webhooks**, click **View Logs**. Each call to `https://api.bip.marketing/api/campaigns/trigger` shows up with **Status**, **Topic**, **URL** and **Hour**. In **View Request**, the **Request Body** shows the data sent, and the **Response Body** shows the `leadId` and the `mode`.
- **New visitors**: in **Statistics** → **General** tab, Easy Auth shows new and returning visitors for the period. Compare new visitors with the campaign's sends.
- **At the register**: count how many people showed the message to get their coffee.

If a log shows an error, the **Response Body** tells you why:

| Status | Message                                          | What to do                                                                 |
| ------ | ------------------------------------------------ | -------------------------------------------------------------------------- |
| 400    | `Campaign is not active`                         | Activate the campaign with **Save and Activate**                           |
| 400    | `Validation Error`                               | Check the body: a name with 2 or more characters and a valid phone or email |
| 403    | `API key does not have the required permissions` | Turn on **Campaigns Trigger** and **Leads Write** on the key               |
| 404    | `Campaign not found`                             | Check the `campaignId` in the body                                         |

## Variations

- **Only for non-subscribers (Easy Auth PRO)**: in the webhook, change the topic to **On Connect Non-ISP**. To give subscribers a different welcome, create another campaign and another webhook with **On Connect ISP**. See [Lead and sales webhooks](https://wiki.easyauth.com.br/en/lead-and-sales-webhooks).
- **Welcome a few minutes later**: in the campaign, change **Trigger Mode** to **Delay** and fill in **Delay (Seconds)**, for example `600`. The message arrives ten minutes after the connection, once the customer is already seated.
- **WhatsApp and email**: each campaign uses one channel. Create one campaign per channel and, in Easy Auth, one webhook for each, with each campaign's `campaignId` in the body.
- **Welcome-back offer for returning visitors**: once the welcome is live, move on to [Welcome back: today's offer for returning visitors](/en-us/wifi-welcome-back).

## Frequently asked questions

### Why not use the webhook the integration already created?

Because it only sends the contact to BIP, at `https://api.bip.marketing/api/leads`, and doesn't trigger campaigns. Leave that webhook as it is, so every visitor keeps arriving in **Leads**, and create the welcome webhook next to it.

### Does the visitor get the welcome every time they connect?

No. In Easy Auth, **Once per user** makes the webhook call BIP once for each visitor. In BIP, with **Allow Lead Re-entry** off, each contact gets the campaign once. If a repeat call comes in, it shows up as **Rejected** in the stats and the message doesn't go out.

### Does the welcome use up sends?

Each message that goes out counts as one send for the month on BIP Lite. Creating and updating the contact doesn't count, and neither does a call that re-entry held back. Tests from **Test Campaign** don't use up sends; the webhook's **Send Test** does, because it's a real send.

### Can I send by WhatsApp and email at the same time?

Yes, with two campaigns: one for WhatsApp and one for email, each with its own webhook in Easy Auth. WhatsApp needs a paid plan and the visitor's phone number; email works on any plan, for visitors who gave their email in the EasySpot.

## See also

- [Connect Easy Auth to BIP and receive your Wi-Fi visitors](/en-us/wifi-connect-easy-auth)
- [BIP API: keys, contacts, events and triggers](/en-us/api)
- [Campaigns: one-time, recurring and API-triggered](/en-us/campaigns)
- [WhatsApp templates: create, sync and use](/en-us/whatsapp-templates)
- [Email editor: blocks, variables and preview](/en-us/email-editor)
- [Welcome back: today's offer for returning visitors](/en-us/wifi-welcome-back)
- [Welcome use case on the BIP website](https://bip.marketing/en-us/use-cases/welcome)
- [Webhooks on the Easy Auth Wiki](https://wiki.easyauth.com.br/en/webhooks)
