public void OnItemCreated(object sender, EventArgs args)
        {
            var eventArgs   = Assert.ResultNotNull(args as SitecoreEventArgs);
            var createdItem = (eventArgs.Parameters[0] as ItemCreatedEventArgs)?.Item;

            if (createdItem == null ||
                createdItem?.TemplateID != Templates.MeetupInfo.ID ||
                Sitecore.Publishing.PublishHelper.IsPublishing())
            {
                return;
            }

            var planId = Guid.NewGuid();
            var plan   = new AutomationPlanDefinition(
                id: planId,
                alias: $"{createdItem.Name} meetup",
                culture: CultureInfo.InvariantCulture,
                name: "Welcome new user plan",
                createdDate: DateTime.UtcNow,
                createdBy: Sitecore.Context.GetUserName() ?? "[Background]")
            {
                ReentryMode = AutomationPlanReentryMode.Single,
                Description = $"A campaign plan for {createdItem.Name}",
                EndDate     = DateTime.Now.Date.AddYears(1)
            };

            // TODO: think about god engagement plans. https://doc.sitecore.com/developers/93/sitecore-experience-platform/en/automation-plans.html

            using (new EditContext(createdItem, SecurityCheck.Disable))
            {
                var meetupInfo = new MeetupInfo(createdItem);
                meetupInfo.EngagementPlanReference.SetValue(planId.ToString(), force: true);
            }

            _automationPlanManager.SaveAsync(plan, activate: true);
        }