Skip to main content

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

OperationBrowserNode.jsPython
setTrodo.people.set({ plan: 'pro' })trodo.people.set('user-42', { plan: 'pro' })trodo.people_set("user-42", {"plan": "pro"})
setOnce / set_onceTrodo.people.set_once({ signupDate })trodo.people.setOnce('user-42', { signupDate })trodo.people_set_once("user-42", {"signupDate": ...})
incrementTrodo.people.increment({ login_count: 1 })trodo.people.increment('user-42', 'login_count', 1)trodo.people_increment("user-42", "login_count", 1)
appendTrodo.people.append({ tags: 'beta' })trodo.people.append('user-42', 'tags', ['beta'])trodo.people_append("user-42", "tags", ["beta"])
unionTrodo.people.union({ tags: ['beta'] })trodo.people.union('user-42', 'tags', ['beta'])trodo.people_union("user-42", "tags", ["beta"])
removeTrodo.people.remove({ tags: 'beta' })trodo.people.remove('user-42', 'tags', ['beta'])trodo.people_remove("user-42", "tags", ["beta"])
unsetTrodo.people.unset('tempFlag')trodo.people.unset('user-42', 'tempFlag')trodo.people_unset("user-42", "tempFlag")
trackCharge / track_chargeTrodo.people.trackCharge(49.99, {...})trodo.people.trackCharge('user-42', 49.99, {...})trodo.people_track_charge("user-42", 49.99, {...})
clearCharges / clear_chargesTrodo.people.clearCharges()trodo.people.clearCharges('user-42')trodo.people_clear_charges("user-42")
deleteUser / delete_userTrodo.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

Trodo.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.
Trodo.people.set_once({
  signupDate: new Date().toISOString(),
  referralSource: 'twitter',
});

increment — numeric delta

// Object map — increment multiple properties at once
Trodo.people.increment({
  login_count: 1,
  api_calls_this_month: 500,
  creditsRemaining: -10,
});
Negative amounts decrement.

append — push to a list (allows duplicates)

Trodo.people.append({ recent_templates: 'weekly_digest' });

union — add unique values to a list

Trodo.people.union({
  enabled_integrations: ['slack', 'salesforce'],
  used_features: ['agent_runs'],
});

remove — remove values from a list

Trodo.people.remove({ enabled_integrations: 'legacy_addon' });

unset — remove properties entirely

Trodo.people.unset('temporaryFlag');
Trodo.people.unset(['oldProperty', 'deprecatedField']);

trackCharge / track_charge — revenue

Trodo.people.trackCharge(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.
await Trodo.people.deleteUser();
Trodo.reset();

Reserved property names

Don’t use these keys — they collide with server-managed fields:
$name   $email   $charges   $phoneno

Property limits

ConstraintLimit
Max properties per user500
Max property key length255 characters
Max string value length255 bytes (UTF-8)
Max object value size256 KB
Max object nesting depth3 levels

Complete signup flow

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' });

Identify users

Link sessions to identities

Groups

Organizations and group profiles

Track events

Record user actions