[PM-40167] feat: Update billing domain email copy - #8203
Conversation
Refreshes subject lines and body copy for nine billing emails
(license, seat limits, provider payment method, and Families for
Enterprise sponsorship) per the PM-38898 terminology epic. Copy
ships in-place with no feature flag per product decision.
Also removes the unused offerAcceptanceDate parameter from
SendFamiliesForEnterpriseRemoveSponsorshipsEmailAsync, sanitizes
the sponsor org name in offer emails, and fixes the sponsorship
reverting text template referencing a nonexistent {{Date}} property.
ℹ️ Limited Platform familiarityThis PR touches a platform-community area. The Platform team owns this code but does not actively develop it, so a Platform review here may be less authoritative than usual. |
🤖 Bitwarden Claude Code ReviewOverall Assessment: APPROVE Re-reviewed after the Code Review DetailsNo findings at or above the reporting threshold. Notes considered and intentionally not raised as findings:
|
…n-license-subscription-seats-sponsorship-billing
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #8203 +/- ##
==========================================
+ Coverage 63.29% 63.40% +0.10%
==========================================
Files 2401 2401
Lines 104043 104045 +2
Branches 9426 9426
==========================================
+ Hits 65857 65971 +114
+ Misses 35930 35815 -115
- Partials 2256 2259 +3 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
…n-license-subscription-seats-sponsorship-billing
djsmith85
left a comment
There was a problem hiding this comment.
Approving for platform
…er-emails-billing-domain-license-subscription-seats-sponsorship-billing # Conflicts: # src/Core/MailTemplates/Handlebars/FamiliesForEnterprise/FamiliesForEnterpriseOfferExistingAccount.html.hbs # src/Core/MailTemplates/Handlebars/FamiliesForEnterprise/FamiliesForEnterpriseOfferExistingAccount.text.hbs # src/Core/MailTemplates/Handlebars/FamiliesForEnterprise/FamiliesForEnterpriseOfferNewAccount.html.hbs # src/Core/MailTemplates/Handlebars/FamiliesForEnterprise/FamiliesForEnterpriseOfferNewAccount.text.hbs
- PM-42261: render organization names verbatim in the seat limit, Secrets Manager limit, and sponsorship offer email bodies instead of applying [dot]/[at] substitution, matching the subject line - PM-42262: point the provider payment method email at the billing/payment-details route, update the help article anchor, and render plain text links as bare URLs instead of HTML anchors or HTML-encoded ampersands - PM-42264: inherit BaseMailModel so the Secrets Manager machine accounts limit email footer renders the copyright year Also aligns sponsorship offer email test expectations with the PM-41951 copy that shipped on main and won the merge conflict.
9782ff5
🎟️ Tracking
https://bitwarden.atlassian.net/browse/PM-40167
https://bitwarden.atlassian.net/browse/PM-42261
https://bitwarden.atlassian.net/browse/PM-42262
https://bitwarden.atlassian.net/browse/PM-42264
📔 Objective
Refreshes subject lines and body copy for nine billing-domain emails (HTML + text variants) per the PM-38898 terminology epic:
OrganizationNameto the view models viaCoreHelpers.SanitizeForEmail)Additional changes riding along:
offerAcceptanceDateparameter fromSendFamiliesForEnterpriseRemoveSponsorshipsEmailAsync(interface, both implementations, caller, tests)CoreHelpers.SanitizeForEmail, matching the sibling sponsorship-removal email{{Date}}property (previously rendered a blank date); both variants now use{{date ExpirationDate 'MMMM dd, yyyy'}}Notes for reviewers:
vfo1-foundationflag as duplicate V2 templates — that's stale. Nick Krantz confirmed the copy ships in-place with no flag; the ticket AC predates that decision.