Guides

Guides

Guides

Survey Form Webhook Guidelines

Survey Form Webhook Guidelines

Survey Form Webhook Guidelines

August 31, 2023

August 31, 2023

August 31, 2023

The existing app.walla.my does not currently offer this feature. Please note that you should use the open beta version at app.wallaform.com.


  1. Creating a Google Sheet

1-a. When Creating a New One

Access Google Drive and create a new Google Sheet.

1-b. When Already Linked to Walaa and Exporting Before Reconnecting

Select the already in-use Google Sheet, make a copy of it.

Once the copy is created, proceed with the following 2 steps.


If you want to delete the existing Google Sheet:

Click the toggle on the right side of the Google Sheet integration.

Confirm that the toggle is set to OFF along with the Google Sheet deletion message.


  1. Google Apps Script Configuration

  1. In the Google Sheet, select the top menu "Extensions" > "Apps Script."

  2. In the code editor that appears, delete the existing code and paste the code below.

function doPost(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  ss.setSpreadsheetTimeZone('Asia/Seoul');
  // Parsing the POST data to get the required data
  var data = JSON.parse(e.postData.contents);
  
  var formAnswers = data.form_answers;
  var submittedAt = new Date(data.form_response.submitted_at);

  var responseId = data.form_response.response_id.slice(0,10);
  // First row: labels
  if (sheet.getLastRow() === 0) {
    var fieldLabels = formAnswers.map(function(answer) {
      if (answer.type === 'RADIO_GRID' || answer.type === 'CHECKBOX_GRID') {
        return answer.response.map(el => `${answer.label} - ${el.lineLabel}`);
      }
      return answer.label
    }).flat();
    var headers = ['Response ID', 'Time Submitted', ...fieldLabels]
    sheet.appendRow(headers);
  } 
   var rowData = formAnswers.map(field => {
      switch (field.type) {
        case 'CHECKBOX':
        case 'RADIO': {
          var isResponseArray = Array.isArray(field.response);
          if (isResponseArray) {
            return field.response.filter(el => Boolean(el)).join(', ');
          }
          return field.response || '';
        }
        case 'CHECKBOX_GRID':
        case 'RADIO_GRID': {
          var isLineResponseArray = Array.isArray(field.response.lineResponse)
          return field.response.map(el => {
            if (isLineResponseArray) {
              return el.lineResponse.filter(el => Boolean(el)).join(', ');
            }
            return el.lineResponse || '';
          })
        }
        case 'GEOLOCATION': {
          var response = field.response || {};
          var responseArray = Object.entries(response).map(el => `${el[0]}: ${el[1]}`);
          return responseArray.join(', ');
        }
        case 'HIDDEN': {
          return field.response === undefined || field.response === null
            ? ''
            : field.response;
        }
        default: {
          var response =
            field.response === undefined || field.response === null ? '' : field.response;
          if (Array.isArray(response)) {
            return response.join(', ');
          }
          return response;
        }
      }
    }).flat();
  sheet.appendRow([responseId, submittedAt, ...rowData]);
  return ContentService.createTextOutput(JSON.stringify({result: "success"})).setMimeType(ContentService.MimeType.JSON);
}


  1. Deploy as a Web App

  1. In the code editor's top menu, select "Deploy" > "New Deployment."

  2. Click the "Settings" button, then choose "Web App."

  3. Provide a name (e.g., test1) and be sure to set access rights to 'Anyone.'

🤨 액세스 권한… 모두라구요…?
🙂 해당 코드에는 원본데이터를 읽거나 내보내는 코드가 포함되어있지 않습니다.
왈라와 Typeform의 웹훅 요청에 맞게, 데이터를 구글 시트에 쓰는 작업 만을 포함합니다.

