Skip to main content

Route Reminder Allowed Replies

Allowed Replies for text messages.

C
Written by Cris Ellis

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, or cancel anywhere; or

  • Equal n or mo exactly.

It must also meet all three restrictions:

  • Fewer than 18 bytes: maximum 17 bytes after trimming.

  • No ? character.

  • No yes substring.

Unlike the will-call “yes” parser, this uses substring matching, with no word-boundary requirement.

Reply

Recognition

NO, No!, No thanks, Nope, Skip, Skip this week

Matches the negative-reply rule

Cancel pickup

Matches the negative-reply rule

N, MO

Matches exactly; MO is explicitly supported by the code

N!, MO!, Nah

Does not match

No?, No, yes

Rejected by the restrictions

Not now

Matches because it contains no; the parser does not interpret intent

CANCEL by itself

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

YES, Yes!, Yes, please

Matches

Yes?, Not yes

Also matches; no intent check

yesterday, yes123, yes_please

Does not match

OK, Sure

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 yes or equals y, case-insensitively. Requires a pickup reminder within 24 hours, with no intervening customer SMS or employee-sent SMS. Examples: YES, Yes!, Y.

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 STOP, STOPALL, UNSUBSCRIBE, CANCEL, END, or QUIT, ignoring case and surrounding whitespace, are handled before reminder responses.

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.

Did this answer your question?