Build a named list of people once — from contacts, chats, a spreadsheet, or a past campaign — and send campaigns to it as often as you like.

TL;DR

  • What it is — a saved, named audience: people identified by phone number and/or email, with optional per-person values (attributes) you can use in campaign messages.
  • Who it's for — marketing and operations teams who send to the same groups again and again ("Goa guests — summer", "VIP repeat bookers"), and partners who sync lists from their own systems.
  • Top outcome — pick a segment in the campaign builder instead of rebuilding the audience every time; one list of up to 200,000 people, each counted once.

At a glance

Plan tierAll paid tiers.
Who can use itAccount Owners and Admins create, fill, edit, and delete segments. Everyone can view them and send campaigns to them.
ChannelsSegments aren't tied to a channel. A WhatsApp campaign reaches the members with a phone number; an email campaign, the members with an email address.
IntegrationsCampaigns (send to a segment), Contacts (fill from contacts; members link to the matching contact), Home (fill from chats).
Top limits200,000 members per segment · a campaign sends to at most 100,000 · 1,000 people per paste or API call.
APIYes — create segments, add and remove members, and import CSVs or past-campaign audiences through the partner API. AI assistants can do the same, except CSV imports.

How to find it

Sidebar → Campaigns → Segments (the tab next to Campaigns at the top of the page).

Direct URL: https://lodgestory.com/crm/campaigns/segments

📸 [SCREENSHOT: segments-list.png — Segments tab with a few saved segments and their member counts]

What is a segment?

The problem it solves

Without segments, every campaign starts from scratch: pick the chats again, re-apply the contact filters, or upload the spreadsheet one more time. Lists drift between campaigns, the same guest appears twice under two number formats, and there's no way for another system to hand Lodgestory a list to send to later.

A segment is that list, saved. You build it once, keep it up to date, and choose it as the audience whenever you create a campaign.

What you get

  • Five ways to fill it. Paste numbers or emails, upload a CSV, add every contact matching a filter, add every chat on a channel (optionally only those with certain labels), or take the recipients of a past campaign — all of them, or only those who read, replied, clicked, and so on.
  • Each person once. People are identified by their phone number. +91 98765 43210, 919876543210 and 09876543210 are the same person; adding them again updates them instead of creating a duplicate. People without a phone are identified by email.
  • Per-person values. Extra CSV columns (or attributes sent by the API) are stored per member — an offer code, a villa name, a booking reference — and can fill template variables in a campaign.
  • Linked to your contacts. A member is linked to the contact with the same phone number or email, so contact fields (first name, custom fields) work in campaign messages too.
  • Big lists in the background. CSV, contact, chat, and past-campaign imports run in the background — close the page and come back; the progress is on the segment.

Customer scenarios

  • Repeat bookers, every month. Operations builds VIP repeat bookers from a contact filter in January. Every month marketing sends that segment the new rates — no filter to rebuild.
  • A list from the booking engine. A property group's booking system pushes last night's check-outs into a Post-stay segment through the API every morning; a feedback campaign goes to it at 10 AM.
  • Follow up the people who read. After a campaign, the team adds its Read but didn't reply stage to a Warm leads segment, adds an offer code per person from a spreadsheet, and sends a second campaign a week later.

How it fits with the rest of Lodgestory

Upstream: Contacts, the chats in Home, past Campaigns, and your spreadsheets fill segments. Downstream: a Campaign sends to a segment; its replies land in Home like any campaign reply.

Core concepts

TermWhat it means
SegmentA named, saved list of people. The name is unique in your organisation.
MemberOne person in a segment: a phone number and/or email, an optional name, and optional attributes.
AttributeA per-member value (for example offer_code: MONSOON20). Usable in a campaign through the variable source CSV Column.
ImportA background fill of a segment — from a CSV, contacts, chats, or a past campaign — with progress and a count of entries that couldn't be added.
SnapshotWhen a campaign starts preparing, it takes the segment's members as they are at that moment. Later changes to the segment don't change that campaign.

Quick Start — your first segment in 3 minutes

Step 1 — Open Segments

Campaigns → Segments, then + New segment.

Step 2 — Name it

For example Goa guests — summer 2026. Add a description if it helps your team. Click Create segment.

📸 [SCREENSHOT: segments-qs-create.png — New segment dialog]

Step 3 — Add people

On the segment page click Add members and pick a source:

  • Paste — one per line: a number or email, then an optional name.
  • CSV file — a phone column (or email), optional countrycode and name; every other column becomes an attribute.
  • Contacts — every contact matching a filter.
  • Chats — every chat on a channel, optionally narrowed by labels.
  • Past campaign — its recipients, or one stage (read, replied, clicked…).

