Email workspaceVirtual support welcome contract
Implementation: App\Mail\UserAccountantSubscriptionEmail. Baseline: resources/views/emails/accountant-support.blade.php. Usage: app/Http/Controllers/Billing/AppSubscriptionsController.php:177. Static references are evidence, not proof of current production delivery.
Suggested subject: Welcome to Built Virtual Support! Meet with us (existing). An HTML title does not set the mail header.
Suggested preheader: Explore the support tools, complete your checklist and book a kick-off call.
Placeholder contract
| Token | Existing source / derivation | Handling |
|---|---|---|
| {{logo_url}} | Original Built app_name PNG | Optional deployment override only; concrete public project HTTPS PNG is already present. Approved HTTPS or matching CID. |
| {{preheader}} | Suggested copy above; existing context only | Required escaped text; preserve the existing value. |
| {{customer_name}} | $customerName constructor argument -> user_name view variable; current caller supplies $business->name | Required escaped business greeting. Do not silently map it to $user->first_name. |
| {{support_url}} | Existing literal https://support.built.africa/en/ | Required trusted HTTPS support destination. |
| {{checklist_url}} | Existing literal https://forms.gle/z1KQiLKftjcTDQkW6 | Required trusted HTTPS Google Forms onboarding checklist destination. |
| {{booking_url}} | Existing literal https://cal.com/accountants/start | Required trusted HTTPS Cal.com kick-off booking destination; same value in button and visible fallback. |
Content and integration decisions
- Audience: subscribing user, explicitly queued by the same first-accountant-request branch. Preserve existing accountants service CC and Reply-To headers; do not copy live recipient lists into previews.
- All three onboarding instructions remain visible and separate. Support tools link first, Google Forms checklist second, booking third. Booking is the sole emphasized action; its external Cal.com destination and Google Forms destination are explained.
- Preserve accounting/tax-compliance purpose, dedicated accountant as primary contact, questions/concerns invitation and Client & Services Team sign-off. Copy is shortened without promising new features or deadlines. Reply instructions rely on the existing service Reply-To.
- States: standard and long business/booking reference. No submission status, booked appointment, assigned accountant name or onboarding completion is inferred.
Safe integration
Portable {{placeholder_name}} tokens are not automatically Laravel Blade variables. Prefer an explicitly mapped Blade view within the existing Mailable during later authorized integration; retain the current data, subject/header choices, queue behavior and recipients. No new templating framework is needed. ready/virtual-support.html and .txt are the standalone extracts; every fixture has HTML and text alternatives. No existing plain-text source was found for these five Markdown views; the supplied text alternatives are proposed equivalents.
Escape all dynamic text and attribute values. Validate each URL separately against the exact intended HTTPS host/path, then escape it. A contact email is text, not raw markup. Build admin URLs on the server from existing IDs; do not accept arbitrary externally supplied admin destinations. The shared logo defaults to https://built-storage.ams3.cdn.digitaloceanspaces.com/Built/app_name.png; for deployment host that original PNG over absolute HTTPS or attach it with a matching CID and preserve its aspect ratio. Retain assets/built-logo.png as the original source. Remote-image blocking is still possible.
Button and visible fallback share the same URL where a fallback exists; no legacy duplicate URL field is added. Apart from the explicitly marked accountant-pairing notice and optional contact fallback, all documented values are required. No optional block may leak unresolved tokens. Use one-pass replacement only if retaining portable tokens; do not evaluate inserted text or treat it as raw HTML.
Previews use fictional identities, reserved example.com contacts and inert local action explanations. No signup, booking, form submission or mail send happens in this workspace. Native dark-mode styles are progressive enhancement; browser QA does not establish Gmail, Outlook or iOS Mail compatibility.