Reminder triggers — what fires a reminder

A reminder only sends when there's a due date to fire from — here's where each type pulls its date

OwnerManager

Pistonlog's reminders are event-scheduled, not date-scanned. When a meaningful event happens (a jobcard is completed; an appointment is created), Pistonlog inserts a reminder_logs row for each applicable template with its scheduledDate set to (due_date − countdownDays). The daily cron then sends every row whose scheduledDate has passed and that hasn't been sent yet (rows more than 14 days overdue, e.g. after an outage, are marked skipped rather than sent late).

When reminders are scheduled

EventWhat gets scheduled
Jobcard completedOne row per matching MOT / Service / Timing-Belt template, using the per-job reminder intervals you set on each job
Appointment createdOne row per matching Appointment template, using the appointment date

Setting an MOT date on a vehicle by itself does not schedule reminders — scheduling only happens when a jobcard with an MOT job is completed.

What "matching" means

A template matches when its reminderType and the event align — e.g. an MOT template only schedules against an MOT-flagged job at jobcard completion.

If reminders aren't firing

Was the triggering event captured?

For MOT/service/belt reminders, the scheduling happens at jobcard completion, and only for jobs tagged with the matching job type. If the job wasn't tagged MOT/Service/Timing Belt before completion, no reminder was scheduled (the interval itself defaults to 12 months if you didn't change it). Jobs marked declined, postponed, or recommended are also skipped, since the work wasn't carried out. Note the trigger only fires when the jobcard moves into a completed status from a non-completed one.

Does the template exist for this type?

Inactive templates don't schedule. Verify the template exists and is enabled in Workshop Settings → Reminders.

Did the (private) customer opt out?

Individual customers can be marked contactByEmail: false or contactBySms: false and they're then excluded from the relevant channel. (Business contacts don't have these flags — they always receive on whichever channel they have an address for. Business routing is controlled by the per-contact reminder opt-ins instead, see Fleet reminders.)

Check the logs

Every scheduled and attempted send is recorded in Reminder logs with its status.

Why pre-scheduling and not a date scan

A date scan ("every day, find every vehicle whose MOT is in 30 days") would be simple but brittle — it'd miss the intent of when you, the operator, completed the job. Event-scheduling captures the workshop's view of "this is now eligible for a reminder" at the moment of completion, which gives you a stable record in reminder_logs that you can inspect, edit, or cancel before it actually sends.

Related

Was this article helpful?