Return Portal
Return Portal
Making returns easy and customizableWe can provide a web deployment of a returns app designed to allow your customers to effortlessly request returns. This document describes the portal's features, how to configure them and how to go about styling this front end.
The concept of the portal is simple;
- The user provides their e-mail and the OrderID of the Order they want to return
- We send out a validation e-mail
- Once validated, the user has access to their order and can enter the return process
Skipping authentication
It is possible to skip return portal's authentication screen when coming from an authenticated session. In order to do so, call GetTemporaryRedirectToken
to fetch a redirect token and navigate as follows:
{returnPortalUrl}?redirectToken={redirectToken}&orderId={orderId}
For example:
returns.on-eva.io?redirectToken=thisissomeredirecttoken&orderId=1234
Note that the token from GetTemporaryRedirectToken
is only valid for 30 seconds.
Configuration
What you need to get started:
- An EVA environment
- A Contentful account
- A deployment for RTP
RTP deployment
Deployments for return portal can be requested at New Black, the URL structure for these is as follows:
URL | EVA Build | RTP Build |
---|---|---|
https://eva-return-portal-{customer}.netlify.app | production | production |
https://test--eva-return-portal-{customer}.netlify.app | production | test |
https://eva-return-portal-{customer}-test.netlify.app | test | production |
https://test--eva-return-portal-{customer}-test.netlify.app | test | test |
Configuration in EVA
Return Portal always initializes on top-level, because from the get-go, we are not sure what organization unit the portal should look at. Because of this, we require you to set a setting on your top-level organization unit: App:ReturnPortal:OU
. In this setting, specify the ID for the actual OU the portal should be looking at. Additionally, we need two Contentful settings.
Setting | Description |
---|---|
App:ReturnPortal:OU | See explanation above. |
App:ReturnPortal:Contentful:SpaceID | Contentful Space to use. |
App:ReturnPortal:Contentful:AccessToken | Contentful Access key. |
App:UseDefaultMagicLinkPage | Whether to use EVA's default MagicLink page. |
CRM:Returns:AutoPlaceOnReturn | Set this to false to enable a summary page before submitting your return. |
Replaced by below setting. | |
Orders:Returns:ReturnFeeUseOriginalOrder | Base the calculated return fee on whatever is configured for the OU in which the original order was placed. |
Configuration in Contentful
In Contentful we manage our styling (theme), assets and translations. We require our customers to arrange their own Contentful space. Our help is required however, when setting up the correct structure within your Contentful space.
Within the Contentful model, we strive to give our fields as descriptive of a name as we can, so it is clear what the fields do.
Theming
We use a predefined set of color variables which you can set to match your brand's styling to make sure the return portal closely resembles whatever web experiences you already provide to your customers. Additionally you can provide you own fonts.
Assets
Contentful is also where we manage the portal's assets, like your logo, favicon and hero image.
Translations
Lastly, we also manage your translations from Contentful. Because translation are prone to changes - we add or restructure (new) pages often, we implemented a system to quickly recognize missing translation values.
The Contentful translation object is constructed of several JSON objects;
- Errors
- LandingPage
- OrderPage
- ReturnOrderPage
- SuccessPage
- Sidebar
- Footer
- MagicLinkPage
If, in any of these objects, a key might be missing, we fall back to the 'path' for that value and display that instead. For example:
In this example, the ButtonText
is missing from the LandingPage
object.
Nullable fields
Some translation keys are suffixed with 'nullable'. These fields can be set to null
to hide the property on the frontend.