---
title: Integrate with PingOne Protect for risk evaluations
description: This use case guides you through integrating with PingOne Protect for risk evaluations using the DaVinci Client across Android, iOS, and JavaScript platforms. It covers setting up your PingOne instance, adding necessary dependencies, and implementing DaVinci Client code to collect and evaluate risk data in your applications.
component: sdks
version: latest
page_id: sdks:davinci:use-cases/pingone-protect/index
canonical_url: https://docs.pingidentity.com/sdks/latest/davinci/use-cases/pingone-protect/index.html
keywords: ["DaVinci", "Protect", "Risk", "Integration", "SDK"]
section_ids:
  compatibility: Compatibility
  steps: Steps
---

# Integrate with PingOne Protect for risk evaluations

***Applies to***:

* [icon: check-square-o, set=fa]DaVinci Client for Android

* [icon: check-square-o, set=fa]DaVinci Client for iOS

* [icon: check-square-o, set=fa]DaVinci Client for JavaScript

The DaVinci Client can integrate with [PingOne Protect](https://www.pingidentity.com/en/platform/capabilities/threat-protection/pingone-protect.html) to evaluate the risk involved in a transaction.

![A flowchart illustrating how risk predictors evaluate many different data points to determine whether to allow a user access or prompt mitigation.](../../../_images/pingone-protect.png)Figure 1. A flowchart illustrating how risk predictors evaluate many different data points.

You can instruct the DaVinci Client to gather information during a transaction. Your app can then collate this information together and request a risk evaluation from PingOne.

Based on the response from Protect, you can choose whether to allow or deny the transaction or perform additional mitigation, such as bot detection measures.

You can use the audit functionality in PingOne to view the risk evaluations:

![Risk evaluation records in the PingOne audit viewer.](../../../_images/pingone-audit-risk-evaluations-en.png)Figure 2. Risk evaluation records in the PingOne audit viewer.

## Compatibility

* PingOne

  * Your PingOne instance must have DaVinci enabled.

- DaVinci flows

  Ensure your flows only use supported connectors, capabilities and fields for user interactions:

* HTTP Connector

  * **Custom HTML** capability

    > **Collapse: View supported fields**
    >
    > * [HTTP Connector field and collector support](#http-connector-fields-js-compatibility)
    >
    > * [HTTP Connector SK-Component support](#http-connector-sk-components-js-compatibility)
    >
    > **HTTP Connector field and collector support**
    >
    > | Field (`Collector`)                       | Description                                                                        | DaVinci module |          |            |
    > | ----------------------------------------- | ---------------------------------------------------------------------------------- | -------------- | -------- | ---------- |
    > |                                           |                                                                                    | Android        | iOS      | JavaScript |
    > | Text field(`TextCollector`)               | Collects a single text string.                                                     | ✅`1.0.0`       | ✅`1.0.0` | ✅`1.0.0`   |
    > | Password field(`PasswordCollector`)       | Collects a single text string that cannot be read from the screen.                 | ✅`1.0.0`       | ✅`1.0.0` | ✅`1.0.0`   |
    > | Submit Button(`SubmitCollector`)          | Sends the collected data to PingOne to continue the DaVinci flow.                  | ✅`1.0.0`       | ✅`1.0.0` | ✅`1.0.0`   |
    > | Flow Button(`FlowCollector`)              | Triggers an alternative flow without sending the data collected so far to PingOne. | ✅`1.0.0`       | ✅`1.0.0` | ✅`1.0.0`   |
    > | Label(`LabelCollector`)                   | Display a read-only text label.                                                    | ✅`1.1.0`       | ✅`1.1.0` | ✅`1.1.0`   |
    > | Radio / Dropdown(`SingleSelectCollector`) | Collects a single value from a choice of multiple options.                         | ✅`1.1.0`       | ✅`1.1.0` | ✅`1.1.0`   |
    >
    > **HTTP Connector SK-Component support**
    >
    > | SK-Component (`Collector`) | Description                                                                                                               | DaVinci module |          |            |
    > | -------------------------- | ------------------------------------------------------------------------------------------------------------------------- | -------------- | -------- | ---------- |
    > |                            |                                                                                                                           | Android        | iOS      | JavaScript |
    > | skIDP(`IdpCollector`)      | Presents a button to allow users to authenticate using an external identity provider, such as Apple, Facebook, or Google. | ✅`1.1.0`       | ✅`1.1.0` | ✅`1.1.0`   |
    > | skrisk(`ProtectCollector`) | Instructs the client to gather behavioral data and return it to PingOne so that it can perform risk evaluations.          | ✅`1.3.0`       | ✅`1.3.0` | ✅`1.3.0`   |

    > **Collapse: View unsupported features**
    >
    > Verify that your flow does not depend on any *unsupported* elements:
    >
    > * SKPolling components
    >
    >   The **[SKPolling](https://docs.pingidentity.com/davinci/flows/davinci_sk_components.html#skpolling)** component cannot be processed by the DaVinci Client and should not be included in flows.
    >
    >   Features such as Magic Link authentication require the **SKPolling** component and therefore cannot be used with the DaVinci Client.
    >
    > * Images
    >
    >   Images included in the flow cannot be passed to the SDK.

  For example, the [PingOne sign-on with sessions DaVinci flow](https://support.pingidentity.com/s/marketplace-integration/a7iDo00000110R2IAI/pingone-sign-on-with-sessions).

* PingOne Form Connector

  * **Show Form** capability

    > **Collapse: View supported fields**
    >
    > * [Custom Fields support](#form-connector-fields-js-compatibility)
    >
    > * [Toolbox support](#form-connector-toolbox-js-compatibility)
    >
    > * [Property support](#form-connector-properties-js-compatibility)
    >
    > **Custom Fields support**
    >
    > | Field (`Collector`)                        | Description                                                                                                     | DaVinci module |          |            |
    > | ------------------------------------------ | --------------------------------------------------------------------------------------------------------------- | -------------- | -------- | ---------- |
    > |                                            |                                                                                                                 | Android        | iOS      | JavaScript |
    > | Text Input(`TextCollector`)                | Collects a single text string.                                                                                  | ✅`1.1.0`       | ✅`1.1.0` | ✅`1.1.0`   |
    > | Password(`PasswordCollector`)              | Collects a single text string that cannot be read from the screen.                                              | ✅`1.1.0`       | ✅`1.1.0` | ✅`1.1.0`   |
    > | Dropdown(`SingleSelectCollector`)          | Collects a value from a dropdown containing one or more text strings.                                           | ✅`1.1.0`       | ✅`1.1.0` | ✅`1.1.0`   |
    > | Combobox(`MultiSelectCollector`)           | Collects a value from a dropdown containing one or more text strings, the user can enter their own text string. | ✅`1.1.0`       | ✅`1.1.0` | ✅`1.1.0`   |
    > | Radio Button List(`SingleSelectCollector`) | Collects a value from one or radio buttons.                                                                     | ✅`1.1.0`       | ✅`1.1.0` | ✅`1.1.0`   |
    > | Checkbox List(`MultiSelectCollector`)      | Collects the value of one or more checkboxes.                                                                   | ✅`1.1.0`       | ✅`1.1.0` | ✅`1.1.0`   |
    > | Phone Number Input(`PhoneNumberCollector`) | Collects a phone number, including the country code.                                                            | ✅`1.2.0`       | ✅`1.2.0` | ✅`1.2.0`   |
    >
    > **Toolbox support**
    >
    > | Field (`Collector`)                                                    | Description                                                                                                                                                             | DaVinci module |          |            |
    > | ---------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | -------- | ---------- |
    > |                                                                        |                                                                                                                                                                         | Android        | iOS      | JavaScript |
    > | Flow Button(`FlowCollector`)                                           | Presents a customized button.                                                                                                                                           | ✅`1.1.0`       | ✅`1.1.0` | ✅`1.1.0`   |
    > | Flow Link(`FlowCollector`)                                             | Presents a customized link.                                                                                                                                             | ✅`1.1.0`       | ✅`1.1.0` | ✅`1.1.0`   |
    > | Translatable Rich Text(`TextCollector`)                                | Presents rich text that you can translate into multiple languages.                                                                                                      | ✅`1.1.0`       | ✅`1.1.0` | ✅`1.1.0`   |
    > | Social Login(`IdpCollector`)                                           | Presents a button to allow users to authenticate using an external identity provider, such as Apple, Facebook, or Google.                                               | ✅`1.1.0`       | ✅`1.1.0` | ✅`1.1.0`   |
    > | MFA Device Selection - Authentication(`DeviceAuthenticationCollector`) | Presents a list of methods for performing multi-factor authentication (MFA).&#xA;&#xA;DaVinci client currently only supports the Email, SMS, and Voice MFA types.       | ✅`1.2.0`       | ✅`1.2.0` | ✅`1.2.0`   |
    > | MFA Device Selection - Registration(`DeviceRegistrationCollector`)     | Presents a list of methods you can register for multi-factor authentication (MFA).&#xA;&#xA;DaVinci client currently only supports the Email, SMS, and Voice MFA types. | ✅`1.2.0`       | ✅`1.2.0` | ✅`1.2.0`   |
    >
    > **Property support**
    >
    > | Property (`Type`)                       | Description                                                                                                                         | DaVinci module |          |            |
    > | --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | -------------- | -------- | ---------- |
    > |                                         |                                                                                                                                     | Android        | iOS      | JavaScript |
    > | Enable Device Profiling(`toggleSwitch`) | Instruct the SDK to collect client device information.                                                                              | ✅`1.3.0`       | ✅`1.3.0` | ✅`1.3.0`   |
    > | Include Behavioral Data(`toggleSwitch`) | Instruct the SDK to collect behavioral data to identify non-human activity.Requires **Enable Device Profiling** to also be enabled. | ✅`1.3.0`       | ✅`1.3.0` | ✅`1.3.0`   |

## Steps

* [Step 1. Set up PingOne](01-prerequisites.html)

  In this step, you set up your your PingOne instance to perform risk evaluations.

  For example, you create a worker application and risk policy in PingOne, and integrate them into your DaVinci flows.

* [Step 2. Install dependencies](02-dependencies.html)

  In this step, you add the required PingOne Protect module and dependencies to your project.

* [Step 3. Develop the client app](03-app.html)

  With everything prepared, you can now add DaVinci Client code to your application to evaluate risk by using PingOne Protect.

  You'll learn how to initialize the collection of contextual data, gather and send it to the server for a risk evaluation, and how to pause and resume behavioral data collection.
