I have done this in SPD by looping through the list once a day. Create a workflow that loops through each item in the list, and sends each email based on the date and then goes to sleep for 23 hours and 49 minutes.
Create another workflow for sending notifications, you can store the date when the first reminder was sent and can configure notification workflow to run everyday check when first reminder was sent if it was 3/5 days ago as per your choice, you can send a second reminder.
You can code a long running workflow that hits trigger points, or use a state machine to manage where in the process it lies. How difficult or cumbersome this is will depend on your particular version of SharePoint. If you are on 2013 - then 2013 workflows build thru VS work well for long running processes.
If you are on 2010 or 2007 than I would avoid ...
You can try setting up your flow like this:
After a new item is added, initialize two variables (ReminderDate and NextReminder) that holds the initial value addDays(triggerBody()?['Created'],14).
Then, add a Control Action of type Do until with a test on your status column ("Balance equal to 200" in my example). Note that this field should be from the ...
The built-in alert only alerts users who have subscribed to alerts on a list. If your account has sufficient priveleges, you can programatically set up alerts for other users, but those alerts still won't be conditionally based on a date field, it would just alert when an event is created or modified.
If you are using SharePoint Online, the easiest way to ...
Create SharePoint 2013 platform workflow, this workflow can loop and will follow this pattern:
The workflow has a Loop, and inside of the loop, an email Action and a Pause Action. This example loops forever.
You can use the Pause until action in the workflow to send the reminder email every month.
Here is the basic idea of the workflow.
Pause until Date – set the date to the NextReminderTime field of the current item.
Send an Email – send the email as required.
Update List Item – set the date in your calculated column for the nextReminderDate
This is very basic requirement and here is to give you generic idea on how to implement.
Assuming you are on SharePoint online.
There are 2 options
Option 1. Create Microsoft flow with re-occurrence every day on timing like 9 AM, 4 PM and 6 PM, you need to implemented all your custom logic in flow to send on basis of your conditions like status is pending, ...
Create a flow that uses a timer as its trigger, and schedule the timer for once a day. After the trigger fires, have an action that gets the list items, filtered for the ones that need a reminder, and process those through a loop, sending the emails. Here is a microsoft doc that will walk you through the process of triggering a flow based on a schedule.
'Pause until' is unreliable and times out if the waiting period is long - this is what I have read, rather than experienced personally.
There are some good posts on this site already addressing this question & some answers that you might find useful - link1 and link2.
Possible alternative configuration
If it's a one-off task and the Reminder Date will ...
I may have to write in a parallel stage with the "Wait for change" action for Due date and the "Pause until" action until due date. Afterwards, you can determine if the change was made and go back to Stage 1 and wait again, or move onto the next stage.
You can write a workflow that runs on edit, pauses 24 hours, check conditions, and send a reminder. Then reset a flag which "edits" the item, relaunching the workflow. It's not the most reliable method, and you don't want to do this if you'll have large numbers of items this is running on. But with wss 3.0 you're fairly limited.
For that you need to create a site workflow. It will not be dependable on list items. Then you run it on schedule once a year. http://www.documentmanagementworkflowinfo.com/sharepoint-2013/sharepoint-designer-2013-create-start-site-workflow.htm
Your best choice would be to write a timer job. But if you can't, you could write a workflow that runs on create and on change. You would get the last modified date, pause until the day you want it send, send an email, and then restart the workflow.
To get a string representing day of week: Copy 2 characters from start of [Modified Date (as Long Date)] ...