따라서, 해당 웹앱의 주소가 노출되더라도, 데이터가 유출될 걱정은 없으며,
만약 노출된다면 새로운 배포를 통해 새로운 주소를 받으실 있습니다

  1. Finally, click "Deploy," and an "Authorization Required" button will appear.

  2. Click it to proceed with authorization.

  3. Click on your own Google account that created the Google Sheet.

  4. Click "advanced" at the bottom left, then proceed with the unsafe version at the bottom.


  1. Copy the URL of the web app

    Copy the URL of the web app that appears after deployment.


  1. Integration with the Walla Platform (Webhook)

  1. Access the Walla platform page and select the project you want to integrate.

  2. On the "Integration" page, click the "Add New Webhook" button.

  3. Enter a name freely and paste the URL of the web app copied earlier.

  4. Since the current webhook does not provide test requests, save the webhook and return to the integration.


Testing and Verification

Submit responses for the project in the Walla platform to confirm that data is being sent to the Google Sheet via the webhook.

The existing app.walla.my does not currently offer this feature. Please note that you should use the open beta version at app.wallaform.com.


  1. Creating a Google Sheet

1-a. When Creating a New One

Access Google Drive and create a new Google Sheet.

1-b. When Already Linked to Walaa and Exporting Before Reconnecting

Select the already in-use Google Sheet, make a copy of it.

Once the copy is created, proceed with the following 2 steps.


If you want to delete the existing Google Sheet:

Click the toggle on the right side of the Google Sheet integration.

Confirm that the toggle is set to OFF along with the Google Sheet deletion message.


  1. Google Apps Script Configuration

  1. In the Google Sheet, select the top menu "Extensions" > "Apps Script."

  2. In the code editor that appears, delete the existing code and paste the code below.

function doPost(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  ss.setSpreadsheetTimeZone('Asia/Seoul');
  // Parsing the POST data to get the required data
  var data = JSON.parse(e.postData.contents);
  
  var formAnswers = data.form_answers;
  var submittedAt = new Date(data.form_response.submitted_at);

  var responseId = data.form_response.response_id.slice(0,10);
  // First row: labels
  if (sheet.getLastRow() === 0) {
    var fieldLabels = formAnswers.map(function(answer) {
      if (answer.type === 'RADIO_GRID' || answer.type === 'CHECKBOX_GRID') {
        return answer.response.map(el => `${answer.label} - ${el.lineLabel}`);
      }
      return answer.label
    }).flat();
    var headers = ['Response ID', 'Time Submitted', ...fieldLabels]
    sheet.appendRow(headers);
  } 
   var rowData = formAnswers.map(field => {
      switch (field.type) {
        case 'CHECKBOX':
        case 'RADIO': {
          var isResponseArray = Array.isArray(field.response);
          if (isResponseArray) {
            return field.response.filter(el => Boolean(el)).join(', ');
          }
          return field.response || '';
        }
        case 'CHECKBOX_GRID':
        case 'RADIO_GRID': {
          var isLineResponseArray = Array.isArray(field.response.lineResponse)
          return field.response.map(el => {
            if (isLineResponseArray) {
              return el.lineResponse.filter(el => Boolean(el)).join(', ');
            }
            return el.lineResponse || '';
          })
        }
        case 'GEOLOCATION': {
          var response = field.response || {};
          var responseArray = Object.entries(response).map(el => `${el[0]}: ${el[1]}`);
          return responseArray.join(', ');
        }
        case 'HIDDEN': {
          return field.response === undefined || field.response === null
            ? ''
            : field.response;
        }
        default: {
          var response =
            field.response === undefined || field.response === null ? '' : field.response;
          if (Array.isArray(response)) {
            return response.join(', ');
          }
          return response;
        }
      }
    }).flat();
  sheet.appendRow([responseId, submittedAt, ...rowData]);
  return ContentService.createTextOutput(JSON.stringify({result: "success"})).setMimeType(ContentService.MimeType.JSON);
}


  1. Deploy as a Web App

  1. In the code editor's top menu, select "Deploy" > "New Deployment."

  2. Click the "Settings" button, then choose "Web App."

  3. Provide a name (e.g., test1) and be sure to set access rights to 'Anyone.'

