Identities, Memberships & Assignments
How a person exists at three layers (an Account identity, access to an Environment, and a role assignment), and what "invited", "a member" and "assigned" each mean.
Overview
A person in Canopy exists at three independent layers, and a record at one layer doesn't imply the others. Understanding the split explains why the Console's setup guide and Environment cards say what they say: why someone you invited can show as pending, or why an Environment with members can still read as Awaiting users.
The three layers
Identity → Environment access → Role assignment
Each layer answers a different question about a person:
Because the layers are independent, "this person exists" and "this person can do something in this Environment" are different statements. The Developer Console reflects operational reality, not just whether a row exists somewhere.
Inviting vs. accepting
Sending an invite is not the same as accepting one
This is the most common point of confusion. The two actions create different things:
What the setup states mean
The setup guide and the Environment cards read from the same data, for the Environment in question.
An Environment card shows one of three states:
Both invite and assign setup steps are scoped to one Environment. Invite Identities is complete once at least one identity is a member there, with or without a role, and pending while an invite is outstanding. Assign Role to Identity is complete once an active assignment exists there, and pending while an invite that carries a role is outstanding. That's why inviting and assigning in Development doesn't complete the steps for Production.
Next step
Tell us how we can improve this guide.