1. Wiki
  2. Use cases

Store opening: cities within a 30 km radius

Invite people who live in cities up to 30 km from your new store to the opening, by WhatsApp and email, with a scheduled invite and a same-day reminder.

Quick answer

Import customers with their city in a Location field, build a segment with In radius 30 km from the store's city and split out who has a phone. Schedule a WhatsApp campaign and an email campaign with date, time and time zone, plus a reminder on the morning of the opening.

EffortSpreadsheetChannelEmail + WhatsAppPlanLite (paid)

Invite everyone who lives in the cities up to 30 km from your new store to its opening, by WhatsApp or email, at a set time and with a reminder on the day.

What you need

  • Paid BIP Lite with WhatsApp connected (the email part works on the free plan)
  • A spreadsheet of customers with name, email or phone, and each one's city
  • The City field, of type Location, created in Settings
  • A Marketing WhatsApp template approved by Meta
  • The date, time and address of the opening

What you'll get

  • An audience with every city up to 30 km from the new store, built from your spreadsheet.
  • Existing contacts who visit your site with the BIP script come in too, by the city of their last visit.
  • The invite by WhatsApp for people with a phone and by email for everyone else, with no repeated messages.
  • An invite scheduled with date, time and time zone, and a reminder on the morning of the opening.
  • Your BIP Lite sends calculated in advance, with no surprises on the day.

How it works

  1. 1Bring in your customers with their city in a Location field
  2. 2Build the segment of cities within a 30 km radius
  3. 3Schedule one campaign per channel, with a reminder on the day

The radius picks cities. BIP stores each contact's location as a city, marked on the map by its center. The 30 km circle around Joinville selects the cities whose center falls inside it, with all the contacts in those cities. Joinville comes in whole, from any neighborhood, and a neighboring city is either in or out as a whole: if its center is 32 km away, nobody from there comes in, not even people who live right by the city line. Location doesn't go down to neighborhoods or street addresses.

The city comes from a Location field. Contacts who arrive through a spreadsheet or the API don't have First / Last Location: those two come from the browser, when the person signs up or visits your site with the BIP script. That's why the city from your spreadsheet goes into a custom field of type Location. At import, BIP looks up each city by name and stores the city it finds, with its point on the map. Existing contacts who visit your site with the script come in through a second criterion, Last Location, combined with Any (OR).

Each campaign has one channel. There are two campaigns: one on WhatsApp, for people with a phone, and one by email, for people without one. That way, each person gets the invite only once. The day-of reminder is two more, duplicated from the first two.

Step by step

The WhatsApp template depends on Meta's approval. Do step 6 first, so it's Approved by the time you build the campaigns.

1. Create the City field

  1. In Settings → General, go to Fields and click Add Field.
  2. In Field Type, choose Location.
  3. In Field Name, type City and click Save.
dash.bip.marketing/…/settings
Custom fields in Settings with the City field of type Location

Screenshot coming soon

Custom fields in Settings with the City field of type Location

2. Import the spreadsheet with the city

  1. In Leads, click Import Leads and upload the spreadsheet. There's a template in Ready to copy.
  2. In Map Columns, BIP already suggests Name, Email and Phone from the header. Link the city column to the City field, under Custom Fields, and the tags column to Tags.
  3. In Validate Data, leave Default Country Code set to Brazil (+55): 47 99123-4567 becomes +5547991234567. In Tags, add the batch tag, such as joinville-opening.
  4. Click Next Step, review the Confirm Import dialog and click Import N Record(s). Keep the page open until Import Complete appears.

In the tags column, write whatsapp on every row that has a phone (in Excel: =IF(C2<>"","whatsapp","")). This tag splits the channel in step 4: anyone tagged whatsapp gets the invite on WhatsApp, and everyone else by email.

Write the city with the state abbreviation, like Joinville, SC: the import stores the first city it finds with that name, and the state rules out a city with the same name somewhere else. If BIP can't find the city, the field stays empty for that contact and the rest of the row comes in normally. Anyone already in BIP is recognized by email or phone and just gets the City field, with no duplicates.

dash.bip.marketing/…/leads/import
Map Columns step with the city column linked to the City custom field

Screenshot coming soon

