There are two primary reminder types:
Reminder | Customer type | Scheduling behavior | Customer action |
Pickup reminder | Route regular | Pickup is already scheduled automatically | Reply NO to cancel; no reply is needed to keep the pickup |
Will-call opt-in reminder | Will call | The reminder does not automatically schedule a pickup | Reply YES to request the offered pickup |
Both handlers require the sender to match a known customer. Reply recognition and successful scheduling/cancellation are separate checks.
1. Pickup reminders: “no” replies
Accepted text
Matching is case-insensitive. After trimming leading/trailing whitespace, the message must:
Contain
no,skip, orcancelanywhere; orEqual
normoexactly.
It must also meet all three restrictions:
Fewer than 18 bytes: maximum 17 bytes after trimming.
No
?character.No
yessubstring.
Unlike the will-call “yes” parser, this uses substring matching, with no word-boundary requirement.
Reply | Recognition |
| Matches the negative-reply rule |
| Matches the negative-reply rule |
| Matches exactly; |
| Does not match |
| Rejected by the restrictions |
| Matches because it contains |
| Processed as SMS opt-out before pickup cancellation |
Recommended customer instruction: “Reply NO.” Do not instruct customers to reply CANCEL by itself.
Cancellation conditions
A matching negative reply can cancel the current appointment only when:
Pickup reminder offer cancellations is enabled; its default is enabled.
A pickup reminder was sent within 24 hours.
No other customer SMS or employee-sent SMS intervened after that reminder.
A current appointment exists.
When there are no qualifying orders to deliver, its pickup date is less than 48 hours away. Exactly 48 hours does not pass the check.
The 24-hour reply window and the 48-hour appointment check are separate requirements.
When there is an order to deliver
The handler preserves the appointment and sends the “pickup cancelled, delivery still coming” response. It does not actually cancel the appointment in this branch.
The order check respects the Don’t include orders in delivery list before their due-date setting. This behavior should be considered when troubleshooting a cancellation response that leaves the stop on the route.
2. Will-call opt-in reminders: “yes” replies
Accepted text
Recognized keywords:
Y · YA · YE · YES · YEA · YEP · YUP · YEAH · SI
Rules:
Case-insensitive.
At least one keyword must be a separate token. Spaces and punctuation separate tokens; letters, numbers, and underscores do not.
The entire untrimmed message must be fewer than 18 bytes: maximum 17 bytes.
Extra words are allowed within the limit.
Questions and negation are not interpreted.
Reply | Recognition |
| Matches |
| Also matches; no intent check |
| Does not match |
| Does not match |
Any message of 18 bytes or more | Does not match |
SÍ is listed in the code, but the current parser does not handle it correctly. Use SI.
Scheduling conditions
The customer’s latest outgoing SMS must be a will-call opt-in reminder.
Another outgoing SMS changes that context.
There is no explicit expiration window in this reminder-context check.
Scheduling requires a default address, an applicable route, and an available pickup date.
Late replies still count as “yes.” Booking a later pickup depends on the cutoff and Auto-schedule stop when Yes reply occurs after cutoff setting.
A negative reply to a will-call opt-in reminder does not schedule a pickup. When it matches the negative-reply rule, the will-call handler suppresses the routine customer ticket; it does not itself cancel an appointment.
3. Related reply handling
These are supporting behaviors, rather than additional reminder categories.
Behavior | Requirements |
Optional YES confirmation of an existing pickup | After trimming, maximum 4 bytes; contains |
Initial consent to receive route reminders | Same keywords and 17-byte limit as will-call opt-in. Requires a consent request within 48 hours and consent not already accepted. Runs before will-call scheduling and can consume the reply. |
SMS opt-out | Exact replies |
Length reference
All these limits use PHP’s byte count, not a count of displayed characters.
Ordinary ASCII characters use one byte each.
Emoji and accented characters use multiple bytes.
Negative replies trim surrounding whitespace before counting.
Will-call affirmative replies count surrounding whitespace.
Customer-Facing Explanation (to be copied to the Learning Center):
Route reminders: approved responses
The response depends on the customer’s route preference (regular vs. will call).
Regular route customers: reply NO to skip a pickup
The pickup is scheduled automatically. You don’t need to reply YES to keep it scheduled.
The approved responses that trigger the system to cancel a stop are:
No,
N,
No thanks,
Nope, or
Skip.
Uppercase and lowercase both work.
Responses must be max 17 characters, including spaces and punctuation. Questions such as “No?” won’t be processed as cancellation requests.
Responding CANCEL will unsubscribe the customer from receiving any SMS messages.
Will-call customers: reply YES to request a pickup
The approved responses that trigger the system to cancel a stop are:
Yes, Y, Ya, Ye, Yea, Yep, Yup, Yeah, Yes!, Yes, please, and Si. Uppercase and lowercase both work.
Responses must be max 17 characters, including spaces and punctuation.