namespace WPForms\Admin\Builder;
* Form Builder Help Screen.
// Terminate initialization if not in builder.
if ( ! wpforms_current_user_can( [ 'create_forms', 'edit_forms' ] ) || ! wpforms_is_admin_page( 'builder' ) ) {
$builder_help_cache = wpforms()->obj( 'builder_help_cache' );
$this->docs = $builder_help_cache ? $builder_help_cache->get() : [];
private function hooks() {
add_action( 'wpforms_builder_enqueues', [ $this, 'enqueues' ] );
add_action( 'wpforms_admin_page', [ $this, 'output' ], 20 );
public function enqueues() {
$min = wpforms_get_min_suffix();
WPFORMS_PLUGIN_URL . "assets/js/admin/builder/help{$min}.js",
$this->get_localized_data()
* @return array Localized data.
public function get_localized_data() {
'categories' => $this->get_categories(),
'terms' => $this->get_context_terms(),
'docs' => $this->get_context_docs(),
* @return array Categories data.
public function get_categories() {
'getting-started' => esc_html__( 'Getting Started', 'wpforms-lite' ),
'form-creation' => esc_html__( 'Form Creation', 'wpforms-lite' ),
'entry-management' => esc_html__( 'Entry Management', 'wpforms-lite' ),
'form-management' => esc_html__( 'Form Management', 'wpforms-lite' ),
'marketing-integrations' => esc_html__( 'Marketing Integrations', 'wpforms-lite' ),
'payment-forms' => esc_html__( 'Payment Forms', 'wpforms-lite' ),
'payment-processing' => esc_html__( 'Payment Processing', 'wpforms-lite' ),
'spam-prevention-and-security' => esc_html__( 'Spam Prevention and Security', 'wpforms-lite' ),
'extending-functionality' => esc_html__( 'Extending Functionality', 'wpforms-lite' ),
'troubleshooting-and-support' => esc_html__( 'Troubleshooting and Support', 'wpforms-lite' ),
* Get context search terms.
* @return array Search terms by context.
public function get_context_terms() {
'new_form' => 'add form',
'setup' => 'form template',
'fields/add_fields' => 'add fields',
'fields/field_options' => 'field options',
'fields/field_options/text' => 'single line text',
'fields/field_options/textarea' => 'paragraph text',
'fields/field_options/number-slider' => 'number slider',
'fields/field_options/select' => 'dropdown',
'fields/field_options/radio' => 'multiple choice',
'fields/field_options/checkbox' => 'checkboxes',
'fields/field_options/gdpr-checkbox' => 'gdpr agreement',
'fields/field_options/email' => 'email',
'fields/field_options/address' => 'address',
'fields/field_options/url' => 'website/url',
'fields/field_options/name' => 'name',
'fields/field_options/hidden' => 'hidden',
'fields/field_options/html' => 'html',
'fields/field_options/content' => 'content',
'fields/field_options/pagebreak' => 'page break',
'fields/field_options/entry-preview' => 'entry preview',
'fields/field_options/password' => 'password',
'fields/field_options/date-time' => 'date time',
'fields/field_options/divider' => 'section divider',
'fields/field_options/phone' => 'phone',
'fields/field_options/number' => 'numbers',
'fields/field_options/file-upload' => 'file upload',
'fields/field_options/captcha' => 'custom captcha',
'fields/field_options/rating' => 'rating',
'fields/field_options/richtext' => 'rich text',
'fields/field_options/layout' => 'layout',
'fields/field_options/likert_scale' => 'likert scale',
'fields/field_options/payment-single' => 'single item',
'fields/field_options/payment-multiple' => 'multiple items',
'fields/field_options/payment-checkbox' => 'checkbox items',
'fields/field_options/payment-select' => 'dropdown items',
'fields/field_options/payment-total' => 'total',
'fields/field_options/paypal-commerce' => 'paypal checkout',
'fields/field_options/stripe-credit-card' => 'stripe credit card',
'fields/field_options/authorize_net' => 'authorize.net credit card',
'fields/field_options/square' => 'square credit card',
'fields/field_options/signature' => 'signature',
'fields/field_options/net_promoter_score' => 'net promoter score',
'fields/field_options/payment-coupon' => 'coupon',
'fields/field_options/repeater' => 'repeater',
'settings/general' => 'settings',
'settings/anti_spam' => 'spam',
'settings/notifications' => 'notification emails',
'settings/confirmation' => 'confirmation message',
'settings/lead_forms' => 'lead forms',
'settings/form_abandonment' => 'form abandonment',
'settings/post_submissions' => 'post submissions',
'settings/user_registration' => 'user registration',
'settings/surveys_polls' => 'surveys and polls',
'settings/conversational_forms' => 'conversational forms',
'settings/form_locker' => 'form locker',
'settings/form_pages' => 'form pages',
'settings/save_resume' => 'save and resume',
'settings/google_sheets' => 'google sheets',
'settings/dropbox' => 'dropbox',
'settings/google_calendar' => 'google calendar',
'settings/google_drive' => 'google drive',
'settings/webhooks' => 'webhooks',
'settings/entry_automation' => 'entry automation',
'providers/aweber' => 'aweber',
'providers/activecampaign' => 'activecampaign',
'providers/campaign_monitor' => 'campaign monitor',
'providers/constant_contact' => 'constant contact',
'providers/convertkit' => 'kit',
'providers/drip' => 'drip',
'providers/getresponse' => 'getresponse',
'providers/getresponse_v3' => 'getresponse',
'providers/mailchimp' => 'mailchimp',
'providers/mailchimpv3' => 'mailchimp',
'providers/mailerlite' => 'mailerlite',
'providers/mailpoet' => 'mailpoet',
'providers/make' => 'make',
'providers/zapier' => 'zapier',
'providers/salesforce' => 'salesforce',
'providers/sendinblue' => 'brevo',
'providers/slack' => 'slack',
'providers/hubspot' => 'hubspot',
'providers/twilio' => 'twilio',
'providers/pipedrive' => 'pipedrive',
'providers/zoho_crm' => 'zoho crm',
'providers/zoho-crm' => 'zoho crm',
'payments/paypal_commerce' => 'paypal commerce',
'payments/paypal_standard' => 'paypal standard',
'payments/stripe' => 'stripe',
'payments/authorize_net' => 'authorize.net',
'payments/square' => 'square',
'revisions' => 'revisions',
* Get context (recommended) docs links.
* @return array Docs links by search terms.
public function get_context_docs_links() {
'/docs/creating-first-form/',
'/docs/how-to-choose-the-right-form-field-for-your-forms/',
'/docs/how-to-customize-the-submit-button/',
'/docs/generating-forms-with-wpforms-ai/',
'/docs/creating-first-form/',
'/docs/how-to-choose-the-right-form-field-for-your-forms/',
'/docs/how-to-customize-the-submit-button/',
'/docs/generating-forms-with-wpforms-ai/',
'/docs/creating-first-form/',
'/docs/how-to-choose-the-right-form-field-for-your-forms/',
'/docs/how-to-customize-the-submit-button/',
'/docs/generating-forms-with-wpforms-ai/',
'/docs/how-to-create-a-custom-form-template/',
'/docs/generating-forms-with-wpforms-ai/',
'/docs/how-to-choose-the-right-form-field-for-your-forms/',
'/docs/setup-captcha-wpforms/',
'/docs/how-to-prevent-spam-in-wpforms/',
'/docs/setup-captcha-wpforms/',
'/docs/how-to-install-and-use-custom-captcha-addon-in-wpforms/',
'/docs/setting-up-akismet-anti-spam-protection/',
'/docs/viewing-and-managing-spam-entries/',
'/docs/how-to-choose-the-right-form-field-for-your-forms/',
'/docs/how-to-customize-form-field-options/',
'/docs/how-to-customize-form-field-options/',
'/docs/how-to-use-conditional-logic-with-wpforms/',
'/docs/setup-form-notification-wpforms/',
'/docs/setup-form-confirmation-wpforms/',
'/docs/how-to-limit-words-or-characters-in-a-form-field/',
'/docs/how-to-use-custom-input-masks/',
'/docs/how-to-customize-form-field-options/',
'/docs/how-to-use-conditional-logic-with-wpforms/',
'/docs/how-to-customize-the-style-of-individual-form-fields/',
'/docs/calculations-addon/',
'/docs/how-to-limit-words-or-characters-in-a-form-field/',
'/docs/how-to-customize-form-field-options/',
'/docs/how-to-use-conditional-logic-with-wpforms/',
'/docs/how-to-customize-the-style-of-individual-form-fields/',
'/docs/calculations-addon/',
'/docs/how-to-limit-words-or-characters-in-a-form-field/',
'/docs/how-to-customize-form-field-options/',
'/docs/how-to-use-conditional-logic-with-wpforms/',
'/docs/how-to-customize-the-style-of-individual-form-fields/',
'/docs/calculations-addon/',
'/docs/how-to-limit-words-or-characters-in-a-form-field/',
'/docs/how-to-customize-form-field-options/',
'/docs/how-to-use-conditional-logic-with-wpforms/',
'/docs/how-to-customize-the-style-of-individual-form-fields/',
'/docs/calculations-addon/',
'/docs/how-to-use-custom-input-masks/',
'/docs/how-to-limit-words-or-characters-in-a-form-field/',
'/docs/how-to-limit-words-or-characters-in-a-form-field/',
'/docs/how-to-style-wpforms-with-custom-css-beginners-guide/',
'/docs/how-to-customize-the-style-of-individual-form-fields/',
'/docs/how-to-add-custom-css-to-your-wpforms/',
'/docs/how-to-style-wpforms-with-custom-css-beginners-guide/',
'/docs/how-to-customize-the-style-of-individual-form-fields/',
'/docs/how-to-add-custom-css-to-your-wpforms/',
'/docs/how-to-style-wpforms-with-custom-css-beginners-guide/',
'/docs/how-to-customize-the-style-of-individual-form-fields/',
'/docs/how-to-add-custom-css-to-your-wpforms/',
'/docs/how-to-allow-multiple-selections-to-a-dropdown-field-in-wpforms/',
'/docs/how-to-customize-form-field-options/',
'/docs/how-to-use-conditional-logic-with-wpforms/',
'/docs/how-to-customize-the-style-of-individual-form-fields/',
'/docs/generating-form-choices-with-wpforms-ai/',
'/docs/how-to-allow-multiple-selections-to-a-dropdown-field-in-wpforms/',
'/docs/how-to-customize-form-field-options/',
'/docs/how-to-use-conditional-logic-with-wpforms/',
'/docs/how-to-customize-the-style-of-individual-form-fields/',
'/docs/generating-form-choices-with-wpforms-ai/',
'/docs/how-to-allow-multiple-selections-to-a-dropdown-field-in-wpforms/',
'/docs/how-to-customize-form-field-options/',
'/docs/how-to-use-conditional-logic-with-wpforms/',
'/docs/how-to-customize-the-style-of-individual-form-fields/',
'/docs/generating-form-choices-with-wpforms-ai/',
'/docs/how-to-bulk-add-choices-for-multiple-choice-checkbox-and-dropdown-fields/',
'/docs/how-to-use-the-layout-field-in-wpforms/',
'/docs/how-to-create-a-multi-column-layout-for-radio-buttons-and-checkboxes/',
'/docs/how-to-use-the-layout-field-in-wpforms/',
'/docs/how-to-create-a-multi-column-layout-for-radio-buttons-and-checkboxes/',
'/docs/how-to-randomize-checkbox-and-multiple-choice-options/',
'/docs/how-to-add-image-choices-to-fields/',
'/docs/using-icon-choices/',
'/docs/how-to-bulk-add-choices-for-multiple-choice-checkbox-and-dropdown-fields/',
'/docs/how-to-create-a-multi-column-layout-for-radio-buttons-and-checkboxes/',
'/docs/how-to-randomize-checkbox-and-multiple-choice-options/',
'/docs/how-to-add-image-choices-to-fields/',
'/docs/using-icon-choices/',
'/docs/how-to-customize-form-field-options/',
'/docs/how-to-use-conditional-logic-with-wpforms/',
'/docs/how-to-customize-the-style-of-individual-form-fields/',
'/docs/generating-form-choices-with-wpforms-ai/',
'/docs/how-to-bulk-add-choices-for-multiple-choice-checkbox-and-dropdown-fields/',
'/docs/how-to-create-a-multi-column-layout-for-radio-buttons-and-checkboxes/',
'/docs/how-to-randomize-checkbox-and-multiple-choice-options/',
'/docs/how-to-add-image-choices-to-fields/',
'/docs/using-icon-choices/',
'/docs/how-to-customize-form-field-options/',
'/docs/how-to-use-conditional-logic-with-wpforms/',
'/docs/how-to-customize-the-style-of-individual-form-fields/',
'/docs/generating-form-choices-with-wpforms-ai/',
'/docs/how-to-bulk-add-choices-for-multiple-choice-checkbox-and-dropdown-fields/',
'/docs/how-to-add-a-terms-of-service-checkbox-to-a-form/',
'/docs/how-to-create-a-multi-column-layout-for-radio-buttons-and-checkboxes/',
'/docs/how-to-randomize-checkbox-and-multiple-choice-options/',
'/docs/how-to-add-image-choices-to-fields/',
'/docs/using-icon-choices/',
'/docs/how-to-customize-form-field-options/',
'/docs/how-to-use-conditional-logic-with-wpforms/',
'/docs/how-to-customize-the-style-of-individual-form-fields/',
'/docs/generating-form-choices-with-wpforms-ai/',
'/docs/how-to-bulk-add-choices-for-multiple-choice-checkbox-and-dropdown-fields/',
'/docs/how-to-add-a-terms-of-service-checkbox-to-a-form/',
'/docs/how-to-create-a-multi-column-layout-for-radio-buttons-and-checkboxes/',
'/docs/how-to-randomize-checkbox-and-multiple-choice-options/',
'/docs/how-to-add-image-choices-to-fields/',
'/docs/using-icon-choices/',
'/docs/how-to-customize-form-field-options/',
'/docs/how-to-use-conditional-logic-with-wpforms/',
'/docs/how-to-customize-the-style-of-individual-form-fields/',
'/docs/generating-form-choices-with-wpforms-ai/',
'/docs/how-to-create-gdpr-compliant-forms/',
'/docs/how-to-customize-form-field-options/',
'/docs/how-to-use-conditional-logic-with-wpforms/',
'/docs/how-to-customize-the-style-of-individual-form-fields/',
'/docs/how-to-create-gdpr-compliant-forms/',
'/docs/how-to-customize-form-field-options/',
'/docs/how-to-use-conditional-logic-with-wpforms/',
'/docs/how-to-customize-the-style-of-individual-form-fields/',
'/docs/how-to-add-a-number-slider-field-to-wpforms/',
'/docs/how-to-customize-form-field-options/',
'/docs/how-to-use-conditional-logic-with-wpforms/',
'/docs/how-to-customize-the-style-of-individual-form-fields/',
'/docs/how-to-add-a-number-slider-field-to-wpforms/',
'/docs/how-to-customize-form-field-options/',
'/docs/how-to-use-conditional-logic-with-wpforms/',
'/docs/how-to-customize-the-style-of-individual-form-fields/',
'/docs/setup-form-notification-wpforms/',
'/docs/customizing-form-notification-emails/',
'/docs/how-to-create-conditional-form-notifications-in-wpforms/',
'/docs/troubleshooting-email-notifications/',
'/docs/how-to-fix-wordpress-contact-form-not-sending-email-with-smtp/',
'/docs/how-to-customize-form-field-options/',
'/docs/how-to-use-conditional-logic-with-wpforms/',
'/docs/how-to-customize-the-style-of-individual-form-fields/',
'/docs/how-to-customize-the-address-field/',
'/docs/how-to-customize-form-field-options/',
'/docs/how-to-use-conditional-logic-with-wpforms/',
'/docs/how-to-customize-the-style-of-individual-form-fields/',
'/docs/how-to-customize-form-field-options/',
'/docs/how-to-use-conditional-logic-with-wpforms/',
'/docs/how-to-customize-the-style-of-individual-form-fields/',
'/docs/how-to-customize-the-address-field/',
'/docs/how-to-customize-form-field-options/',
'/docs/how-to-use-conditional-logic-with-wpforms/',
'/docs/how-to-customize-the-style-of-individual-form-fields/',
'/docs/how-to-customize-the-address-field/',
'/docs/how-to-customize-form-field-options/',
'/docs/how-to-use-conditional-logic-with-wpforms/',
'/docs/how-to-customize-the-style-of-individual-form-fields/',
'/docs/how-to-customize-the-address-field/',
'/docs/how-to-customize-form-field-options/',
'/docs/how-to-use-conditional-logic-with-wpforms/',
'/docs/how-to-customize-the-style-of-individual-form-fields/',
'/docs/how-to-customize-the-address-field/',
'/docs/how-to-customize-form-field-options/',
'/docs/how-to-use-conditional-logic-with-wpforms/',
'/docs/how-to-customize-the-style-of-individual-form-fields/',
'/docs/how-to-customize-the-address-field/',
'/docs/how-to-customize-form-field-options/',
'/docs/how-to-use-conditional-logic-with-wpforms/',
'/docs/how-to-customize-the-style-of-individual-form-fields/',
'/docs/how-to-customize-the-address-field/',
'/docs/how-to-customize-form-field-options/',
'/docs/how-to-use-conditional-logic-with-wpforms/',