🤨 액세스 권한… 모두라구요…?
🙂 해당 코드에는 원본데이터를 읽거나 내보내는 코드가 포함되어있지 않습니다.
왈라와 Typeform의 웹훅 요청에 맞게, 데이터를 구글 시트에 쓰는 작업 만을 포함합니다.

따라서, 해당 웹앱의 주소가 노출되더라도, 데이터가 유출될 걱정은 없으며,
만약 노출된다면 새로운 배포를 통해 새로운 주소를 받으실 있습니다

  1. Finally, click "Deploy," and an "Authorization Required" button will appear.

  2. Click it to proceed with authorization.

  3. Click on your own Google account that created the Google Sheet.

  4. Click "advanced" at the bottom left, then proceed with the unsafe version at the bottom.


  1. Copy the URL of the web app

    Copy the URL of the web app that appears after deployment.


  1. Integration with the Walla Platform (Webhook)

  1. Access the Walla platform page and select the project you want to integrate.

  2. On the "Integration" page, click the "Add New Webhook" button.

  3. Enter a name freely and paste the URL of the web app copied earlier.

  4. Since the current webhook does not provide test requests, save the webhook and return to the integration.


Testing and Verification

Submit responses for the project in the Walla platform to confirm that data is being sent to the Google Sheet via the webhook.

The existing app.walla.my does not currently offer this feature. Please note that you should use the open beta version at app.wallaform.com.


  1. Creating a Google Sheet

1-a. When Creating a New One

Access Google Drive and create a new Google Sheet.

1-b. When Already Linked to Walaa and Exporting Before Reconnecting

Select the already in-use Google Sheet, make a copy of it.

Once the copy is created, proceed with the following 2 steps.


If you want to delete the existing Google Sheet:

Click the toggle on the right side of the Google Sheet integration.

Confirm that the toggle is set to OFF along with the Google Sheet deletion message.


  1. Google Apps Script Configuration

  1. In the Google Sheet, select the top menu "Extensions" > "Apps Script."

  2. In the code editor that appears, delete the existing code and paste the code below.

function doPost(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  ss.setSpreadsheetTimeZone('Asia/Seoul');
  // Parsing the POST data to get the required data
  var data = JSON.parse(e.postData.contents);
  
  var formAnswers = data.form_answers;
  var submittedAt = new Date(data.form_response.submitted_at);

  var responseId = data.form_response.response_id.slice(0,10);
  // First row: labels
  if (sheet.getLastRow() === 0) {
    var fieldLabels = formAnswers.map(function(answer) {
      if (answer.type === 'RADIO_GRID' || answer.type === 'CHECKBOX_GRID') {
        return answer.response.map(el => `${answer.label} - ${el.lineLabel}`);
      }
      return answer.label
    }).flat();
    var headers = ['Response ID', 'Time Submitted', ...fieldLabels]
    sheet.appendRow(headers);
  } 
   var rowData = formAnswers.map(field => {
      switch (field.type) {
        case 'CHECKBOX':
        case 'RADIO': {
          var isResponseArray = Array.isArray(field.response);
          if (isResponseArray) {
            return field.response.filter(el => Boolean(el)).join(', ');
          }
          return field.response || '';
        }
        case 'CHECKBOX_GRID':
        case 'RADIO_GRID': {
          var isLineResponseArray = Array.isArray(field.response.lineResponse)
          return field.response.map(el => {
            if (isLineResponseArray) {
              return el.lineResponse.filter(el => Boolean(el)).join(', ');
            }
            return el.lineResponse || '';
          })
        }
        case 'GEOLOCATION': {
          var response = field.response || {};
          var responseArray = Object.entries(response).map(el => `${el[0]}: ${el[1]}`);
          return responseArray.join(', ');
        }
        case 'HIDDEN': {
          return field.response === undefined || field.response === null
            ? ''
            : field.response;
        }
        default: {
          var response =
            field.response === undefined || field.response === null ? '' : field.response;
          if (Array.isArray(response)) {
            return response.join(', ');
          }
          return response;
        }
      }
    }).flat();
  sheet.appendRow([responseId, submittedAt, ...rowData]);
  return ContentService.createTextOutput(JSON.stringify({result: "success"})).setMimeType(ContentService.MimeType.JSON);
}


  1. Deploy as a Web App

  1. In the code editor's top menu, select "Deploy" > "New Deployment."

  2. Click the "Settings" button, then choose "Web App."

  3. Provide a name (e.g., test1) and be sure to set access rights to 'Anyone.'

