Back to Help Center
Inbox & follow-ups·Setup5 min read

Customer Hub: documents, in-portal reply, privacy

The /c/[token] portal has a doc vault you upload to, a Reply Here composer the customer types into, and a privacy card where they can export everything or request deletion. Here's how each piece works + how to approve a deletion.

The customer portal at /c/<token> started as a read-only page (quotes, receipts, current case). It now has a real two-way surface: you upload documents the customer can download, the customer can reply through the portal instead of email, and they can export everything you hold on them or request deletion. This is how each piece works.

1. Documents you share with the customer

Owner-side: open a customer's admin page (/customers/<id>) → Documents panel. Upload a file (contract, gallery zip, before/after photos, invoice PDF, anything up to 50 MB). Add an optional label so the customer knows what it is.

Customer-side: the Files for you card on /c/<token> lists every doc you've uploaded. Tap a row → short-lived signed URL → download. The customer can't upload back (yet) — this is one-way owner-to-customer in v1.

Files are stored in a private Supabase Storage bucket, scoped to your org via RLS. Deleting a doc from the admin panel deletes the storage object + the row immediately.

2. In-portal reply

If the customer has a current active case, the portal shows the message thread as chat bubbles + a Reply Here composer at the bottom. They type, they send. The reply lands in your inbox as an inbound message tagged channel: portal, and the case auto-flips back to Open so it shows up in Needs Reply.

This is huge for customers who can't find your last email or don't want to dig through their messages — they tap the portal link from any past branded email and reply right there.

The inbox shows portal-channel messages with their own pill so you can tell at a glance whether they came in via email, WhatsApp, or the portal.

3. Customer data controls (privacy)

The portal's Your privacy card gives the customer two affordances:

Export

Tap Download my data. The portal generates a JSON file with everything you hold:

  • Customer profile (name, email, phone, preferences)
  • All inquiries (subject, status, dates)
  • All messages on those inquiries
  • All quotes (title, line items, totals, status)
  • All payments
  • All referrals they sent
  • All documents shared with them

Download is immediate (Blob in the browser — no server round-trip). Good for "I want to leave" or "I want to send my notes to another vendor."

Deletion request

Tap Request deletion. A customer_data_requests row gets queued with status pending. The customer sees a "deletion in progress" badge so they don't keep re-submitting.

Owner-side: a coral banner appears at the top of the customer's admin page. Approve is owner-only (gated by canDeleteWorkspace). On approve, Yesoma deletes:

  • The customer row (cascades to nothing — inquiries are ON DELETE SET NULL)
  • All their inquiries explicitly (so the records don't stay around with the customer_id nulled)
  • All message attachments from storage
  • All customer documents from storage

This is a real delete, not a soft-flag. The customer is gone, the storage is gone.

If you'd rather hold + dispute (say, you have an active dispute or tax records to keep), don't approve. Discuss with the customer offline. The pending request stays in your inbox until you decide.

4. Loyalty + preferences

Two more portal pieces worth knowing about:

  • Loyalty pill — trailing-365-day won-case count drives a "3rd visit this year ✨" / "VIP" pill in the portal header. Industry-aware (a salon's threshold for VIP is different from a wedding photographer's).
  • Preferences textarea — the customer can write notes for you on the portal ("allergies", "preferred stylist", "pets at home", "key location"). Read-only on your admin side; the customer fully controls it.

5. What the customer can't do (yet)

  • Edit a quote
  • Cancel an appointment
  • Pay through the portal (Yesoma doesn't process payments — see Send quotes & get paid via invoice)
  • Upload files to the owner (one-way only in v1)

6. Turning the whole portal off

Settings → BrandingCustomer portal card → toggle. When off, /c/<token> URLs return 404, the email footer drops the portal link, and the Share Portal button hides. Existing tokens stay valid if you re-enable later.

Common questions

Can two customers share a portal link? No — each customer's token is per-row + unique. The token IS the auth, so sharing it = sharing access.

What if a customer signs up for Yesoma themselves later? Their portal stays the same. Yesoma doesn't link the portal token to an auth user; the token is the capability.

How do I delete a document I uploaded by mistake? Customer admin page → Documents panel → trash icon next to the row. Deletes the storage object + DB row immediately. Customer's portal updates on next page load.

Will the customer see this article? No — /help is for owners. Customer-facing copy is the portal itself.

More in Inbox & follow-ups

Was this article helpful?

If something was unclear or missing, tell us and we'll fix it.

Still stuck?

We'll help you get this working. Send us a message, or ask about Managed Setup.