Troubleshoot Segments and audience targeting
Fix segments that don't match the right users, lists that go stale, and CSV uploads that fail
Table of Contents
If a segment isn't matching the users you expect, or you're stuck maintaining a manual list that keeps falling behind your real customer data, the cause is almost always the property you're targeting on. This guide walks through the common symptoms and how to fix them.
If you're new to Segments, start with Set up Segments and Configure Audience Targeting. This article is for when those guides aren't enough.
Quick checks
- Open the Segment in Audiences > Segments. The matching user count updates in real time as you edit conditions — if it's
0, no live user matches all of the rules. - For each property used in the Segment, open Settings > Properties > User Properties and check the Last Seen column. A property that hasn't been seen recently isn't being sent for current users.
- Open a representative test user's profile in Studio and confirm the property values match what your conditions require.
- If you target by email, confirm Appcues is actually receiving the user's email (it's a property like any other — if your install doesn't pass it, the rule won't match).
I don't know which property to use
You want to target a group like "Premium customers" or "Real estate agents" but aren't sure which property identifies them.
- Open Settings > Properties > User Properties in Studio.
- Search for those property names.
- Click into a candidate property to see sample values. The values tell you whether the property is what you think it is.
- Pick the property whose values describe the group you want to target. For "Premium customers" that might be a
tier,plan, orsubscriptionLevelproperty.
If no existing property identifies your group, your install needs to start sending one. Ask your developer to add it to the Appcues.identify() call. Once it starts flowing, it will appear in the property list and you can use it in any Segment.
Tip: You don't need email addresses to target users. Any property the SDK sends —
userId,role,clientType,accountId, custom fields — can be a Segment condition. Email is just one option among many.
My segment is a manual list and keeps going stale
You upload a CSV of User IDs (or paste a long "Is one of" list) and have to keep updating it as users come and go.
This is the right approach for a static, one-time campaign. For an audience that should stay current, switch to a property-based Segment instead.
- Identify the property that defines membership (for example,
tier = "Premium"). - Make sure your application is sending that property in
Appcues.identify(). If it's not, your developer needs to add it. - Create a new Segment with the rule Property → tier → equals → Premium.
- As users gain or lose that tier in your application, they automatically enter or leave the Segment with no manual updates.
If the data lives in another system (your CRM, your auth provider), sync it into Appcues with an integration instead of pasting it manually.
The Segment matches no users (or far too few)
The matching count is 0 or much lower than you expect.
Cause 1: You're using AND when you mean OR
When you stack multiple conditions, the default is All (AND) — every condition must match. If you wrote conditions like "role is Admin" AND "role is Manager," no single user will satisfy both. Switch the operator to Any (OR), or use a single is one of condition with a list.
Cause 2: The property name has a typo or the value is case-sensitive
Property values are matched literally. Premium, premium, and PREMIUM are three different values. Open the user's profile in Studio and check the exact casing of the value being sent.
Cause 3: The property hasn't been sent yet for this user
A user only matches a property condition once that property has been sent for them. If your test user has never been identified with the property, they won't appear — even if the value would match. Sign into your app and recheck the count.
Cause 4: You uploaded a CSV with the wrong ID format
Segment uploads must be a single column of Appcues User IDs with no header row, no extra columns, and no blank lines. If you uploaded emails into a User ID upload, the file is accepted but no users match. Re-export your list as User IDs and re-upload.
I'm worried the Segment will show my experience too broadly
When you connect a Segment to a Flow, Checklist, NPS, Banner, or Workflow, only users who match every condition in the Segment will be eligible. The Segment is a filter — adding it can only narrow the audience, not expand it.
Two ways to verify before publishing:
- Open the Segment and click the Show Users button. Spot-check the list against your expectations.
- On the experience's settings page use Calculate audience size to get an estimate or Check eligibility with a known user. The result tells you whether that user qualifies.
If you still see the experience reach more users than expected after publishing, see Configure Audience Targeting for how multiple targeting layers (Segment + Audience + Page) interact.
I have a list of thousands of users to target
Pasting them into an is one of condition has a 1,000-condition limit (counting each value in a list). For larger or repeatedly-updated lists:
- Upload them as a CSV from Audiences > Segments > Upload File. The file must be a single column of Appcues User IDs with no header.
- If the source data is emails (not Appcues User IDs), translate them to User IDs first.
The better long-term answer is a property-based Segment (see I don't know which property to use), but a CSV is the right tool for one-off campaigns.
Still stuck?
Collect the following and contact support:
- A link to the Segment.
- The expected matching count and the actual matching count.
- A specific User ID that should be matching but isn't (or that is matching but shouldn't).
- The exact property names and values you're targeting on.
- A screenshot of the Segment's conditions panel.