Skip to main content
Segments are saved audience rules. They combine contact data, tags, custom attributes, membership, checkout, and activity.

Tags

Tags are team-scoped labels you can attach to team contacts.
Use tags for simple lifecycle markers such as vip, trial, webinar-attendee, or needs-follow-up.

Contact attributes

Attributes are custom fields for a team’s contacts. They can be visible in profiles or onboarding.

Activity

Activity tracks behavior such as login, search, lesson started, and lesson completed.

Segments

Segments combine conditions and return matching contacts.
Use segments to answer practical questions:
  • Who bought Product A but has not completed onboarding?
  • Who watched fewer than three lessons this month?
  • Who is tagged vip and has not logged in recently?
  • Who should get a reactivation email?

Tag and hub condition shapes

Most condition types (email, first_name, has_product, …) take a primitive value, but the tag and hub-membership types have a specific write shape that differs from what they return:
belongs_to_hub matches anyone who has a membership record in the hub. hub_membership_status is stricter: is_active matches contacts whose membership is currently usable. That means the membership status is active or soft_banned and the member has not been banned (no banned_at). is_not_active matches everyone else, including contacts with no membership in that hub. Those are the only two operators: any other value is rejected with a 422 whose source.pointer names the condition’s operator and whose detail lists the two. Members-only gates that come over from the legacy hub migration use this condition, so use it when you want a segment to mirror “who can currently get into this hub”.
For has_tag, use the tag slug, not its id — { "tag_id": … } / { "tag_ids": … } is the compiled/read-back shape and is rejected on input (“Extra inputs are not permitted”), which is why every id-based attempt fails. A 422 "One or more condition references failed to compile." means a referenced tag slug or hub was not found for your team, or the operator is unsupported for that type; the CLI names the exact offender (the unresolved slug / cross-team ref) in the error line (mio ≥ the MIO-2590 build).