-
Notifications
You must be signed in to change notification settings - Fork 4
Cancellation Flow
Following members-data-api/pull/459 we now get a new top level object with key selfServiceCancellation
on our ProductDetail
type, for example...
... which we use to drive the CancellationCTA
component (part of manageProduct.tsx
) which, depending on what we get from the API, shows EITHER...
...OR...
...OR nothing if the sub is already cancelled.
The above CTAs both link to cancellation flow regardless and then depending on selfServiceCancellation
and whether cancellation is configured for the given ProductType
in productTypes.tsx
, it will EITHER show...
-
a
ContactUsToCancel
component which displays contact details (filtered by the properties in the newselfServiceCancellation
from the API) - see manage-frontend/pull/444. User cannot progress from this point, they can only return to account overview. -
OR step '1 of 3' of the self-service cancellation flow, containing...
- the component specified in
cancellation.startPageBody
of the givenProductType
(e.g.membershipCancellationFlowStart.tsx
forPRODUCT_TYPES.membership
) which typically contains some intro text or in the case of membership for example a list of the benefits the customer will miss if they cancel. - the available 'reasons' (as a radio group) with the options specified via
cancellation.reasons
of the givenProductType
(e.g.membershipCancellationReasons.tsx
forPRODUCT_TYPES.membership
) which contains a reason code (used to build the URL for the subsequent steps) but also metadata that can be looked up on the subsequent step(s). - and optionally (based
cancellation.startPageOfferEffectiveDateOptions
and whether achargedThroughDate
is available) a choice of effective dates for the cancellation ('today' or 'end of billing period'[chargedThroughDate
]). This choice is conveyed to the subsequent steps viaCancellationPolicyContext
and currently if the customer chooses 'today' they will be put into 'escalated' mode, which means they won't be able to actually complete the cancellation online, but instead a high priority case will be created in Salesforce (see more about that below).
- the component specified in
IMPORTANTLY the first thing that happens when this step loads is it calls cancellation-sf-cases-api
(see wiki/Proxying-API-Gateway-Lambdas) to create/resume a case in Salesforce to track the users journey through the cancellation flow (the Salesforce ID of the case is available from then on via CancellationCaseIdContext
).
Then if cancellation.flowWrapper
of the given ProductType
is specified (e.g. GW & Voucher use physicalSubsCancellationFlowWrapper
) it will make calls to holiday-stop-api
and potentially delivery-records-api
to check for outstanding credits which will need to be manually refunded. If any are returned then this can put the flow into 'escalated' mode.
Once the above is done, it presents the page itself and based on the reason selected includes...
- some intro copy (which aims to 'save' the customer and prevent cancellation)
- if in 'escalated' mode at this point, and extra paragraph explaining that
- a free-text feedback box (unless
skipFeedback: true
on the cancellation reason metadata), which can be submitted directly via theSubmit feedback
button, which will make a further call tocancellation-sf-cases-api
which updates the 'Description' on the SF case. The free text will still be submitted if the customer clicksConfirm cancellation
(the GA event action will besubmitted
orsubmitted silently
respectively), but we still present the dedicated 'Submit feedback' button on its own in-case the customer wants to explain a problem / vent without actually cancelling.
Not what you're looking for? Be sure to use the navigation sidebar on the right. ➡️