Map Columns step with the city column linked to the City custom field

3. Build the radius segment

  1. In Segments, click New Segment. In Settings, set the Name to 30 km radius · Joinville and click Save.
  2. Click 0 filter(s) selected → Add Criteria → Field. In Field, choose City (Geo) and, in Operator, In radius.
  3. Click Select Region. In Search, type Joinville and pick the Santa Catarina city from the list. In Radius, enter 30 and, in Unit, km. Click Close.
  4. In the same filter, click Add Criteria again → First / Last Location. In Type, choose Last Location (Geo), the In radius operator and the same map: Joinville, 30, km.
  5. At the top of the filter, in Match … of the following criterias:, choose Any (OR). This brings in anyone whose imported city is within the radius or who visited your site from a city within it.
  6. Click Close. Check N matches of T and click Save.
dash.bip.marketing/…/segments/…
Filter Editor with City (Geo) and Last Location (Geo) In radius 30 km of Joinville, combined with Any (OR)

Screenshot coming soon

Filter Editor with City (Geo) and Last Location (Geo) In radius 30 km of Joinville, combined with Any (OR)

4. Split out who gets it on WhatsApp

  1. In the Segments list, click Duplicate on the radius segment. The copy opens as a Draft.
  2. In Settings, change the Name to 30 km radius · Joinville · via WhatsApp.
  3. Open the Filter Editor and click Add Filter. In the new filter, Add Criteria → Phone, operator Starts with, value +55.
  4. At the top of the editor, between the filters, choose All (AND). Close it and click Save.
  5. Duplicate the radius segment again and build 30 km radius · Joinville · via email the same way, with Tags → Does not include any → whatsapp.

For contacts from the spreadsheet, the counts of the two segments add up to the radius segment's count: each person gets the invite through one channel only. A contact who came in some other way, like your site, without the whatsapp tag, gets the email even if they also have a phone; if that phone starts with +55, they get the WhatsApp invite as well.

dash.bip.marketing/…/segments/…
Filter Editor with the radius filter and a second filter Phone Starts with +55, combined with All (AND)

Screenshot coming soon

Filter Editor with the radius filter and a second filter Phone Starts with +55, combined with All (AND)

5. Create the invite email

  1. In Emails Templates, click New Template and then Settings.
  2. In Name, type Joinville opening · Invite. In Language, keep English, which is what new templates start with.
  3. Fill in Subject and Preview with the texts from Ready to copy and click Save.
  4. Build the blocks in the order of the table in Ready to copy. In the Button, set the Link URL to the page with the store's address and map.
  5. Click Preview → Send Preview Email, check it in your inbox and click Save.
  6. For the reminder, click Duplicate in the template list, change the Name to Joinville opening · It's today, the Subject, the Preview and the texts, and save.
dash.bip.marketing/…/emails-templates/…
Email editor with the invite to the Loja Horizonte opening in Joinville

Screenshot coming soon

Email editor with the invite to the Loja Horizonte opening in Joinville

6. Create the WhatsApp templates

  1. In WhatsApp, open the Templates tab and click Create template.
  2. In Identity, fill in Name (lowercase) horizonte_inauguracao_convite_en, Category Marketing and Language English (US).
  3. In Header, choose Text as the Header type and write the Header text. In Body, paste the Body text with {{1}} and, in Variable Samples, fill in a first name, like Marina. In Footer, write the fixed line.
  4. In Buttons, click Add button: one of Type URL, with the Text Get directions and the full address of the store's page, and another Quick reply, with the Text I'll stop by.
  5. Click Save Template. The status starts as Pending and changes to Approved on its own.
  6. Repeat with horizonte_inauguracao_hoje_en, the reminder template.

The texts and the JSON for Import from JSON are in Ready to copy.

dash.bip.marketing/…/whatsapp/templates/create
New WhatsApp template horizonte_inauguracao_convite_en, Marketing category, with header, body, footer and buttons

Screenshot coming soon

New WhatsApp template horizonte_inauguracao_convite_en, Marketing category, with header, body, footer and buttons

