A text-receipt button the venue could not honour
The till offered to text a receipt on every deployment, including ones with no way to send a text. The button now appears only where a text can actually go.
Finish a sale on the till and the receipt sheet offers the ways to hand the receipt over: print it, email it, or text a link to the guest’s phone. The tester tapped Text receipt, typed a number, and was refused. Not because the number was wrong, but because the deployment they were testing on has no way to send a text at all. The button was there on every installation of the product whether or not anything behind it could do the job.
That is a small finding with a general shape: a control that promises something the system cannot deliver, and only says so after you have done the work of using it. The guest is standing at the counter while the staff member types their number, so the refusal arrives at the worst possible moment and reads as the till being broken.
Offered only where it can happen
Whether a deployment can text is something the server knows, because sending needs a messaging provider configured on the platform side. The settings the till loads at start now carry one more fact, whether texting is ready, and the receipt sheet draws the text option only when it is. Where it is not, the option is simply absent, and the sheet offers print and email, which always work.
One detail was worth getting right. A till that loaded its settings before this change has an older payload with no such flag in it. The rule reads an absent flag as yes, so a venue that can text is never hidden from the button by a stale cache; only an explicit no removes it. The failure mode we were willing to accept is the old one, a refusal after the fact, for the handful of tills that had not refreshed yet, rather than a working venue losing a feature.
The honest state of texting
For the record, because this site has a rule about it: no deployment of ours has a messaging provider configured today, so no text has ever been sent from the product. The route exists and is tested with the provider replaced by a fake. Until a real provider is connected, the button does not appear anywhere, which is the point. A feature you cannot use should not be on the screen asking to be used.