Skip to main content

Return Portal

docs image

Return Portal

Making returns easy and customizable

We 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;

  1. The user provides their e-mail and the OrderID of the Order they want to return
  2. We send out a validation e-mail
  3. 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:

URLEVA BuildRTP Build
https://eva-return-portal-{customer}.netlify.appproductionproduction
https://test--eva-return-portal-{customer}.netlify.appproductiontest
https://eva-return-portal-{customer}-test.netlify.apptestproduction
https://test--eva-return-portal-{customer}-test.netlify.apptesttest

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.

SettingDescription
App:ReturnPortal:OUSee explanation above.
App:ReturnPortal:Contentful:SpaceIDContentful Space to use.
App:ReturnPortal:Contentful:AccessTokenContentful Access key.
App:UseDefaultMagicLinkPageWhether to use EVA's default MagicLink page.
CRM:Returns:AutoPlaceOnReturnSet this to false to enable a summary page before submitting your return.
App:Returns:ReturnOnSoldFrom (deprecated)Replaced by below setting.
Orders:Returns:ReturnFeeUseOriginalOrderBase 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.