WingifyGuides

Integrate Wingify with Salesforce To Export Your Wingify Campaign Data

Feature Availability: This feature is available with Feature Management, Web Personalization, and Behavior Analytics exclusively on the Enterprise plan.

This article covers the following: * Overview * Steps to Facilitate Wingify - Salesforce Integration + Create a Hidden Input Field in Forms + Fetch Tagged Experiment Data Using the Wingify REST API - Individual Request - Bulk Request

#Overview

Salesforce, as a company that caters to the CRM industry, provides a platform for its clients to facilitate seamless customer experiences. This includes recording and processing lead information as captured in several forms on the client’s website, in Salesforce.

Integrating Wingify with your Salesforce account can be leveraged in myriad ways. This article focuses on one of them - how to use this integration to draw the campaign information from Wingify to create reporting in Salesforce and thereby gauge the impact of experimentation on the quality of the leads.

With Wingify, you can easily experiment a change in your website and effectively identify the winning variation that can potentially draw more leads. Integrating Wingify with Salesforce further extends this ability, wherein as you run your Wingify test campaign, the campaign and the variation information for the leads on your website can be tagged to Salesforce. This enables you to further analyze this information within your Salesforce account.

#Steps to Facilitate Wingify - Salesforce Integration

The process of integrating Wingify with Salesforce involves the following fundamental steps:

  1. Create a Hidden Input Field in Forms
  2. Fetch Tagged Experiment Data Using the Wingify REST API

Note: Wingify does not capture or process the lead details in any form. It only tags the campaign information of individual leads to Salesforce.

#Create a Hidden Input Field in Forms

In order to avail the tagged campaign information of individual leads from Wingify, you need to create a hidden input field in the sign-up forms on your website, with a default null value.

In general, if the Wingify SmartCode is available on your website, Wingify automatically generates a unique 32-digit hexadecimal code (called the UUID) to uniquely identify every visitor that arrives on the website.

Using the Wingify UUID, you can view the campaign and variation information of individual leads. To do so, you need to perform the necessary configuration steps from your end to capture the leads’ Wingify UUID in the hidden field, during form submission.

#Fetch Tagged Experiment Data Using the Wingify REST API

Once the form is submitted by the visitor, along with the form details, the UUID is also sent to Salesforce. Upon receiving the UUID, all you need to do is to trigger Wingify’s REST API, which then consumes the UUID as the input and delivers the campaign data as response.

If the visitor is exposed to more than one test campaign, the response in this case will contain the following information for each of the campaigns - Campaign ID, Campaign Name, Variation ID, and Variation Name.

Note: The term ‘Variation’ is replaced by its equivalent respectively for different tests. It appears as ‘Combination’ for a Multivariate test, and ‘Experience’ for a Personalize test.

The following REST API URL formats help fetch the campaign information corresponding to the UUID:

For an individual request,

  • Accounts created before June 14, 2026
  • Accounts created on/after June 14, 2026
curl --location --request GET 'https://app.vwo.com/api/v2/accounts/{{accountId}}/uuid/{{uuid}}' \
--header 'token: {{apiToken}}'
curl --location --request GET 'https://app.wingify.com/api/v2/accounts/{{accountId}}/uuid/{{uuid}}' \
--header 'token: {{apiToken}}'

Here, the {{accountId}} is the Wingify account ID, while {{uuid}} is the unique user ID that is sent through the hidden fields in your signup forms to your Salesforce account. You need to replace {{apiToken}} with your API token.

For a bulk request,

  • Accounts created before June 14, 2026
  • Accounts created on/after June 14, 2026
curl --location --request POST 'https://app.vwo.com/api/v2/accounts/{{accountId}}/uuids/tracked-campaigns-data' \
--header 'token: {{apiToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "uuids": [
        "{{uuid1}}",
        "{{uuid2}}",
        "{{uuid3}}"
    ]
}'
curl --location --request POST 'https://app.wingify.com/api/v2/accounts/{{accountId}}/uuids/tracked-campaigns-data' \
--header 'token: {{apiToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "uuids": [
        "{{uuid1}}",
        "{{uuid2}}",
        "{{uuid3}}"
    ]
}'

