{"Status":true,"Message":"","Response":{"post":{"postuid":"89394aa2-dda0-4df4-b8c2-47906639352f","tenantuid":"d8b744fc-2e70-4089-bb80-dd1d08f6c7b2","projectuid":"239698c5-f7eb-4574-8cc8-c6568f08b3a0","title":"Managing Behavioral Intelligence with Data Events","slug":"article/managing-events","html":"\u003Cp\u003EBehavioral intelligence data events are real-time records of actions users take - such as clicking a button, completing a purchase, or reaching the end of a page. By tracking these activities, you can trigger automated campaigns and build dynamic segments based on exactly how people engage (or fail to engage).\u0026nbsp;\u0026nbsp;\u003C/p\u003E\u003Ch2 id=\u0022how_do_behavioral_intelligence_events_works\u0022\u003EHow do behavioral intelligence events works?\u003C/h2\u003E\u003Cp\u003EWhile a \u003Ca href=\u0022/article/vc2jmye64n-custom-contact-fields\u0022\u003ECustom Field\u003C/a\u003E represents persistent information you know about a person (like their Last Purchase or First Visit Location), an Event represents point-in-time data about an action a person took.\u003C/p\u003E\u003Cp\u003EIn our APIs and SDKs, you use the\u0026nbsp;\u003Ccode class=\u0022inline-code\u0022\u003EsendEvent\u003C/code\u003E\u0026nbsp;\u003Ca href=\u0022https://dev.dailystory.com/docs/javascript-api\u0022\u003EJavaScript API\u003C/a\u003E to record these actions or the \u003Ca href=\u0022https://dev.dailystory.com/reference/event-tracking\u0022\u003Etrack events REST API\u003C/a\u003E. \u003C/p\u003E\u003Cp\u003EEvents can trigger automations, set goals, or define segment criteria - ensuring you respond instantly to exactly what people are doing on your website or in your app.\u003C/p\u003E\u003Ch3 id=\u0022anatomy_of_an_event\u0022\u003EAnatomy of an Event\u003C/h3\u003E\u003Cp\u003EEvery event you send consists of two core components:\u003C/p\u003E\u003Cul\u003E\u003Cli\u003E\u003Cb\u003EDailyStory Unique Id: \u003C/b\u003EThis is the unique identifier of the associated DailyStory contact. \u003Cb\u003E\u003C/b\u003E\u003C/li\u003E\u003Cli\u003E\u003Cb\u003EEvent Name\u003C/b\u003E: This is the unique identifier (e.g., \u003Ccode\u003Ewhitepaper_download\u003C/code\u003E) used to target specific behaviors in your automation workflows.\u003C/li\u003E\u003Cli\u003E\u003Cb\u003EEvent Data\u003C/b\u003E: This is the metadata associated with the action. You can reference this information to personalize messages, or use it to filter segment criteria.\u003C/li\u003E\u003C/ul\u003E\u003Ch3 id=\u0022what_types_of_tracked_events_are_available\u0022\u003EWhat types of tracked events are available?\u003C/h3\u003E\u003Cp\u003EDailyStory supports reserved events, such as conversions and page visits, but also allows customers to create custom tracked events that start automations.\u003C/p\u003E\u003Col\u003E\u003Cli\u003E\u003Cb\u003ECustom event tracking:\u003C/b\u003E Instantly launch a \u0022Welcome\u0022 or \u0022Re-engagement\u0022 automation when a specific event is received.\u003C/li\u003E\u003Cli\u003E\u003Cb\u003EConversion tracking: \u003C/b\u003EMeasure the success of your marketing by marking a goal as \u0022Achieved\u0022 once a user performs a specific action that is related back to a conversion funnel. Conversion tracking is a built-in event that is integrated with the conversion funnel.\u003C/li\u003E\u003Cli\u003E\u003Cb\u003EPage visit tracking:\u003C/b\u003E Track pages that contacts visit and run automations. For example, when a contact visits the licensing and pricing page. Page visit tracking is a built-in event that is integrated throughout DailyStory.\u003C/li\u003E\u003C/ol\u003E\u003Ccite class=\u0022important\u0022\u003E\u003Cspan class=\u0022title\u0022\u003EImportant\u003C/span\u003E\u003Cp\u003EConversion tracking and page visit tracking are both dedicated event type that are natively integrated with conversions funnels.\u003C/p\u003E\u003C/cite\u003E\u003Ch2 id=\u0022using_data_events_in_automations\u0022\u003EUsing data events in automations\u003C/h2\u003E\u003Cp\u003EA data event can reach an \u003Ca href=\u0022/article/xrhcd8830x-daily-story-autopilot-guide\u0022\u003Eautomation\u003C/a\u003E in three ways. Together they let an automation respond to what a contact did \u2014 and, just as importantly, to what they never did.\u003C/p\u003E\u003Cul\u003E\u003Cli\u003E\u003Cb\u003EStart an automation\u003C/b\u003E \u2014 the \u003Ci\u003EWhen an event is received\u003C/i\u003E \u003Ca href=\u0022/article/pffq9y943p-autopilot-triggers\u0022\u003Etrigger\u003C/a\u003E enrolls a contact the moment the event arrives.\u003C/li\u003E\u003Cli\u003E\u003Cb\u003EWait for an event\u003C/b\u003E \u2014 the \u003Ci\u003EWait for an event\u003C/i\u003E \u003Ca href=\u0022/article/k9nzwqmzxa-autopilot-conditions\u0022\u003Econdition\u003C/a\u003E holds a contact at a step until the event arrives, or until the time you allow runs out, then branches Yes or No.\u003C/li\u003E\u003Cli\u003E\u003Cb\u003EExit an automation\u003C/b\u003E \u2014 an exit goal removes a contact from the automation as soon as the event is recorded, wherever they had reached.\u003C/li\u003E\u003C/ul\u003E\u003Ch3 id=\u0022waiting_for_an_event_before_continuing\u0022\u003EWaiting for an event before continuing\u003C/h3\u003E\u003Cp\u003EMost nurture sequences send on a timer regardless of whether the contact is making progress. The \u003Ci\u003EWait for an event\u003C/i\u003E condition replaces that timer with a question: did this contact do the thing yet?\u003C/p\u003E\u003Cp\u003ESelect the event to wait for and how long to wait. The contact continues down the \u003Cb\u003EYes\u003C/b\u003E branch as soon as the event is recorded \u2014 they do not sit at the step for the rest of the window. If the window closes without it, they continue down the \u003Cb\u003ENo\u003C/b\u003E branch.\u003C/p\u003E\u003Cp\u003EBy default only events recorded \u003Ci\u003Eafter\u003C/i\u003E the contact reaches the step count. Use the \u003Ci\u003EAlso count the event if it happened\u003C/i\u003E option to look back before the step \u2014 for example when a contact may have acted while an earlier step was still running.\u003C/p\u003E\u003Ch3 id=\u0022example_a_free_trial_sequence\u0022\u003EExample: a free trial sequence\u003C/h3\u003E\u003Cp\u003ESend your trial emails only to the people still worth emailing. Track an event such as \u003Ccode class=\u0022inline-code\u0022\u003Everification_submitted\u003C/code\u003E when a trial completes a setup step, then gate the sequence on it:\u003C/p\u003E\u003Col\u003E\u003Cli\u003ESend the welcome email.\u003C/li\u003E\u003Cli\u003EAdd a \u003Ci\u003EWait for an event\u003C/i\u003E condition for \u003Ccode\u003Everification_submitted\u003C/code\u003E with a 48 hour window.\u003C/li\u003E\u003Cli\u003EOn \u003Cb\u003EYes\u003C/b\u003E, carry on with the rest of the trial sequence.\u003C/li\u003E\u003Cli\u003EOn \u003Cb\u003ENo\u003C/b\u003E, stop \u2014 a trial that has not verified in 48 hours is unlikely to convert, and the remaining emails are wasted on them.\u003C/li\u003E\u003C/ol\u003E\u003Cp\u003EThe same pattern works in reverse. If an event tells you a trial is succeeding \u2014 they configured email marketing, say \u2014 set that event as an exit goal so they leave the nurture sequence instead of being sold something they have already adopted.\u003C/p\u003E\u003Ccite class=\u0022important\u0022\u003E\u003Cspan class=\u0022title\u0022\u003EImportant\u003C/span\u003E\u003Cp\u003EEvent names are matched exactly, ignoring case. The name you select in the automation must be the same name your application sends to the track events API.\u003C/p\u003E\u003C/cite\u003E\u003Ch2 id=\u0022event_name_and_data\u0022\u003E\n\nEvent name and data\u003C/h2\u003E\u003Cp\u003EWhile event data is highly flexible and can take any structure, we recommend maintaining a consistent data schema for events sharing the same name. Consistency ensures that your automation logic remains reliable and your reporting stays clean.\u003C/p\u003E\u003Cp\u003EBelow are some recommended patterns.\u003C/p\u003E\u003Ch3 id=\u0022recommended_naming_patterns_for_events\u0022\u003ERecommended naming patterns for events\u003C/h3\u003E\u003Cul\u003E\u003Cli\u003E\u003Cb\u003E[category]:[item]\u003C/b\u003E - For example, \u003Ccode class=\u0022inline-code\u0022\u003Enew_user:sign_up_button\u003C/code\u003E. This let\u0027s us know that the sign_up_button was clicked on the new user page.\u003C/li\u003E\u003Cli\u003E\u003Cb\u003EDescriptive name\u003C/b\u003E - For example, \u003Ccode class=\u0022inline-code\u0022\u003Enew_user_sign_up_button\u003C/code\u003E. Similar to the event name above.\u003C/li\u003E\u003C/ul\u003E\u003Cp\u003EYou can leverage this data to display personalized information in your messages, or use it in segments to filter users who performed the same action but with different values (such as filtering by a specific product category or price point).\u003C/p\u003E\u003Ch3 id=\u0022accessing_event_data\u0022\u003EAccessing Event Data\u003C/h3\u003E\u003Cp\u003EDepending on your integration - whether via \u003Ca href=\u0022https://dev.dailystory.com\u0022\u003EJavaScript\u003C/a\u003E\u0026nbsp;or the \u003Ca href=\u0022https://dev.dailystory.com/reference/event-tracking\u0022\u003EREST API\u003C/a\u003E - the method for sending data may vary slightly. However, you can always access nested event data within your campaigns and segments using standard JSON dot notation.\u003C/p\u003E\u003Ch4 id=\u0022best_practices\u0022\u003EBest Practices\u003C/h4\u003E\u003Cul\u003E\u003Cli\u003E\u003Cb\u003EConsistency is Key:\u003C/b\u003E If the \u003Ccode\u003Epurchase\u003C/code\u003E event includes \u003Ccode\u003Eorder_id\u003C/code\u003E as a string once, keep it as a string for all future logs to prevent segment errors.\u003C/li\u003E\u003Cli\u003E\u003Cb\u003EFlatten When Possible:\u003C/b\u003E While we support nested JSON, keeping your most important data points at the \u0022top level\u0022 of your \u003Ccode\u003Eevent_value\u003C/code\u003E makes it even faster to query in the dashboard.\u003C/li\u003E\u003Cli\u003E\u003Cb\u003EType Awareness:\u003C/b\u003E Remember that our segment builder treats \u003Ccode\u003E100\u003C/code\u003E (number) and \u003Ccode\u003E\u0022100\u0022\u003C/code\u003E (string) differently. Ensure your SDK sends the correct data type for accurate filtering.\u003C/li\u003E\u003C/ul\u003E","publish_status":0,"post_type":"Article","authoruid":"3dde8c16-763a-4a2b-ae0b-1d8c50c62e3d","author":{"authoruid":"3dde8c16-763a-4a2b-ae0b-1d8c50c62e3d"},"featured_image_updating":false,"meta_description":"Track and automate user activity with events\u2014real-time records of actions like clicks or purchases\u2014to trigger campaigns and build dynamic segments.","display_toc":true,"has_workingcopy":false,"allow_indexing":true,"sort_order":7,"total_views":287,"date_published":"2026-03-06T22:00:00","date_updated":"2026-10-17T19:24:46.89","date_created":"2026-03-06T20:53:38.013"}}}