Help Center

Help Center

How can we help?

icon
์›นํ›…

๋ฆฌ์Šคํ† ๋ฒ ์ด ํผ ์ œ์ถœ ์‹œ, ๋‹ค๋ฅธ ์•ฑ์ด๋‚˜ URL๋กœ ์ •๋ณด๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ย 

ย 
  1. ์ž‘๋™ ์›๋ฆฌ
  1. ์—ฐ๋™ ๋ฐฉ๋ฒ•
  1. ์š”์ฒญ ์‹คํŒจ ๋ฐ ์žฌ์‹œ๋„
  1. ์›นํ›… ๊ด€๋ฆฌ
  1. ์›นํ›… ์ด๋ฒคํŠธ ์˜ˆ์‹œ
ย 
ย 

์ž‘๋™ ์›๋ฆฌ

ย 
์‘๋‹ต์ž๊ฐ€ ๋ฆฌ์Šคํ† ๋ฒ ์ด ์„ค๋ฌธ์„ ์ œ์ถœํ•˜๋ฉด ์‘๋‹ต ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ ์•Œ๋ฆผ์ด POST ์š”์ฒญ์„ ํ†ตํ•ด JSON ํ˜•์‹์œผ๋กœ URL์— ์ „์†ก๋ฉ๋‹ˆ๋‹ค .
ย 

์—ฐ๋™ ๋ฐฉ๋ฒ•

1๏ธโƒฃ

notion image
  • ๊ฒฐ๊ณผ/์—ฐ๋™ ๋ฉ”๋‰ด ์•„๋ž˜์˜ ์™ธ๋ถ€ ์•ฑ ์—ฐ๋™์„ ํด๋ฆญํ•ด์ฃผ์„ธ์š”.
ย 
ย 

2๏ธโƒฃ

notion image
  • ์›นํ›… ์—ฐ๊ฒฐํ•˜๊ธฐ ํด๋ฆญ
  • ์„ค๋ฌธ ๋‹น ์ตœ๋Œ€ 3๊ฐœ ๊นŒ์ง€ ๋“ฑ๋ก ๊ฐ€๋Šฅ
ย 
ย 

3๏ธโƒฃ

notion image
โœ‹ ์„ค๋ฌธ๋ณ„๋กœ ์ตœ๋Œ€ 3๊ฐœ ๊นŒ์ง€ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
ย 

Endpoint URL

ย 
POST ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›นํ›… ์š”์ฒญ์„ ์ˆ˜๋ฝํ•  ์ˆ˜ ์žˆ๋Š” HTTP ๋˜๋Š” HTTPS ์—”๋“œํฌ์ธํŠธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
ย 
  • JSON ํŽ˜์ด๋กœ๋“œ๋กœ POST ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • 3์ดˆ ์ด๋‚ด์— ์„ฑ๊ณต ์ƒํƒœ ์ฝ”๋“œ(2XX)๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
ย 
โš ๏ธ
์ƒˆ ์ œ์ถœ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‘๋‹ตํ•˜๋Š” ๋ฐ 3์ดˆ์˜ ์ œํ•œ ์‹œ๊ฐ„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋ฉด ๋‚ด๋ถ€์ ์œผ๋กœ ๋‹ค๋ฅธ ์„œ๋น„์Šค๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
ย 

Signing secret

Signing secret์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ์š”์ฒญ์ด ๋ฆฌ์Šคํ† ๋ฒ ์ด ์„œ๋ฒ„์—์„œ ์˜จ๊ฒƒ์ธ์ง€ ํ™•์ธํ•จ์œผ๋กœ์จ ์›นํ›…์„ ๋ณดํ˜ธํ•ฉ๋‹ค.
  • ์ด ์˜ต์…˜์ด ํ™œ์„ฑํ™”๋˜๋ฉด ์›นํ›… ์š”์ฒญ์— Listovey-Signatureํ—ค๋”๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
  • ์ด ํ—ค๋”์˜ ๊ฐ’์€ ์›นํ›… ํŽ˜์ด๋กœ๋“œ์˜ SHA256 ์•”ํ˜ธํ™” ํ•ด์‹œ์ž…๋‹ˆ๋‹ค.