📸 [SCREENSHOT: segments-qs-add.png — Add members dialog with its five tabs]

Step 4 — Check the result

The member count updates. A paste tells you how many people were added or updated, and why any lines were skipped. CSV, contact, chat, and past-campaign imports run in the background and show their progress under Imports.

Step 5 — Send to it

Create a campaign, and on the Audience step open Saved Segment and pick it. See Campaigns.

How it works

  • Who a member is. Lodgestory turns every phone number into country code + number, digits only. Numbers without a country code — in a paste, a CSV, or a contact — are read as Indian (+91), the same as campaign CSVs. A number with the wrong number of digits for its country is skipped with the reason invalid phone number.
  • Adding someone again updates their name and attributes. New attributes are merged into the ones the member already has.
  • Linking to contacts. When a member is added, Lodgestory links them to your oldest contact with the same phone number — or, for people without a phone, the same email. When a campaign is prepared, people who still have no link are matched again — so a contact you create after adding someone to a segment is still used.
  • Imports run in the background and pick up where they stopped if they're interrupted. Entries that can't become members — no phone or email, an invalid number, a group chat — are skipped and counted.
  • Sending. A campaign to a segment takes a snapshot of its members when preparation starts — right after you create the campaign, even when it's scheduled for later. It then reaches each member on the campaign's channel, creating the chat if needed. Members without a phone number (WhatsApp) or email address (Email) are skipped and counted on the campaign's Audience card.

Features in depth

Segments list

Every segment with its member count, its variables (attribute names), where it was created — Manual (in Lodgestory) or API (through the API or an AI assistant) — and when it last changed. Search by name.

Segment page

  • At the top — the member count, number of variables, last update, and creation date, with the variables listed underneath.
  • Imports — the latest background imports: progress while they run, then how many people were added, updated, or skipped. A failed import shows why.
  • Members — in the order they were added, with search by number, email, or name. Each member shows their phone, email, name, and variables, with a link icon when they're linked to a contact.
  • Actions (Admins and Account Owners) — Add members; remove a single member; and from the menu, Rename / describe, Remove all members, or Delete segment.

Add members

SourceWhat it addsNotes
PasteUp to 1,000 linesA number or email per line, then an optional name.
CSV fileThe whole file, in the backgroundChoose which columns hold phone, country code, name, and email; every other column becomes an attribute.
ContactsEvery contact matching your filter, in the backgroundUses the same filter builder as the Contacts page.
ChatsEvery chat on a channel, optionally only those with certain labels, in the backgroundWhatsApp chats add their number; email chats their address. Group chats are skipped.
Past campaignIts recipients, or one stage, in the backgroundEveryone, Delivered, not read, Read, no reply, Read, Clicked, Didn't click, Replied, Not delivered, or Failed.

Save as segment (from a campaign)

On the campaign builder's Audience step, Admins and Account Owners can click Save as segment to keep what they've picked — chats, contacts, and an uploaded CSV — as a new segment for next time. The campaign being built isn't affected.

Attributes in campaign messages

Attributes appear as columns when you map template variables (source CSV Column), together with the built-in member columns name, phone, countrycode, and email. A member without a value gets the variable's If empty, use… fallback. Without a fallback they'd get an empty value, which WhatsApp rejects — so the campaign's review step (and the API preview) tells you how many members have no value for each such variable.

Roles and permissions

ActionAccount OwnerAdminUser
View segments and members✓✓✓
Create, rename, delete a segment✓✓✗
Add, import, remove, clear members✓✓✗
Send a campaign to a segment✓✓✓

Cross-module workflows

Booking system → segment → feedback campaign

A partner's booking engine adds each night's check-outs to a Post-stay segment through the API, with the property name as an attribute. Each morning a feedback template goes to the segment, personalised with the guest's name and property. Replies land in Home; low scores open a ticket through an automation.

Modules involved: API → Segments → Campaigns → Home → Automations → Tickets.

Campaign → stage → follow-up segment

After a promotion, the team imports its Read, didn't reply stage into a Warm leads segment and sends a softer follow-up a week later — to exactly the people who saw the first message.

Limits a user will run into

LimitValue
Members per segment200,000
Members a campaign can send to100,000 — a bigger segment can't be picked
People per paste or API call1,000
Attributes per member50
Variables offered in the campaign builderThe first 200 attribute names in a segment
Attribute namesUp to 64 characters: letters, digits, spaces, _, ., - (stored in lowercase). name, phone, countrycode, and email are reserved. Other names are skipped.
Attribute valuesText up to 1,024 characters (longer values are cut)
Segment name120 characters, unique in your organisation (ignoring case)

