Compliance regulations are changing fast, and growing in complexity and scope. In addition, users have come to expect from brands a high level of transparency and control over their user data. Companies that fail to address this, and to supply their users with a clear flow for agreeing to the way their data is handled, risk customer abandonment and heavy fines. Gigya helps you comply with the increasingly complex legal requirements around user data privacy. The Consent management dashboard allows you to create and manage versions of different types of user consent regarding user data and privacy.
While Gigya offers a full suite of solutions designed to help clients comply with applicable data privacy laws, it is the clients' responsibility to comply with its obligations under such data privacy laws. Please consult with your legal team regarding such data privacy laws prior to implementation of the Gigya suite of solutions.
Watch an Instructional Video
If you have an SAP logon, you can watch the following instructional videos:
About Consent Statements
Gigya offers configuring three types of consent statements:
- Terms of service: it is mandatory for users agree to these terms in order to enjoy your site or app's services,
- Other consent statements: these can be configured to mandatory or not.
Present consent statements on lite and full registration screens, as a prerequisite for receiving site services. The consent statement can be displayed in a local language, and may include the reason why personal data is being collected (Purpose), and a link to the document to which they are agreeing. User consent is captured and saved in the consent vault, including consent for mandatory terms, non-mandatory terms, and communication preferences.
In addition, privacy regulations require that you enable users to access and review the agreements that they have signed when they registered to your site, and withdraw their consent from agreements that are not a prerequisite for using your site services.
Therefore, assuming that you are using Gigya's RaaS screens, it is highly important that you add to all the following screens a separate checkbox for each of the relevant statements:
- Registration Completion
Validating the User's Consent Status
Consent management includes a built-in mechanism for ensuring that users who are logged in to your site, have a valid consent in place to the relevant mandatory statements. For example:
- A new user registers to your site but does not agree to the terms of service. The user will not be able to submit the registration screen.
- A user registered to your site before the consent module was implemented and has no valid consent statements associated with their account. The next time they log in, the "Registration Completion" screen will be displayed, requesting the relevant agreements.
- A user has agreed to your site consent statements, and is still logged in, but the site admins have changed the version of one of the consent statements. During their logged-in session, the "Registration Completion" screen will be displayed, requesting their re-consent.
- When the Registration Completion screen opens, if the user had an active session, that session is terminated.
- If a user closes ("X") the Registration Completion screen without agreeing to the new terms, an accounts.logout and socialize.logout event is fired, and the user is logged out of the site.
To ensure these scenarios take place, you must make sure to include the relevant consent statements on all registration and registration completion screens, and to set a value to the verifyLoginInterval parameter in the WebSDK Configuration.
See below to learn about:
- Customizing the Registration Completion screen to display information conditionally: for example, to display different text based on whether the user has never given consent to these terms, or the version has changed and they now need to re-consent.
- Version control
- Syncing information to downstream applications using IdentitySync (Gigya's data transport solution), based on users' consent status.
Customizing Consent-Related Data
The consent interaction between the user and your site, is captured and recorded to Gigya’s database (in a JSON object known as the Preferences Object). This interaction includes several fixed components, such as the type of consent statement, the version number, whether the statement is mandatory or not, etc. Because of the importance placed on the validity and quality of the captured data, naturally these data points cannot be altered with ease.
In addition, Gigya provides you with several options for flexibly customizing the consent record to your needs. These customization options include:
- Custom data: Added to the schema of the consent object. Allows you to add any additional information to the object, such as the legal entity that maintains it, the admin who created it, or for adding a common value to consent records.
- Tags: Appended to a specific consent interaction. For example, if the same consent statement is added to two different screens (registration completion and profile update), the tags can indicate the screen on which the user granted their consent, i.e., to which interaction the consent corresponds.
- Entitlements: An addition or appendix to the consent interaction. An easy way to ask for additional input from a user (additional to consent they have already given), without having to trigger the re-consent process. Users can only grant entitlements if they have agreed to the original consent statement.
The following table compares between these features and their capabilities:
|Adds data to||Consent object schema||Consent interaction||Consent interaction|
|Useful for adding||Metadata||Context||Content|
|Depends on consent status?||No||No||Yes|
|Defined in||Consent dashboard, setSchema||UI Builder, profile update (setAccountInfo), registration process (accounts.register)||UI Builder , profile update (setAccountInfo), registration process (accounts.register)|
|Reflected in||Consent Vault, Identity Access, getSchema, getAccountInfo||Consent Vault, Identity Access, getAccountInfo||Consent Vault , Identity Access , getAccountInfo|
|Saved as||Key-value pairs||Array of strings. New values overwrite existing ones.|
Array of strings. New values are appended to existing ones.*
* See below for a more detailed explanation.
|Can be edited by end user?||No||Usually not||Yes|
Using This Guide
The following guide walks you through the steps of creating a new consent statement, adding it to a Gigya screen using the UI Builder, and managing consent version.
For more information on Gigya screens and screen-sets, see Screen-Sets.
The data structure of the consent statement is explained here.
Create a New Consent Statement
- Go to the Consent dashboard in your Gigya Console.
- Click the Add button to create a new statement.
Select the Type and enter an ID for the new statement.
The prefix for terms of service is terms, and for privacy policies is privacy.
You cannot enter an ID that is identical to one of the field names in the Preferences Object.
Under Versioning by, select whether to use Date or Number and input the appropriate dates or version for this consent.
Once you save the new statement, you cannot change this definition.
You can add localized templates, and / or custom data, during the creation of the statement or at a later stage. See the next sections for details.
- Save the statement.
You can add a localized template, that includes a locale, the purpose of this statement, and details of the document to which the user is agreeing.
To do so, under Localized Template select Add Consent Template and enter the required details:
- Select the Locale.
- Enter the Purpose of this consent statement, that will be visible to the end user.
Document Location: A PDF file that contains the localized consent statement declaration and is displayed to users. Choose one of the following:
Document URL: Provide your own HTTPS URL of the PDF version of this consent statement.
When providing your own URL, it is your responsibility to ensure it is persistent and the document is publicly available on the defined URI for as long as required by the country of residence of the end-user; and to maintain accurate records of any Consent Templates that were agreed to by the end-user.
Upload Document: Upload a PDF document (up to 5 MB) that is stored in SAP Customer Data Cloud servers and available in a public URL. When adding the consent statement to a registration or other screen, you can link to this document for users to review.
If you have provided your own CNAME via the Certificate Provisioning flow, you can select your site domain as the prefix for the URL that will be generated for displaying the PDF document.
- Click Add.
Repeat for any other supported locales that you offer.
Save your changes.
You may change the Purpose and Document URL by editing the consent statement and clicking the purpose text, then selecting Change.
You can add Custom Data (custom key-value pairs) to the consent statement. The custom data will be available on the account (when calling accounts.search or accounts.getAccountInfo), and will be audited in the consent vault. These pairs will be saved to the Preferences Schema Object.
- Click the + button
Enter the key and the value. Both will be saved in string format.
The maximum number of characters for the key is 20, and 256 for the value. The maximum number of custom key-value pairs per consent statement is 50.
- Save your changes.
The license could not be verified: License Certificate has expired!
Add the Statement to a Screen
This section assumes you are using Gigya's screens, and are using the UI Builder to maintain them. Note that any consent statement that is set to "active" for your site, including a non-mandatory consent statement, has to be included in your registration and registration completion screens. Otherwise, users will not be able to complete their registration.
Go to the Screen-Sets page in Gigya's Console.
Open the relevant screen-set in the UI Builder (e.g. the Default-RegistrationLogin screen-set, that contains both the Registration and the Complete Registration screens).
Select the screen from the list of screens on the left.
- Under Controls, drag a checkbox into the canvas. Under Properties:
- Open the Mapped Field dropdown and scroll down to the Preferences namespace.
- Locate the relevant consent statement, and map the checkbox to the isConsentGranted field:
Still under Properties, revise the label as necessary.
If you are using Consent Templates, and you have configured at least one locale, you can use a placeholder to automatically display the Purpose in the user's locale, if a template exists. To use the placeholder, in the Label field of the checkbox's Properties enter the following, where the terms.sampleConsentTerms is the name of your consent item.
Or, if you want to place a link to the consent statement, you can use the following sample. If you are not using the UI Builder, add a "data-binding" attribute set to "true". This is added automatically when using the UI Builder:
- Before you save your changes, make sure the Checked by Default drop-down is set to No. Otherwise, you may risk a breach of regulatory compliance.
- Save your changes.
- Repeat the process for the Registration Completion screen and any other screens you require consent from the user.
Using Conditions in Registration Completion Screens
Consent statements should be included in your Registration Completion screens to allow users to complete their registration. Under different conditions, you may want to change the behavior of consent statements, for example in the following cases:
- Different regulations have different requirements, and you can show or hide a statement based on those requirements (e.g. rules that relate to the age of the user).
- To display to users only the statements that they have not yet signed, so as to prevent confusion and misunderstandings.
- To decide if a checkbox should be pre-checked (implicit consent) or unchecked (requiring explicit consent), under certain conditions.
In any case, we strongly recommend that you consult with your legal team to ensure your implementations comply with local regulations.
To display a checkbox under specific conditions:
- Open the Registration Completion screen in the UI Builder.
- Select the relevant checkbox, that is mapped to a consent statement.
This will cause the checkbox element to display only if the user has never granted consent to these terms (isConsentGranted=false).
Select the Keep visible checkbox, to prevent the field from disappearing once the user accepts the terms.
- Repeat the process for a different checkbox where the user has granted consent to these terms (isConsentGranted=true). This will display if the version of the terms has changed, and the user needs to re-consent.
- Save your changes.
To check a box under specific conditions:
- Open the Registration Completion screen in the UI Builder.
- Select the relevant checkbox, that is mapped to a consent statement.
In the Properties pane, under Checked by Default, select Conditionally.
- Save your changes.
Lite Registration Screens
When users perform "lite" registration to your site, many of the schema validations that have to do with registration are overriden. For this reason, to ensure that only users who have consented to the relevant terms can perform lite registration, the consent checkbox should be defined as mandatory when visible on the screen:
- Open the Lite Registration screen in the UI Builder.
- Drag a checkbox element to the screen.
- Under Properties, map the checkbox to the "isConsentGranted" property of the relevant consent statement.
- Provide the Label you wish to display to users.
- Under the Required property (in the Schema section), select "When Visible". This means that the users cannot submit the screen without agreeing to these terms.
- Repeat for any other consent statement you wish to enforce on this screen.
- Save your changes.
Preference Management: Privacy Screen
The Privacy screen (that is in the ProfileUpdate screen-set) displays to registered users the details of the consent statements to which they agreed. To reflect to the user the statement to which they consented and the version and date that they did so:
- Open the Privacy screen in the UI Builder.
Drag the Consent widget to the canvas from the left menu (under Widgets).
- In the Properties pane, map the widget to the relevant consent object.
Reword the label as needed.
The default Privacy screen already contains two consent widgets by default. If you are using these, you need only map them to the consent object and change the label.
- If your site includes a consent statement that is not mandatory, add a checkbox to the Privacy screen that is mapped to the isConsentGranted field, so that they can grant or withdraw their consent.
- Save changes.
To add tags:
- Drag a Metadata control to the screen.
- Map the control to the tags field of the relevant consent statement.
In the Value field, add the tags as needed. For example, add an array of tags according to the following example:
- Save changes.
In the UI Builder you may also save the tags as Value format string of the Metadata control, however, you must be sure to not include any quotes around the individual tags, or your tags will be saved with the quotes as part of the tag name, i.e.,
- Tags do not append. Whenever you attach tags to a consent interaction, the previous tags are replaced with the new ones.
- Tags may be attached to a consent interaction only if the consent status has changed (i.e., the value of isConsentedGranted).
You can add an 'entitlements' property, in which to save a list of entitlements to which the user has granted consent. For example, if a user has granted consent to a medical clinic to view their personal data, they can then check the doctor or doctors who are entitled to view it. This list can later be exported to a third-party app that gives permissions to the medical staff to view the file.
To add an entitlements definition to a screen:
- Open the relevant screen in the UI Builder.
- From the list of controls on the left, drag a "Checkbox" element and drop it in the desired place in the screen.
- In the Properties pane on the left, map the element to the "entitlement" property of the relevant consent statement:
- Under Entitlement, type the entitlement.
- Give the field a meaningful Label.
- Save your changes.
- The entitlement property alters the markup, so that when using Gigya's screens, the Web SDK automatically sends the entitlements as an array. API-based implementations that do not use the Web SDK, should set up some function that does this manually.
- The entitlement checkbox will appear disabled in the user-facing screen, unless users first agree to the relevant consent statement.
- If a user changes the entitlements to which they consent, this action will be recorded in the Consent Vault with the action noted as "Changed". However, it is not considered a re-consent.
- Entitlements sent from a screen are appended to existing entitlements saved to the user's account. However, note that if a checkbox displayed on the screen is mapped to an entitlement, whatever value is passed from the screen will override the existing value. For example, if a user previously agreed to entitlement "A", and in their profile update screen uncheck the "A" entitlement and save, the "A" entitlement will be deleted from their account.
Activating a Consent Statement
Consent statements can be activated in one of two ways:
- In the Consent dashboard, using the Active toggle:
- In the UI Builder Properties, by setting the field to required on all screens:
Whichever way you choose to activate the statement, you should ensure beforehand that the consent object is properly mapped to your screens, as explained above. Otherwise, users cannot complete their registration.
Shared Consent in Site Groups
Consent configuration differs in some respects when configuring site groups.
- Consent statements are created and configured only on the parent site (including version control), and activated or de-activated for individual child sites.
The configuration of a consent statement (including the active version) is inherited by the child sites in the group, and may be overriden per individual site.
Once you change the configuration of a consent statement on a child site, inheritance from the parent is broken.
- Some sites may require that users agree to a separate set of terms and policies, or an additional set, on top of the shared consent statements. See below for configuration guidelines.
- When sites belong to the same SSO segment:
- If the terms of service and privacy policies are identical for all sites in the segment, the terms should reflect to users that they are registering to the entire brand.
- If sites in the same segment do not share or only partially share the consent statement, take care to configure a separate statement for each site that requires it (including presenting the option to accept the statement in the registration completion screen). For example, if sites A and B share the same terms of service, and site B requires additional terms, configure one statement that is active for site A, and another that is active for B only. When a user registers to site A, they will be asked to consent to the shared terms. When they navigate to site B, they will be prompted to agree to the individual "site B" terms. On the other hand, if a user registers to site B first, then navigates to site A, they will be logged in seamlessly.
To configure consent in site groups:
- In the Consent page of Gigya's Console, make sure the parent site is selected in the site selector.
- Create the consent statement, as explained above.
- If any of your child sites require a separate consent statement, create them on the parent site at this stage.
The statement should be activated on the parent if it is the "main" statement for this group, i.e. required on the parent site and/or on most of the child sites. Activate the policy after the steps outlined above have been completed.
If all the child sites require no additional consent statements, you have completed the configuration at this stage. If individual sites require separate statement activation, continue to the next steps.
Remember that activating a statement on a child site breaks its inheritance from the parent.
In the site selector, select the child site for which you wish to apply the consent statement.
- Go to the UI Builder and map the consent widget and checkbox to the relevant statement, on all the relevant screens (registration, registration completion, profile screens), as explained above.
- Activate the statement for this child site.
Reset Site Preferences
You may reset the consent status of all consent statements for a given user in a site group, by calling accounts.resetSitePreferences. This will reset the status for all the consent statements including any mandatory consent statements to which they have agreed. Note that this will reset only consent statements that are unique to the site, i.e. will not affect statements that are active in other sites of the group. As a result of successfully calling this endpoint:
- Active sessions are terminated for this user
- The consent status for this user is withdrawn for active consent statements that are unique to this site
- 'Site Preferences Reset' and 'Account Updated' Webhooks are fired
- The event is registered in the audit log
The following diagram illustrates the flow of version management and re-consent, from the perspective of a site admin:
Major vs. Minor Changes
The consent management tool gives you the option to update the version of the consent statement that is currently in effect, and the required date for consent renewal.
This means that when making a minor change to a statement, simply create a new version by updating the Effective as of field in the consent management dashboard. When the new version consists of major changes, that require existing users to re-consent, update both the Effective as of field (the active version number or date), and the Re-consent cut-off field. This means that users who consented to a version that is earlier than the number or date specifiied under Re-consent cut-off, will be required to re-consent (they will be presented a "Registration Completion" screen). Users who choose not to consent, will not be able to access the areas or features of your site that are available only to fully registered users.
In addition, you should configure the interval for validating that sessions of logged-in users are still valid, i.e. the consent version that is saved to their account is a valid one. If the consent version has changed, when the system performs session validation, that user will be presented with a 'Registration Completion' screen. If the user closes the screen without consenting, the user will be logged out (i.e., accounts.logout and socialize.logout are fired). Note that the configuration is different for mobile.
Configure the interval for session validation:
- Open the Global Configuration page in Gigya's Console.
- Enter a new line with the verifyLoginInterval parameter.
Set a value in hours. Once every specified amount of hours, the system will check if all required schema fields have the relevant data, and that the session is in accordance with site policies. For example:
Save your changes.
Change a version in the consent management dashboard:
- Go to the Consent page of Gigya's Console.
- Click the Edit button for the relevant consent statement.
Change the date or version number that the new version will go into effect (Effective as of).
- If this is a major version change, also enter the date or version number for enforcing re-consent (Re-consent cut-off). This means, that users who consented to this agreement before this date or this version number, will be prompted to re-consent.
Update the URL in your screens, using the UI Builder:
- Go to the Screen-Sets page of Gigya's Console.
- Open the relevant screen in the UI Builder (e.g., registration).
- The active version is saved as part of the metadata of the Preferences Object. You can view the current version in the Consent page of Gigya's Console, or using the accounts.getSchema API call.
- There is no need to re-map any checkboxes or consent widgets that have already been mapped to this consent statement, as the version updates automatically.
As a result of a major version change:
- Users who have reconsented to an early version of this statement will be asked to reconsent (a Registration Completion screen will be displayed, containing the new consent version)
- When users re-consent, the action is captured and saved to the Consent Vault as a "Renewed" consent.
- New users consent to the active version, and that is saved to the Consent Vault as a "Granted" consent.
Ensuring Compliance Using IdentitySync
Sync consent-based user data to third-party applications, to support the following flows:
- Ensure that only data of users who have a valid consent statement associated with their profile is passed along.
- Handle data of users who have withdrawn their consent (e.g. archive, flag for deletion) and those whose consent has expired.
Consent enforcement is supported using IdentitySync, Gigya's ETL solution. When querying Gigya's database using the datasource.read.gigya.account component, use the consent parameter to retrieve only users of a given consent status. The possible values of this parameter are:
- valid - the users have consented to a given statement, and their consent is valid.
- expired - the users have consented to a given statement, but that consent is no longer valid, due to a version change to which they have not re-consented.
- notGranted - the users have either never consented to a given statement, or have withdrawn their consent.
Use as follows:
- To retrieve users with a valid consent, set up a job that queries Gigya's database, with the consent status parameter set to valid.
- To retrieve users whose consent has expired (for example, to trigger a re-consent flow in downstream applications), set up a job that queries Gigya's database, with the consent status parameter set to expired.
- To retrieve users who have never given consent, or who have withdrawn their consent, set up a job that queries Gigya's database, with the consent status parameter set to notGranted.