Documentation Index Fetch the complete documentation index at: https://docs.trodo.ai/docs/llms.txt
Use this file to discover all available pages before exploring further.
Overview
people.* methods set persistent traits on the user profile — things like plan, signup date, preferences, cumulative counts. Unlike event properties (which describe a single action), people properties describe the user and persist across sessions.
Backend is stateless. On Node.js and Python the distinctId / distinct_id is the first argument to every people call (or bind once with forUser / for_user). The browser SDK uses the stored identity automatically.
Method map
Operation Browser Node.js Python set Trodo.people.set({ plan: 'pro' })trodo.people.set('user-42', { plan: 'pro' })trodo.people_set("user-42", {"plan": "pro"})setOnce / set_once Trodo.people.set_once({ signupDate })trodo.people.setOnce('user-42', { signupDate })trodo.people_set_once("user-42", {"signupDate": ...})increment Trodo.people.increment({ login_count: 1 })trodo.people.increment('user-42', 'login_count', 1)trodo.people_increment("user-42", "login_count", 1)append Trodo.people.append({ tags: 'beta' })trodo.people.append('user-42', 'tags', ['beta'])trodo.people_append("user-42", "tags", ["beta"])union Trodo.people.union({ tags: ['beta'] })trodo.people.union('user-42', 'tags', ['beta'])trodo.people_union("user-42", "tags", ["beta"])remove Trodo.people.remove({ tags: 'beta' })trodo.people.remove('user-42', 'tags', ['beta'])trodo.people_remove("user-42", "tags", ["beta"])unset Trodo.people.unset('tempFlag')trodo.people.unset('user-42', 'tempFlag')trodo.people_unset("user-42", "tempFlag")trackCharge / track_charge Trodo.people.trackCharge(49.99, {...})trodo.people.trackCharge('user-42', 49.99, {...})trodo.people_track_charge("user-42", 49.99, {...})clearCharges / clear_charges Trodo.people.clearCharges()trodo.people.clearCharges('user-42')trodo.people_clear_charges("user-42")deleteUser / delete_user Trodo.people.deleteUser()trodo.people.deleteUser('user-42')trodo.people_delete_user("user-42")
Backend SDKs also expose the full suite on a bound UserContext:
// Node
const user = trodo . forUser ( 'user-42' );
await user . people . set ({ plan: 'pro' });
await user . people . increment ( 'login_count' , 1 );
# Python
user = trodo.for_user( "user-42" )
user.people.set({ "plan" : "pro" })
user.people.increment( "login_count" , 1 )
set — overwrite properties
JavaScript (browser)
Node.js
Python
await trodo . forUser ( 'user-42' ). people . set ({
email: '[email protected] ' ,
plan: 'pro' ,
company: 'Acme Inc' ,
});
trodo.for_user( "user-42" ).people.set({
"email" : "[email protected] " ,
"plan" : "pro" ,
"company" : "Acme Inc" ,
})
setOnce / set_once — set only if missing
Use for immutable traits — signup date, initial plan, referral source.
JavaScript (browser)
Node.js
Python
Trodo . people . set_once ({
signupDate: new Date (). toISOString (),
referralSource: 'twitter' ,
});
await trodo . forUser ( 'user-42' ). people . setOnce ({
signupDate: new Date (). toISOString (),
referralSource: 'twitter' ,
});
from datetime import datetime, timezone
trodo.for_user( "user-42" ).people.set_once({
"signupDate" : datetime.now(timezone.utc).isoformat(),
"referralSource" : "twitter" ,
})
increment — numeric delta
JavaScript (browser)
Node.js
Python
// Object map — increment multiple properties at once
Trodo . people . increment ({
login_count: 1 ,
api_calls_this_month: 500 ,
creditsRemaining: - 10 ,
});
// One property at a time: (key, amount)
const user = trodo . forUser ( 'user-42' );
await user . people . increment ( 'login_count' , 1 );
await user . people . increment ( 'api_calls_this_month' , 500 );
await user . people . increment ( 'creditsRemaining' , - 10 );
user = trodo.for_user( "user-42" )
user.people.increment( "login_count" , 1 )
user.people.increment( "api_calls_this_month" , 500 )
user.people.increment( "creditsRemaining" , - 10 )
Negative amounts decrement.
append — push to a list (allows duplicates)
JavaScript (browser)
Node.js
Python
Trodo . people . append ({ recent_templates: 'weekly_digest' });
await trodo . forUser ( 'user-42' ). people . append ( 'recent_templates' , [ 'weekly_digest' ]);
trodo.for_user( "user-42" ).people.append( "recent_templates" , [ "weekly_digest" ])
union — add unique values to a list
JavaScript (browser)
Node.js
Python
Trodo . people . union ({
enabled_integrations: [ 'slack' , 'salesforce' ],
used_features: [ 'agent_runs' ],
});
const user = trodo . forUser ( 'user-42' );
await user . people . union ( 'enabled_integrations' , [ 'slack' , 'salesforce' ]);
await user . people . union ( 'used_features' , [ 'agent_runs' ]);
user = trodo.for_user( "user-42" )
user.people.union( "enabled_integrations" , [ "slack" , "salesforce" ])
user.people.union( "used_features" , [ "agent_runs" ])
remove — remove values from a list
JavaScript (browser)
Node.js
Python
Trodo . people . remove ({ enabled_integrations: 'legacy_addon' });
await trodo . forUser ( 'user-42' ). people . remove ( 'enabled_integrations' , [ 'legacy_addon' ]);
trodo.for_user( "user-42" ).people.remove( "enabled_integrations" , [ "legacy_addon" ])
unset — remove properties entirely
JavaScript (browser)
Node.js
Python
Trodo . people . unset ( 'temporaryFlag' );
Trodo . people . unset ([ 'oldProperty' , 'deprecatedField' ]);
const user = trodo . forUser ( 'user-42' );
await user . people . unset ( 'temporaryFlag' );
await user . people . unset ([ 'oldProperty' , 'deprecatedField' ]);
user = trodo.for_user( "user-42" )
user.people.unset( "temporaryFlag" )
user.people.unset([ "oldProperty" , "deprecatedField" ])
trackCharge / track_charge — revenue
JavaScript (browser)
Node.js
Python
Trodo . people . trackCharge ( 49.99 , {
plan: 'pro' ,
billingCycle: 'monthly' ,
currency: 'USD' ,
});
await trodo . forUser ( 'user-42' ). people . trackCharge ( 49.99 , {
plan: 'pro' ,
billingCycle: 'monthly' ,
currency: 'USD' ,
});
trodo.for_user( "user-42" ).people.track_charge( 49.99 , {
"plan" : "pro" ,
"billingCycle" : "monthly" ,
"currency" : "USD" ,
})
Clear all charges (e.g. after a refund) with clearCharges() / clear_charges().
deleteUser / delete_user — permanent deletion
Irreversible. Deletes the profile and all associated properties. Use for GDPR erasure requests.
JavaScript (browser)
Node.js
Python
await Trodo . people . deleteUser ();
Trodo . reset ();
await trodo . forUser ( 'user-42' ). people . deleteUser ();
trodo.for_user( "user-42" ).people.delete_user()
Reserved property names
Don’t use these keys — they collide with server-managed fields:
$name $email $charges $phoneno
Property limits
Constraint Limit Max properties per user 500 Max property key length 255 characters Max string value length 255 bytes (UTF-8) Max object value size 256 KB Max object nesting depth 3 levels
Complete signup flow
JavaScript (browser)
Node.js
Python
Trodo . identify ( user . id );
Trodo . people . set ({ email: user . email , plan: 'free' });
Trodo . people . set_once ({
signupDate: new Date (). toISOString (),
referralSource: utmSource ,
});
Trodo . people . increment ({ successful_runs: 1 });
Trodo . people . union ({ enabled_integrations: [ 'slack' ] });
Trodo . people . trackCharge ( 99 , { plan: 'pro' , billingCycle: 'annual' });
const user = trodo . forUser ( req . user . id );
await trodo . identify ( req . user . id );
await user . people . set ({ email: req . user . email , plan: 'free' });
await user . people . setOnce ({
signupDate: new Date (). toISOString (),
referralSource: utmSource ,
});
await user . people . increment ( 'successful_runs' , 1 );
await user . people . union ( 'enabled_integrations' , [ 'slack' ]);
await user . people . trackCharge ( 99 , { plan: 'pro' , billingCycle: 'annual' });
user = trodo.for_user(current_user.id)
trodo.identify(current_user.id)
user.people.set({ "email" : current_user.email, "plan" : "free" })
user.people.set_once({
"signupDate" : datetime.now(timezone.utc).isoformat(),
"referralSource" : utm_source,
})
user.people.increment( "successful_runs" , 1 )
user.people.union( "enabled_integrations" , [ "slack" ])
user.people.track_charge( 99 , { "plan" : "pro" , "billingCycle" : "annual" })
Identify users Link sessions to identities
Groups Organizations and group profiles
Track events Record user actions