Errors & FAQ

You seeLikely reasonWhat to do
"A segment named "…" already exists"Names are unique, ignoring casePick another name or open the existing segment
"invalid phone number"The number has the wrong number of digits for its countryCheck the digits and the country code
"country code required" (API)The API doesn't assume a countrySend the number with its country code (+919876543210) or a countryCode
"The segment is full (200,000 members)"It reached the limitSplit the list into two segments
"This segment has no members yet." in the campaign builderThe segment is emptyAdd members first
"A campaign can send to at most 100,000 people…" in the campaign builderThe segment is bigger than one campaign allowsSplit it into two segments and send two campaigns

Frequently asked

If I add people to a segment after creating a campaign, do they get it?
No. A campaign takes the segment's members when it starts preparing — right after you create it, even when it's scheduled for later. Create a new campaign to reach the people you added.

If I delete a segment, what happens to campaigns sent to it?
Nothing. Each campaign kept its own copy of the members when it was prepared. The campaign still shows the segment's name.

Why does a member show no contact?
No contact had the same phone number or email when they were added. If you create that contact later, campaigns still use it — they match people again when preparing.

Can one person be in several segments?
Yes. Each segment holds each person at most once.

API reference

All segment endpoints live under api/wp-crm/segments/{organisationId} and need a bearer token for an Admin, Account Owner, or bot user (how to get one). Interactive reference: https://api.lodgestory.com/api/docs/public → Segments.

EndpointWhat it does
GET /List segments, most recently changed first. Search by name; paginated.
POST /Create an empty segment. Returns 409 with the existing segmentId when the name or externalId is taken.
GET /{segmentId}One segment: name, memberCount, and attributeKeys (the variables its members carry).
PATCH /{segmentId}Rename it, or change its description or externalId. Members aren't touched.
DELETE /{segmentId}Delete the segment and its members. Campaigns already prepared from it are unaffected.
GET /{segmentId}/membersMembers in the order they were added, up to 500 per page. Pass the returned nextAfter as after for the next page; search matches number, email, or name.
POST /{segmentId}/membersAdd or update up to 1,000 people. Returns how many were added and updated, the new memberCount, and which entries were invalid (by position, with the reason).
POST /{segmentId}/members/removeRemove up to 1,000 people by memberIds, phones, or emails.
POST /{segmentId}/members/clearRemove every member; the segment stays.
POST /upload-urlGet a one-time upload URL for a CSV file, valid for 15 minutes. Returns uploadUrl and the fileKey to import.
POST /{segmentId}/importsStart a background import: CSV (an uploaded file) or CAMPAIGN (the recipients of a past campaign, or one stage of them).
GET /{segmentId}/imports · GET /{segmentId}/imports/{importId}Recent imports, or one import's progress: status, processed, added, updated, skipped, and a sample of the reasons entries were skipped.

Segment fields

FieldRequiredNotes
nameYesUp to 120 characters, unique in your organisation (ignoring case).
descriptionNoUp to 1,000 characters.
externalIdNoYour own id for the list (for example, the list's id in your CRM). Up to 200 characters, unique in your organisation.

Member fields

FieldRequiredNotes
phoneA phone or an emailWith its country code (+919876543210), or a national number plus countryCode. Members added through the API never get a country code assumed.
countryCodeNoThe country calling code, when phone is a national number.
emailA phone or an emailUsed by email campaigns, and to identify people without a phone.
nameNoUp to 200 characters.
attributesNoShort text values for campaign variables, for example offer_code. See the limits above.

mergeAttributes (default true) merges new attributes into a member's existing ones; false replaces them.

CSV imports: a phone or email column is required. countrycode and name are optional, and columnMap points them at your own headers (for example phone → mobile). Every other column becomes an attribute. Numbers without a country code are read as +91, as in the CRM.

Past-campaign stages: ALL (the default), SENT, DELIVERED, DELIVERED_NOT_READ, READ, READ_NOT_REPLIED, REPLIED, CLICKED, NOT_CLICKED, FAILED, NOT_DELIVERED.

Errors you may see: 400 with the reason (more than 1,000 people in one call, a full segment, a file key that wasn't issued to your organisation), 404 for an unknown segment or import (also returned for another workspace's), and 409 for a duplicate name or externalId.

Rate limits, per minute per organisation: 120 list and member reads; 240 import-status reads; 60 creates, updates, and member adds or removals; 30 deletes and upload URLs; 20 imports; 10 clears.

To send a campaign to a segment through the API, see Campaigns → API reference. AI assistants can do all of this except CSV imports — see AI assistants (MCP).

Related modules & next steps


Did this page help you?