2026年11月12日

2026年11月12日

Gravity Forms 사용법|폼 만들기·조건부 논리·알림 이메일·확인 메시지 설정

이 글은 일본어 원문을 현지화한 버전입니다. 일본어 원문 보기

Gravity Forms는 WordPress.org에서는 배포되지 않는 유료 폼 플러그인입니다. 조건에 따라 항목을 보였다 숨기는 "조건부 논리", 전송 내용에 따른 알림 수신처 분배, 전송 데이터(엔트리)의 데이터베이스 저장과 내보내기 등을 관리자 화면에서 설정할 수 있습니다. 이 글에서는 기본적인 폼 만드는 법과 개발자용 훅 사용법을 설명합니다. 라이선스 내용과 화면의 항목 이름은 2026년 11월 시점에 Gravity Forms의 공식 사이트와 문서(영어)를 확인한 내용입니다. 화면은 영어 항목 이름으로 적었습니다. 한국어로 표시하고 있다면 표기가 다를 수 있습니다.

라이선스와 사용할 수 있는 애드온

라이선스에 따라 사용할 수 있는 사이트 수와 애드온이 달라집니다.

라이선스 사이트 수 주요 애드온
Basic 1 Mailchimp, HubSpot, reCAPTCHA 등 기본 애드온
Pro 3 Basic의 내용에 더해 Stripe, PayPal Checkout, Square, Zapier, Slack 등
Elite 무제한 모든 애드온(Webhooks, User Registration, Signature, Survey 등). 멀티사이트도 지원

외부 시스템에 전송 데이터를 보내는 Webhooks 애드온은 Elite(와 비영리 단체용 라이선스)에서만 사용할 수 있습니다. 결제용 Stripe나 PayPal Checkout은 Pro 이상입니다. 구입하기 전에 필요한 애드온이 어느 라이선스에 포함되는지 공식 요금 페이지에서 확인하세요.

설치와 라이선스 키 등록

Gravity Forms 공식 사이트의 계정 페이지에서 플러그인 ZIP 파일을 다운로드하고, "플러그인 → 새로 추가 → 플러그인 업로드"에서 설치하여 활성화합니다. WP-CLI를 사용하는 경우는 다음과 같습니다.

wp plugin install /path/to/gravityforms.zip --activate

라이선스 키는 "Forms → Settings" 화면에서 입력합니다. 여러 환경에 같은 설정을 배포할 때는 wp-config.php에 상수로 작성하는 방법도 있습니다. 상수를 작성하면 설정 화면의 라이선스 키 입력란이 수정할 수 없는 표시가 됩니다.

define( 'GF_LICENSE_KEY', 'YOUR-LICENSE-KEY-HERE' );

폼을 만들어 배치하기

  1. 관리자 화면의 "Forms → New Form"을 열고 폼 이름을 붙여 만듭니다.
  2. 오른쪽의 "Add Fields"에서 이름(Name), 이메일 주소(Email), 전화번호(Phone), 선택지(Drop Down), 본문(Paragraph Text), 동의 체크(Consent) 등의 필드를 배치합니다.
  3. 각 필드를 클릭하면 설정이 열립니다. 필수로 할 항목은 "Required"를 켭니다.
  4. "Save Form"으로 저장합니다.

폼을 페이지에 두려면 블록 편집기에서 "Gravity Forms" 블록을 추가하고 만든 폼을 선택합니다. 숏코드로 둘 때는 다음 형태이며, id는 폼 목록에 표시되는 폼의 ID입니다.

[gravityform id="1" title="false"]

조건부 논리로 항목 보이기·숨기기

"문의 유형이 '채용에 관하여'일 때만 이력서 업로드란을 표시한다"와 같은 표시 제어는 조건부 논리(Conditional Logic)로 설정합니다.

  1. 폼 편집기에서 표시를 제어할 필드(예: 이력서 파일 업로드)를 클릭합니다.
  2. 필드 설정에 있는 "Conditional Logic"을 열고 "Enable Conditional Logic"을 켭니다.
  3. "Show(표시)" 또는 "Hide(숨김)"와, 조건을 "All(모두 만족)" 또는 "Any(하나라도 만족)"로 선택합니다.
  4. 조건 행에서 기준이 되는 필드(문의 유형), 비교(is), 값(채용에 관하여)을 선택합니다. 행 옆의 플러스로 조건을 추가할 수 있습니다.

알림 이메일과 확인 메시지에도 각각 조건부 논리를 설정할 수 있습니다.

알림 이메일 설정하기

알림 이메일은 "Forms → 대상 폼 → Form Settings → Notifications"에서 설정합니다. 폼을 만들면 관리자에게 보내는 알림이 하나 준비되어 있습니다. "Add New"로 자동 회신 같은 알림을 추가합니다.

항목 내용
Send To 보낼 곳. "Enter Email"은 고정된 주소, "Select a Field"는 폼의 이메일 주소란, "Configure Routing"은 입력 내용에 따라 보낼 곳을 분배
From Email 발신자. {admin_email}(WordPress의 "설정 → 일반"의 관리자 이메일 주소) 또는 고정된 주소
Reply To 회신처. 관리자에게 보내는 알림에서는 문의한 사람의 이메일 주소란의 병합 태그를 넣어 두면 회신하기 쉬워집니다
Subject / Message 제목과 본문. 병합 태그로 입력 내용을 삽입할 수 있습니다

병합 태그는 전송된 값을 삽입하는 기호입니다. 필드의 값은 {라벨:필드ID} 형태(예: {Name:1}, 라벨은 생략하고 {:1}로도 가능), {all_fields}는 모든 입력 내용을 표로 삽입합니다. 메시지란 오른쪽 위에 있는 병합 태그 버튼에서 선택하면 필드 ID를 찾지 않고도 입력할 수 있습니다.