This REST API can be triggered at a set interval (let’s say after every 2 hours or once a day) as per the requirement.

The following examples help you understand how the data appears in real-time:

#Individual Request

Let’s consider a sample account, whose Account ID is 111111. To obtain the data from that account for an individual visitor, whose UUID is D1DD64154AFA4392887A3507585F83127, the corresponding sample REST API URL may appear as follows:

  • Accounts created before June 14, 2026
  • Accounts created on/after June 14, 2026
curl --location --request GET 'https://app.vwo.com/api/v2/accounts/111111/uuid/D1DD64154AFA4392887A3507585F83127' \
--header 'token: 52f67bc9a8f370c3019cae954f1e95f9edae9f9aeaf4400fdbc40d60f35831e4'
curl --location --request GET 'https://app.wingify.com/api/v2/accounts/111111/uuid/D1DD64154AFA4392887A3507585F83127' \
--header 'token: 52f67bc9a8f370c3019cae954f1e95f9edae9f9aeaf4400fdbc40d60f35831e4'

Say the visitor is exposed to multiple test campaigns, then you get a response featuring all of them, as follows:

  • Accounts created before June 14, 2026
  • Accounts created on/after June 14, 2026
{
  "_data": {
    "tests": [
      {
        "id": 1,
        "name": "Campaign 1",
        "type": "multivariate",
        "hitTime": "2022-04-18 08:46:56",
        "combination": "1",
        "combinationName": "Control"
      },
      {
        "id": 2,
        "name": "Campaign 2",
        "type": "ab",
        "hitTime": "2022-04-18 08:45:52",
        "variationId": 1,
        "variationName": "Control"
      }
    ],
    "personalize": [
      {
        "id": 3,
        "name": "Campaign 3",
        "type": "targeting",
        "hitTime": "2022-04-18 08:45:52",
        "experienceId": 2,
        "experienceName": "Variation 1"
      }
    ],
    "recordings": [
      {
        "shareUrl": "https://player.vwo.me/visitor-behavior-analysis/dist/recordings?campaignId=4&sessionId=1650532364&uuid=652951979E51A24905742E15054F0306&fetch_url=r3.visualwebsiteoptimizer.com&sig=MzEwOTQxOjY1Mjk1MTk3OUU1MUEyNDkwNTc0MkUxNTA1NEYwMzA2OjE1NzYxZjcwNTlkZjZhNjk3MmIwZWZmMjJlMjg1M2E4OWI1YWRjNGMwODE4ZDgwYzRkOWI2MmEyYTc5NGYwZTE%3D&numOfPages=1&account_id=111111&analyze=1&countryCode=IN&saved=0&nD=1&token=eyJhY2NvdW50ZjMxOwYjIiLCJzY29wZX2lkIJoYXNoIjoiOWZiZTYxOGRiZDZijozMTA5NDEsImV4cGVyaW1lbnRfaWQiOjMzLCJ2aXNpdG9yUmVjb3JkaW5nU2GIyZDkwYzI4ZDI2NjUVzc2lvbklkIjoxNjUwNTMyMzY0LCJjcmVhdGVkX29uIjoxNTczMTQxODMzLCJ0eXBlIjoidmlzaXRvclJlY29yZGluZ3MiLCJ2ZXJzaW9uIjoxLCSI6dHJ1ZSwiZnJuIjpmYWxzZX0=",
        "sessionId": 1650271551
      }
    ]
  }
}
{
  "_data": {
    "tests": [
      {
        "id": 1,
        "name": "Campaign 1",
        "type": "multivariate",
        "hitTime": "2022-04-18 08:46:56",
        "combination": "1",
        "combinationName": "Control"
      },
      {
        "id": 2,
        "name": "Campaign 2",
        "type": "ab",
        "hitTime": "2022-04-18 08:45:52",
        "variationId": 1,
        "variationName": "Control"
      }
    ],
    "personalize": [
      {
        "id": 3,
        "name": "Campaign 3",
        "type": "targeting",
        "hitTime": "2022-04-18 08:45:52",
        "experienceId": 2,
        "experienceName": "Variation 1"
      }
    ],
    "recordings": [
      {
        "shareUrl": "https://player.wingify.me/visitor-behavior-analysis/dist/recordings?campaignId=4&sessionId=1650532364&uuid=652951979E51A24905742E15054F0306&fetch_url=collect.wingify.net&sig=MzEwOTQxOjY1Mjk1MTk3OUU1MUEyNDkwNTc0MkUxNTA1NEYwMzA2OjE1NzYxZjcwNTlkZjZhNjk3MmIwZWZmMjJlMjg1M2E4OWI1YWRjNGMwODE4ZDgwYzRkOWI2MmEyYTc5NGYwZTE%3D&numOfPages=1&account_id=111111&analyze=1&countryCode=IN&saved=0&nD=1&token=eyJhY2NvdW50ZjMxOwYjIiLCJzY29wZX2lkIJoYXNoIjoiOWZiZTYxOGRiZDZijozMTA5NDEsImV4cGVyaW1lbnRfaWQiOjMzLCJ2aXNpdG9yUmVjb3JkaW5nU2GIyZDkwYzI4ZDI2NjUVzc2lvbklkIjoxNjUwNTMyMzY0LCJjcmVhdGVkX29uIjoxNTczMTQxODMzLCJ0eXBlIjoidmlzaXRvclJlY29yZGluZ3MiLCJ2ZXJzaW9uIjoxLCSI6dHJ1ZSwiZnJuIjpmYWxzZX0=",
        "sessionId": 1650271551
      }
    ]
  }
}