7. Schedule the invite on both channels

  1. In Campaigns, click New Campaign. In Campaign Name, type Joinville opening · Invite · Email and choose the Group.
  2. In Schedule Type, choose One-time. In Start Date, choose 30/10/2026 (October 30); in Time, 10:00; in Timezone, BRT (Sao Paulo) (-03:00).
  3. Leave Allow Lead Re-entry off: each person gets the invite once.
  4. In Channel, choose Email. In From Name, type Loja Horizonte and, in Email Template, switch on Joinville opening · Invite.
  5. In Segments, switch on only 30 km radius · Joinville · via email.
  6. Click Save → Save Draft, then Test Campaign. Enter the email of a contact who's already in BIP, ideally yourself, and click Send Test.
  7. Click Save → Save and Schedule and confirm with Schedule Campaign. The campaign becomes Scheduled.
  8. In the Campaigns list, click Duplicate on this campaign. In the copy, change the name to Joinville opening · Invite · WhatsApp and the Channel to WhatsApp. The copy comes with a blank Start Date: choose 30/10/2026, 10:00 and the time zone again.
  9. In WhatsApp Template, choose horizonte_inauguracao_convite_en. In Variable mappings, click Add variable mapping and link Body · {{1}} to first name.
  10. In Segments, switch off the email segment and switch on 30 km radius · Joinville · via WhatsApp. Test with one of your contacts who has a phone and schedule it the same way.
dash.bip.marketing/…/campaigns/…
One-time campaign with Start Date 30/10/2026, Time 10:00 and Timezone BRT (Sao Paulo)

Screenshot coming soon

One-time campaign with Start Date 30/10/2026, Time 10:00 and Timezone BRT (Sao Paulo)

8. Schedule the day-of reminder

  1. In the Campaigns list, duplicate the email invite campaign. Change the name to Joinville opening · It's today · Email. The copy's Start Date comes blank: choose 07/11/2026 (November 7), Time 08:00 and the time zone.
  2. In Email Template, switch on Joinville opening · It's today. Test and schedule.
  3. Duplicate the WhatsApp invite campaign. Change the name, choose the date and time the same way, and pick the horizonte_inauguracao_hoje_en template. When you change the template, the mapping is cleared: link Body · {{1}} to first name again. Test and schedule.

Each copy is a new campaign, so whoever got the invite also gets the reminder. In the list, all four campaigns show up as Scheduled.

dash.bip.marketing/…/campaigns
Campaign list with the opening invite and reminder, by email and WhatsApp, scheduled

Screenshot coming soon

Campaign list with the opening invite and reminder, by email and WhatsApp, scheduled

Ready to copy

Sample spreadsheet

Copy it, paste it into a text editor and save it as joinville-customers.csv. The city column goes into the City field (type Location).

joinville-customers.csv
name,email,phone,city,tags
Marina Alves,marina.alves@exemplo.com,47 99123-4567,"Joinville, SC",whatsapp
Tiago Pereira,tiago.pereira@exemplo.com,,"Araquari, SC",
Sofia Costa,,47 98876-5432,"Joinville, SC",whatsapp
Rafael Lima,rafael.lima@exemplo.com,41 99765-4321,"Curitiba, PR",whatsapp
ContactCityInside the 30 km radius of Joinville?Gets it via
Marina AlvesJoinvilleYesWhatsApp
Tiago PereiraAraquariYesEmail
Sofia CostaJoinvilleYesWhatsApp
Rafael LimaCuritibaNo: Curitiba's center is more than 30 km from Joinville—

Marina has email and phone and gets it only on WhatsApp. Tiago has no phone and gets the email.

Segments

30 km radius · Joinville. Both criteria go in the same filter, with Any (OR).

FilterCriterionOperatorValue
1Field → City (Geo)In radiusSearch Joinville, Radius 30, Unit km
1First / Last Location → Last Location (Geo)In radiusSearch Joinville, Radius 30, Unit km

30 km radius · Joinville · via WhatsApp. Filter 1 with Any (OR); between the filters, All (AND).

FilterCriterionOperatorValue
1Field → City (Geo)In radiusSearch Joinville, Radius 30, Unit km
1First / Last Location → Last Location (Geo)In radiusSearch Joinville, Radius 30, Unit km
2PhoneStarts with+55

