REDCap advises against using the 3rd option in Step1A of Alerts and notifications (When conditional logic is TRUE during a data import, data entry, or as the result of time-based logic) along with “Only once per record and also on every instance of a repeating instrument” as it will send duplicate alerts based on this warning:


WARNING: It is generally not recommended to use 'Using conditional logic...' in Step 1A together with the option '...on every instance of a repeating instrument' in Step 1C. If these are used together, that means that this alert will be trigger by EVERY repeating instance that is saved for ANY repeating instrument in the project.


We can get around this by using the 2nd option in Step 1A (If conditional logic is TRUE when a record is saved on a specific form/survey) and datediff logic such as:


datediff([formdate], 'today', 'd', 'mdy', true)=0


Where [formdate] is a date field with the @TODAY action tag. This forces the cron job to evaluate the alert and trigger to send.


Next, in Step 2, we tell the alert When to send the alert send based on a date field. So essentially we are triggering the alert “now” but waiting to send it on a future date.


We are also using the Ensure logic is still true before sending notification option to verify the logic is still true before sending. This gives us the ability to cancel sending the alert, if needed. Otherwise, if true, the alert will send at midnight on the date specified in Step 2.


We are also adding logic to send the alert only for the most recent instance of the repeating instrument by adding or [exp_date][next-instance]='' to the logic.


In our example below, we are sending an alert 1 day before an expiration date.


More information on all of the features used in these examples can be found on the Help & FAQ page in REDCap

For additional assistance, please contact the REDCap Support Team