리드 수집 폼

리드 수집 폼4분 분량

서비스 업체용 상담 신청 폼 만들기

회계사, 변호사, 코치, 클리닉을 위한 상담 신청 폼입니다. 연락 방법과 시간을 묻고, 민감한 내용은 통화에서 다룹니다.

Preet SutharIkiform 창업자

이름, 이메일, 연락 방법, 대략적인 시간, 그리고 넓은 주제를 묻고, 상황에 대한 세부 내용은 모두 통화로 남겨 두세요. 브라우저에서 시간대를 기록하면 요청한 오전이 그 사람의 오전이 됩니다. 전화 통화를 골랐을 때만 전화번호를 받는 것처럼 폼 스키마로 표현할 수 없는 규칙은 내 코드에서 강제하세요.

상담 신청이 다른 점

상담 신청은 문제를 가진 사람에게서 옵니다. 세무서 통지서, 임대 분쟁, 시작하려는 사업 같은 것들입니다. 그들은 설명하고 싶어 하고, 폼이 그렇게 하라고 권합니다. 그게 함정입니다. 입력한 내용은 무엇이든 제출과 함께 저장되고, 알림 이메일에 표시되고, 웹훅으로 지정한 곳 어디로든 전송됩니다. 계좌 번호나 사건 세부 내용은 그 어디에도 있어서는 안 됩니다.

그래서 폼의 일은 보기보다 좁습니다. 누구인지, 어떻게 언제 연락할지, 대략 무엇에 관한 것인지입니다. 나머지는 무엇을 기록하고 어디에 보관할지 내가 통제할 수 있는 통화에서 다룹니다.

상담 폼이 묻는 것과 통화로 미루는 것폼에서통화에서누구이름, 이메일방법이메일, 전화, 화상언제날짜, 시간대, 표준 시간대주제넓은 주제상황본인의 말로서류자체 채널로번호계좌, 식별 번호, 기록적합 여부와 비용내 답변상담 폼이 묻는 것과 통화로 미루는 것폼에서통화에서누구이름, 이메일방법이메일, 전화, 화상언제날짜, 시간대, 표준 시간대주제넓은 주제상황본인의 말로서류자체 채널로번호계좌, 식별 번호, 기록적합 여부와 비용내 답변
  1. 폼은 누구인지 묻습니다. 이름과 이메일입니다.
  2. 연락 방법을 묻습니다. 이메일, 전화, 화상입니다.
  3. 언제인지 묻습니다. 선호하는 날, 시간대, 그리고 그 사람의 표준 시간대입니다.
  4. 무엇에 관한 것인지 넓은 주제 하나로 묻습니다.
  5. 통화에서 본인의 말로 상황을 듣습니다.
  6. 서류는 폼이 아니라 내가 고른 채널로 받습니다.
  7. 계좌 번호, 식별 번호, 기록은 절대 폼에 입력하지 않습니다.
  8. 통화는 적합 여부와 비용에 대한 답으로 끝납니다.
윗줄만으로 통화를 예약하고 준비할 수 있습니다. 아랫줄이 통화의 목적입니다.

필드

미리보기

Ikiform의 검증기를 브라우저에서 실행합니다. 아무것도 전송되지 않습니다.

어떻게 연락드릴까요?

전화 통화를 선택한 경우에만.

편한 시간

한두 문장으로 적어 주세요. 계좌 번호나 개인 기록은 넣지 마세요.

Phone call(전화 통화)을 고르고 전화번호를 비워 두세요. 필드를 경우에 따라서만 필수로 만들 수는 없으므로 스키마는 이를 받아들입니다. 아래 코드가 그 빈틈을 메웁니다.
필드이런 형태인 이유
contact_methodradio이므로 첫 연락이 요청한 방식으로 이루어집니다
phone스키마에서는 선택, 전화 통화를 고르면 코드에서 필수
preferred_datedate 필드는 YYYY-MM-DD를 저장합니다. 스키마의 min은 고정이므로 페이지가 브라우저에서 내일을 min으로 설정합니다
timezone브라우저에서 Intl.DateTimeFormat().resolvedOptions().timeZone으로 채웁니다. 예: Europe/Berlin
note최대 500자. 알림 이메일은 값마다 최대 500자를 보여 주므로 메모 전체가 들어갑니다

