Consistent naming makes your data easier to understand, query, and maintain. This guide covers recommended conventions for events, properties, and user attributes.
// ✅ CorrectCryptique.track('swap_completed');Cryptique.track('nft_minted');Cryptique.track('liquidity_added');// ❌ AvoidCryptique.track('SwapCompleted'); // PascalCaseCryptique.track('swap-completed'); // kebab-caseCryptique.track('Swap Completed'); // Title Case with spacesCryptique.track('swapcompleted'); // No separation
// ✅ Clear actions'button_clicked''form_submitted''swap_initiated''swap_completed''wallet_connected''token_approved'// ❌ Unclear or passive'button' // What about it?'swap' // Started? Finished? Viewed?'user_data' // Not an action'page' // Not descriptive
// ✅ Clear booleans{ is_first_purchase: true, has_referral: false, was_discounted: true, can_stake: true}// ❌ Unclear{ first_purchase: true, // Is it the first? Or details about it? referral: false, // Has one? Is one? Details? discounted: true // Was it? Can it be?}
// ❌ Don't generate event names dynamicallyCryptique.track(`${action}_${object}`); // Could create thousands of events// ✅ Use a standard event with propertiesCryptique.track('user_action', { action_type: action, target_object: object});
// ❌ Too granular - will create noise'mouse_moved''key_pressed''scroll_pixel_changed'// ✅ Meaningful milestones'scroll_depth_reached' // At 25%, 50%, 75%, 100%'form_field_completed' // When moving to next field
// ❌ Never include PII in event names'user_john@example.com_logged_in''wallet_0x1234_connected'// ✅ Use propertiesCryptique.track('user_logged_in', { user_id: '12345' });Cryptique.track('wallet_connected', { wallet_address: '0x1234...' });