Here, the data is presented for the visitor under the specified UUID.

The visitor is bucketed into the following test campaigns:

Test 1: Multivariate

Campaign ID 1
Campaign Name Campaign 1
Combination ID 1
Combination Name Control

Test 2: A/B

Campaign ID 2
Campaign Name Campaign 2
Variation ID 1
Variation Name Control

Test 3: Personalize

Campaign ID 3
Campaign Name Campaign 3
Experience ID 2
Experience Name Variation-1

Session Recordings

  • Accounts created before June 14, 2026
  • Accounts created on/after June 14, 2026
Session ID 1650271551
Shared URL https://player.vwo.me/visitor-behavior-analysis/dist/recordings?campaignId=4&sessionId=1650532364&uuid=652951979E51A24905742E15054F0306&fetch\_url=r3.visualwebsiteoptimizer.com&sig=MzEwOTQxOjY1Mjk1MTk3OUU1MUEyNDkwNTc0MkUxNTA1NEYwMzA2OjE1NzYxZjcwNTlkZjZhNjk3MmIwZWZmMjJlMjg1M2E4OWI1YWRjNGMwODE4ZDgwYzRkOWI2MmEyYTc5NGYwZTE%3D&numOfPages=1&account\_id=111111&analyze=1&countryCode=IN&saved=0&nD=1&token=eyJhY2NvdW50ZjMxOwYjIiLCJzY29wZX2lkIJoYXNoIjoiOWZiZTYxOGRiZDZijozMTA5NDEsImV4cGVyaW1lbnRfaWQiOjMzLCJ2aXNpdG9yUmVjb3JkaW5nU2GIyZDkwYzI4ZDI2NjUVzc2lvbklkIjoxNjUwNTMyMzY0LCJjcmVhdGVkX29uIjoxNTczMTQxODMzLCJ0eXBlIjoidmlzaXRvclJlY29yZGluZ3MiLCJ2ZXJzaW9uIjoxLCSI6dHJ1ZSwiZnJuIjpmYWxzZX0=
Session ID 1650271551
Shared URL https://player.wingify.me/visitor-behavior-analysis/dist/recordings?campaignId=4&sessionId=1650532364&uuid=652951979E51A24905742E15054F0306&fetch\_url=collect.wingify.net&sig=MzEwOTQxOjY1Mjk1MTk3OUU1MUEyNDkwNTc0MkUxNTA1NEYwMzA2OjE1NzYxZjcwNTlkZjZhNjk3MmIwZWZmMjJlMjg1M2E4OWI1YWRjNGMwODE4ZDgwYzRkOWI2MmEyYTc5NGYwZTE%3D&numOfPages=1&account\_id=111111&analyze=1&countryCode=IN&saved=0&nD=1&token=eyJhY2NvdW50ZjMxOwYjIiLCJzY29wZX2lkIJoYXNoIjoiOWZiZTYxOGRiZDZijozMTA5NDEsImV4cGVyaW1lbnRfaWQiOjMzLCJ2aXNpdG9yUmVjb3JkaW5nU2GIyZDkwYzI4ZDI2NjUVzc2lvbklkIjoxNjUwNTMyMzY0LCJjcmVhdGVkX29uIjoxNTczMTQxODMzLCJ0eXBlIjoidmlzaXRvclJlY29yZGluZ3MiLCJ2ZXJzaW9uIjoxLCSI6dHJ1ZSwiZnJuIjpmYWxzZX0=

