Directory
Custom attributes
Camper builds org structure from the attributes your IdP sends. department and the standard SCIM fields arrive by default, but the interesting slices of an org are usually custom: office location, cost center, product line, a list of internal teams.
Getting one into Camper is always the same two steps, whatever the IdP:
- Declare the attribute on the app’s SCIM schema (external name + namespace).
- Map a directory value into it, then push.
Camper stores the entire SCIM payload it receives. Once an attribute is on the wire, it is available to axes — you do not declare it separately in Camper first.
What to type in Camper
When you create an axis, the attribute field is the key Camper looks for:
| Where the attribute lives | Example | Type this in Camper |
|---|---|---|
| Base user schema (top level) | "officeLocation": "London" | officeLocation |
| Enterprise extension | enterprise User → costCenter | costCenter (or the full enterprise URN path) |
| Vendor / custom namespace | "urn:okta:custom:1.0:User": { "badgeOffice": "London" } | badgeOffice (or urn:okta:custom:1.0:User:badgeOffice) |
| Sub-attribute of a complex field | name.givenName | name.givenName |
Values are matched case- and whitespace-insensitively, so IT Engineering and it engineering land on the same unit.
Prefer the base User schema or the enterprise extension when the IdP lets you choose — they are portable and show up cleanly in the axis wizard. Vendor namespaces (Okta custom, etc.) also work: Camper resolves the bare attribute name and the full namespace:attr form.
Multi-value attributes
A person can sit on many units of one axis. Camper accepts:
"teams": ["BB Yoda", "Chainmakers"]
or complex values with display / value. Set the axis to multi-membership.
Nested values in a single attribute
If one field carries a path — "department": "Corporate > TechOps" — set the axis delimiter. The default Department axis already splits on >.
Okta
Custom attributes must exist on the Camper app user profile, with external name and namespace, or Okta never sends them.
1. Declare the attribute
Directory → Profile Editor → Camper (SCIM) app profile → Add Attribute:
| Field | What to enter |
|---|---|
| Data type | string, or string array for multi-membership |
| Display name | Human label (e.g. Office location) |
| Variable name | Okta-side name used in mappings |
| External name | SCIM attribute name Camper receives — this is the axis key |
| External namespace | Base User, enterprise extension, or a vendor custom namespace (Camper accepts all three) |
| Attribute type | Personal (unless the value is truly per Okta group) |
Leaving External name/namespace blank creates a local attribute that never leaves Okta — the most common miss.
2. Map a value
Provisioning → To App → Attribute Mappings: map the Okta user attribute (or an expression) onto the new app attribute; update on create and update.
3. Push
Force sync or change a test user. Then open Catalog → New axis and confirm the attribute appears with sample values.
Microsoft Entra ID
- Enterprise app → Provisioning → Attribute Mappings → Provision Microsoft Entra ID Users.
- Show advanced options → Edit attribute list for customappsso.
- Add a row whose Name is the SCIM attribute on the wire (
officeLocationor a full enterprise path). TypeString, or multi-valued for multi-membership. - Add New Mapping from your source attribute to that target.
Use Provision on demand to test one user. Initial full cycles can take up to ~40 minutes.
Google Workspace
Google has no native SCIM client. Custom attributes reach Camper through whichever IdP or bridge fronts Google — see Google Workspace setup.
Map Directory API fields (including customSchemas.<schema>.<field> or orgUnitPath) to flat SCIM attributes or enterprise-extension attributes in the bridge.
Other IdPs
OneLogin, JumpCloud, Rippling, and any SCIM 2.0 tool: declare the outbound SCIM attribute name, map a value, push. Prefer the base schema or enterprise extension when the tool allows it; vendor namespaces are fine when that is all the IdP offers.
Verify it arrived
After at least one user has been pushed with a value:
- Open Catalog → New axis.
- Camper lists attributes it actually found — counts, distinct values, samples.
If your attribute is missing, it never reached Camper. Check external name/namespace, mapping applied, and that the test user has a value. Rejected pushes appear under Settings → Identity Providers.