발신자 주소는 사이트와 같은 도메인의 주소로 해 두면 스팸으로 취급되기 어려워집니다. 문의한 사람의 이메일 주소를 발신자로 하는 것은 피하고 Reply To에 넣습니다.

전송 후 확인 메시지

전송 후의 표시는 "Form Settings → Confirmations"에서 설정합니다. 종류는 다음 세 가지입니다.

  • Text: 폼이 있던 자리에 메시지를 표시한다(기본 설정)
  • Page: 사이트 내의 페이지로 이동한다
  • Redirect: 지정한 URL로 이동한다

전송 완료 페이지를 마련해 광고나 접속 분석의 측정에 사용하려면 Page 또는 Redirect를 선택합니다.

PHP로 입력 검사 추가하기

관리자 화면의 설정으로 부족한 입력 검사는 gform_field_validation 필터로 추가할 수 있습니다. 훅 이름 뒤에 _폼ID_필드ID를 붙이면 그 필드에만 적용됩니다. 다음 예는 폼 ID 1의 필드 ID 3에 입력된 전화번호를 검증합니다(여기서는 일본 전화번호 형식인 "0으로 시작하는 10자리 또는 11자리"를 예로 들었습니다). 테마의 functions.php나 직접 만든 플러그인에 작성합니다.

<?php
// 폼 ID 1·필드 ID 3의 전화번호를 검증한다
add_filter( 'gform_field_validation_1_3', function ( $result, $value, $form, $field ) {
	if ( ! is_string( $value ) || '' === $value ) {
		return $result; // 미입력 처리는 필드의 'Required' 설정에 맡긴다
	}

	$digits = str_replace( array( '-', ' ' ), '', $value );

	if ( ! preg_match( '/^0\d{9,10}$/', $digits ) ) {
		$result['is_valid'] = false;
		$result['message']  = '전화번호는 0으로 시작하는 10자리 또는 11자리 숫자로 입력해 주세요(하이픈 사용 가능).';
	}

	return $result;
}, 10, 4 );

폼 ID와 필드 ID는 폼 편집기에서 필드를 선택하면 표시됩니다. 폼을 다시 만들면 ID가 바뀌므로, 운영 환경과 개발 환경에서 ID가 같은지 확인하세요.

전송 후 외부에 알리기

Webhooks 애드온이 없는 라이선스에서 전송할 때마다 Slack 등에 알리고 싶다면 gform_after_submission 액션으로 처리를 작성할 수 있습니다. 이 액션은 엔트리 저장과 알림 이메일 전송이 끝난 뒤에 실행됩니다. 스팸으로 판정된 엔트리에서도 실행되므로 상태를 확인한 뒤에 보냅니다. 참고로 Pro 이상의 라이선스라면 Slack 애드온이나 Zapier 애드온으로 설정하는 방법도 있습니다.

<?php
// 폼 ID 1 전송 후 Slack의 Incoming Webhook으로 알린다
add_action( 'gform_after_submission_1', function ( $entry, $form ) {
	if ( 'spam' === rgar( $entry, 'status' ) ) {
		return;
	}

	// Webhook URL은 wp-config.php에 define( 'MY_SLACK_WEBHOOK_URL', '...' ); 로 작성해 둔다
	if ( ! defined( 'MY_SLACK_WEBHOOK_URL' ) ) {
		return;
	}

	wp_remote_post( MY_SLACK_WEBHOOK_URL, array(
		'headers' => array( 'Content-Type' => 'application/json' ),
		'body'    => wp_json_encode( array(
			'text' => sprintf( '새 문의: %s', rgar( $entry, '1' ) ),
		) ),
		'timeout' => 5,
	) );
}, 10, 2 );

rgar( $entry, '1' )은 필드 ID 1의 값입니다. 이름(Name) 필드처럼 입력란이 여러 개인 필드는 '1.3'(이름), '1.6'(성)처럼 소수점이 붙은 ID로 꺼냅니다. Webhook의 URL은 비밀 정보이므로 코드에 직접 적지 말고 공개 저장소에도 포함하지 않도록 합니다.

엔트리 확인·내보내기

전송된 데이터는 WordPress 데이터베이스에 저장되며 "Forms → Entries"에서 목록으로 볼 수 있습니다. CSV로 내보내려면 "Forms → Import/Export"를 열고 "Export Entries"에서 폼을 선택한 뒤 내보낼 항목과 기간을 지정하여 다운로드합니다.

PHP에서 꺼낼 때는 GFAPI::get_entries()를 사용합니다. WP-CLI로 최근 10건을 확인하는 예입니다.

wp eval 'echo wp_json_encode( GFAPI::get_entries( 1, array(), null, array( "offset" => 0, "page_size" => 10 ) ) );'

주의점

  • 전송 데이터에는 개인정보가 포함됩니다. 저장이 필요 없다면 폼 설정에서 보존 기간을 정해 삭제하거나, 내보낸 CSV를 방치하지 않는 등 취급 방식을 정해 둡니다.
  • 알림 이메일이 도착하지 않을 때는 Gravity Forms가 아니라 서버의 메일 발송이 원인인 경우가 많습니다. SMTP를 통해 보내는 플러그인을 사용하면 개선되는 경우가 있습니다.
  • PHP 코드를 추가하기 전에 폼 ID와 필드 ID가 맞는지, 스테이징 환경에서 동작을 확인하세요.

WordPress에 대해 궁금한 점이 있으신가요? 이 사이트의 운영사는 일본에 있으며 일본어로 답변합니다. 문의하기(일본어)

お気軽にご相談ください

お見積りへ お問い合わせへ
▲