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
Name of the event. Prefer snake_case , action-oriented names.
Maximum length: 255 characters
Case-sensitive
Optional JSON-serializable properties for filtering and breakdowns.
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
Agent / copilot
Automation / builder
SaaS growth
Errors & friction
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
});
Trodo . track ( 'workflow_published' , {
workflow_id: 'onboarding_drip' ,
step_count: 6 ,
trigger_type: 'schedule'
});
Trodo . track ( 'run_succeeded' , {
workflow_id: 'onboarding_drip' ,
run_id: 'run_abc' ,
duration_seconds: 120
});
Trodo . track ( 'integration_connected' , {
provider: 'slack' ,
workspace_region: 'eu'
});
Trodo . track ( 'trial_started' , {
plan: 'pro' ,
source: 'pricing_page'
});
Trodo . track ( 'activation_milestone_hit' , {
milestone: 'first_project_created' ,
days_since_signup: 1
});
Trodo . track ( 'subscription_upgraded' , {
from_plan: 'pro' ,
to_plan: 'enterprise' ,
seat_delta: 10
});
Trodo . track ( 'agent_run_failed' , {
workflow_id: 'weekly_report' ,
error_class: 'timeout' ,
retry_count: 1
});
Trodo . track ( 'payment_failed' , {
reason: 'card_declined' ,
amount_usd: 49 ,
plan: 'pro'
});
Naming best practices
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