ย 
ย 
Node.js ์˜ˆ์ œ
const crypto = require('crypto') app.use(express.json()); app.post('/webhook', (req, res) => { const payload = req.body; const listoveySignature = req.headers['listovey-signature']; // 'SIGNING_SECRET' ๋ถ€๋ถ„์„ ๋ฆฌ์Šคํ† ๋ฒ ์ด์—์„œ ๋“ฑ๋กํ•œ Signing secret ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ const mySigningSecret = 'SIGNING_SECRET'; // signing secret๊ณผ payload๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ„์‚ฐ const payloadSignature = crypto.createHmac('sha256', mySigningSecret) .update(JSON.stringify(payload)) .digest('base64'); // listoveySignature ์™€ payloadSignature ๊ฐ’์„ ๋น„๊ต if (signature === payloadSignature) { // ์œ ํšจํ•œ ์„œ๋ช… res.status(200).send('success.'); } else { // ์œ ํšจํ•˜์ง€ ์•Š์€ ์„œ๋ช… res.status(401).send('invalid signature.'); } });
ย 
Java ์˜ˆ์ œ
import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.util.Base64; import static spark.Spark.*; public class Main { public static void main(String[] args) { post("/webhook", (req, res) -> { String payload = req.body(); String listoveySignature = req.headers("listovey-signature"); // 'SIGNING_SECRET' ๋ถ€๋ถ„์„ ๋ฆฌ์Šคํ† ๋ฒ ์ด์—์„œ ๋“ฑ๋กํ•œ Signing secret ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ String mySigningSecret = "SIGNING_SECRET"; // signing secret๊ณผ payload๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ„์‚ฐ String payloadSignature = calculateHmacSHA256(payload, mySigningSecret); // listoveySignature ์™€ payloadSignature ๊ฐ’์„ ๋น„๊ต if (listoveySignature.equals(payloadSignature)) { // ์œ ํšจํ•œ ์„œ๋ช… return "success."; } else { // ์œ ํšจํ•˜์ง€ ์•Š์€ ์„œ๋ช… return "invalid signature."; } }); } private static String calculateHmacSHA256(String data, String key) throws NoSuchAlgorithmException, InvalidKeyException { Mac sha256Hmac = Mac.getInstance("HmacSHA256"); SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), "HmacSHA256"); sha256Hmac.init(secretKey); byte[] hmacData = sha256Hmac.doFinal(data.getBytes()); return Base64.getEncoder().encodeToString(hmacData); } }
ย 
Python ์˜ˆ์ œ
import hashlib import hmac from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/webhook', methods=['POST']) def webhook(): payload = request.json listovey_signature = request.headers.get('listovey-signature') # 'SIGNING_SECRET' ๋ถ€๋ถ„์„ ๋ฆฌ์Šคํ† ๋ฒ ์ด์—์„œ ๋“ฑ๋กํ•œ Signing secret ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ my_signing_secret = 'SIGNING_SECRET' # signing secret๊ณผ payload๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ„์‚ฐ payload_signature = hmac.new(my_signing_secret.encode('utf-8'), msg=json.dumps(payload).encode('utf-8'), digestmod=hashlib.sha256).digest() payload_signature = payload_signature.hex() # listovey_signature ์™€ payload_signature ๊ฐ’์„ ๋น„๊ต if listovey_signature == payload_signature: # ์œ ํšจํ•œ ์„œ๋ช… return 'success.', 200 else: # ์œ ํšจํ•˜์ง€ ์•Š์€ ์„œ๋ช… return 'invalid signature.', 401 if __name__ == '__main__': app.run()
ย 

์š”์ฒญ ์‹คํŒจ ๋ฐ ์žฌ์‹œ๋„

ย 
์›นํ›… ์—”๋“œํฌ์ธํŠธ๊ฐ€ 3์ดˆ ์ด๋‚ด์— ์„ฑ๊ณต์ ์ธ ์ƒํƒœ ์ฝ”๋“œ(2XX)๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ ์žฌ์‹œ๋„ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ œ์ถœ ์ „๋‹ฌ์„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ์žฌ์‹œ๋„ ์ˆœ์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
ย 
์›นํ›… ์—”๋“œํฌ์ธํŠธ๊ฐ€ 3์ดˆ ์ด๋‚ด์— ์„ฑ๊ณต์ ์ธ ์ƒํƒœ ์ฝ”๋“œ(2XX)๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜์—ฌ ์—”๋“œํฌ์ธํŠธ์— ๋Œ€ํ•œ ์š”์ฒญ์„ ๋‹ค์‹œ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
  • HTTP ์ƒํƒœ๊ฐ€ย 410 Gone 404 Not Found ๋กœ ์ˆ˜์‹ ๋˜๋ฉด ์žฌ์‹œ๋„๊ฐ€ ์ˆ˜ํ–‰๋˜์ง€ ์•Š๊ณ  ์›นํ›„ํฌ๊ฐ€ ์ฆ‰์‹œ ๋น„ํ™œ์„ฑํ™”๋˜๋ฉฐ ๊ฐ€์ž…๋œ ์ด๋ฉ”์ผ ๊ณ„์ •์œผ๋กœ ์•ˆ๋‚ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
  • ๋‹ค๋ฅธ HTTP ์ฝ”๋“œ๊ฐ€ ์ˆ˜์‹ ๋˜๋ฉด 5๋ถ„, 30๋ถ„, 1์‹œ๊ฐ„, 2์‹œ๊ฐ„, 6์‹œ๊ฐ„ ํ›„์— ์—”๋“œํฌ์ธํŠธ์— ๋Œ€ํ•œ ์š”์ฒญ์„ 5๋ฒˆ ๋‹ค์‹œ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
  • HTTP ์ƒํƒœ๊ฐ€ ย 429 Too Many Requests 408 Timeout 503 Service Unavailable 423 Locked ์œผ๋กœ ์ˆ˜์‹ ๋˜๋ฉด ์žฌ์‹œ๋„ ์‹œ๊ฐ„์— 1~3,000์ดˆ ์‚ฌ์ด๋กœ ์‹œ๊ฐ„์ด ์ถ”๊ฐ€๋˜์–ด ๋‹ค์‹œ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
ย 

์ž๋™ ๋น„ํ™œ์„ฑํ™”

ย 
ํ•˜๋ฃจ ๋™์•ˆ 100ํšŒ ์ด์ƒ์˜ ์ „๋‹ฌ ์‹œ๋„๋กœ 100% ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ์›นํ›…์„ ์ค‘์ง€ํ•˜๊ณ  ์ด๋ฉ”์ผ ๊ณ„์ •์œผ๋กœ ์•ˆ๋‚ดํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
ย 
ย 

์›นํ›… ๊ด€๋ฆฌ

ย 
์›นํ›… URL์ด ํ‘œ์‹œ๋˜๊ณ  ํ† ๊ธ€์„ ํด๋ฆญํ•˜๋ฉด ์›นํ›… URL์„ ์—ฐ๊ฒฐํ•˜๊ณ  ์ผ์‹œ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ย 
notion image
ย 
์ด๋ฒคํŠธ ๋กœ๊ทธ๋ฅผ ๋ณด๋ ค๋ฉด ๋กœ๊ทธย ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  • ์ด ๋กœ๊ทธ์—๋Š” ์›นํ›… ์—”๋“œํฌ์ธํŠธ์— ๋Œ€ํ•œ ์ตœ๊ทผ 31์ผ ๋™์•ˆ์˜ ์š”์ฒญ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์žฌ๋ฐœ์†ก ๊ธฐ๋Šฅ์œผ๋กœ ์‹คํŒจํ•œ ์ด๋ฒคํŠธ์— ๋Œ€ํ•ด ์ˆ˜๋™์œผ๋กœ ๋‹ค์‹œ ๋ฐœ์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ ์ด๋ฒคํŠธ ๋ฐœ์†ก์œผ๋กœ ์ž„์˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (ํ”Œ๋žœ๊ณผ ์ƒ๊ด€ ์—†์ด ์ด์šฉ ๊ฐ€๋Šฅ)
ย 
notion image
ย 
์›นํ›…์„ ์ˆ˜์ • ํ•˜์‹œ๋ ค๋ฉด [์ˆ˜์ •] ๋ฒ„ํŠผ์„, ์‚ญ์ œ ํ•˜์‹œ๋ ค๋ฉด [์‚ญ์ œ] ๋ฒ„ํŠผ์„ ํด๋ฆญ ํ•ฉ๋‹ˆ๋‹ค.
ย 

์›นํ›… ์ด๋ฒคํŠธ ์˜ˆ์‹œ

์ด ์˜ˆ์ œ ์ด๋ฒคํŠธ์—๋Š” ๋ฆฌ์Šคํ† ๋ฒ ์ด๊ฐ€ ์ง€์›ํ•˜๋Š” ๋ชจ๋“  ์œ ํ˜•์˜ ํ•„๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
ย 
POST /[webhook_url] HTTP/1.1 "content-type": "application/json; charset=UTF-8" "user-agent": "Listovey webhook"
{ "eventId": "912ba841-32a8-4e64-b7f9-c92f480b0dfc", "eventType": "FORM_RESPONSE", "createdAt": "2024-03-05T03:26:37.430Z", "data": { "response": { "responseId": "R17E1Gc", "createdAt": "2024-03-05T03:26:37.402Z", "submittedAt": "2024-03-05T03:26:37.402Z" }, "form": { "formId": "S7877", "title": "์ „์ฒด๋ฌธํ•ญ", "fields": [ { "id": "Q114003", "no": 1, "title": "๋‹จ์ผ์„ ํƒํ˜•", "type": "SINGLE-CHOICE", "choices": [ { "id": "_01163458", "text": "์„ ํƒ 1" }, { "id": "_01163459", "text": "์„ ํƒ 2" } ], "value": { "id": "_01163458", "commentValue": "TEST" } }, { "id": "Q114004", "no": 2, "title": "๋‹ค์ค‘์„ ํƒํ˜•", "type": "MULTI-CHOICE", "choices": [ { "id": "_0242743", "text": "์„ ํƒ 1" }, { "id": "_0242744", "text": "์„ ํƒ 2" } ], "value": [ { "id": "_0242743", "commentValue": "TEST" } ] }, { "id": "Q114005", "no": 3, "title": "๋“œ๋กญ๋‹ค์šดํ˜•", "type": "DROPDOWN", "choices": [ { "id": "_214436", "text": "์˜ต์…˜ 1" }, { "id": "_214437", "text": "์˜ต์…˜ 2" } ], "value": [ "_214436" ], "commentValue": "" }, { "id": "Q114006", "no": 4, "title": "๋‹จ์ผ์„ ํƒํ˜• ๋งคํŠธ๋ฆญ์Šค", "type": "SINGLE-MATRIX", "rows": [ { "id": "row_0318066", "text": "ํ•ญ๋ชฉ 1" }, { "id": "row_0318067", "text": "ํ•ญ๋ชฉ 2" } ], "columns": [ { "id": "col_0316013", "text": "์„ ํƒ 1" }, { "id": "col_0316014", "text": "์„ ํƒ 2" } ], "value": { "row_0318066": "col_0316013", "row_0318067": "col_0316013" }, "commentValue": "" }, { "id": "Q114007", "no": 5, "title": "๋‹ค์ค‘์„ ํƒํ˜• ๋งคํŠธ๋ฆญ์Šค", "type": "MULTI-MATRIX", "rows": [ { "id": "row_044827", "text": "ํ•ญ๋ชฉ 1" }, { "id": "row_044828", "text": "ํ•ญ๋ชฉ 2" } ], "columns": [ { "id": "col_044000", "text": "์„ ํƒ 1" }, { "id": "col_044001", "text": "์„ ํƒ 2" } ], "value": { "row_044827": [ "col_044000" ], "row_044828": [ "col_044000" ] }, "commentValue": "TEST" }, { "id": "Q114008", "no": 6, "title": "์ด๋ฏธ์ง€ ๋‹จ์ผ์„ ํƒํ˜•", "type": "SINGLE-IMAGE-CHOICE", "choices": [ { "id": "_1217029", "text": "์„ ํƒ 1" }, { "id": "_1217030", "text": "์„ ํƒ 2" } ], "value": { "id": "_1217029", "commentValue": "TEST" } }, { "id": "Q114009", "no": 7, "title": "์ด๋ฏธ์ง€ ๋‹ค์ค‘์„ ํƒํ˜•", "type": "MULTI-IMAGE-CHOICE", "choices": [ { "id": "_1311411", "text": "์„ ํƒ 1" }, { "id": "_1311412", "text": "์„ ํƒ 2" } ], "value": [ { "id": "_1311411", "commentValue": "" } ] }, { "id": "Q114010", "no": 8, "title": "๊ฐ€๋กœํ˜• ํ‰๊ฐ€์ฒ™๋„", "type": "HORIZONTAL-SCALE", "choices": [ { "id": "_0558500", "no": 1 }, { "id": "_0558501", "no": 2 }, { "id": "_0558502", "no": 3 }, { "id": "_0558503", "no": 4 }, { "id": "_0558504", "no": 5 } ], "value": "_0558500", "commentValue": "" }, { "id": "Q114011", "no": 9, "title": "๊ฐ€๋กœํ˜• ํ‰๊ฐ€์ฒ™๋„ ๊ทธ๋ฃน", "type": "HORIZONTAL-SCACLE-GROUP", "rows": [ { "id": "row_0610318", "text": "ํ•ญ๋ชฉ 1" }, { "id": "row_0610319", "text": "ํ•ญ๋ชฉ 2" } ], "columns": [ { "id": "col_0612615", "no": 1 }, { "id": "col_0612616", "no": 2 }, { "id": "col_0612617", "no": 3 }, { "id": "col_0612618", "no": 4 }, { "id": "col_0612619", "no": 5 } ], "value": { "row_0610318": "col_0612615", "row_0610319": "col_0612615" }, "commentValue": "" }, { "id": "Q114012", "no": 10, "title": "์„ธ๋กœํ˜• ํ‰๊ฐ€์ฒ™๋„", "type": "VERTICAL-SCALE", "choices": [ { "id": "_0714754", "text": "์„ ํƒ 1", "no": 1 }, { "id": "_0714755", "text": "์„ ํƒ 2", "no": 2 }, { "id": "_0714756", "text": "์„ ํƒ 3", "no": 3 }, { "id": "_0714757", "text": "์„ ํƒ 4", "no": 4 }, { "id": "_0714758", "text": "์„ ํƒ 5", "no": 5 } ], "value": "_0714754", "commentValue": "" }, { "id": "Q114013", "no": 11, "title": "์„ธ๋กœํ˜• ํ‰๊ฐ€์ฒ™๋„ ๊ทธ๋ฃน", "type": "VERTICAL-SCALE-GROUP", "rows": [ { "id": "row_081432", "text": "ํ•ญ๋ชฉ 1" }, { "id": "row_081433", "text": "ํ•ญ๋ชฉ 2" } ], "columns": [ { "id": "col_082006", "text": "์„ ํƒ 1", "no": 1 }, { "id": "col_082007", "text": "์„ ํƒ 2", "no": 2 }, { "id": "col_082008", "text": "์„ ํƒ 3", "no": 3 }, { "id": "col_082009", "text": "์„ ํƒ 4", "no": 4 }, { "id": "col_082010", "text": "์„ ํƒ 5", "no": 5 } ], "value": { "row_081432": "col_082006", "row_081433": "col_082006" }, "commentValue": "" }, { "id": "Q114014", "no": 12, "title": "์ถ”์ฒœํ˜•", "type": "RECOMMEND", "choices": [ { "id": "_146001", "text": "์„ ํƒ 1", "no": 1 }, { "id": "_146002", "text": "์„ ํƒ 2", "no": 2 }, { "id": "_146003", "text": "์„ ํƒ 3", "no": 3 }, { "id": "_146004", "text": "์„ ํƒ 4", "no": 4 }, { "id": "_146005", "text": "์„ ํƒ 5", "no": 5 } ], "value": "_146001", "commentValue": "" }, { "id": "Q114015", "no": 13, "title": "์ถ”์ฒœํ˜• ๊ทธ๋ฃน", "type": "RECOMMEND-GROUP", "rows": [ { "id": "row_152142", "text": "ํ•ญ๋ชฉ 1" }, { "id": "row_152143", "text": "ํ•ญ๋ชฉ 2" } ], "columns": [ { "id": "col_153104", "text": "์„ ํƒ 1", "no": 1 }, { "id": "col_153105", "text": "์„ ํƒ 2", "no": 2 }, { "id": "col_153106", "text": "์„ ํƒ 3", "no": 3 }, { "id": "col_153107", "text": "์„ ํƒ 4", "no": 4 }, { "id": "col_153108", "text": "์„ ํƒ 5", "no": 5 } ], "value": { "row_152142": "col_153104", "row_152143": "col_153104" }, "commentValue": "" }, { "id": "Q114016", "no": 14, "title": "ํƒ€์ž…๊ฒ€์‚ฌ ์ž…๋ ฅํ˜• - ํ…์ŠคํŠธ", "type": "INPUT", "kind": "TEXT", "value": "TEST" }, { "id": "Q114048", "no": 15, "title": "ํƒ€์ž…๊ฒ€์‚ฌ ์ž…๋ ฅํ˜• - ์ˆซ์ž", "type": "INPUT", "kind": "NUMBER", "value": "1" }, { "id": "Q114049", "no": 16, "title": "ํƒ€์ž…๊ฒ€์‚ฌ ์ž…๋ ฅํ˜• - ์ด๋ฉ”์ผ", "type": "INPUT", "kind": "EMAIL", "value": "test@listovey.com" }, { "id": "Q114050", "no": 17, "title": "ํƒ€์ž…๊ฒ€์‚ฌ ์ž…๋ ฅํ˜• - ์ „ํ™”๋ฒˆํ˜ธ", "type": "INPUT", "kind": "PHONE", "value": "+82 0100000000" }, { "id": "Q114051", "no": 18, "title": "ํƒ€์ž…๊ฒ€์‚ฌ ์ž…๋ ฅํ˜• - ๋‚ ์งœ", "type": "INPUT", "kind": "DATE", "value": "2024-03-05" }, { "id": "Q114042", "no": 19, "title": "์žฅ๋ฌธ ์„œ์ˆ ํ˜•", "type": "TEXTAREA", "value": "TEST 1\nTEST 2\nEST 3" }, { "id": "Q114043", "no": 20, "title": "์ฃผ์†Œ ์ž…๋ ฅํ˜•", "type": "ADDRESS", "value": { "zipcode": "01014", "address1": "์„œ์šธ ๊ฐ•๋ถ๊ตฌ 4.19๋กœ11๊ธธ 6", "address2": "1130ํ˜ธ" } }, { "id": "Q114044", "no": 21, "title": "D&D ์ˆœ์œ„ํ˜•", "type": "RANKING-DRAG", "choices": [ { "id": "_113789", "text": "์„ ํƒ 1" }, { "id": "_113790", "text": "์„ ํƒ 2" }, { "id": "_113791", "text": "์„ ํƒ 3" } ], "value": [ "_113789", "_113790", "_113791" ], "commentValue": "" }, { "id": "Q114045", "no": 22, "title": "Click ์ˆœ์œ„ํ˜•", "type": "RANKING-CLICK", "choices": [ { "id": "_177231", "text": "์„ ํƒ 1" }, { "id": "_177232", "text": "์„ ํƒ 2" }, { "id": "_177233", "text": "์„ ํƒ 3" } ], "value": [ { "id": "_177231", "commentValue": "" }, { "id": "_177232", "commentValue": "" } ] }, { "id": "Q114046", "no": 23, "title": "์ด๋ฏธ์ง€ Click ์ˆœ์œ„ํ˜•", "type": "RANKING-IMAGE-CLICK", "choices": [ { "id": "_181230", "text": "์„ ํƒ 1" }, { "id": "_181231", "text": "์„ ํƒ 2" }, { "id": "_181232", "text": "์„ ํƒ 3" } ], "value": [ { "id": "_181230", "commentValue": "" }, { "id": "_181231", "commentValue": "" } ] }, { "id": "Q114047", "no": 24, "title": "ํŒŒ์ผ ์—…๋กœ๋“œํ˜•", "type": "FILEUPLOAD", "value": { "filename": "best.png", "filetype": "image/png", "filesize": 46828, "src": "https://cdn.listovey.com/2205/4775/59855/5b358f18-2bfc-4925-9b06-a31aa64836fb2205477559855.png" }, "commentValue": "" }, { "type": "ENDING", "choices": [ { "id": "_E10142", "text": "์™„๋ฃŒ๊ธ€ 1" }, { "id": "_E10143", "text": "์™„๋ฃŒ๊ธ€ 2" } ], "value": "_E10142" }, { "type": "POINT", "value": 11 } ] } } }
ย 

Event information

ELEMENT
TYPE
DESCRIPTION
eventId
string
์›นํ›…์˜ ๊ณ ์œ  ID ์ด๋ฉฐ, ์ž๋™์œผ๋กœ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ํ…์ŠคํŠธ ๊ธธ์ด๋Š” 36์ž๋กœ ๊ณ ์ •๋ฉ๋‹ˆ๋‹ค.
eventType
string
ํ…Œ์ŠคํŠธ ์ด๋ฒคํŠธ ๋ฐœ์†ก: TEST_RESPONSE ํผ ์ œ์ถœ: FORM_RESPONSE
createdAt
string
์›นํ›… ์ด๋ฒคํŠธ ์ „์†ก ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ISO 8601 ํ˜•์‹์˜ UTC ์‹œ๊ฐ„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
object
response: ์‘๋‹ต์ž์˜ ์ •๋ณด form: ํผ ๋‹ต๋ณ€ ์ •๋ณด

Response information

ELEMENT
TYPE
DESCRIPTION
responseId
string
์‘๋‹ต์ž์˜ ๊ณ ์œ  ID ์ด๋ฉฐ, ์ž๋™์œผ๋กœ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ํ…์ŠคํŠธ ๊ธธ์ด๋Š” ์ตœ์†Œ 7์ž, ์ตœ๋Œ€ 52์ž ์ž…๋‹ˆ๋‹ค.
createdAt
string
์‘๋‹ต์ž์˜ ์„ค๋ฌธ ์ตœ์ดˆ ์ ‘์† ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ISO 8601 ํ˜•์‹์˜ UTC ์‹œ๊ฐ„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
submittedAt
string
์‘๋‹ต์ž์˜ ์„ค๋ฌธ ์ œ์ถœ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ISO 8601 ํ˜•์‹์˜ UTC ์‹œ๊ฐ„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Form information

ELEMENT
TYPE
DESCRIPTION
formId
string
์„ค๋ฌธ์˜ ๊ณ ์œ  ID ์ด๋ฉฐ, ์ž๋™์œผ๋กœ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ํ…์ŠคํŠธ ๊ธธ์ด๋Š” ์ตœ์†Œ 3์ž, ์ตœ๋Œ€ 52์ž ์ž…๋‹ˆ๋‹ค.
title
string
์„ค๋ฌธ์˜ ์ œ๋ชฉ์ž…๋‹ˆ๋‹ค.
array
์„ค๋ฌธ ๋‚ด ๋ฌธํ•ญ์˜ ๋‚ด์šฉ์„ ๋ฐฐ์—ด ํ˜•์‹์œผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

Fields information

ELEMENT
ใ…ค
TYPE
DESCRIPTION
id
ใ…ค
string
์„ค๋ฌธ ๋ฌธํ•ญ์˜ ๊ณ ์œ  ID ์ด๋ฉฐ, ์ž๋™์œผ๋กœ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ํ…์ŠคํŠธ ๊ธธ์ด๋Š” ์ตœ๋Œ€ 52์ž ์ž…๋‹ˆ๋‹ค.
no
ใ…ค
number
์„ค๋ฌธ ๋ฌธํ•ญ์˜ ๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค.
title
ใ…ค
string
์„ค๋ฌธ ๋ฌธํ•ญ์˜ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.
choices
ใ…ค
object[]
๋ฌธํ•ญ-๋ณด๊ธฐ ์„ ํƒ์œผ๋กœ ๊ตฌ์„ฑ๋œ ๋ฌธํ•ญ์—์„œ ์‚ฌ์šฉ
ใ…ค
id
string
๋ณด๊ธฐ์˜ ๊ณ ์œ  ID ์ด๋ฉฐ, ์ž๋™์œผ๋กœ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ํ…์ŠคํŠธ ๊ธธ์ด๋Š” ์ตœ๋Œ€ 52์ž ์ž…๋‹ˆ๋‹ค.
ใ…ค
text
string
๋ณด๊ธฐ์˜ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.
ใ…ค
no
number
์ฒ™๋„ํ˜• ๊ฐ™์ด ๋ฒ”์œ„์˜ ์ˆœ์„œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’
rows
ใ…ค
object[]
๋ฌธํ•ญ-ํ•ญ๋ชฉ-๋ณด๊ธฐ ์„ ํƒ์œผ๋กœ ๊ตฌ์„ฑ๋œ ๋ฌธํ•ญ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ•ญ๋ชฉ ๋ถ€๋ถ„
ใ…ค
id
string
ํ•ญ๋ชฉ์˜ ๊ณ ์œ  ID ์ด๋ฉฐ, ์ž๋™์œผ๋กœ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ํ…์ŠคํŠธ ๊ธธ์ด๋Š” ์ตœ๋Œ€ 52์ž ์ž…๋‹ˆ๋‹ค.
ใ…ค
text
string
ํ•ญ๋ชฉ์˜ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.
columns
ใ…ค
object[]
๋ฌธํ•ญ-ํ•ญ๋ชฉ-๋ณด๊ธฐ ์„ ํƒ์œผ๋กœ ๊ตฌ์„ฑ๋œ ๋ฌธํ•ญ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ณด๊ธฐ ๋ถ€๋ถ„
ใ…ค
id
string
ํ•ญ๋ชฉ์˜ ๊ณ ์œ  ID ์ด๋ฉฐ, ์ž๋™์œผ๋กœ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ํ…์ŠคํŠธ ๊ธธ์ด๋Š” ์ตœ๋Œ€ 52์ž ์ž…๋‹ˆ๋‹ค.
ใ…ค
text
string
๋ณด๊ธฐ์˜ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.
ใ…ค
no
number
์ฒ™๋„ํ˜• ๊ฐ™์ด ๋ฒ”์œ„์˜ ์ˆœ์„œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’
ใ…ค
string, string[], object, object[]
๋ฌธํ•ญ ์ข…๋ฅ˜์— ๋”ฐ๋ผ value ํ˜•ํƒœ๊ฐ€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
commentValue
ใ…ค
string
๋ฌธํ•ญ์— ๋Œ€ํ•œ ์ฝ”๋ฉ˜ํŠธ
kind
ใ…ค
string
ํƒ€์ž…๊ฒ€์‚ฌ ์ž…๋ ฅํ˜• ์œ ํ˜• โ€TEXTโ€: ํ…์ŠคํŠธ ์ž…๋ ฅ โ€NUMBERโ€: ์ˆซ์ž ์ž…๋ ฅ โ€EMAILโ€: ์ด๋ฉ”์ผ ์ž…๋ ฅ โ€PHONEโ€: ์ „ํ™”๋ฒˆํ˜ธ ์ž…๋ ฅ โ€DATEโ€: ๋‚ ์งœ ์ž…๋ ฅ

Value information

ย 
๋‹จ์ผ ์„ ํƒํ˜•, ์ด๋ฏธ์ง€ ๋‹จ์ผ ์„ ํƒํ˜• (๋‹จ์ผ ์„ ํƒ์ด๋ฉด์„œ ๊ฐ ๋ณด๊ธฐ๋งˆ๋‹ค ์ฝ”๋ฉ˜ํŠธ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธํ•ญ)
ELEMENT
ใ…ค
TYPE
DESCRIPTION
{value}
ใ…ค
object
ใ…ค
ใ…ค
id
string
์„ ํƒ๋œ ๋ณด๊ธฐ์˜ ๊ณ ์œ  ID
ใ…ค
commentValue
string
์„ ํƒ๋œ ๋ณด๊ธฐ์˜ ์ฝ”๋ฉ˜ํŠธ ๋‚ด์šฉ (์ถ”๊ฐ€ ์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด ๋‚˜ํƒ€๋‚จ)
ย 
๋‹ค์ค‘ ์„ ํƒํ˜•, ์ด๋ฏธ์ง€ ๋‹ค์ค‘ ์„ ํƒํ˜• (๋‹ค์ค‘ ์„ ํƒ์ด๋ฉด์„œ ๊ฐ ๋ณด๊ธฐ๋งˆ๋‹ค ์ฝ”๋ฉ˜ํŠธ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธํ•ญ)
ELEMENT
ใ…ค
TYPE
DESCRIPTION
{value}
ใ…ค
object[]
ใ…ค
ใ…ค
id
string
์„ ํƒ๋œ ๋ณด๊ธฐ์˜ ๊ณ ์œ  ID
ใ…ค
commentValue
string
์„ ํƒ๋œ ๋ณด๊ธฐ์˜ ์ฝ”๋ฉ˜ํŠธ ๋‚ด์šฉ (์ถ”๊ฐ€ ์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด ๋‚˜ํƒ€๋‚จ)
ย 
๋“œ๋กญ๋‹ค์šดํ˜• (๋‹จ์ผ / ๋‹ค์ค‘ ํ˜•ํƒœ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธํ•ญ)
ELEMENT
ใ…ค
TYPE
DESCRIPTION
{value}
ใ…ค
string[]
์„ ํƒ๋œ ๋ณด๊ธฐ์˜ ๊ณ ์œ  ID
ย 
๋‹จ์ผ์„ ํƒํ˜• ๋งคํŠธ๋ฆญ์Šค, ๊ฐ€๋กœํ˜•/์„ธ๋กœํ˜• ํ‰๊ฐ€์ฒ™๋„ ๊ทธ๋ฃน, ์ถ”์ฒœํ˜• ๊ทธ๋ฃน (ํ•ญ๋ชฉ๋งˆ๋‹ค ๋‹จ์ผ ์„ ํƒ์ธ ๋ฌธํ•ญ)
ELEMENT
ใ…ค
TYPE
DESCRIPTION
{value}
ใ…ค
object[]
โ€œkeyโ€: ํ•ญ๋ชฉ์˜ ๊ณ ์œ  ID โ€valueโ€: ์„ ํƒ๋œ ๋ณด๊ธฐ์˜ ๊ณ ์œ  ID
ย 
๋‹ค์ค‘์„ ํƒํ˜• ๋งคํŠธ๋ฆญ์Šค
ELEMENT
ใ…ค
TYPE
DESCRIPTION
{value}
ใ…ค
object[]
โ€œkeyโ€: ํ•ญ๋ชฉ์˜ ๊ณ ์œ  ID โ€value[]โ€: ์„ ํƒ๋œ ๋ณด๊ธฐ์˜ ๊ณ ์œ  ID
ย 
๊ฐ€๋กœํ˜•/์„ธ๋กœํ˜• ํ‰๊ฐ€์ฒ™๋„, ์ถ”์ฒœํ˜• (๋‹จ์ผ ์„ ํƒ ํ˜•ํƒœ)
ELEMENT
ใ…ค
TYPE
DESCRIPTION
{value}
ใ…ค
string
์„ ํƒ๋œ ๋ณด๊ธฐ์˜ ๊ณ ์œ  ID
ย 
ํƒ€์ž…๊ฒ€์‚ฌ ์ž…๋ ฅํ˜•, ์žฅ๋ฌธ ์„œ์ˆ ํ˜• (๋‹ต๋ณ€์ด text ํ˜•ํƒœ)
ELEMENT
ใ…ค
TYPE
DESCRIPTION
{value}
ใ…ค
string
๋‹ต๋ณ€ ๋‚ด์šฉ
ย 
์ฃผ์†Œ ์ž…๋ ฅํ˜•
ELEMENT
ใ…ค
TYPE
DESCRIPTION
{value}
ใ…ค
object
ใ…ค
ใ…ค
zipcode
string
์šฐํŽธ๋ฒˆํ˜ธ
ใ…ค
address1
string
๊ธฐ๋ณธ ์ฃผ์†Œ
ใ…ค
address2
string
์ƒ์„ธ ์ฃผ์†Œ
ย 
D&D ์ˆœ์œ„ํ˜•
ELEMENT
ใ…ค
TYPE
DESCRIPTION
{value}
ใ…ค
string[]
์„ ํƒํ•œ ๋ณด๊ธฐ์˜ ๊ณ ์œ  ID ์ฒซ ๋ฒˆ์งธ ๋ฐฐ์—ด๋ถ€ํ„ฐ 1์ˆœ์œ„
ย 
Click ์ˆœ์œ„ํ˜•, ์ด๋ฏธ์ง€ Click ์ˆœ์œ„ํ˜• (์ˆœ์œ„ํ˜•์ด๋ฉด์„œ, ๊ฐ ๋ณด๊ธฐ๋งˆ๋‹ค ์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธํ•ญ)
ELEMENT
ใ…ค
TYPE
DESCRIPTION
{value}
ใ…ค
object[]
ใ…ค
ใ…ค
id
string
์„ ํƒํ•œ ๋ณด๊ธฐ์˜ ๊ณ ์œ  ID ์ฒซ ๋ฒˆ์งธ ๋ฐฐ์—ด๋ถ€ํ„ฐ 1์ˆœ์œ„
ใ…ค
commentValue
string
์„ ํƒ๋œ ๋ณด๊ธฐ์˜ ์ฝ”๋ฉ˜ํŠธ ๋‚ด์šฉ (์ถ”๊ฐ€ ์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด ๋‚˜ํƒ€๋‚จ)
ย 
ํŒŒ์ผ ์—…๋กœ๋“œํ˜•
ELEMENT
ใ…ค
TYPE
DESCRIPTION
{value}
ใ…ค
object
ใ…ค
ใ…ค
filename
string
ํŒŒ์ผ๋ช…
ใ…ค
filetype
string
ํŒŒ์ผ ํƒ€์ž…
ใ…ค
filesize
number
ํŒŒ์ผ ํฌ๊ธฐ (byte)
ใ…ค
src
string
ํŒŒ์ผ์ด ์ €์žฅ๋œ ์ฃผ์†Œ
ย 
์™„๋ฃŒ๊ธ€ (2๊ฐœ ์ด์ƒ์ผ ๊ฒฝ์šฐ ๋‚˜ํƒ€๋‚จ)
ELEMENT
ใ…ค
TYPE
DESCRIPTION
{value}
ใ…ค
string
์ œ์ถœ ํ›„ ๋„์ฐฉํ•œ ์™„๋ฃŒ๊ธ€์˜ ๊ณ ์œ  ID
ย 
ํฌ์ธํŠธ (ํ€ด์ฆˆ ๋ฐฉ์‹ - ํฌ์ธํŠธ ํ•ฉ์‚ฐ ๋ฐฉ์‹ ์‚ฌ์šฉ์‹œ ๋‚˜ํƒ€๋‚จ)
ELEMENT
ใ…ค
TYPE
DESCRIPTION
{value}
ใ…ค
number
ํฌ์ธํŠธ ๊ฐ’
ย 

ย 
ย 
๐Ÿ’ธ
์Šคํƒ ๋‹ค๋“œ / ํ”„๋ฆฌ๋ฏธ์—„ ํ”Œ๋žœ์—์„œ ์ด์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
ย 
ย 
ย 
ย 

Help Center

Help Center

How can we help?

์„ค๋ฌธ ์ œ์ž‘, ์ฒ˜์Œ์ด์‹ ๊ฐ€์š”?


ย 
ย 

์œ ์šฉํ•œ ์„ค๋ฌธ ์˜ต์…˜


ย 

์„ค๋ฌธ์˜ ๊ณ ์ˆ˜๊ฐ€ ๋˜๋Š” ๊ธธ, ์–ด๋ ต์ง€ ์•Š์•„์š”!


๋ฉค๋ฒ„์‹ญ ์„œ๋น„์Šค๋กœ ์—…๋ฌด ๋Šฅ๋ฅ  ๐Ÿš€


ย 
ย 

๊ฒฐ์ œ


ย 

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ๊ณผ ๋‹ต๋ณ€ (FAQ)


ย 
ย 
โฌœ
์„ค๋ฌธ ์‹œ์ž‘ ํ™”๋ฉด์ด ํ•˜์–—๊ฒŒ ๋‚˜์™€์š”
โœ๏ธ
์„ค๋ฌธ ๋‹น ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๋ฌธํ•ญ ์ˆ˜ & ์‘๋‹ต ๋ฐ์ดํ„ฐ ์ˆ˜
ย 
ย 

๋ฆฌ์Šคํ† ๋ฒ ์ด์— ์ œ์•ˆํ•˜๊ธฐ


ย 
notion image
ย 
ย 
notion image
ย 

Check the main features at once!