30 km radius · Joinville · via email. Same as the previous one, with a different criterion in filter 2: anyone tagged whatsapp in the spreadsheet is left out.

FilterCriterionOperatorValue
1Field → City (Geo)In radiusSearch Joinville, Radius 30, Unit km
1First / Last Location → Last Location (Geo)In radiusSearch Joinville, Radius 30, Unit km
2TagsDoes not include anywhatsapp
Segment names and descriptions
📍 30 km radius · Joinville — Cities up to 30 km from Joinville, by the City field or by the last site visit
💬 30 km radius · Joinville · via WhatsApp — Gets the opening invite on WhatsApp
📧 30 km radius · Joinville · via email — Gets the opening invite by email

Invite email

Wherever you see [@first name], type @first, choose lead.firstName() and use friend as the Fallback Value. Replace the address and the link with your store's.

Subject
[@first name], Loja Horizonte opens in Joinville on November 7
Preview
Saturday at 9 a.m., at Avenida Horizonte, 1500. A free gift for the first 100 customers.
Heading
Loja Horizonte is coming to Joinville, [@first name]!
Text
On Saturday, November 7, we're opening the first Loja Horizonte in Joinville. You're in our area, and you're one of the first to know.

For the first three days, the whole store has grand-opening prices. And the first 100 customers on Saturday get a free gift from us.

Button — Name
Get directions
Text — address and hours
Avenida Horizonte, 1500, Centro, Joinville (SC). Saturday, November 7, 9 a.m. to 8 p.m.
OrderBlockSuggested setting
1Add ImageLoja Horizonte logo, Max Width (px) 160
2Add ImageThe storefront or the opening artwork
3Add HeadingThe heading with the first name
4Add TextThe two paragraphs of the invite
5Add ButtonGet directions, with the store's address page
6Add TextAddress and hours
7Add Social NetworksOnly the networks the store uses

Day-of email

Subject
It's today, [@first name]: Loja Horizonte opens at 9 a.m. in Joinville
Preview
Avenida Horizonte, 1500, Centro. The first 100 customers get a free gift.
Heading
It's opening day!
Text
Loja Horizonte opens its doors at 9 a.m., at Avenida Horizonte, 1500, Centro, Joinville. Stop by to see the store, enjoy the grand-opening prices and pick up your gift.

WhatsApp templates

URL button Get directions: https://www.exemplo.com.br/joinville. Quick reply button: I'll stop by. Anyone who taps it within 24 hours of the send counts toward Reply Rate, and the conversation continues in the WhatsApp Business app.

Variable in the campaignLead fieldSample value
Body · {{1}}first nameMarina

The mapping is the same in both templates. Paste the JSON into WhatsApp → Templates → Import from JSON to create both at once:

opening-templates.json
[
  {
    "name": "horizonte_inauguracao_convite_en",
    "category": "MARKETING",
    "language": "en_US",
    "components": [
      { "type": "HEADER", "format": "TEXT", "text": "Loja Horizonte is coming to Joinville" },
      { "type": "BODY", "text": "Hello, {{1}}! On Saturday, November 7, at 9 a.m., Loja Horizonte opens its doors in Joinville, at Avenida Horizonte, 1500, Centro. For the first three days, the whole store has grand-opening prices, and the first 100 customers get a free gift. We look forward to seeing you!", "example": { "body_text": [["Marina"]] } },
      { "type": "FOOTER", "text": "Loja Horizonte · Joinville (SC)" },
      { "type": "BUTTONS", "buttons": [
        { "type": "URL", "text": "Get directions", "url": "https://www.exemplo.com.br/joinville" },
        { "type": "QUICK_REPLY", "text": "I'll stop by" }
      ] }
    ]
  },
  {
    "name": "horizonte_inauguracao_hoje_en",
    "category": "MARKETING",
    "language": "en_US",
    "components": [
      { "type": "HEADER", "format": "TEXT", "text": "It's today!" },
      { "type": "BODY", "text": "Good morning, {{1}}! Starting at 9 a.m. today, Loja Horizonte opens its doors at Avenida Horizonte, 1500, Centro, in Joinville. The first 100 customers get a free gift. See you soon!", "example": { "body_text": [["Marina"]] } },
      { "type": "FOOTER", "text": "Loja Horizonte · Joinville (SC)" },
      { "type": "BUTTONS", "buttons": [
        { "type": "URL", "text": "Get directions", "url": "https://www.exemplo.com.br/joinville" }
      ] }
    ]
  }
]

