Skip to main content

Trodo.track()

Use track() to record product-specific behavior: agent runs, workflow steps, integrations, billing milestones, and anything auto-events do not cover.
Trodo.track(eventName, properties?, options?)

Parameters

eventName
string
required
Name of the event. Prefer snake_case, action-oriented names.
  • Maximum length: 255 characters
  • Case-sensitive
properties
object
Optional JSON-serializable properties for filtering and breakdowns.
options
object
Optional per-event options (see your SDK version for supported keys).

Returns

void — events are sent asynchronously.

Basic examples

Simple event

Trodo.track('export_clicked');

Event with properties

Trodo.track('agent_run_completed', {
  workflow_id: 'weekly_report',
  duration_seconds: 42,
  outcome: 'success',
  model: 'gpt-4o'
});

Examples by product shape

Trodo.track('prompt_submitted', {
  surface: 'in_app',
  template_id: 'summarize_ticket',
  input_length_bucket: 'medium'
});

Trodo.track('agent_run_started', {
  workflow_id: 'ticket_reply',
  model: 'gpt-4o'
});

Trodo.track('tool_call_completed', {
  tool_name: 'search_docs',
  latency_ms: 340
});

Trodo.track('agent_run_completed', {
  workflow_id: 'ticket_reply',
  outcome: 'success',
  duration_seconds: 28
});

Naming best practices

Do

Trodo.track('agent_run_completed');
Trodo.track('integration_connected');
Trodo.track('onboarding_step_completed');

Avoid

Trodo.track('click');
Trodo.track('Event');
Trodo.track('agentRunCompleted'); // camelCase (prefer snake_case in docs conventions)

Property best practices

Trodo.track('agent_run_completed', {
  workflow_id: 'weekly_report',
  duration_seconds: 36,
  outcome: 'success',
  surface: 'in_app'
});

// Too vague
Trodo.track('agent_run_completed', {
  data: 'done',
  value: 1
});

Reserved names

Do not send properties that collide with auto-captured fields (for example page, current_url, referrer, timestamp, user_agent, screen_width, viewport_width, page_title, url, href). They may be stripped or ignored.

Funnel-style instrumentation

Trodo.track('workflow_builder_opened');
Trodo.track('workflow_step_added', { step_type: 'delay' });
Trodo.track('workflow_validated', { step_count: 5 });
Trodo.track('workflow_publish_clicked');
Trodo.track('workflow_published', { workflow_id: 'wf_123' });

Error tracking

try {
  await runAgentWorkflow();
  Trodo.track('agent_run_completed', { outcome: 'success' });
} catch (error) {
  Trodo.track('agent_run_failed', {
    outcome: 'error',
    error_type: error.name,
    error_message: error.message
  });
}

TypeScript

interface AgentRunCompleted {
  workflow_id: string;
  duration_seconds: number;
  outcome: 'success' | 'cancelled' | 'error';
  model?: string;
}

Trodo.track<AgentRunCompleted>('agent_run_completed', {
  workflow_id: 'weekly_report',
  duration_seconds: 36,
  outcome: 'success',
  model: 'gpt-4o'
});

Identify users

Link events to identities

User properties

Persistent traits