Sales and invoicing

Send pay links by WhatsApp/SMS and share a status link

Slice F rounds out the Service Business + Storefront bundle with two customer-facing capabilities:

  1. WhatsApp + SMS pay links — the Send-pay-link flow that used to only email now dispatches over WhatsApp or SMS via Twilio too.
  2. Unified status link — one URL a shop can share ({tenant}.bsensor.app/status/{token}) that resolves to whichever sub-page fits the customer's session type — no need to remember which URL family applies.

Before you start

  • Twilio credentials must be provisioned on the deployment. Ask an administrator to set Twilio:AccountSid, Twilio:AuthToken, and at least one of Twilio:FromWhatsApp (WhatsApp sender in whatsapp:+… format) / Twilio:FromSms (SMS sender in E.164 format).
  • The customer must have a phone number on file on the Customer master OR you can override it at Send time.
  • WhatsApp Business number approval — Twilio's sandbox works for testing; production tenants need an approved WABA number that Twilio provisions after Meta's onboarding.
  • Nothing extra — every session (Slice A shop order, Slice B pay-link SO, Slice C booking, Slice D walk-in) already has a PublicToken. The status link works for any of them.
  1. Open the SO from Sales → Sales Orders.
  2. Click Send pay link.
  3. In the send dialog, pick WhatsApp as the channel (previously the dialog only offered Email).
  4. Confirm the phone number (customer's default, editable).
  5. Confirm and send. Toast confirms with the sent-to number.

The customer receives a short WhatsApp message with the shop's name, the SO reference, the amount due, and a tap-through pay link. Tapping opens their browser at /so/{token} — same page they'd get from email.

Same flow as WhatsApp — pick SMS in the channel dropdown. Body is short enough to fit a single SMS segment for typical shop+doc name combos; longer names still send (Twilio segments transparently) but use more credit.

  1. Open the session or SO or booking on the operator side.
  2. Copy the public token from the URL bar (the guid segment).
  3. Compose https://{your-subdomain}.bsensor.app/status/{token} and share.

The customer opening this link:

  • Shop link session → redirects to /shop/{slug}.
  • SO pay link session → redirects to /so/{token}.
  • Booking session → redirects to /booking/{token}.
  • Walk-in session → shows a compact status card with contact info and asks the customer to reach out to the shop for more info.

Tips

  • WhatsApp is more likely to be read — Nigerian customers open WhatsApp faster than email or SMS. Prefer it as the default channel once your tenant's WABA number is approved.
  • SMS is the universal fallback — customers without WhatsApp still get SMS. Set both FromWhatsApp and FromSms on the deployment so operators can pick per-message.
  • Status link is one URL to rule them all — a shop can print a QR code that points to /status/{token} and swap the sub-page later (e.g. Slice A ships, then Slice D redirects to a richer view) without reprinting.
  • Channel picker hides unsupported channels — the Send dialog only shows channels the resolver can currently handle. If Twilio isn't configured, WhatsApp + SMS won't appear as options.

Common problems

  • "The WhatsApp channel isn't configured for this shop yet" → Twilio credentials missing. Admin needs to set Twilio:AccountSid
    • AuthToken + FromWhatsApp on the deployment. Same fix for the SMS variant with FromSms.
  • WhatsApp message sent but not delivered → the customer's number may not be a WhatsApp user, or Twilio requires them to opt-in to your WABA first (sandbox behaviour). Check the Twilio dashboard for the message status — the SID logged on send is your key.
  • Body arrives with a URL that opens the wrong page → the operator probably shared /shop/{token} when the session was a SO. Share /status/{token} instead; it dispatches correctly regardless of Kind.
  • Status link says "not found" → the token is wrong, the session was cancelled, or the URL was mistyped. Copy the token from the address bar of the session's operator page, not from memory.
  • Walk-in session's status page shows a bare summary card → that's intentional — walk-ins have no customer-facing sub-page in v1. If the customer needs more detail, they should contact the shop.

See it working on your own business

Start a 45-day free trial — no card needed — and follow this guide in your own practice company.