내 코드의 조건부 규칙

Ikiform은 각 필드를 따로 검증합니다. 전화 통화일 때만 전화번호처럼 다른 필드에 의존하는 규칙은 내 코드에서 실행합니다. 서버 버전은 이를 실제로 강제할 수 있고, 브라우저 버전은 방문자를 안내하고 필요 없는 것은 보내지 않습니다.

스크립트는 Phone call을 고르면 전화번호 입력에 required를 설정하고, 방문자 자신의 달력 기준 내일을 가장 이른 날로 설정하고, hidden 시간대를 채웁니다.

consultation.html
<form action="https://ikiform.com/f/frm_xxxxxxxxxxxxxxxx" method="POST" id="consult">
  <label for="name">Name</label>
  <input id="name" name="name" autocomplete="name" required />
  <label for="email">Email</label>
  <input id="email" name="email" type="email" autocomplete="email" required />

  <fieldset>
    <legend>How should we reach you?</legend>
    <label><input type="radio" name="contact_method" value="email" checked /> Email</label>
    <label><input type="radio" name="contact_method" value="phone" /> Phone call</label>
    <label><input type="radio" name="contact_method" value="video" /> Video call</label>
  </fieldset>
  <label for="phone">Phone</label>
  <input id="phone" name="phone" type="tel" autocomplete="tel" />

  <label for="topic">What is it about?</label>
  <select id="topic" name="topic" required>
    <option value="new_business">Starting a business</option>
    <option value="tax">Tax and bookkeeping</option>
    <option value="other">Something else</option>
  </select>

  <label for="preferred_date">Preferred day</label>
  <input id="preferred_date" name="preferred_date" type="date" />
  <fieldset>
    <legend>Best time</legend>
    <label><input type="radio" name="time_window" value="morning" /> Morning</label>
    <label><input type="radio" name="time_window" value="afternoon" /> Afternoon</label>
    <label><input type="radio" name="time_window" value="evening" /> Evening</label>
  </fieldset>
  <input type="hidden" name="timezone" />

  <label for="note">Anything we should know first?</label>
  <textarea id="note" name="note" rows="3" maxlength="500"></textarea>
  <p>A sentence or two. Please don't include account numbers or personal records.</p>

  <input name="_gotcha" type="text" tabindex="-1" autocomplete="off" hidden />
  <button>Request a consultation</button>
</form>

<script>
  const form = document.getElementById("consult");
  const phone = form.elements.phone;
  const tomorrow = new Date(Date.now() + 86400000);
  const local = new Date(tomorrow.getTime() - tomorrow.getTimezoneOffset() * 60000);

  form.elements.timezone.value = Intl.DateTimeFormat().resolvedOptions().timeZone;
  form.elements.preferred_date.min = local.toISOString().slice(0, 10);
  form.addEventListener("change", () => {
    phone.required = form.elements.contact_method.value === "phone";
  });
</script>

서버 측 버전은 시크릿 키로 POST하므로 Ikiform이 Allowed domains와 사람 확인을 건너뜁니다. 그러면 모든 POST가 서버의 IP에서 오고, 방문자당 분당 5회인 Standard 리밋이 모든 방문자를 함께 셉니다. 서버를 거쳐 POST하는 폼에는 Relaxed나 Custom 레이트 리밋을 고르고, IKIFORM_SECRET_KEY는 서버 전용 환경 변수에 두세요. 서버 버전은 방문자의 Origin 헤더를 전달합니다. 서버 측 fetch는 이 헤더를 보내지 않는데, Ikiform은 이 헤더로 무료 localhost 테스트를 판별하기 때문입니다.

