Ulsav Docs
Organizations

Members

Who is in your Organization, how invites work, and what happens when someone leaves

A Member is an Account that belongs to your Organization. Members do the work: they create Events, price Passes, answer buyers, and scan people in.

Only people you invite can join. There is no public sign-up into an Organization, no join link anyone can guess, and no way to see an Organization you are not a member of.

Members and invites in one list

The member list shows two kinds of row, told apart by a status field.

RowStatusWhat it means
MemberactiveA real Account, with a name, email, and the Roles they hold
InvitependingA contact that has been invited but has not accepted yet

Both kinds share one paginated list, sorted newest first. Search matches a member's name, email, an invite's phone or email, or a Role key, which makes "who is an Event Manager?" a single query.

Pending invites carry the contact that was invited and the Role keys they will receive. Accepting or revoking one removes it from the list.

An expired invite keeps blocking a fresh invite to the same contact. It leaves the pending set only when someone revokes it, or when an accept attempt fails on it and the server marks it expired.

Inviting someone

  1. Choose email or phone. Email is lowercased and trimmed. A phone number must be international format, starting with + and a country code.

  2. Pick at least one Role. Role keys are required. An invite with no Role is rejected, because a member with no Role can open the workspace and do nothing.

  3. Send the invite and keep the token. The response includes a single-use token, returned exactly once. Only its hash is stored, so it cannot be read back later.

  4. They accept with the token. Accepting creates the membership if needed and grants the Role keys at Organization scope.

An invite lasts seven days. After that, accepting returns invite_expired and marks the row expired, which frees the contact.

Only one pending invite can exist per contact per Organization. A second attempt returns invite_exists; revoke the first one instead of sending another.

You can only grant what you already hold. If you try to invite someone as an Owner while you are an Event Manager, the request is refused with role_escalation rather than quietly granting more authority than you have.

What a member can do

Capabilities come from Roles, never from the invite itself. An accepted invite creates one Organization-scope assignment per Role key, so the member's authority starts the moment they accept.

Removing a Role later takes effect immediately. Removing a member revokes the membership and every assignment they hold in one transaction.

The member list shows only Organization-scope Role keys. Narrower grants, such as one Event, appear in the separate assignments list covered in Roles.

Removing a member

Removal requires the member-removal Capability. The member's row is revoked, their assignments are revoked, and their history stays: Orders they handled, Events they created, and audit entries they produced are untouched.

There is no special self-removal rule. Anyone holding the Capability can remove anyone, including themselves; the only guard is the Owner count.

  • The last Owner cannot be removed. If removing someone would leave the Organization with no Owner, the request fails with last_owner_required.
  • Cross-Organization IDs are invisible. A member ID from another Organization returns "not found", never a permission error.

A removed person keeps their Account. If they belong to another Organization, nothing changes there. If they are invited back later, they return as a new membership with whatever Roles the new invite carries.

Edge cases you will actually hit

SituationWhat happens
Invite sent to an existing memberAccepting adds the invited Role keys to their existing membership
Invite token reusedRejected with invite_not_found; tokens are single use
Invite accepted after seven daysRejected with invite_expired (HTTP 410); the row becomes expired
New invite to a contact whose invite expiredRefused with invite_exists until the expired row is revoked or an accept attempt expires it
Removing yourself while another Owner remainsAllowed, if you hold the member-removal Capability
Phone without a country codeRejected as invalid at invite time
Email with trailing spaces or capitalsNormalized before storage, so it matches the same contact
Removing yourself as the only OwnerRefused; promote someone else first
A Role deleted after an invite was sentThe accept step skips the missing Role instead of failing

Frequently asked

Can I change someone's Roles without removing them?

Yes. Grant or revoke individual Roles on the member. The change applies on their next request; no re-invite is needed.

Do invites send an email or a text message?

The invite records the contact and returns a one-time token. Your client decides how to deliver it, which is why the token is part of the response.

What happens to a member's work when they are removed?

Nothing is deleted. Events, Orders, and audit history keep the original actor, and the Organization keeps ownership of everything.

On this page