The product configuration is available in the client.webapp.products.productDescription
Type ID. To create a new product, copy, paste, and edit the example configuration code within a new productDescription
configuration section. There is one productDescription
section per product.
{ // The following are product descriptions. "product_id": "chk_platinum", "name": "productName_chk_platinum", "title": "productTitl_chk_platinum", "bankAccount": "000000", "discDocs": [], "configRef": "client.webapp.customImages.01", "overdraftOptions": true, "benefits": { "title": "productBeTi_chk_platinum", "benefits": [ "productBe01_chk_platinum", "productBe02_chk_platinum", "productBe03_chk_platinum", "productBe04_chk_platinum", "productBe05_chk_platinum", "productBe06_chk_platinum" ] }, "requirements": { "title": "productReTi_chk_platinum", "requirements": [ "productRe01_chk_platinum", "productRe02_chk_platinum", "productRe03_chk_platinum" ] }, "footer": "productFoot_chk_platinum", // The following are product attributes. "isRequired": false, "isDefault": true, "isHidden": false, "courtesyPay": false, "OLBEnroll": false, "product_type": "dda", "isJointNotAllowed": true, // The following are funding attributes. "isFunding": true, "funding": { "types": [ "ACH" ], "default_funding": 100, "min_funding": 50, "max_funding": 1000 } }, // The following are age attributes. "ageRules": { "minAge": 18, "minAgeJoint": 13, "maxAge": 18, "maxAgeJoint": 65, "needJointIfLessThan": 18 }
The product description portion of the product configuration sets the look and the description text for each product. The diagram below shows how each of the keys relates to the presentation of the product.
The value in the client.webapp.products.productDescription
is a reference to the client.custom.messages.en
key. Refer to the section on User message text in this document for more information on changing message text configurations.
JSON Attribute |
Description |
Sample Value |
---|---|---|
|
The Product ID is the system identifier for the product. The product ID is used throughout the configuration and is also passed into the URL string to pre-populate that product in the shopping cart. The Product ID could be a meaningful name or a numeric value. The product ID should have no spaces. |
|
|
The Product Name is the name of the product that appears in the shopping cart. Define the name of the text key here. |
|
|
The Product Title appears in the heading in the product detail page. The value of this key/value pair defines the name of the text key that will store the text that will be presented. |
|
|
You can define the name of the text key in the "list of benefits". All keys in the list of benefits will appear as a bullet point. The value of this key/value pair defines the name of the text key that will store the text that will be presented. |
|
|
The benefit title is the summary description or preface of the benefits. The value of this key/value pair defines the name of the text key that will store the text that will be presented. |
|
|
The requirements section is where the eligibility details appear. |
|
|
The requirement title is the summary description or preface of the requirements. |
|
|
The footer is the place where a financial institution can input any further information regarding a product. |
|
The product configuration allows you to define the message keys for each of the products. To set or edit the values of the message keys, please see the section on User message text in this document.
The funding attributes allow you to set and define the parameters around how a product can be funded. To access these configurations, go to the advanced configuration Type ID client.webapp.products.productDescription
.
JSON Attribute |
Description |
Sample Value |
---|---|---|
|
If set to |
|
|
The dollar amount that is pre-populated for a product on the funding screen |
|
|
The minimum dollar amount required to fund a product |
|
|
The maximum dollar amount required to fund a product |
|
To limit a product to a certain type of funding, find the product in the same client.webapp.products.productDescription
and add the applicable funding types from the client.workflow.app.funding.options
(the options are generally ACH, card
, and cash | fundLater
). For example:
"funding": { "types": [ "ACH" ], "default_funding": 100, "min_funding": 50, "max_funding": 1000 }
There are two final values that can be set to reflect your overall minimum and maximum funding amounts. These limits are set for the overall shopping cart total. To access this configuration, navigate to client.webapp.custom.properties
and change the following values:
"maxFundingAmount": 1000, "minFundingAmount": 5
JSON Attribute |
Description |
Sample Value |
---|---|---|
|
This is the minimum funding amount across all products combined in the shopping cart. |
|
|
This is the maximum funding amount across all products combined in the shopping cart. |
|
The age restriction data structure places age-based constraints on a product. This is typically used for products targeted to minors. The configuration found below in the client.webapp.custom.properties
can be configured to reflect your financial institution's desired age.
"minimumAgeProductXA": 18,
The age rules are part of the overall product configuration. To add an age rule, copy and paste the text below and add to the configuration for the product that you desire to update in the client.webapp.products.productDescription
. For example, here is a configuration and value set:
"ageRules": {"minAge": 18, "minAgeJoint": 14}
JSON Attribute |
Description |
Sample Value |
Error Key Message |
---|---|---|---|
|
The applicant must be the same age or older than the value configured here to be eligible. If the applicant does not meet these criteria, an error message will be displayed on the identification screen. |
|
|
|
An applicant must be younger than the max age to be eligible to apply for this product. If the applicant does not meet these criteria, an error message will be displayed on the identification screen. |
|
|
|
Requires that the joint applicant meet the configured age requirement. If the applicant is younger than the age configured here, an error message will be presented on the joint identification screen. |
|
|
|
Requires that the joint applicant meet the configured age requirement. If the applicant is older than the age configured here, an error message will be presented on the joint identification screen. |
|
|
|
If the applicant's entered birthday makes them younger than the age configured, the applicant will be required to have a joint on the application. An error message will be presented on the identification screen when the applicant provides a birthdate and does not have a joint applicant. |
|
|
Funding limits can be set by payment method to allow more control over how products are funded. This can allow for a payment type to be restricted to a certain minimum, maximum, or default funding. To access these configurations, go to the advanced configuration Type ID client.workflow.app.funding.options.
"ACH": { "channels": [ "web", "native" ], "label": "bankTransfer", "funding": { "min": 25, "max": 10000, "default": 25 }
For the specific payment method, enter this configuration and tailor the amounts to your financial institution's needs ("max" is most likely the only value that will be necessary to set here):
The set limits allow for different error messages to display in the workflow based on the funding configuration and the funding type. Below is a table describing min
, max
, and default
funding limits:
JSON Attribute |
Description |
Sample Value |
---|---|---|
|
This is the maximum funding amount that will limit the specified funding type |
|
|
This is the default funding amount that will limit the specified funding type |
|
|
This is the minimum funding amount that will limit the specified funding type |
|
You can configure payment methods to be offered based on the user workflow (unauthenticated existing member, authenticated existing member, or unauthenticated new member) or on the channel used to access Gro (the web application or the native iOS application (available for in-branch account opening).
To access this configuration, navigate to the client.workflow.app.funding.options
. Below is sample configuration of all the restrictions that your financial institution can leverage. You can add this configuration information to a specific payment method to enable available workflows or channels.
"channels": [ "web", "native" ], "flows": [ "unauth", "existing", "auth" ],
The available fields in the channels
array are as follows:
Message value |
Description |
---|---|
|
Setting this configuration in the |
|
Setting this configuration in the |
The available fields in the "flows"
array are as follows:
Message value |
Description |
---|---|
|
Setting this configuration in the |
|
Setting this configuration in the |
|
Setting this configuration in the |
You can configure products, like payments, to be offered based on the user workflow (unauthenticated existing member, authenticated existing member, or unauthenticated new member) or on the channel used to access Gro (the web application or the native iOS application (available for in-branch account opening).
To access this configuration, navigate to the client.webapp.products.productDescription
Type ID. Below is sample configuration demonstrating the restrictions that your financial institution can leverage. You can add this configuration information to a specific product to enable available workflows or channels.
"channels": [ "web", "native" ], "flow": [ "unauth", "existing", "auth" ],
The available fields in the channels
array are as follows:
Message value |
Description |
---|---|
|
Setting this configuration in the |
|
Setting this configuration in the |
The available fields in the flow
array are as follows:
Message value |
Description |
---|---|
|
Setting this configuration in the |
|
Setting this configuration in the |
|
Setting this configuration in the |
There are additional product attributes that define the behavior of the products:
JSON Attribute |
Description |
Sample Value |
---|---|---|
|
If set to true, the applicant will be presented a checkbox to opt into overdraft on the "Almost Done" Page |
|
|
If set to true, the product cannot be dismissed from the shopping cart |
|
|
If set to true, the product can be dismissed from the shopping cart, but is automatically placed by default in the shopping cart. |
|
|
If set to true, the product will not be an option to add in the shopping cart, but will still be accessible through URL parameters |
|
|
If set to true, the product will take on the characteristics of an HSA product, if all configurations are correctly set (authorized users, single/family plan, etc – only if contracted). |
|
|
If set to true, the product is hidden by default, but can be shown as an offer later in the application process (at the time of decisioning – only if contracted). |
|
|
This indicates the type of product and is created in the |
|
|
If set to true, the product will not have the add joint button displayed. Note: if a product is added with this set to true and other products added are set to false, the joint button will not display. |
|
|
A list of document IDs that will be sent to the applicant as disclosures when this product is added to the shopping cart |
|
|
This indicates what Type ID an image for a specific product is coming from. To find this image, please navigate to the Actual file image size needs to be less than 100 KB. JPG and PNG files only. |
|
This configuration can be used to change the verbiage on Select Product(s) on the Product List drop down and to specify whether the Add Product dropdown should be placed at the top or the bottom of the page.
JSON Attribute |
Description |
Sample Value |
---|---|---|
|
|
|
|
|
|
This configuration can be used to ensure that: no additional products can be added to the cart when a user has the configured product in the cart.
-
If a user puts the configured product in the cart, no other products can be added ; and
-
The following error appears
"{0} (PRODUCT_NAME) cannot be included while opening other deposit products. Use the back button to return to the cart."
JSON Attribute |
Description |
Sample Value |
---|---|---|
|
|
|
|
|
|
This configuration can be used to limit the number of products allowed in the shopping cart. By default, this will be false
which means no restrictions will apply.
JSON Attribute |
Description |
Sample Value |
---|---|---|
|
|
|
|
|
|
Q2 Gro has added a standardized debit card response page to the application page flow. Previously, FIs needed to manually create this page using a custom page, custom questions, and custom configuration. Now, FIs can use Gro's standardized page to capture responses to debit card questions.
To enable this feature, make the following configuration changes in the indicated Type IDs.
{ "id": "debitCardQuestions", "headerLabel": "debitCardPageLabel", "nextButtonLabel": "next", "products": [ "chk_platinum", "chk_student" ], "location": "#debitCardQuestionsPage", "backButton": true, "defaultFields": [ "wouldYouLikeADebitCard", "wouldYouLikeADebitCardJoint" ] }
{ "id": "wouldYouLikeADebitCard", "label": "wouldYouLikeADebitCardLabel", "defaultValue": false, "type": "checkboxDouble", "errorMsg": "", "display": "vertical", "required": true, "showFields": { "true": [ "wouldYouLikeOverDraftTransfer" ] } }, { "id": "wouldYouLikeOverDraftTransfer", "label": "wouldYouLikeOverDraftTransferLabel", "defaultValue": false, "type": "checkboxDouble", "errorMsg": "", "display": "vertical", "required": true }, { "id": "wouldYouLikeADebitCardJoint", "showIfJoint": true, "header": "wouldYouLikeADebitCardHeaderJoint", "label": "wouldYouLikeADebitCardLabelJoint", "defaultValue": false, "type": "checkboxDouble", "errorMsg": "", "display": "vertical", "required": true, "showFields": { "true": [ "wouldYouLikeOverDraftTransferJoint" ] } }, { "id": "wouldYouLikeOverDraftTransferJoint", "label": "wouldYouLikeOverDraftTransferLabelJoint", "defaultValue": false, "type": "checkboxDouble", "errorMsg": "", "display": "vertical", "required": true }
"debitCardPageLabel": "Debit Card", "wouldYouLikeADebitCardLabel": "Please confirm that you'd like us to mail you a debit card. It's an easy way to access your funds and make purchases. I would like to receive a debit card for use with my new checking account.", "wouldYouLikeOverDraftTransferLabel": "Would you like overdraft transfer plan added?\n\nBy checking “Yes” that you would like overdraft transfer plan added and signing this Overdraft Transfer Plan Request and Designation by checking “Yes” below, I request that FI NAME honor transactions that would overdraw my FI NAME checking account including Automated Teller Machine (ATM) withdrawals and debit card transactions by initiating a transfer of the necessary funds from my savings account and agree that such transfers are subject to the terms, conditions and limitations.", "wouldYouLikeADebitCardHeaderJoint": "<br><strong class='font-size: 20px;'>For Joint Applicant:</strong>", "wouldYouLikeADebitCardLabelJoint": "Please confirm that you'd like us to mail you a debit card. It's an easy way to access your funds and make purchases. I would like to receive a debit card for use with my new checking account.", "wouldYouLikeOverDraftTransferLabelJoint": "Would you like overdraft transfer plan added?\n\nBy checking “Yes” that you would like overdraft transfer plan added and signing this Overdraft Transfer Plan Request and Designation by checking “Yes” below, I request that FI NAME honor transactions that would overdraw my FI NAME checking account including Automated Teller Machine (ATM) withdrawals and debit card transactions by initiating a transfer of the necessary funds from my savings account and agree that such transfers are subject to the terms, conditions and limitations."
Within the pageFlow
, pageFlowAuth
, pageFlowNative
, andjointFlowOverride
sections, insert the debitCardQuestionsPage
into the workflow, as show below.
"pageFlow": { ... "#privateInfoPage": "#employmentPageApp1", "#employmentPageApp1": "#debitCardQuestionsPage", "#debitCardQuestionsPage" : "#almostDonePage", "#almostDonePage": "#walletQPage", "#nativeAlmostDonePage": "#walletQPage", ... }, "pageFlowAuth": { ... "#privateInfoPage": "#employmentPageApp1", "#employmentPageApp1": "#debitCardQuestionsPage", "#debitCardQuestionsPage": "#almostDonePage", "#collectProductInfoPage": "#privateInfoPage", ... }, "pageFlowNative": { ... "#verifyPhonePage": "#NATIVEPage", "#employmentPageApp1": "#debitCardQuestionsPage", "#debitCardQuestionsPage": "#almostDonePage", "#NATIVEPage": "#collectProductInfoPage", ... }, "jointFlowOverride": { "#validateInfoPageApp2": "#privateInfoPage", "#validateInfoPage": "#validateInfoPageApp2", "#debitCardQuestionsPage": "#almostDonePage", "#privateInfoPage": "#privateInfoPageApp2", "#privateInfoPageApp2": "#employmentPageApp1", "#employmentPageApp1": "#employmentPageApp2", "#employmentPageApp2": "#debitCardQuestionsPage" }