-
Notifications
You must be signed in to change notification settings - Fork 1
Guarantee a 14-day refund window for Direct purchases #30
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,8 +1,8 @@ | ||
| export const DIRECT_SUPPORT_REFUND_TITLE = "Direct purchase refunds"; | ||
| export const DIRECT_SUPPORT_REFUND_BODY = | ||
| "Direct refund requests are reviewed case by case. A refund and cancellation of automatic renewal are separate actions."; | ||
| "You can cancel and request a full refund within 14 days of any Direct payment, without giving a reason. Later requests are reviewed case by case. A refund and cancellation of automatic renewal are separate actions."; | ||
| export const DIRECT_SUPPORT_REFUND_FAQ = | ||
| "Choose “Paddle refund (direct purchase)” in the support form and use the email address from your Paddle receipt. Add the transaction ID and say whether you want a refund only or a refund plus cancellation of automatic renewal. Requests are reviewed case by case. Mac App Store purchases are refunded by Apple."; | ||
| "Choose “Paddle refund (direct purchase)” in the support form and use the email address from your Paddle receipt. Add the transaction ID and say whether you want a refund only or a refund plus cancellation of automatic renewal. Refunds requested within 14 days of a payment are granted without giving a reason; later requests are reviewed case by case. Mac App Store purchases are refunded by Apple."; | ||
|
|
||
| export const HORA_INSTALLATION_FAQ = | ||
| "You can download the Direct edition from horacal.app and choose a plan in the app, install hora from the Mac App Store, or use it through Setapp. Direct includes a 7-day cardless trial before you choose Monthly or Annual."; | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -369,7 +369,8 @@ function validatePricing(document: SiteDocument) { | |
| expectCopy(publicCopy, "7-day", "pricingPage public copy"); | ||
| expectCopy(publicCopy, "cardless", "pricingPage public copy"); | ||
| expectCopy(publicCopy, "no new lifetime", "pricingPage public copy"); | ||
| for (const forbidden of ["14-day", "14 day", "24-hour", "24 hour"]) { | ||
| expectCopy(publicCopy, "14 days", "pricingPage public copy"); | ||
| for (const forbidden of ["24-hour", "24 hour"]) { | ||
| expect(!publicCopy.includes(forbidden), `pricingPage public copy must not promise ${forbidden}`); | ||
| } | ||
| } | ||
|
|
@@ -604,13 +605,15 @@ function validateLegal(document: SiteDocument, kind: "privacy" | "terms" | "refu | |
|
|
||
| if (kind === "refunds") { | ||
| const publicCopy = searchableText(document.body); | ||
| expectCopy(publicCopy, "within 14 days", "refundsPage.body"); | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
A release operator following the repository's manual Sanity instructions cannot satisfy this new requirement: Useful? React with 👍 / 👎. |
||
| expectCopy(publicCopy, "without giving a reason", "refundsPage.body"); | ||
| expectCopy(publicCopy, "reviewed case by case", "refundsPage.body"); | ||
| expectCopy( | ||
| publicCopy, | ||
| "refund and cancellation of automatic renewal are separate actions", | ||
| "refundsPage.body", | ||
| ); | ||
| for (const forbidden of ["14-day", "14 day", "24-hour", "24 hour"]) { | ||
| for (const forbidden of ["24-hour", "24 hour"]) { | ||
| expect(!publicCopy.includes(forbidden), `refundsPage.body must not promise ${forbidden}`); | ||
| } | ||
| } | ||
|
|
@@ -635,6 +638,7 @@ function validateCodeOwnedDirectSupport() { | |
| DIRECT_SUPPORT_REFUND_FAQ, | ||
| ]); | ||
| expectCopy(publicCopy, "direct purchase refunds", "support Direct refund copy"); | ||
| expectCopy(publicCopy, "within 14 days", "support Direct refund copy"); | ||
| expectCopy(publicCopy, "reviewed case by case", "support Direct refund copy"); | ||
| expectCopy( | ||
| publicCopy, | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When a customer follows this FAQ's instruction to use the support form, they still cannot request the promised refund without supplying a reason:
SupportFormlabels the refund details field “Why would you like a refund?”, marks it required with a 20-character minimum (components/organisms/SupportForm.tsx:321-331), and the server schema independently enforces that minimum (lib/support-request.ts:46-52). This makes the advertised no-reason policy impossible to use through the documented refund workflow, so the refund path should make that field optional and avoid asking why for eligible requests.Useful? React with 👍 / 👎.