Overview
Custom events track user actions from external systems (e-commerce, CRM, analytics). They appear in the contact timeline and enable goal-based segmentation for building RFM (Recency, Frequency, Monetary) segments.Contact Timeline
Every custom event creates an entry in the contact timeline, giving you a complete history of user interactions:
event_name as the timeline entry type (e.g., “order.completed”, “subscription.started”). The properties field stores additional context visible in the timeline details.
Goal Types
Goals are the key to building powerful segments. Each event can optionally track a goal:| Type | Use Case | goal_value |
|---|---|---|
purchase | E-commerce orders, one-time payments | Required |
subscription | SaaS subscriptions, memberships | Required |
lead | Contact forms, demo requests | Optional |
signup | Account registrations | Optional |
booking | Appointments, consultations | Optional |
trial | Free trial activations | Optional |
other | Custom conversion events | Optional |
Building RFM Segments
RFM (Recency, Frequency, Monetary) analysis identifies your best customers. Use the segment builder with “Custom Events Goals” conditions:
Monetary: Total Spend
Select goal type “purchase”, aggregate “sum”, and set a minimum value to find high-spending customers.Frequency: Purchase Count
Select goal type “purchase”, aggregate “count”, and set a minimum number to find repeat buyers.Recency: Recent Activity
Use the timeframe filter “in the last X days” to find customers with recent purchases.Example RFM Segments
- VIP Customers: Spent $1000+ AND 5+ orders AND purchased in last 60 days
- At-Risk High-Value: Spent $500+ AND no purchase in 90 days
- New High-Potential: First purchase over $200 in last 30 days
Aggregate Options
| Option | Description |
|---|---|
| Sum | Total of all goal values (lifetime spend) |
| Count | Number of events (order count) |
| Average | Average goal value (AOV) |
| Min | Smallest goal value |
| Max | Largest goal value |
Timeframe Options
| Option | Description |
|---|---|
| Anytime | All historical data |
| In the last X days | Rolling window |
| In date range | Specific period |
| Before date | Historical cutoff |
| After date | Since a specific date |
Tracking Events
Single Event
Batch Import
Import up to 50 events at once:Event Name Format
Event names must be lowercase using letters, numbers, dots, underscores, hyphens, or slashes:order.completedsubscription/startedform_submituser-signup
Handling Refunds
Use negativegoal_value for refunds to keep accurate LTV calculations:
Notes
- Contacts are auto-created if they don’t exist
- Events update only if
occurred_atis newer than existing - Soft-delete by setting
deleted_at(set tonullto restore) - See API Reference for complete endpoint documentation
