How to get a Survey Link in Salesforce via API call

How to get a Survey Link in Salesforce via API call

Use - Case: When you want to send surveys created on SurveySensum via Salesforce, you have to configure this integration. 

Flow of Integration

  1. Event happens in Salesforce, like a ticket gets closed. 

  2. Immediately a request is sent to SurveySensum, please return a survey link for the customer who’s ticket is closed

  3. SurveySensum returns a unique survey link, and workflow is triggered in Salesforce to use that link and send the survey to the customer. 

Note* - You need to configure a workflow in salesforce that sends an automatic survey to the customer after the ticket gets closed. 

In this article we are going to Share a Survey Link via Salesforce Flow and Apex class.

This process involves two steps. These steps involve little technical knowledge, so it is recommended you have a Salesforce Engineer and SurveySensum team to help you through the process. The steps are as follows:

Task 1: Using Salesforce Contact Object as a trigger

  1. Add a record trigger, having a condition that checks if the Contact field is updated. We are taking a scenario like updating the Description of a Contact will trigger the Flow.
  2. Add an Apex Action for calling out the API.



Follow the below instructions for creating an Apex Class
  1. Click on setup and open the developer console.

  2. In Salesforce, add an Apex Class and create an “@invocable method” (The action reads the invocable methods). Like we have created a Class “CampaignController” and added an Invocablemethod “SendCampaign” with a List of emails as a parameter(InvocableMethod only allows List<T>).
    public class CampaignController {
    @invocablemethod(Label='Send survey' description='Makes API call')
    public static void sendCampaign(List<String> email){
    String contactEmail = email[0];
    if(!System.isFuture() && !System.isBatch()){
    GetSurveyLinkCallout.getSurveyLink(contactEmail);
    }
    }
    }

  3. Inside the method, we take the Email as a parameter and call another method. In the above screenshot, you can see we have called the “getSurveyLink” method defined in the “GetSurveyLinkCallout” class.

  4. Now create a new Class that contains your API callout. As mentioned above we have created a class “GetSurveyLinkCallout”, inside the class, we have added a method “getSurveyLink”. We have made the method “@future(callout=true)” as we have to make an HTTP call. In this method, we are updating two custom fields of contacts “Survey Link” and “Survey Link Updated” to “True”.
    public class GetSurveyLinkCallout {
    @future(callout=true)
    public static void getSurveyLink(String contactEmail){
    String apiUrl = 'https://open-api.surveysensum.com/api/v2/Share/shareSurvey/link?surveyGuid=c9341fa9-8e3e-4ccc-906f-2a268dab977e';
    System.debug(contactEmail);
    Http h = new Http();
    httpRequest request = new HttpRequest();
    request.setMethod('POST');
    request.setTimeout(60000);
    request.setEndpoint(apiUrl);
    String authorizationHeader = 'Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6ImEyNTYwZTZmMmYyMjU1NGIzOWM3NTllNGFiOWVmYWIwIiwidHlwIjoiSldUIn0.eyJuYmYiOjE2NzE1Mzg0OTYsImV4cCI6MTcwMzA3NDQ5NiwiaXNzIjoiaHR0cHM6Ly9wcm9kLXN0cy5zdXJ2ZXlzZW5zdW0uY29tIiwiYXVkIjpbImh0dHBzOi8vcHJvZC1zdHMuc3VydmV5c2Vuc3VtLmNvbS9yZXNvdXJjZXMiLCJ2el9vcGVuX2FwaSJdLCJjbGllbnRfaWQiOiI0NmQ1ODI1NS0xZWFkLTQyMGUtYWVmYy1jZmI2ZjEwNjI3YjAiLCJzdWIiOiIyY2Y5NzgwNy1kNzhhLTQzZjEtOWVlMi0wYjdlMTEzYTZlMDAiLCJhdXRoX3RpbWUiOjE2NzE1Mzg0OTYsImlkcCI6ImxvY2FsIiwiSXNQYW5lbEFsbG93ZWQiOiJUcnVlIiwic3Vic2NyaXB0aW9uR3VpZCI6IjgyOWU1N2Y0LWEyMmQtNGQ1YS04MTk0LTljYTJkODg3M2NiMCIsInVzZXJJZCI6ImF1dG8ubmV1cm9zZW5zdW1AZ21haWwuY29tIiwiRnVsbHlNYW5hZ2VkVXNlciI6ImZhbHNlIiwiQWdlbnRVc2VyIjoiZmFsc2UiLCJmb3JaYXBwZXIiOiJmYWxzZSIsInN1YklkIjoiMzU1IiwidXNlclN0YXR1cyI6IjYiLCJQZXJtaXNzaW9uIjpbImNyZWF0ZV9jb250YWN0X2xpc3RzIiwidmlld19jb250YWN0X2xpc3RzIiwidXBkYXRlX2NvbnRhY3RfbGlzdHMiLCJkZWxldGVfY29udGFjdF9saXN0cyIsImNyZWF0ZV9jb250YWN0Iiwidmlld19jb250YWN0IiwidXBkYXRlX2NvbnRhY3QiLCJkZWxldGVfY29udGFjdCIsImNyZWF0ZV9zdXJ2ZXlzIiwidmlld19zdXJ2ZXlzIiwidXBkYXRlX3N1cnZleSIsImRlbGV0ZV9zdXJ2ZXkiLCJjcmVhdGVfc2hhcmVzIiwidmlld19zaGFyZXMiLCJkZWxldGVfc2hhcmVzIiwidmlld193ZWJob29rcyIsImNyZWF0ZV93ZWJob29rcyIsInVwZGF0ZV93ZWJob29rcyIsImRlbGV0ZV93ZWJob29rcyIsInZpZXdfcmVzcG9uc2VzIiwidmlld19lbWFpbF90ZW1wbGF0ZXMiXSwic2NvcGUiOlsib3BlbmlkIiwicHJvZmlsZSIsIm1hbmFnZV9jb250YWN0X2xpc3RzIiwibWFuYWdlX2NvbnRhY3RzIiwibWFuYWdlX3N1cnZleXMiLCJtYW5hZ2Vfd2ViaG9va3MiLCJzdXJ2ZXlfc2hhcmUiLCJ2aWV3X2NvbnRhY3RfbGlzdHMiLCJ2aWV3X2NvbnRhY3RzIiwidmlld19lbWFpbF90ZW1wbGF0ZXMiLCJ2aWV3X3Jlc3BvbnNlcyIsInZpZXdfc3VydmV5cyIsInZpZXdfd2ViaG9va3MiLCJvZmZsaW5lX2FjY2VzcyJdLCJhbXIiOlsicHdkIl19.2YpckkxBhUJF612GxNQ6h5NS6IPeH2z7hDTfbl8elDaX3dfdkg1l4gDWPwv0C_7kXyggixE1vf-VMr_VftcE8VBbguz8NDLW5g5JZp_cJ4acC7pmU3vaaJQ1fSXYWipvDLtXWo1tGijAoK3cKHr6mRum-SWZlNmtIwomiwmuOeuLQA0OFvCHHOnDLJu2piuxtNUZXnQkTpeey1q9VLMKr1yCDofOLJWXUIxCs6rrvF4hm0AnRd1zZtDDHFt2zS8bRlJ1YP-IYQOLgo03Pu3QbJGn9tizWfHqxsDWVL-3ZbbddhYCnpsfF_i8m9AkZMJzEQkmwJcXd8muQaA4dwHUuQ';
    request.setHeader('Authorization', authorizationHeader);
    String requestBody = '{"contactInfo": [{"key": "vz_c_name","value": "Aashish"},{"key": "vz_c_email","value": "'+ contactEmail +'"}],"metadata": [{"key": "vz_transaction_id","value": "T-4"}]}';
    System.debug(requestBody);
    request.setHeader('Content-Type', 'application/json;charset=UTF-8');
    request.setBody(requestbody);
    HttpResponse response = h.send(request);
    String respData = response.getBody();
    system.debug('Response ' + respData);
    if (response.getStatusCode() == 200)
    {
    Map<String, Object> results = (Map<String, Object>) JSON.deserializeUntyped(response.getBody());
    List<Object> surveyLinks = (List<Object>) results.get('result');
    System.debug(String.valueof(surveyLinks[0]));
    Contact contactInstance = new Contact();
    contactInstance = [SELECT Survey_Link__c, Survey_Link_Updated__c From Contact WHERE Email = :contactEmail LIMIT 1];
    contactInstance.Survey_Link__c = String.valueof(surveyLinks[0]);
    contactInstance.Survey_Link_Updated__c = 'True';
    update contactInstance;
    }
    }
    }

