Consent or Legal information¶
The Consent feature allows you to collect user permissions for data processing or simply provide the user with legal information. It can be integrated into onboarding, displayed as a standalone page, or shown in a bottom sheet when specific actions are performed.
Embedded¶
The legal information is displayed at the bottom of the onboarding screen. Users are not required to explicitly accept the terms to proceed.
This is default
When to Use¶
- Present terms of service and/or privacy policies
Customization
Customization¶
Text Elements¶
consentHtml
content with concise text and links to privacy policy and/or terms of service
Standalone¶
A dedicated page where users must accept the terms by selecting required checkboxes to continue. It can be configured to appear:
- When users are about to upload their photo in the image picker 1
- As the last slide of the onboarding (if enabled)
- After the welcome screen (if enabled)
- If 2 and 3 are disabled, as the first screen when opening the SDK
When to Use¶
- Collect user permissions for data processing
- Ensure compliance with data protection regulations
- Get explicit user consent for specific features
- Present terms of service and privacy policies
Consent Data¶
Each consent is defined by the following properties:
id
- A unique identifier for the consenttype
- The method used to obtain the consenthtml
- The HTML content describing the consent
Consent Type
Represents consent where the user must actively check a checkbox to provide permission. This is required for cases where consent must be freely given and unambiguous.
required
- Indicates whether the checkbox must be checked to proceedoptional
- Indicates additional consent and the user may proceed without checking it
GDPR Compliance
The checkbox must be explicitly selected by the user as pre-selected checkboxes are not valid under GDPR, even if the user presses an "Accept" button.
Represents consent where the user provides permission by pressing an "Accept" button. This may optionally include a disabled (pre-selected) checkbox for additional clarity.
Legal Considerations
It can be just an "Accept" button, but only if it’s very clear exactly what the user is consenting to at that moment and you can’t bundle multiple consents into one "Accept" unless they’re strictly necessary. For example, GDPR says marketing consent should always be separate if possible.
This can be used only for the consent that is necessary for the service, as it’s not really “consent” under GDPR and it’s processing based on contract necessity (Article 6(1)(b)) or legal obligation, not based on “freely given consent” (Article 6(1)(a)), so, it is just informing the users, not asking them for an additional permission.
Please consider that this option at all (with or w/o checkbox) is not valid for all cases, and it should be used with caution. Consult with a legal department if in doubt.
Data Management¶
By default, the SDK uses platforms' local storage to store information about the consents obtained from the user. This is the simplest approach and requires no additional configuration.
You can implement your own custom data provider that:
- Provides the
obtainedConsentsIds
list of consents identifiers already obtained from the user - React to the
obtainConsentsIds
callback with the list of consents identifiers that the user agreed to and pressed the accept button
This allows you to
- Integrate with your existing user management system
- Sync the consent status across devices
- Reset consent status whenever you want to show the consent screen again
See the How to implement section at the bottom for information on the relevant platform.
How does the SDK decide when to request consent?
SDK will match the consents identifiers with the ones already obtained from the user (e.g., obtainedConsentsIds
) and will show the consent page only if there are missing explicit
required
or any implicit
consents.
What happens if the consent data changes?
Overall, the logic behind the answer to the previous question seems to be consistent:
-
If a new
explicit
required
orimplicit
consent is added, the SDK will request the user's consent again, since it is not in the list of accepted consents. None of the old checkboxes will be pre-selected, and the user will need to accept all the necessary ones again. -
A new
optional
consent will be ignored so as not to disturb users who have already accepted the mandatory ones. -
If any of the mandatory ones have changed their terms... Well, that's bad practice, please don't do that. The SDK does not monitor the content of consents, only their identifiers. If you need to change the terms, delete the old consent and create a new one with a different
id
. -
When changing the consent
type
, the logic is preserved. If it becomesoptional
, no reaction will follow. If anoptional
consent becomes any of mandatory type, the SDK will request everything again.
Customization
Customization¶
Text Elements¶
- Optional
consentPageTitle
- Main
consentTitle
displayed on the top consentDescriptionHtml
content above the consents list- Optional
consentFooterHtml
below the consents list - Text for the
consentButtonAccept
Styles¶
- Optional
drawBordersAroundConsents
Analytics¶
The following analytics events may be tracked during consent collection:
Type | Event | Page Id | Description |
---|---|---|---|
page | consent | Consent page opened | |
onboarding | consentsGiven | consent | User has given all required consents |
exit | consent | SDK was closed on the consent page |
How to implement¶
- Android
- iOS
- Flutter
-
We recommend using the consent display via the "upload photo" button if you are using try-ons with models feature. In this case, the user has the option not to use personal photos and there is no need to request consent in advance, as the service has the right to operate without it. ↩