Customer events
Design a useful event catalog
Choose stable event names and properties that make lifecycle automation understandable, testable, and safe.
Name behavior, not UI clicks
A durable event describes a business fact. Prefer trial.started, onboarding.completed, report.exported, or subscription.cancelled over clicked_blue_button.
- ✓Use lowercase names with a consistent dot-separated vocabulary
- ✓Keep the meaning stable after launch
- ✓Create a new name when the business meaning changes
- ✓Do not place customer data in the event name
Keep properties focused
Properties explain the event and help qualify a journey. Send only values that are useful for segmentation, personalization, debugging, or goals.
| Property | Good use | Avoid |
|---|---|---|
| plan | Qualify onboarding by purchased plan | A full billing object |
| source | Explain how a signup originated | Unbounded raw URLs with sensitive query data |
| value | Measure a completed revenue outcome | Formatted currency strings when a number is available |
| occurredAt | Preserve the source timestamp | Replacing event time with retry time |
Observed schemas
AttuneMail records the observed property contract for each connection and event name. Review it before adding journey conditions. Unexpected type changes often indicate a producer regression.
A minimal track event
POST /v1/track
CopycURLNode.jsPython
curl -u 'ame_replace_me:' -H 'Content-Type: application/json' -d '{"messageId":"evt_01J8","userId":"cus_123","event":"onboarding.completed","properties":{"plan":"growth"}}' https://www.attunemail.com/v1/track