🤨 액세스 권한… 모두라구요…?
🙂 해당 코드에는 원본데이터를 읽거나 내보내는 코드가 포함되어있지 않습니다.
왈라와 Typeform의 웹훅 요청에 맞게, 데이터를 구글 시트에 쓰는 작업 만을 포함합니다.

따라서, 해당 웹앱의 주소가 노출되더라도, 데이터가 유출될 걱정은 없으며,
만약 노출된다면 새로운 배포를 통해 새로운 주소를 받으실 있습니다

  1. Finally, click "Deploy," and an "Authorization Required" button will appear.

  2. Click it to proceed with authorization.

  3. Click on your own Google account that created the Google Sheet.

  4. Click "advanced" at the bottom left, then proceed with the unsafe version at the bottom.


  1. Copy the URL of the web app

    Copy the URL of the web app that appears after deployment.


  1. Integration with the Walla Platform (Webhook)

  1. Access the Walla platform page and select the project you want to integrate.

  2. On the "Integration" page, click the "Add New Webhook" button.

  3. Enter a name freely and paste the URL of the web app copied earlier.

  4. Since the current webhook does not provide test requests, save the webhook and return to the integration.


Testing and Verification

Submit responses for the project in the Walla platform to confirm that data is being sent to the Google Sheet via the webhook.

Get Started

Continue Reading

Continue Reading

Continue Reading

Editorial

Insights from Location Data

March 12, 2024

Editorial

Paprikan Canada Voyage : Inside and Beyond

February 16, 2024

GUIDES

The Marketer's Ace: Hidden Fields

February 14, 2024

Editorial

To You Who Has Been Staring at Data for 10 Hours

January 23, 2024

Editorial

The Secret to Acquiring 30,000 Users with Minimal Marketing Budget

November 29, 2023

Editorial

Paprikan's Open Hiring Journey

November 28, 2023

Guides

Survey Form Webhook Guidelines

August 31, 2023

Editorial

Starting a Company and Living Together in Canada

June 12, 2023

Guides

Let's Group Data Using the Group By Feature

May 17, 2023

Editorial

The Tiny History of Walla

May 15, 2023

Editorial

Insights from Walla Team's Remarkable 220x Revenue Growth in Just 6 Months

April 28, 2024

Editorial

Insights from a Walla Team Co-founder Shared in a University Lecture

April 5, 2023

Guides

How to Create a One-Page Survey

April 5, 2023

Guides

How to Set Up Notifications for Surveys

April 5, 2023

Editorial

A Letter to Aspiring Entrepreneurs

March 29, 2023

Editorial

Why Walla Became Walla: The Story Behind the Name

March 21, 2023

Guides

The Perfect Way to Collect Location Data

March 15, 2023

Guides

Fully Understand Logic Setting

March 14, 2023

Guides

Exploring Walla Team's Philosophy Behind Pricing

March 14, 2023

GUIDES

Analyzing Response Sheet Data with GPT

March 8, 2023

Guides

The Most Efficient Way to Use Google Forms

March 8, 2023

Guides

Hidden Fields: How to Stop Hiding and Start Using

March 8, 2023

Editorial

