Sitecore automation gives marketer a possobility to create marketing workflows which will put user through different states on the website.
The example of automation usage could be registration workflow (registered, confirmed, logged in) or purchase workflow (new order, added products, payment details, purchase complete).
ContactManager contactManager = Factory.CreateObject("tracking/contactManager", true) as ContactManager;
Contact contact = contactManager.LoadContactReadOnly(userName);
return contact;
This method doesn't require initialization of the tracker, which is handy if the state should be changed outside of the site context (for example in the shell).
var stateManager = AutomationStateManager.Create(contact);
automationStateManager.MoveToEngagementState(stateItem.ParentID, stateId);
stateManager.SaveChanges(AutomationManager.Provider);
AutomationMetadataProvider automationMetadataProvider = Assert.ResultNotNull(Factory.CreateObject("automation/metadataProvider", true) as AutomationMetadataProvider);
var context = AutomationManager.Provider.GetAutomationContext(ID.Parse(contact.ContactId));
context.Enroll(fromStateItem.ParentID, ID.Parse(fromState), automationMetadataProvider.CalculateWakeUpDateTime(ID.Parse(fromState), DateTime.UtcNow), null);
AutomationManager.Provider.SaveAutomationContext(context);