Campaign schedule

All of type One-time, with Timezone BRT (Sao Paulo) (-03:00) and Allow Lead Re-entry off. The reserved sends come from an example with 4,800 contacts in the radius: 3,600 via WhatsApp and 1,200 via email.

CampaignChannelSegmentStart DateTimeReserved sends
Joinville opening · Invite · EmailEmail30 km radius · Joinville · via email30/10/202610:001,200
Joinville opening · Invite · WhatsAppWhatsApp30 km radius · Joinville · via WhatsApp30/10/202610:003,600
Joinville opening · It's today · EmailEmail30 km radius · Joinville · via email07/11/202608:001,200
Joinville opening · It's today · WhatsAppWhatsApp30 km radius · Joinville · via WhatsApp07/11/202608:003,600
Total9,600

If both campaigns on each date used the whole radius segment, each one would reserve 4,800, and the total would climb to 19,200, with anyone who has both email and phone getting the invite on both channels. The split segments cut the reservation in half.

Campaign names
📧 Joinville opening · Invite · Email
💬 Joinville opening · Invite · WhatsApp
📧 Joinville opening · It's today · Email
💬 Joinville opening · It's today · WhatsApp

How to measure

  • Before scheduling: close each segment's Filter Editor and note N matches of T. For the spreadsheet contacts, the WhatsApp and email segments add up to the radius segment.
  • Before each date: on the Usage card, Remaining has to cover that date's reserved sends. In the example, 4,800 on each one.
  • Email invite: in Campaign Stats, track Delivered, Open Rate and Click Rate. In Top clicked links, Get directions shows who went looking for the address.
  • WhatsApp invite: track Delivered, Read Rate and Reply Rate. Each tap on I'll stop by counts as a reply.
  • Who showed interest: in Recipient Interactions, filter by Clicked and click View Lead to open each person's profile.

Variations

Email only, on the free plan

The free plan doesn't include WhatsApp, but it handles the email part: use the whole radius segment in both email campaigns, invite and reminder. The month's 1,000 free sends cover both if the segment has up to 500 contacts.

Both channels for everyone

Want people with email and phone to get it on both? Use the 30 km radius · Joinville segment in both campaigns, email and WhatsApp. Each campaign reserves the segment's full count, and anyone without a phone shows up under Errors in the WhatsApp campaign.

A bigger radius or one more city

To reach more cities, increase the Radius in both criteria of filter 1. To include a specific city that was left out, add the criterion Field → City (City) → Contains → the city name to filter 1. With Any (OR), it comes in along with the cities in the radius.

Contacts that arrive through the API

Through the API, send the city in the City field, just like in the spreadsheet. BIP looks up the city by name and stores it in the Location field:

POST /api/leads snippet
"fields": [{ "key": "City", "value": "Joinville, SC" }]

See the full body in API: send contacts automatically.

Frequently asked questions

Why don't the spreadsheet contacts come in through Last Location?

First / Last Location comes from the browser: from the sign-up the person makes themselves and from visits to your site with the BIP script. Contacts that were imported or created through the API don't have those two. For them, the city lives in the City field, of type Location, and the filter is Field → City (Geo).

Can I invite just one neighborhood in Joinville?

Not by location: it's always by city, and the radius selects the cities whose center falls inside the circle. To reach a neighborhood, store it in a column linked to a String field, such as Neighborhood, and filter by Field → Neighborhood → Equals → the neighborhood name.

Do people with email and phone get the invite twice?

With this guide's segments, no: spreadsheet contacts with a phone get it only on WhatsApp, and the email goes to those without one. If you use the whole radius segment in both campaigns, that person gets it on both channels.

What if the opening date changes?

Open each scheduled campaign and click Pause Campaign to Edit. Change the Start Date, adjust the email template text and click Save → Save and Schedule. Approved WhatsApp templates don't change: for a new date in the text, create another template with a new name.

See also