Data Schema management lives under Settings → Data Schema and requires the project
admin role. Spotzee adds new paths automatically when it sees attributes it hasn’t seen before; you don’t need to pre-register fields.How the schema builds itself
Every time Spotzee writes a user (viaPOST /users/batch, PATCH /users, or any sync from an integration) or processes an event with a payload, it walks the JSON of the incoming object and records every leaf path. Each new path lands in the Data Schema table with:
- The path itself (for example,
$.subscription_tieror$.shipping_address.city). - The detected data type (
string,number,boolean,date, orarray). - An auto-assigned visibility of
public.
Visibility levels
Three visibility levels gate what each attribute is allowed to do.
Public is the default for newly-discovered paths. Adjust to Hidden for noise. Adjust to Classified for anything regulatory-sensitive.
Set visibility on an attribute
1
Open Settings → Data Schema
Inside the project, open Settings and pick the Data Schema tab. The table lists every user attribute Spotzee has observed.
2
Pick an attribute
Click a row to open the visibility editor for that path. The path appears at the top of the drawer in monospace.
3
Choose visibility
Pick Public, Hidden, or Classified. The change saves immediately and applies to every downstream surface that consults visibility.
Data types
The detecteddata_type decides which segment operators are available for that path. The mapping comes straight from the rules engine:
Spotzee infers the data type from the first few values it sees. If the inference is wrong (a field that’s typed as a number in your source becomes a string in segments because the first values came in quoted), correct the type at the source. You can’t override the type in the UI; it’s a function of the actual data.
For the full operator reference and how rules combine into segments, see Build segments.
Rebuild the schema
Two situations call for a manual rebuild:- After a bulk import that added many new attribute keys at once, where you want the new paths to land in the table immediately rather than after the usual write-time discovery.
- After deleting a large swathe of attributes that no longer flow in, where you want the table to reflect current reality rather than historical data.
Tips
A few habits that keep the schema clean as your data evolves:- Audit visibility regularly. New attributes default to
public. PII paths slipping into Public is the most common compliance issue customers hit. - Use Hidden for transient values. Things like
last_seen_iporcurrent_session_idare noise in segment builders even if they’re harmless. - Use Classified strictly. Once a path is Classified, it’s stripped from outbound API responses. Be deliberate. Don’t reach for Classified just to hide an attribute from segment authors; that’s what Hidden is for.
- Check after bulk imports. First sync from a new integration is the best time to triage visibility before the schema gets cluttered.
Next steps
Build segments
Use your typed attributes in segment rules.
Sync users
Push attribute data into the project via the API.
Ingest events
Send events with payload attributes that land in the schema.
Build templates
Use template variables to render attribute values into your messages.