민감한 정보는 폼에서 빼기

  • 위 폼처럼 도움말에 적으세요. 사람들은 생각보다 분명한 안내를 잘 따릅니다.
  • 주민등록번호 같은 식별 번호, 계좌 번호, 의료 정보 필드는 추가하지 마세요. 직업상 고객 데이터에 관한 규정이 있다면 연락처 이외의 것을 수집하기 전에 확인하고, 나머지는 규정을 충족하는 채널로 받으세요.
  • 필드 이름도 중요합니다. Ikiform은 필드 이름이 자격 증명처럼 보이면 알림 이메일을 검토를 위해 보류합니다. password, ssn, cvv, seed가 들어간 이름이 그렇습니다. 스타트업 컨설팅 폼의 seed_round 필드가 여기에 걸립니다. funding_stage로 이름을 지으세요.
  • 웹훅은 팀 전체가 고객 이름을 봐도 되는 곳, 예를 들어 전사 채널이 아닌 비공개 채널로만 보내세요.

첫 답장

알림 이메일의 Reply가 방문자를 가리키므로 첫 답장은 내 받은편지함에서 바로 보낼 수 있습니다. 첫 답장의 일은 하나, 시간 확정입니다. 언제가 좋은지 묻는 것보다 요청한 시간대 안의 구체적인 시간 두 개를 제안하는 편이 수락하기 쉽습니다.

  • 쓰기 전에 그 사람의 시간대를 내 시간으로 바꾸세요. Australia/Sydney의 morning은 런던의 전날 저녁입니다.
  • 그 사람의 시간대로 두 시간을 제안하고 이메일에 시간대를 명시하세요. 그래야 아무도 한 시간 일찍 오지 않습니다.
  • 어떻게 연락할지 말하세요. 알려 준 번호인지, 초대와 함께 보내는 화상 링크인지입니다.
  • 주제가 내 업무 범위 밖이라면 첫 답장에서 그렇게 말하고 할 수 있는 사람을 추천하세요. 그런 답장도 보낼 가치가 있습니다.

작동 확인하기

  1. Phone call을 고르고 전화번호를 비운 채 제출하세요. 브라우저나 서버가 메시지와 함께 막습니다.
  2. Email을 고르고 제출한 뒤 제출 내용을 여세요. phone 값은 없고, America/Chicago 같은 내 시간대가 있습니다.
  3. 선호하는 날로 오늘을 골라 보세요. 날짜 선택기에 나오지 않습니다.
  4. 알림 이메일을 확인하세요. 메모가 전부 표시되고 Reply가 방문자에게 작성됩니다.
  5. 필드 ID를 나열해 password, ssn, cvv, seed가 들어간 것이 없는지 확인하세요.

주의할 점

  • 시간대 없는 날짜. preferred_date는 특정 시점이 아니라 달력의 날짜입니다. 연락하기 전에 timezone, time_window와 함께 읽으세요.
  • 아무것도 선택되지 않은 라디오. 선택되지 않은 라디오 그룹은 아무것도 보내지 않습니다. 선택 입력인 time_window에는 괜찮고, contact_method가 Email이 선택된 상태로 시작하는 이유입니다.
  • 예약 확인은 없습니다. Ikiform은 폼을 작성한 사람에게 이메일을 보내지 않습니다. 첫 답장이 시간을 확정합니다. 사람들이 직접 시간을 고르게 하려면 데모 요청 폼처럼 스케줄러로 넘기세요.
  • 전화번호 형식. 전화번호 필드는 입력한 그대로 6~15자리 숫자를 받습니다. +14155550123 형식이 필요한 시스템에서 전화를 건다면 e164를 켜세요. 그러면 국가 코드 없는 번호는 거부됩니다.

질문

막히는 단계가 있거나 내 상황에 맞는 가이드가 필요하다면 이메일을 보내세요: hello@ikiform.com.