#Bulk Request

To obtain the data from that account for visitors with UUIDs D1DD64154AFA4392887A3507585F83127 and FA16F2F293FF4BA7EA434269458EE545, the corresponding sample REST API request may appear as follows:

  • Accounts created before June 14, 2026
  • Accounts created on/after June 14, 2026
curl --location --request POST 'https://app.vwo.com/api/v2/accounts/{{accountId}}/uuids/tracked-campaigns-data' \
  --header 'token: {{apiToken}}' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "uuids": [
      "{{uuid1}}",
      "{{uuid2}}"
    ]
  }'
curl --location --request POST 'https://app.wingify.com/api/v2/accounts/{{accountId}}/uuids/tracked-campaigns-data' \
  --header 'token: {{apiToken}}' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "uuids": [
      "{{uuid1}}",
      "{{uuid2}}"
    ]
  }'

The response for the corresponding request will feature the data in the following format:

  • Accounts created before June 14, 2026
  • Accounts created on/after June 14, 2026
{
  "_data": {
    "D1DD64154AFA4392887A3507585F83127": {
      "tests": [
        {
          "id": 1,
          "name": "Campaign 1",
          "type": "multivariate",
          "hitTime": "2022-04-18 08:46:56",
          "combination": "1",
          "combinationName": "Control"
        },
        {
          "id": 2,
          "name": "Campaign 2",
          "type": "ab",
          "hitTime": "2022-04-18 08:45:52",
          "variationId": 1,
          "variationName": "Control"
        }
      ],
      "personalize": [
        {
          "id": 3,
          "name": "Campaign 3",
          "type": "targeting",
          "hitTime": "2022-04-18 08:45:52",
          "experienceId": 2,
          "experienceName": "Variation 1"
        }
      ],
      "recordings": [
        {
          "shareUrl": "https://player.vwo.me/visitor-behavior-analysis/dist/recordings?campaignId=4&sessionId=1650532364&uuid=652951979E51A24905742E15054F0306&fetch_url=r3.visualwebsiteoptimizer.com&sig=MzEwOTQxOjY1Mjk1MTk3OUU1MUEyNDkwNTc0MkUxNTA1NEYwMzA2OjE1NzYxZjcwNTlkZjZhNjk3MmIwZWZmMjJlMjg1M2E4OWI1YWRjNGMwODE4ZDgwYzRkOWI2MmEyYTc5NGYwZTE%3D&numOfPages=1&account_id=111111&analyze=1&countryCode=IN&saved=0&nD=1&token=eyJhY2NvdW50ZjMxOwYjIiLCJzY29wZX2lkIJoYXNoIjoiOWZiZTYxOGRiZDZijozMTA5NDEsImV4cGVyaW1lbnRfaWQiOjMzLCJ2aXNpdG9yUmVjb3JkaW5nU2GIyZDkwYzI4ZDI2NjUVzc2lvbklkIjoxNjUwNTMyMzY0LCJjcmVhdGVkX29uIjoxNTczMTQxODMzLCJ0eXBlIjoidmlzaXRvclJlY29yZGluZ3MiLCJ2ZXJzaW9uIjoxLCSI6dHJ1ZSwiZnJuIjpmYWxzZX0=",
          "sessionId": 1650271551
        }
      ]
    },
    "FA16F2F293FF4BA7EA434269458EE545": {
      "recordings": []
    }
  }
}
{
  "_data": {
    "D1DD64154AFA4392887A3507585F83127": {
      "tests": [
        {
          "id": 1,
          "name": "Campaign 1",
          "type": "multivariate",
          "hitTime": "2022-04-18 08:46:56",
          "combination": "1",
          "combinationName": "Control"
        },
        {
          "id": 2,
          "name": "Campaign 2",
          "type": "ab",
          "hitTime": "2022-04-18 08:45:52",
          "variationId": 1,
          "variationName": "Control"
        }
      ],
      "personalize": [
        {
          "id": 3,
          "name": "Campaign 3",
          "type": "targeting",
          "hitTime": "2022-04-18 08:45:52",
          "experienceId": 2,
          "experienceName": "Variation 1"
        }
      ],
      "recordings": [
        {
          "shareUrl": "https://player.wingify.me/visitor-behavior-analysis/dist/recordings?campaignId=4&sessionId=1650532364&uuid=652951979E51A24905742E15054F0306&fetch_url=r3.visualwebsiteoptimizer.com&sig=MzEwOTQxOjY1Mjk1MTk3OUU1MUEyNDkwNTc0MkUxNTA1NEYwMzA2OjE1NzYxZjcwNTlkZjZhNjk3MmIwZWZmMjJlMjg1M2E4OWI1YWRjNGMwODE4ZDgwYzRkOWI2MmEyYTc5NGYwZTE%3D&numOfPages=1&account_id=111111&analyze=1&countryCode=IN&saved=0&nD=1&token=eyJhY2NvdW50ZjMxOwYjIiLCJzY29wZX2lkIJoYXNoIjoiOWZiZTYxOGRiZDZijozMTA5NDEsImV4cGVyaW1lbnRfaWQiOjMzLCJ2aXNpdG9yUmVjb3JkaW5nU2GIyZDkwYzI4ZDI2NjUVzc2lvbklkIjoxNjUwNTMyMzY0LCJjcmVhdGVkX29uIjoxNTczMTQxODMzLCJ0eXBlIjoidmlzaXRvclJlY29yZGluZ3MiLCJ2ZXJzaW9uIjoxLCSI6dHJ1ZSwiZnJuIjpmYWxzZX0=",
          "sessionId": 1650271551
        }
      ]
    },
    "FA16F2F293FF4BA7EA434269458EE545": {
      "recordings": []
    }
  }
}

Here, the data is presented for the visitors under their respective UUIDs.

After receiving the campaign information, involve your development team to parse through the response to assign the campaign and variation information for the lead to the campaign/experiment level record in your Salesforce account, experiment-wise.

The following is how an experiment-level record will be displayed in Salesforce:

Campaign_882.png
Campaign_882.png

Campaign_802.png
Campaign_802.png

The Wingify UUID of the respective lead will be stored in the lead-level record in Salesforce:

Lead_Info_with_UUID.png
Lead_Info_with_UUID.png

This is just one way to configure the integration. You can customize it in various ways to suit your specific use case and requirements.

#Need more help?

For more information or further assistance, contact Wingify Support.