Step 2:

  1. Add a record trigger, having a condition that checks if the Contact field: “Survey Link Updated“ equals “True”.

  2. Add Update Records data elements to update the “Survey Link Updated” field to “False”.

  3. Add Email Action for Send an email campaign, in the campaign body we can add “Survey Link” field which consists of the latest value of the link.





These steps will allow you to send a Survey Link to any customer using Salesforce and Apex class.

Email us at support@surveysensum.com for any concerns or if you need assistance.

    • Related Articles

    • How to integrate with third-party applications using SurveySensum API's

      Use SurveySensum application for using open API's to integrate with third-party applications SurveySensum API helps you to integrate with your own application ecosystems such as CRM, HRM, and Helpdesk applications. It frees you from the ...
    • How to integrate SurveySensum surveys in HubSpot Campaigns

      This document will help you understand how to integrate SurveySensum with Hubspot’s marketing email campaigns. This integration will help you capture certain data from your hubspot campaigns such as name or email address of the respondent (and other ...
    • Integration with Slack

      Integrating SurveySensum with Slack - Getting Real-Time Slack Notifications SurveySensum’s integration with Slack is a great way for our customers to share customer reviews and specific survey responses with their teams in real-time. And without ...
    • Integration with Intercom

      Integrate SurveySensum with Intercom Messenger SurveySensum’s integration with Intercom allows the users to collect information quickly and in a simplified way from a customer. This can be done by embedding a survey from SurveySensum in an Intercom ...
    • Creating Email notifications

      Creating and analyzing surveys is not enough to keep your customers loyal and engaged. This SurveySensum feature will help you to be on top of your customers to better their experiences. Do you want to alert your managers via email, when a respondent ...