So lets start with what Salesforce can do out of the box - not a lot. We have recurring tasks but these create on a recurring time frame regardless of if you need or want them.
Its a common request to 'keep in touch' with customers (accounts) and to make sure my clients are not being forgotten about. But do I really want to be reminded to get in touch when I am logging activity against my clients all the time - no of course not - this is when tasks are ignored and they lose their value and importance!
So...I created a solution using process builders that lets me monitor activity across every account and to issue 'get in touch' tasks to any account that drops out of contact with the record owner after more than a defined number of days has passed.
Ok, so let's do this...
First off we know we want to issue these tasks after a certain number of days where no communication has been logged but we don't have a time frame in mind, and NO SIR we do not want to clone those process builders and update any formula fields every time we want to change this!!! So go ahead and create a custom label like the one below and give it any small value for now.
You will need three fields on the account record to drive this process...and another on the activity that I will cover later...
So you're wondering "why does it say 'Last Loyalty Eligible Activity' there?" - its because this process only measures certain activities, for example it cares when the sales person calls the client but not when an inbound call to customer care is recorded. Because we care about reaching out more - but you can also just run this process off of 'LastActivity' if you don't want to be specific about activity types in your process - its up to you.
This process if triggered will create our task. It will also update a checkbox on the record to signify that there is an active reminder in place on the record. The field updates are pretty self explanatory - and the criteria is pretty simple too.
Below is the short formula for the first value and also the conditional logic for the statement;
[Account].Last_Loyalty_Eligible_Activity__c [Account].Last_Loyalty_Eligible_Activity__c [Account].Current_Keep_In_Touch_Task_Active__c [Account].Current_Keep_In_Touch_Reminder_Active__c
TODAY() - VALUE($Label.Loyalty_Recurring_Task_Duration_Days)
(1 OR 2) AND 3 AND 4
So now we need something to trigger this;
This process, when triggered throws a field update into the future queue - the idea being that there is always a future task in the future queue for every single account, and that action is always being pushed out because you're ideally in-touch with the customer - until you're not. That's when this field update fires and we trigger our previous process off which creates the reminder.
First the 'follow up task' criteria, this is also very simple;
Then we 'reset the account' as an immediate action;
And we have a tiny flow that we use to auto close (complete) the reminder for us when we do log an activity (otherwise without this these tasks are going to get pretty tedious!) We just pass the account id into this and set to complete the first reminder we find (there should only be one so it can be this simple).
Then we move to our scheduled action where we want to update the account record.
Remember we didn't want to hard code the 'keep in touch' period - so create a custom field (date) on the task (in activities) I called mine 'Access Next Recurring Task Date' and use the below formula for it.
CreatedDate + VALUE($Label.Loyalty_Recurring_Task_Duration_Days)
Make sure your job runs 1 day after this date, we want to give the full number of days to complete the activity and then trigger the reminder as we enter the new day.
We're done! - so what does this look like? And do I have to do anything else now?
This setup means that if you have a 'get in touch reminder' created it sits there till you eg. log a call. This closes the reminder but also queues up a future field update that will create another task reminder if you fail to contact the customer. The rest you can work out 😉.
To bring accounts into the process use dataloader to update the new field
[Account].Current_Keep_In_Touch_Reminder_Active__c = true (recommend batch size 1 and limited quantities to test!)
Then check your future jobs queue (setup > flow > bottom of the page) to check you have future jobs in there; you should!!
Now those accounts are bulk enrolled into this process - otherwise accounts will only be entered into the process when a task is created against the record 'organically'.
Package Link - coming soon
I hope you found this post useful!