Hello, It's Team Walla

March 10, 2023

Editorial

Why is it called Paprika Data Lab?

March 10, 2023

Editorial

Insights from Location Data

March 12, 2024

Editorial

Paprikan Canada Voyage : Inside and Beyond

February 16, 2024

GUIDES

The Marketer's Ace: Hidden Fields

February 14, 2024

Editorial

To You Who Has Been Staring at Data for 10 Hours

January 23, 2024

Editorial

The Secret to Acquiring 30,000 Users with Minimal Marketing Budget

November 29, 2023

Editorial

Paprikan's Open Hiring Journey

November 28, 2023

Guides

Survey Form Webhook Guidelines

August 31, 2023

Editorial

Starting a Company and Living Together in Canada

June 12, 2023

Guides

Let's Group Data Using the Group By Feature

May 17, 2023

Editorial

The Tiny History of Walla

May 15, 2023

Editorial

Insights from Walla Team's Remarkable 220x Revenue Growth in Just 6 Months

April 28, 2024

Editorial

Insights from a Walla Team Co-founder Shared in a University Lecture

April 5, 2023

Guides

How to Create a One-Page Survey

April 5, 2023

Guides

How to Set Up Notifications for Surveys

April 5, 2023

Editorial

A Letter to Aspiring Entrepreneurs

March 29, 2023

Editorial

Why Walla Became Walla: The Story Behind the Name

March 21, 2023

Guides

The Perfect Way to Collect Location Data

March 15, 2023

Guides

Fully Understand Logic Setting

March 14, 2023

Guides

Exploring Walla Team's Philosophy Behind Pricing

March 14, 2023

GUIDES

Analyzing Response Sheet Data with GPT

March 8, 2023

Guides

The Most Efficient Way to Use Google Forms

March 8, 2023

Guides

Hidden Fields: How to Stop Hiding and Start Using

March 8, 2023

Editorial

Hello, It's Team Walla

March 10, 2023

Editorial

Why is it called Paprika Data Lab?

March 10, 2023

Editorial

Insights from Location Data

March 12, 2024

Editorial

Paprikan Canada Voyage : Inside and Beyond

February 16, 2024

GUIDES

The Marketer's Ace: Hidden Fields

February 14, 2024

Editorial

To You Who Has Been Staring at Data for 10 Hours

January 23, 2024

Editorial

The Secret to Acquiring 30,000 Users with Minimal Marketing Budget

November 29, 2023

Editorial

Paprikan's Open Hiring Journey

November 28, 2023

Guides

Survey Form Webhook Guidelines

August 31, 2023

Editorial

Starting a Company and Living Together in Canada

June 12, 2023

Guides

Let's Group Data Using the Group By Feature

May 17, 2023

Editorial

The Tiny History of Walla

May 15, 2023

Editorial

Insights from Walla Team's Remarkable 220x Revenue Growth in Just 6 Months

April 28, 2024

Editorial

Insights from a Walla Team Co-founder Shared in a University Lecture

April 5, 2023

Guides

How to Create a One-Page Survey

April 5, 2023

Guides

How to Set Up Notifications for Surveys

April 5, 2023

Editorial

A Letter to Aspiring Entrepreneurs

March 29, 2023

Editorial

Why Walla Became Walla: The Story Behind the Name

March 21, 2023

Guides

The Perfect Way to Collect Location Data

March 15, 2023

Guides

Fully Understand Logic Setting

March 14, 2023

Guides

Exploring Walla Team's Philosophy Behind Pricing

March 14, 2023

GUIDES

Analyzing Response Sheet Data with GPT

March 8, 2023

Guides

The Most Efficient Way to Use Google Forms

March 8, 2023

Guides

Hidden Fields: How to Stop Hiding and Start Using

March 8, 2023

Editorial

Hello, It's Team Walla

March 10, 2023

Editorial

Why is it called Paprika Data Lab?

March 10, 2023