{"id":51834,"date":"2026-05-26T09:06:34","date_gmt":"2026-05-26T09:06:34","guid":{"rendered":"https:\/\/crocoblock.com\/knowledge-base\/?post_type=article&#038;p=51834"},"modified":"2026-05-26T09:12:07","modified_gmt":"2026-05-26T09:12:07","slug":"creating-flexible-purchasing-plan-with-jetappointment","status":"publish","type":"article","link":"https:\/\/crocoblock.com\/knowledge-base\/jetappointment\/creating-flexible-purchasing-plan-with-jetappointment\/","title":{"rendered":"How to Create a Flexible Purchasing Plan with JetAppointment"},"content":{"rendered":"\n<p>We will describe how to build two connected forms: one for buying slots with payment integration and another for booking appointments that deduct slots from the user\u2019s balance.<\/p>\n\n\n\n<p>In our example, providers are teachers and services are lessons. Users can buy several lessons (appointment slots) in advance and then use them to book appointments later.<\/p>\n\n\n\n<p>The workflow is totally compatible with the <a href=\"https:\/\/crocoblock.com\/knowledge-base\/jetappointment\/how-to-set-multiple-booking-for-appointments\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Multibooking JetAppointment<\/strong> feature<\/a>.<\/p>\n\n\n\n<p>For this case, we will create forms for the <a href=\"https:\/\/crocoblock.com\/knowledge-base\/jetappointment\/how-to-create-single-service-and-provider-pages\/#create-single-provider-page\" target=\"_blank\" rel=\"noreferrer noopener\">Single Provider page<\/a>, so be aware that some settings will be specific to this setup.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"create-a-user-meta-field\">Create a User Meta Field<\/h2>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\"><div class=\"wp-block-group__inner-container\">\n<p>Head to <strong><em>WordPress Dashboard &gt; JetEngine &gt; <\/em><\/strong><a href=\"https:\/\/crocoblock.com\/knowledge-base\/features\/meta-boxes-overview\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong><em>Meta Boxes<\/em><\/strong><\/a><strong><em> &gt; Add New<\/em><\/strong>.<\/p>\n\n\n\n<p>Enter the <strong>Meta Box Title<\/strong> and select \u201cUser\u201d in the <strong>Meta Box for<\/strong> dropdown.<\/p>\n\n\n\n<p>Set other settings and <strong>Visibility Conditions <\/strong>if needed, scroll down to the <strong>Meta fields <\/strong>section, and hit the \u201c<strong>New Meta Field<\/strong>\u201d button.<\/p>\n\n\n\n<p>Enter the <strong>Label<\/strong> (e.g., \u201cNumber of slots purchased\u201d), the <strong>Name\/ID<\/strong> will be generated dynamically, and select the \u201cNumber\u201d <strong>Field type<\/strong>.<\/p>\n\n\n\n<p>Then, press the \u201c<strong>Add\/Update Meta Box<\/strong>\u201d button.<\/p>\n\n\n\n<p>More details can be found in the <a href=\"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/jetengine-how-to-apply-meta-boxes-to-users\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>How to Apply Meta Boxes to Users<\/strong><\/a> tutorial.<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/user-meta-field-for-the-slot-balance.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/user-meta-field-for-the-slot-balance.webp\" alt=\"user meta field for the slot balance\" class=\"wp-image-51836\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/user-meta-field-for-the-slot-balance.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/user-meta-field-for-the-slot-balance-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/user-meta-field-for-the-slot-balance-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/user-meta-field-for-the-slot-balance-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/user-meta-field-for-the-slot-balance-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/user-meta-field-for-the-slot-balance-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n\n\n\n<p>To check where the meta field is displayed, head to <strong><em>WordPress Dashboard &gt; Users &gt; Profile<\/em><\/strong>. It will be shown under the WordPress user profile fields.<\/p>\n\n\n\n<p>You can change the field value manually for testing purposes (e.g., to verify how it is displayed in the form).<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/number-of-slots-purchased-meta-field-for-users.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/number-of-slots-purchased-meta-field-for-users.webp\" alt=\"number of slots purchased meta field for users\" class=\"wp-image-51838\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/number-of-slots-purchased-meta-field-for-users.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/number-of-slots-purchased-meta-field-for-users-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/number-of-slots-purchased-meta-field-for-users-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/number-of-slots-purchased-meta-field-for-users-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/number-of-slots-purchased-meta-field-for-users-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/number-of-slots-purchased-meta-field-for-users-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"create-the-purchase-form\">Create the Purchase Form<\/h2>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\"><div class=\"wp-block-group__inner-container\">\n<p>First, we will create a form that allows users to buy lesson slots and store the amount in a user&#8217;s \u201cNumber\u201d meta field.&nbsp;<\/p>\n\n\n\n<p>Be aware that this form is intended for logged-in users only. You can combine it with a <a href=\"https:\/\/jetformbuilder.com\/features\/wordpress-register-form-creation\/\" target=\"_blank\" rel=\"noreferrer noopener\">registration form<\/a>, but additional form fields and actions will be required.<\/p>\n\n\n\n<p>Also, check the <a href=\"https:\/\/jetformbuilder.com\/features\/how-to-create-registration-form-with-email-verification\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>How to Create a Registration Form With Email Verification<\/strong><\/a><strong> <\/strong>and <a href=\"https:\/\/jetformbuilder.com\/features\/how-to-set-registration-and-authorization-in-one-form\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>How to Set Registration and Login in One Form Using Render States<\/strong><\/a> tutorials setup details.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"form-fields\">Form fields<\/h3>\n\n\n\n<p>Go to <strong><em>WordPress Dashboard &gt; JetFormBuilder &gt; Add New Form<\/em><\/strong>. Type the form title and press the \u201c<strong>Start from scratch<\/strong>\u201d button in the <a href=\"https:\/\/jetformbuilder.com\/features\/welcome-block-overview\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Welcome<\/strong><\/a> block.<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/creating-a-purchase-form-for-appointment-slots.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/creating-a-purchase-form-for-appointment-slots.webp\" alt=\"creating a purchase form for appointment slots\" class=\"wp-image-51858\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/creating-a-purchase-form-for-appointment-slots.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/creating-a-purchase-form-for-appointment-slots-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/creating-a-purchase-form-for-appointment-slots-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/creating-a-purchase-form-for-appointment-slots-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/creating-a-purchase-form-for-appointment-slots-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/creating-a-purchase-form-for-appointment-slots-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n\n\n\n<p>For the \u201cPurchase Form,\u201d such fields should be created:<\/p>\n\n\n\n<p>1. Keep the first <a href=\"https:\/\/jetformbuilder.com\/features\/hidden-field\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Hidden Field<\/strong><\/a> with the \u201cCurrent Post ID\u201d <strong>FIELD VALUE<\/strong> that links the form to the current provider\/teacher.<\/p>\n\n\n\n<p>2. Then, duplicate this field, select the \u201cCurrent Post Meta\u201d <strong>FIELD VALUE<\/strong>, and enter \u201c_app_price_hour\u201d into the <strong>META FIELD TO GET VALUE FROM<\/strong>, which pulls the price dynamically from the post.<\/p>\n\n\n\n<p>The <strong>FORM FIELD NAME <\/strong>in the right <strong>Block<\/strong> section can be changed to \u201cpost_meta\u201d.<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/form-hidden-field-with-the-current-post-meta-for-appointment-price.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/form-hidden-field-with-the-current-post-meta-for-appointment-price.webp\" alt=\"form hidden field with the current post meta for appointment price\" class=\"wp-image-51863\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/form-hidden-field-with-the-current-post-meta-for-appointment-price.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/form-hidden-field-with-the-current-post-meta-for-appointment-price-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/form-hidden-field-with-the-current-post-meta-for-appointment-price-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/form-hidden-field-with-the-current-post-meta-for-appointment-price-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/form-hidden-field-with-the-current-post-meta-for-appointment-price-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/form-hidden-field-with-the-current-post-meta-for-appointment-price-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n\n\n\n<p>3. Add another <strong>Hidden Field<\/strong> and select the \u201cCurrent User ID\u201d <strong>FIELD VALUE<\/strong>, which indicates what user should be updated.&nbsp;<\/p>\n\n\n\n<p>The <strong>FORM FIELD NAME <\/strong>in the right <strong>Block<\/strong> section should be changed to \u201cuser_id\u201d.<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/04\/current-user-id-value-of-the-hidden-field.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1824\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/04\/current-user-id-value-of-the-hidden-field.webp\" alt=\"current user ID value of the hidden field\" class=\"wp-image-42859\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/04\/current-user-id-value-of-the-hidden-field.webp 1824w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/04\/current-user-id-value-of-the-hidden-field-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/04\/current-user-id-value-of-the-hidden-field-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/04\/current-user-id-value-of-the-hidden-field-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/04\/current-user-id-value-of-the-hidden-field-1536x926.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/04\/current-user-id-value-of-the-hidden-field-600x362.webp 600w\" sizes=\"(max-width: 1824px) 100vw, 1824px\" \/><\/a><\/div>\n\n\n\n<p>4. Duplicate this field, pick the \u201cCurrent User Meta\u201d <strong>FIELD VALUE<\/strong>, and enter the <strong>Name\/ID<\/strong> of the \u201cNumber\u201d field from the user <strong>Meta Box<\/strong> into the <strong>META FIELD TO GET VALUE FROM<\/strong>, which pulls the current user slot balance.<\/p>\n\n\n\n<p>The <strong>FORM FIELD NAME <\/strong>in the right <strong>Block<\/strong> section should be changed to \u201cuser_meta\u201d.<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/form-hidden-field-with-the-current-user-meta-for-the-slot-balance.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/form-hidden-field-with-the-current-user-meta-for-the-slot-balance.webp\" alt=\"form hidden field with the current user meta for the slot balance\" class=\"wp-image-51864\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/form-hidden-field-with-the-current-user-meta-for-the-slot-balance.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/form-hidden-field-with-the-current-user-meta-for-the-slot-balance-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/form-hidden-field-with-the-current-user-meta-for-the-slot-balance-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/form-hidden-field-with-the-current-user-meta-for-the-slot-balance-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/form-hidden-field-with-the-current-user-meta-for-the-slot-balance-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/form-hidden-field-with-the-current-user-meta-for-the-slot-balance-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n\n\n\n<p>5. The <a href=\"https:\/\/jetformbuilder.com\/features\/text-field\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Text Field<\/strong><\/a> can be deleted or customized according to your needs. For example, you can adjust it to the \u201cEmail\u201d field by renaming it and choosing the \u201cEmail\u201d <strong>FIELD TYPE<\/strong> in the <strong>Block &gt; Field <\/strong>section on the right side.<\/p>\n\n\n\n<p>Then, you need to add form fields for the number slots. You can combine the <a href=\"https:\/\/jetformbuilder.com\/features\/number-field\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Number<\/strong><\/a>\/<a href=\"https:\/\/jetformbuilder.com\/features\/radio-field\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Radio<\/strong><\/a> with <a href=\"https:\/\/jetformbuilder.com\/features\/calculated-field\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Calculated Fields<\/strong><\/a> to achieve this.<\/p>\n\n\n\n<p>6. For instance, we add the <strong>Radio Field<\/strong> with the \u201cslots_to_select\u201d <strong>FORM FIELD NAME<\/strong>, keep the \u201cManual Input\u201d option in the <strong>FILL OPTIONS FROM<\/strong> dropdown, and press the \u201c<strong>Manage items<\/strong>\u201d button.<\/p>\n\n\n\n<p>In the <strong>Edit Options <\/strong>pop-up, we add \u201c1,\u201d \u201c5,\u201d \u201c10,\u201d and \u201c15\u201d example options and press the \u201c<strong>Update<\/strong>\u201d button.<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/manual-options-for-the-radio-field.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/manual-options-for-the-radio-field.webp\" alt=\"manual options for the radio field\" class=\"wp-image-51856\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/manual-options-for-the-radio-field.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/manual-options-for-the-radio-field-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/manual-options-for-the-radio-field-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/manual-options-for-the-radio-field-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/manual-options-for-the-radio-field-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/manual-options-for-the-radio-field-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n\n\n\n<p>After that, we should add two <strong>Calculated Fields<\/strong>.<\/p>\n\n\n\n<p>7. The first one is to display the number of slots after purchasing. Here we enter such a formula:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>%user_meta% + %slots_to_select%\n<\/code><\/pre>\n\n\n\n<p>That adds purchased slots to the existing balance. The \u2018user_meta\u2019 is the name of the fourth <strong>Hidden Field<\/strong> that pulls the value from the user \u201cNumber\u201d field, and the \u2018slots_to_select\u2019 is the name of the <strong>Radio Field<\/strong>.<\/p>\n\n\n\n<p>In the <strong>Block &gt; Field<\/strong> section on the right, change the <strong>DECIMAL PLACES NUMBER<\/strong> to \u201c0.\u201d<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/Calculated-Field-with-the-number-of-slots-the-user-will-have-after-purchasing.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/Calculated-Field-with-the-number-of-slots-the-user-will-have-after-purchasing.webp\" alt=\"Calculated Field with the number of slots the user will have after purchasing\" class=\"wp-image-51869\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/Calculated-Field-with-the-number-of-slots-the-user-will-have-after-purchasing.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/Calculated-Field-with-the-number-of-slots-the-user-will-have-after-purchasing-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/Calculated-Field-with-the-number-of-slots-the-user-will-have-after-purchasing-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/Calculated-Field-with-the-number-of-slots-the-user-will-have-after-purchasing-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/Calculated-Field-with-the-number-of-slots-the-user-will-have-after-purchasing-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/Calculated-Field-with-the-number-of-slots-the-user-will-have-after-purchasing-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n\n\n\n<p>8. The second <strong>Calculated Field<\/strong> is to calculate the total price. We add such a formula:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>%post_meta% * (\n  %slots_to_select% == 5 ? 4 :\n  ( %slots_to_select% == 10 ? 8 :\n    ( %slots_to_select% == 15 ? 12 : %slots_to_select% )\n  )\n)\n<\/code><\/pre>\n\n\n\n<p>where the \u2018post meta\u2019 is the name of the second <strong>Hidden Field<\/strong> with the appointment price, and \u2018slots_to_select\u2019 is the name of the <strong>Radio Field<\/strong>.<\/p>\n\n\n\n<p>This formula applies discounts:<\/p>\n\n\n\n<ul>\n<li>If \u201c5\u201d is selected, pay as for \u201c4\u201d;<\/li>\n\n\n\n<li>If \u201c10\u201d is selected, pay as for \u201c8\u201d;<\/li>\n\n\n\n<li>If \u201c15\u201d is selected, pay as for \u201c12\u201d;<\/li>\n<\/ul>\n\n\n\n<p>For example, a lesson costs $20. If a user selects to buy five lessons, they will pay $80 instead of $100.<br>In the <strong>Block &gt; Field<\/strong> section on the right, also change the <strong>DECIMAL PLACES NUMBER<\/strong> to \u201c0.\u201d<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/calculated-field-with-the-total-price-with-discounts.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/calculated-field-with-the-total-price-with-discounts.webp\" alt=\"calculated field with the total price with discounts\" class=\"wp-image-51870\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/calculated-field-with-the-total-price-with-discounts.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/calculated-field-with-the-total-price-with-discounts-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/calculated-field-with-the-total-price-with-discounts-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/calculated-field-with-the-total-price-with-discounts-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/calculated-field-with-the-total-price-with-discounts-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/calculated-field-with-the-total-price-with-discounts-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"payment-setupnbsp\">Payment setup&nbsp;<\/h3>\n\n\n\n<p>After adjusting the form fields, proceed to <strong>JetForm &gt; Gateway Settings <\/strong>in the right section and select the required gateway method from the radio:<\/p>\n\n\n\n<ul>\n<li><strong>PayPal Checkout<\/strong> \u2014 you can set the PayPal payment method for free, as described in the <a href=\"https:\/\/jetformbuilder.com\/features\/jetformbuilder-how-to-set-recurring-paypal-payments-in-wordpress-form\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>How to Store PayPal Payments from WordPress Form?<\/strong><\/a> tutorial or check the <a href=\"https:\/\/jetformbuilder.com\/features\/jetformbuilder-how-to-set-recurring-paypal-payments-in-wordpress-form\/\"><strong>How to Set Recurring PayPal Payments in WordPress Form<\/strong><\/a><strong> <\/strong>tutorial to learn how to set subscriptions with the <a href=\"https:\/\/jetformbuilder.com\/addons\/paypal-recurring-payments\/\" target=\"_blank\" rel=\"noreferrer noopener\"><em>PayPal Recurring Payments<\/em><\/a> add-on for <em>JetFormBuilder<\/em>;<\/li>\n\n\n\n<li><strong>Stripe Checkout<\/strong> \u2014 check the <a href=\"https:\/\/jetformbuilder.com\/features\/how-to-create-stripe-payment-form\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Stripe Payment Form with JetFormBuilder PRO Addon<\/strong><\/a> tutorial for more information;<\/li>\n\n\n\n<li><strong>Manual<\/strong> \u2014 this option allows users to select their preferred payment on the front end. For more details, refer to the <strong><a href=\"https:\/\/jetformbuilder.com\/features\/how-to-use-both-paypal-and-stripe-payment-methods-in-a-form\/\">How to Use Both Paypal and Stripe Payment Methods in a Form<\/a><\/strong> tutorial.<\/li>\n<\/ul>\n\n\n\n<p>As an example, we select the \u201cStripe Checkout\u201d method and press the \u201c<strong>Edit<\/strong>\u201d button for this option.<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/gateway-settings-for-the-purchase-form.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/gateway-settings-for-the-purchase-form.webp\" alt=\"gateway settings for the purchase form\" class=\"wp-image-51847\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/gateway-settings-for-the-purchase-form.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/gateway-settings-for-the-purchase-form-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/gateway-settings-for-the-purchase-form-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/gateway-settings-for-the-purchase-form-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/gateway-settings-for-the-purchase-form-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/gateway-settings-for-the-purchase-form-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n\n\n\n<p>In the pop-up, we activate the <strong>Use Global Settings<\/strong> toggle to pull out the <strong>Public Key<\/strong> and <strong>Secret Key <\/strong>from the <em>JetFormBuilder<\/em> settings and press the \u201c<strong>Sync Access Token<\/strong>\u201d button.<\/p>\n\n\n\n<p>Once the access token is updated, we add the <strong>CURRENCY CODE <\/strong>(e.g., \u201cUSD,\u201d for more information, check the <a href=\"https:\/\/www.iban.com\/currency-codes\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><strong>Country Currency Codes<\/strong><\/a> article).<\/p>\n\n\n\n<p>In the <strong>PRICE\/AMOUNT FIELD <\/strong>dropdown, we select the <strong>Calculated Field<\/strong> (\u201cTotal,\u201d in this case).<\/p>\n\n\n\n<p>After the checkout settings are set up, we push the \u201c<strong>Update<\/strong>\u201d button.<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/gateway-checkout-settings-for-the-purchase-form.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/gateway-checkout-settings-for-the-purchase-form.webp\" alt=\"gateway checkout settings for the purchase form\" class=\"wp-image-51866\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/gateway-checkout-settings-for-the-purchase-form.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/gateway-checkout-settings-for-the-purchase-form-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/gateway-checkout-settings-for-the-purchase-form-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/gateway-checkout-settings-for-the-purchase-form-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/gateway-checkout-settings-for-the-purchase-form-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/gateway-checkout-settings-for-the-purchase-form-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"post-submit-actions\">Post Submit Actions<\/h3>\n\n\n\n<p>Head to <strong>JetForm &gt; Post Submit Actions <\/strong>tab.<\/p>\n\n\n\n<p>Keep the \u201c<a href=\"https:\/\/jetformbuilder.com\/features\/how-to-use-save-form-record-action\/\" target=\"_blank\" rel=\"noreferrer noopener\">Save Form Record<\/a>\u201d action that stores the form data, such as form entries, performed post-submit actions, and errors.<\/p>\n\n\n\n<p>Press the \u201c<strong>+ New Action<\/strong>\u201d button, and pick the \u201c<a href=\"https:\/\/jetformbuilder.com\/features\/update-user\/\" target=\"_blank\" rel=\"noreferrer noopener\">Update User<\/a>\u201d action from the pop-up.<\/p>\n\n\n\n<p>In the <strong>FIELDS MAP<\/strong> section ot the <strong>Edit Update User <\/strong>pop-up, map such fields:<\/p>\n\n\n\n<ul>\n<li><strong>user_id<\/strong> \u2014 is the name of the third <strong>Hidden Field<\/strong>. Select the \u201cUser ID (will update this user)\u201d option from the dropdown;<\/li>\n\n\n\n<li><strong>Number of slots after purchasing<\/strong> \u2014 is the name of the first <strong>Calculated Field<\/strong>. Select the \u201cUser Meta\u201d option from the dropdown and enter the <strong>Name\/ID<\/strong> of the user \u201cNumber\u201d meta field from the <strong>Meta Box<\/strong> that should be updated.<\/li>\n<\/ul>\n\n\n\n<p>After setting the action, push the \u201c<strong>Update<\/strong>\u201d button.<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/edit-update-user-post-submit-action.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/edit-update-user-post-submit-action.webp\" alt=\"edit update user post submit action\" class=\"wp-image-51862\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/edit-update-user-post-submit-action.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/edit-update-user-post-submit-action-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/edit-update-user-post-submit-action-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/edit-update-user-post-submit-action-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/edit-update-user-post-submit-action-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/edit-update-user-post-submit-action-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n\n\n\n<p>Then, hover over the \u201cUpdate User\u201d action and press the \u201c<strong>Edit Conditions &amp; Events<\/strong>\u201d button.<\/p>\n\n\n\n<figure class=\"wp-block-image text-center size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"262\" height=\"817\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/edit-conditions-and-events-button-for-the-post-submit-action.webp\" alt=\"edit conditions and events button for the post submit action\" class=\"wp-image-51860\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/edit-conditions-and-events-button-for-the-post-submit-action.webp 262w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/edit-conditions-and-events-button-for-the-post-submit-action-96x300.webp 96w\" sizes=\"(max-width: 262px) 100vw, 262px\" \/><\/figure>\n\n\n\n<p>Open the <strong>Events match <\/strong>tab in the pop-up and select the \u201cGATEWAY.SUCCESS\u201d event in the <strong>ADD EVENT<\/strong> dropdown.<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/gateway-success-event-for-the-purchase-form.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/gateway-success-event-for-the-purchase-form.webp\" alt=\"gateway success event for the purchase form\" class=\"wp-image-51848\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/gateway-success-event-for-the-purchase-form.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/gateway-success-event-for-the-purchase-form-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/gateway-success-event-for-the-purchase-form-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/gateway-success-event-for-the-purchase-form-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/gateway-success-event-for-the-purchase-form-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/gateway-success-event-for-the-purchase-form-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n\n\n\n<p>Add other post submit actions if needed (e.g., \u201c<a href=\"https:\/\/jetformbuilder.com\/features\/send-email\/\" target=\"_blank\" rel=\"noreferrer noopener\">Send Email<\/a>\u201d), press the \u201c<strong>Update<\/strong>\u201d button, and save\/publish the form.<\/p>\n\n\n\n<p>In such a way, only after successful payment, the user\u2019s slot balance increases.<\/p>\n\n\n\n<figure class=\"wp-block-image text-center size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"260\" height=\"235\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/gateway-success-event-on-the-update-user-post-submit-action.webp\" alt=\"gateway success event on the update user post submit action\" class=\"wp-image-51849\"\/><\/figure>\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"create-the-appointment-form\">Create the Appointment Form<\/h2>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\"><div class=\"wp-block-group__inner-container\">\n<p>With the <em>JetAppointment<\/em> and <em>JetFormBuilder<\/em> plugins, you can create three standard forms: a Static Page Booking Form, a Single Service Booking Form, and a Single Provider Booking Form.<\/p>\n\n\n\n<p>Usually, they are generated during the <a href=\"https:\/\/crocoblock.com\/knowledge-base\/jetappointment\/how-to-set-appointment-booking-form\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>JetAppointment Wizard Setup<\/strong><\/a>. If you want to create forms from scratch, refer to the <a href=\"https:\/\/crocoblock.com\/knowledge-base\/jetappointment\/how-to-set-appointment-booking-form\/\"><strong>How to Set Appointment Booking Forms<\/strong><\/a> tutorial.<\/p>\n\n\n\n<p>For our example, we modify the <a href=\"https:\/\/crocoblock.com\/knowledge-base\/jetappointment\/how-to-set-appointment-booking-form\/#single-provider-booking-form\" target=\"_blank\" rel=\"noreferrer noopener\">Single Provider Booking Form<\/a> that will be placed on the Single Teacher page, from which users can buy slots and book lessons, but consider that you may need to modify all your booking forms.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"set-up-fields\">Set up fields<\/h3>\n\n\n\n<p>First, we proceed to the <strong><em>WordPress Dashboard &gt; JetFormBuilder &gt; Forms<\/em><\/strong> tab and open the Single Provider Booking Form.<\/p>\n\n\n\n<p>For now, this is a standard appointment booking form with such fields:<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/single-provider-booking-form-fields.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/single-provider-booking-form-fields.webp\" alt=\"single provider booking form fields\" class=\"wp-image-51840\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/single-provider-booking-form-fields.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/single-provider-booking-form-fields-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/single-provider-booking-form-fields-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/single-provider-booking-form-fields-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/single-provider-booking-form-fields-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/single-provider-booking-form-fields-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n\n\n\n<ul>\n<li>\u201cprovider_id\u201d <strong>Hidden Field<\/strong> with the \u201cCurrent Post ID\u201d <strong>FIELD VALUE<\/strong>;<\/li>\n\n\n\n<li>\u201cEmail\u201d <strong>Text Field<\/strong>;<\/li>\n\n\n\n<li>\u201cChoose service\u201d <strong>Select Field<\/strong>;<\/li>\n\n\n\n<li>\u201cappointment_date\u201d <strong>Appointment Date<\/strong> field.<\/li>\n<\/ul>\n\n\n\n<p>Then, we need to add such fields:<\/p>\n\n\n\n<p>1. Place the <strong>Hidden Field<\/strong>, for example, at the beginning of the form.&nbsp;<\/p>\n\n\n\n<p>Select the \u201cManual Input\u201d <strong>FIELD VALUE<\/strong> and keep the <strong>VALUE<\/strong> field empty.&nbsp;<\/p>\n\n\n\n<p>As the <strong>FORM FIELD NAME<\/strong>, enter \u201c_jet_app_count_slots\u201d.&nbsp;<\/p>\n\n\n\n<p>In addition to the HTML code, we will place on the Single page after the form, it will count the number of slots the user will select to book.<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/hidden-field-to-count-the-number-of-appointment-slots.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/hidden-field-to-count-the-number-of-appointment-slots.webp\" alt=\"hidden field to count the number of appointment slots\" class=\"wp-image-51850\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/hidden-field-to-count-the-number-of-appointment-slots.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/hidden-field-to-count-the-number-of-appointment-slots-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/hidden-field-to-count-the-number-of-appointment-slots-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/hidden-field-to-count-the-number-of-appointment-slots-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/hidden-field-to-count-the-number-of-appointment-slots-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/hidden-field-to-count-the-number-of-appointment-slots-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n\n\n\n<p>2. Place the \u201cuser_id\u201d <strong>Hidden Field<\/strong> with the \u201cCurrent User ID\u201d <strong>FIELD VALUE<\/strong>.<\/p>\n\n\n\n<p>3. Add the \u201cuser_meta\u201d <strong>Hidden Field<\/strong> with the \u201cCurrent User Meta\u201d <strong>FIELD VALUE<\/strong>, and enter the <strong>Name\/ID<\/strong> of the \u201cNumber\u201d field from the user <strong>Meta Box<\/strong> into the <strong>META FIELD TO GET VALUE FROM<\/strong>.<\/p>\n\n\n\n<p>These two fields are similar to the user <strong>Hidden Fields <\/strong>added to the \u201cPurchase Form.\u201d<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/user-hidden-fields-in-the-appointment-booking-form.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/user-hidden-fields-in-the-appointment-booking-form.webp\" alt=\"user hidden fields in the appointment booking form\" class=\"wp-image-51835\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/user-hidden-fields-in-the-appointment-booking-form.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/user-hidden-fields-in-the-appointment-booking-form-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/user-hidden-fields-in-the-appointment-booking-form-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/user-hidden-fields-in-the-appointment-booking-form-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/user-hidden-fields-in-the-appointment-booking-form-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/user-hidden-fields-in-the-appointment-booking-form-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n\n\n\n<p>At the end of the form, before the \u201c<strong>Submit<\/strong>\u201d button, you should add two <strong>Calculated Fields<\/strong>.<\/p>\n\n\n\n<p>4. At first, we add an optional <strong>Calculated Field<\/strong> with the \u201cNumber of slots selected\u201d <strong>LABEL<\/strong> and enter such a formula:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>%_jet_app_count_slots%<\/code><\/pre>\n\n\n\n<p>It will show the user how many slots they select.<\/p>\n\n\n\n<p>In the <strong>Block &gt; Field<\/strong> section on the right, we change the <strong>DECIMAL PLACES NUMBER<\/strong> to \u201c0.\u201d<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/calculated-field-to-show-how-many-appointment-slots-are-selected.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/calculated-field-to-show-how-many-appointment-slots-are-selected.webp\" alt=\"calculated field to show how many appointment slots are selected\" class=\"wp-image-51868\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/calculated-field-to-show-how-many-appointment-slots-are-selected.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/calculated-field-to-show-how-many-appointment-slots-are-selected-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/calculated-field-to-show-how-many-appointment-slots-are-selected-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/calculated-field-to-show-how-many-appointment-slots-are-selected-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/calculated-field-to-show-how-many-appointment-slots-are-selected-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/calculated-field-to-show-how-many-appointment-slots-are-selected-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n\n\n\n<p>5. Add another <strong>Calculated Field<\/strong> to count the number of slots left after the user submits the form, and add such a formula:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>%user_meta% - %_jet_app_count_slots%\n<\/code><\/pre>\n\n\n\n<p>where the \u2018user_meta\u2019 is the name of the <strong>Hidden Field<\/strong> that pulls the value from the user \u201cNumber\u201d field (number of purchased slots by the user).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"set-up-post-submit-actions\">Set up Post Submit Actions<\/h3>\n\n\n\n<p>Head to <strong>JetForm &gt; Post Submit Actions <\/strong>tab.<\/p>\n\n\n\n<p>The first action can be the \u201c<a href=\"https:\/\/jetformbuilder.com\/features\/how-to-use-save-form-record-action\/\" target=\"_blank\" rel=\"noreferrer noopener\">Save Form Record<\/a>\u201d action.<\/p>\n\n\n\n<p>The second one should be the \u201cInsert appointment\u201d action with the standard settings.<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/insert-appointment-jetformbuilder-post-submit-action.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/insert-appointment-jetformbuilder-post-submit-action.webp\" alt=\"insert appointment jetformbuilder post submit action\" class=\"wp-image-51853\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/insert-appointment-jetformbuilder-post-submit-action.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/insert-appointment-jetformbuilder-post-submit-action-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/insert-appointment-jetformbuilder-post-submit-action-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/insert-appointment-jetformbuilder-post-submit-action-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/insert-appointment-jetformbuilder-post-submit-action-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/insert-appointment-jetformbuilder-post-submit-action-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n\n\n\n<p>Then, press the \u201c<strong>+ New Action<\/strong>\u201d button, and pick the \u201cUpdate User\u201d action from the pop-up.<\/p>\n\n\n\n<p>In the <strong>Edit Update User <\/strong>pop-up, in the <strong>FIELDS MAP<\/strong> section, map such fields:<\/p>\n\n\n\n<ul>\n<li><strong>user_id<\/strong> \u2014 is the name of the second <strong>Hidden Field<\/strong>. Select the \u201cUser ID (will update this user)\u201d option from the dropdown;<\/li>\n\n\n\n<li><strong>Number of slots left<\/strong> \u2014 is the name of the second <strong>Calculated Field<\/strong>. Select the \u201cUser Meta\u201d option from the dropdown and enter the <strong>Name\/ID<\/strong> of the user \u201cNumber\u201d meta field from the <strong>Meta Box<\/strong> that should be updated.<\/li>\n<\/ul>\n\n\n\n<p>After setting the action, push the \u201c<strong>Update<\/strong>\u201d button.<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/edit-update-user-post-submit-action-for-appointment-form.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/edit-update-user-post-submit-action-for-appointment-form.webp\" alt=\"edit update user post submit action for appointment form\" class=\"wp-image-51861\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/edit-update-user-post-submit-action-for-appointment-form.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/edit-update-user-post-submit-action-for-appointment-form-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/edit-update-user-post-submit-action-for-appointment-form-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/edit-update-user-post-submit-action-for-appointment-form-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/edit-update-user-post-submit-action-for-appointment-form-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/edit-update-user-post-submit-action-for-appointment-form-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"add-conditions-to-actions\">Add Conditions to Actions<\/h3>\n\n\n\n<p>Both actions (\u201cUpdate User\u201d and \u201cInsert Appointment\u201d) should have conditions to prevent submission if the user hasn\u2019t purchased enough slots.<\/p>\n\n\n\n<p>Hover over the first action and press the \u201c<strong>Edit Conditions &amp; Events<\/strong>\u201d button.<\/p>\n\n\n\n<p>In the <strong>Fields comparison <\/strong>tab, pick the \u201cOR (at least ONE condition must be met)\u201d <strong>OPERATOR<\/strong>.<\/p>\n\n\n\n<p>Then, press the \u201c<strong>+ Add New Condition<\/strong>\u201d button.<\/p>\n\n\n\n<p>In the repeater field, select the \u201cEqual\u201d <strong>OPERATOR<\/strong> and \u201c_jet_app_count_slots\u201d <strong>FIELD<\/strong>.<\/p>\n\n\n\n<p>For the <strong>VALUE TO COMPARE<\/strong>, press the \u201c<strong>database<\/strong>\u201d button. In the <strong>Edit Preset<\/strong> pop-up, set such options:<\/p>\n\n\n\n<p><\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/preset-for-the-update-user-action-condition.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/preset-for-the-update-user-action-condition.webp\" alt=\"preset for the update user action condition\" class=\"wp-image-51839\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/preset-for-the-update-user-action-condition.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/preset-for-the-update-user-action-condition-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/preset-for-the-update-user-action-condition-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/preset-for-the-update-user-action-condition-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/preset-for-the-update-user-action-condition-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/preset-for-the-update-user-action-condition-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n\n\n\n<ul>\n<li><strong>SOURCE<\/strong> \u2014 select \u201cUser\u201d;<\/li>\n\n\n\n<li><strong>GET USER ID FROM<\/strong> \u2014 select \u201cCurrent User\u201d;<\/li>\n\n\n\n<li><strong>USER FIELD<\/strong> \u2014 pick \u201cUser Meta\u201d. In the next field, enter the <strong>Name\/ID<\/strong> of the user \u201cNumber\u201d meta field from the <strong>Meta Box<\/strong>.<\/li>\n<\/ul>\n\n\n\n<p>Press the \u201c<strong>Update<\/strong>\u201d button to save the preset settings.<\/p>\n\n\n\n<p>Next, hit the \u201c<strong>Duplicate<\/strong>\u201d icon to copy the condition.<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/duplicate-the-update-user-action-conditions.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/duplicate-the-update-user-action-conditions.webp\" alt=\"duplicate the update user action conditions\" class=\"wp-image-51859\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/duplicate-the-update-user-action-conditions.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/duplicate-the-update-user-action-conditions-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/duplicate-the-update-user-action-conditions-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/duplicate-the-update-user-action-conditions-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/duplicate-the-update-user-action-conditions-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/duplicate-the-update-user-action-conditions-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n\n\n\n<p>For the new condition, you should only set the <strong>OPERATOR<\/strong> to \u201cLess than.\u201d&nbsp;<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/update-user-action-conditions.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/update-user-action-conditions.webp\" alt=\"update user action conditions\" class=\"wp-image-51846\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/update-user-action-conditions.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/update-user-action-conditions-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/update-user-action-conditions-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/update-user-action-conditions-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/update-user-action-conditions-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/update-user-action-conditions-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n\n\n\n<p>After that, press the \u201c<strong>Update<\/strong>\u201d button to save settings and close the pop-up.<\/p>\n\n\n\n<p>Repeat all steps to apply the same conditions to the second post-submit action.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"add-a-condition-to-submit-button\">Add a Condition to Submit Button<\/h3>\n\n\n\n<p>If you wish, you can also apply a similar condition to the \u201c<strong>Submit<\/strong>\u201d button to hide it if the user doesn\u2019t have enough slots.<\/p>\n\n\n\n<p>Insert a <a href=\"https:\/\/jetformbuilder.com\/features\/conditional-visibility\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Conditional Block<\/strong><\/a> and drag the \u201c<strong>Submit<\/strong>\u201d button inside.<\/p>\n\n\n\n<p>Press the \u201c<strong>crossed arrows<\/strong>\u201d icon.<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/submit-button-in-the-conditional-block.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/submit-button-in-the-conditional-block.webp\" alt=\"submit button in the conditional block\" class=\"wp-image-51843\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/submit-button-in-the-conditional-block.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/submit-button-in-the-conditional-block-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/submit-button-in-the-conditional-block-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/submit-button-in-the-conditional-block-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/submit-button-in-the-conditional-block-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/submit-button-in-the-conditional-block-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n\n\n\n<p>In the pop-up, select the \u201cShow if\u2026\u201d option in the <strong>WHICH FUNCTION NEED EXECUTE?<\/strong> dropdown and hit the \u201c<strong>+ Add Condition<\/strong>\u201d button.<\/p>\n\n\n\n<p>In the repeater field, select the \u201c_jet_app_count_slots\u201d <strong>FIELD<\/strong> and \u201cLess than or equal\u201d <strong>OPERATOR<\/strong>.<\/p>\n\n\n\n<p>For the <strong>VALUE TO COMPARE<\/strong>, press the \u201c<strong>database<\/strong>\u201d button. In the <strong>Edit Preset<\/strong> pop-up, set such options:<\/p>\n\n\n\n<ul>\n<li><strong>SOURCE<\/strong> \u2014 select \u201cUser\u201d;<\/li>\n\n\n\n<li><strong>GET USER ID FROM<\/strong> \u2014 select \u201cCurrent User\u201d;<\/li>\n\n\n\n<li><strong>USER FIELD<\/strong> \u2014 pick \u201cUser Meta\u201d. In the next field, enter the <strong>Name\/ID<\/strong> of the user \u201cNumber\u201d meta field from the <strong>Meta Box<\/strong>.<\/li>\n<\/ul>\n\n\n\n<p>Then, press the \u201c<strong>Update<\/strong>\u201d button to save the preset settings.<\/p>\n\n\n\n<p>That\u2019s all for the <strong>Conditional Block<\/strong>. Now, you can press another \u201c<strong>Update<\/strong>\u201d button to save the settings.<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/conditional-logic-for-the-form-submit-button.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/conditional-logic-for-the-form-submit-button.webp\" alt=\"conditional logic for the form submit button\" class=\"wp-image-51857\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/conditional-logic-for-the-form-submit-button.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/conditional-logic-for-the-form-submit-button-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/conditional-logic-for-the-form-submit-button-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/conditional-logic-for-the-form-submit-button-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/conditional-logic-for-the-form-submit-button-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/conditional-logic-for-the-form-submit-button-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"place-forms-on-the-page\">Place Forms on the Page<\/h2>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\"><div class=\"wp-block-group__inner-container\">\n<p>In our case, we will place forms on the Teacher (Provider) Single Page.<\/p>\n\n\n\n<p>You can create one with the <a href=\"https:\/\/crocoblock.com\/knowledge-base\/plugins\/jetthemecore\/\" target=\"_blank\" rel=\"noreferrer noopener\"><em>JetThemeCore<\/em><\/a> plugin as described in the <a href=\"https:\/\/crocoblock.com\/knowledge-base\/jetappointment\/how-to-create-single-service-and-provider-pages\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>How to Create Single Service\/Provider Pages<\/strong><\/a> tutorial.<\/p>\n\n\n\n<p>We open the Single template in the Elementor editor and find the <a href=\"https:\/\/jetformbuilder.com\/features\/conditional-visibility\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>JetForm<\/strong><\/a> widget in the sidebar.<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/jetform-widget-on-the-single-provider-page.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/jetform-widget-on-the-single-provider-page.webp\" alt=\"jetform widget on the single provider page\" class=\"wp-image-51854\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/jetform-widget-on-the-single-provider-page.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/jetform-widget-on-the-single-provider-page-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/jetform-widget-on-the-single-provider-page-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/jetform-widget-on-the-single-provider-page-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/jetform-widget-on-the-single-provider-page-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/jetform-widget-on-the-single-provider-page-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n\n\n\n<p>Using two <strong>JetForm<\/strong> widgets, we placed two forms on the page by selecting them from the <strong>Choose Form <\/strong>dropdown.<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/jetformbuilder-purchase-and-appointment-forms-on-the-single-template.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/jetformbuilder-purchase-and-appointment-forms-on-the-single-template.webp\" alt=\"jetformbuilder purchase and appointment forms on the single template\" class=\"wp-image-51855\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/jetformbuilder-purchase-and-appointment-forms-on-the-single-template.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/jetformbuilder-purchase-and-appointment-forms-on-the-single-template-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/jetformbuilder-purchase-and-appointment-forms-on-the-single-template-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/jetformbuilder-purchase-and-appointment-forms-on-the-single-template-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/jetformbuilder-purchase-and-appointment-forms-on-the-single-template-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/jetformbuilder-purchase-and-appointment-forms-on-the-single-template-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n\n\n\n<p>Next, we add the <strong>HTML<\/strong> widget and enter the following code. Don&#8217;t forget to add &lt;script> before the code and &lt;\/script> after.<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/Crocoblock\/2369fffd39343257338563466320afdb.js\"><\/script>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/html-widget-with-the-code-under-the-form-on-the-single-template.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/html-widget-with-the-code-under-the-form-on-the-single-template.webp\" alt=\"\" class=\"wp-image-51852\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/html-widget-with-the-code-under-the-form-on-the-single-template.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/html-widget-with-the-code-under-the-form-on-the-single-template-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/html-widget-with-the-code-under-the-form-on-the-single-template-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/html-widget-with-the-code-under-the-form-on-the-single-template-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/html-widget-with-the-code-under-the-form-on-the-single-template-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/html-widget-with-the-code-under-the-form-on-the-single-template-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n\n\n\n<p>After that, you can push the \u201c<strong>Publish<\/strong>\u201d button.<\/p>\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"test-the-flow\">Test the Flow<\/h2>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\"><div class=\"wp-block-group__inner-container\">\n<p>Open a provider\/teacher post on the front end.<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/single-provider-post-with-forms-on-the-front-end.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/single-provider-post-with-forms-on-the-front-end.webp\" alt=\"single provider post with forms on the front end\" class=\"wp-image-51841\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/single-provider-post-with-forms-on-the-front-end.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/single-provider-post-with-forms-on-the-front-end-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/single-provider-post-with-forms-on-the-front-end-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/single-provider-post-with-forms-on-the-front-end-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/single-provider-post-with-forms-on-the-front-end-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/single-provider-post-with-forms-on-the-front-end-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n\n\n\n<p>First, we test the \u201cPurchase Form,\u201d which already shows \u201c7\u201d slots. Start by checking if the <strong>Calculated Fields<\/strong> work correctly.<\/p>\n\n\n\n<p>For example, if we select \u201c5,\u201d the \u201cNumber of slots after purchasing\u201d field shows \u201c5 + 7 = 12.\u201d<\/p>\n\n\n\n<p>The lesson price is $20, so the \u201cTotal\u201d is $80. According to the discount formula, selecting \u201c5\u201d multiplies the price by 4.<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/testing-the-calculated-fields-for-the-purchase-form.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/testing-the-calculated-fields-for-the-purchase-form.webp\" alt=\"testing the calculated fields for the purchase form\" class=\"wp-image-51844\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/testing-the-calculated-fields-for-the-purchase-form.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/testing-the-calculated-fields-for-the-purchase-form-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/testing-the-calculated-fields-for-the-purchase-form-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/testing-the-calculated-fields-for-the-purchase-form-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/testing-the-calculated-fields-for-the-purchase-form-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/testing-the-calculated-fields-for-the-purchase-form-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n\n\n\n<p>If we select \u201c10,\u201d the \u201cNumber of slots after purchasing\u201d is \u201c17\u201d and \u201cTotal\u201d is \u201c160\u201d (according to the formula, selecting \u201c10\u201d multiplies the price by 8).<\/p>\n\n\n\n<p>Then, we push the \u201c<strong>Submit<\/strong>\u201d button.<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/testing-the-calculated-fields-with-the-discount-formula-for-the-purchase-form.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/testing-the-calculated-fields-with-the-discount-formula-for-the-purchase-form.webp\" alt=\"testing the calculated fields with the discount formula for the purchase form\" class=\"wp-image-51845\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/testing-the-calculated-fields-with-the-discount-formula-for-the-purchase-form.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/testing-the-calculated-fields-with-the-discount-formula-for-the-purchase-form-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/testing-the-calculated-fields-with-the-discount-formula-for-the-purchase-form-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/testing-the-calculated-fields-with-the-discount-formula-for-the-purchase-form-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/testing-the-calculated-fields-with-the-discount-formula-for-the-purchase-form-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/testing-the-calculated-fields-with-the-discount-formula-for-the-purchase-form-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n\n\n\n<p>You will be transferred to the Checkout page with your set payment method.<\/p>\n\n\n\n<p>In our case, it\u2019s the Stripe Sandbox Checkout. We fill in fields and hit the \u201c<strong>Pay<\/strong>\u201d button.<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/stripe-sandbox-checkout-page-for-the-test-payment.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/stripe-sandbox-checkout-page-for-the-test-payment.webp\" alt=\"stripe sandbox checkout page for the test payment\" class=\"wp-image-51842\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/stripe-sandbox-checkout-page-for-the-test-payment.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/stripe-sandbox-checkout-page-for-the-test-payment-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/stripe-sandbox-checkout-page-for-the-test-payment-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/stripe-sandbox-checkout-page-for-the-test-payment-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/stripe-sandbox-checkout-page-for-the-test-payment-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/stripe-sandbox-checkout-page-for-the-test-payment-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n\n\n\n<p>After the test payment is completed, we are redirected back to the Teacher page. The \u201cPurchase Form\u201d is successfully submitted, and the number of slots is increased to \u201c17.\u201d<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/form-is-submitted-and-the-payment-is-successfully-completed.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/form-is-submitted-and-the-payment-is-successfully-completed.webp\" alt=\"form is submitted and the payment is successfully completed\" class=\"wp-image-51865\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/form-is-submitted-and-the-payment-is-successfully-completed.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/form-is-submitted-and-the-payment-is-successfully-completed-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/form-is-submitted-and-the-payment-is-successfully-completed-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/form-is-submitted-and-the-payment-is-successfully-completed-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/form-is-submitted-and-the-payment-is-successfully-completed-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/form-is-submitted-and-the-payment-is-successfully-completed-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n\n\n\n<p>The number is also changed in the <strong><em>WordPress Dashboard &gt; Users &gt; Profile<\/em><\/strong> page.<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/number-of-slots-is-changed-in-the-user-meta-field-after-the-form-submission.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/number-of-slots-is-changed-in-the-user-meta-field-after-the-form-submission.webp\" alt=\"number of slots is changed in the user meta field after the form submission\" class=\"wp-image-51837\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/number-of-slots-is-changed-in-the-user-meta-field-after-the-form-submission.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/number-of-slots-is-changed-in-the-user-meta-field-after-the-form-submission-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/number-of-slots-is-changed-in-the-user-meta-field-after-the-form-submission-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/number-of-slots-is-changed-in-the-user-meta-field-after-the-form-submission-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/number-of-slots-is-changed-in-the-user-meta-field-after-the-form-submission-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/number-of-slots-is-changed-in-the-user-meta-field-after-the-form-submission-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n\n\n\n<p>Next, we scroll down to the second appointment form and select three slots from the <strong>Appointment Date<\/strong> field.<\/p>\n\n\n\n<p>The \u201cNumber of slots selected\u201d field shows \u201c3,\u201d and the \u201cNumber of slots left\u201d field shows \u201c17 &#8211; 3 = 14.\u201d<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/calculated-fields-result-in-the-appointment-form.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/calculated-fields-result-in-the-appointment-form.webp\" alt=\"calculated fields result in the appointment form\" class=\"wp-image-51871\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/calculated-fields-result-in-the-appointment-form.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/calculated-fields-result-in-the-appointment-form-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/calculated-fields-result-in-the-appointment-form-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/calculated-fields-result-in-the-appointment-form-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/calculated-fields-result-in-the-appointment-form-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/calculated-fields-result-in-the-appointment-form-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n\n\n\n<p>After that, we successfully submitted the form.<\/p>\n\n\n<div class=\"note-banner d-flex border-bold border-jetthemecore rounded overflow-hidden p-20\"><div class=\"mr-12\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M9 21C9 21.5 9.4 22 10 22H14C14.6 22 15 21.5 15 21V20H9V21ZM12 2C8.1 2 5 5.1 5 9C5 11.4 6.2 13.5 8 14.7V17C8 17.5 8.4 18 9 18H15C15.6 18 16 17.5 16 17V14.7C17.8 13.4 19 11.3 19 9C19 5.1 15.9 2 12 2Z\" fill=\"#F2D23C\"\/><\/svg><\/div><div class=\"d-flex flex-column\"><div class=\"text-900 mb-12\">Things to know<\/div><p class=\"m-0\">If multiple forms are placed on the same page, they may share the same success\/error submission message. Submitting one form can display the message under all forms on the page, but this does not affect the form workflow. To prevent that, you can place forms on different templates (e.g., the \u201cPurchase\u201d form can be added to the Static or <a href=\"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/creating-user-account-page\/\" target=\"_blank\" rel=\"noreferrer noopener\">Account<\/a> page). Also, you can place buttons on the Single Provider Page with attached pop-ups that contain forms (for more details, refer to the <a href=\"https:\/\/jetformbuilder.com\/features\/create-wordpress-popup-form\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>How to Set Up a WordPress Pop-up Form<\/strong><\/a> tutorial).<\/p><\/div><\/div>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/appointment-form-with-the-number-of-slots-left-is-submitted.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1823\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/appointment-form-with-the-number-of-slots-left-is-submitted.webp\" alt=\"appointment form with the number of slots left is submitted\" class=\"wp-image-51867\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/appointment-form-with-the-number-of-slots-left-is-submitted.webp 1823w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/appointment-form-with-the-number-of-slots-left-is-submitted-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/appointment-form-with-the-number-of-slots-left-is-submitted-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/appointment-form-with-the-number-of-slots-left-is-submitted-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/appointment-form-with-the-number-of-slots-left-is-submitted-1536x927.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/appointment-form-with-the-number-of-slots-left-is-submitted-600x362.webp 600w\" sizes=\"(max-width: 1823px) 100vw, 1823px\" \/><\/a><\/div>\n<\/div><\/div>\n\n\n\n<p>That\u2019s all. Now you know how to create a flexible appointment slot purchase system with <em>JetAppointment<\/em> and <em>JetFormBuilder<\/em>, including payments, discounts, and user balance tracking on your WordPress site.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This tutorial explains how to create a flexible appointment slot purchase system with JetAppointment and JetFormBuilder, including payments, discounts, and user balance tracking on your WordPress site.<\/p>\n","protected":false},"author":8,"featured_media":0,"template":"","format":"standard","builder-category":[],"article-category":[458],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to Create a Flexible Purchasing Plan \u2014 JetAppointment | Crocoblock<\/title>\n<meta name=\"description\" content=\"Learn how to create a flexible appointment slot purchase system with JetAppointment and JetFormBuilder, including payments, discounts, and user balance tracking.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/crocoblock.com\/knowledge-base\/jetappointment\/creating-flexible-purchasing-plan-with-jetappointment\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Create a Flexible Purchasing Plan \u2014 JetAppointment | Crocoblock\" \/>\n<meta property=\"og:description\" content=\"Learn how to create a flexible appointment slot purchase system with JetAppointment and JetFormBuilder, including payments, discounts, and user balance tracking.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/crocoblock.com\/knowledge-base\/jetappointment\/creating-flexible-purchasing-plan-with-jetappointment\/\" \/>\n<meta property=\"og:site_name\" content=\"Help Center\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-26T09:12:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/user-meta-field-for-the-slot-balance.webp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"19 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/crocoblock.com\/knowledge-base\/jetappointment\/creating-flexible-purchasing-plan-with-jetappointment\/\",\"url\":\"https:\/\/crocoblock.com\/knowledge-base\/jetappointment\/creating-flexible-purchasing-plan-with-jetappointment\/\",\"name\":\"How to Create a Flexible Purchasing Plan \u2014 JetAppointment | Crocoblock\",\"isPartOf\":{\"@id\":\"https:\/\/crocoblock.com\/knowledge-base\/#website\"},\"datePublished\":\"2026-05-26T09:06:34+00:00\",\"dateModified\":\"2026-05-26T09:12:07+00:00\",\"description\":\"Learn how to create a flexible appointment slot purchase system with JetAppointment and JetFormBuilder, including payments, discounts, and user balance tracking.\",\"breadcrumb\":{\"@id\":\"https:\/\/crocoblock.com\/knowledge-base\/jetappointment\/creating-flexible-purchasing-plan-with-jetappointment\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/crocoblock.com\/knowledge-base\/jetappointment\/creating-flexible-purchasing-plan-with-jetappointment\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/crocoblock.com\/knowledge-base\/jetappointment\/creating-flexible-purchasing-plan-with-jetappointment\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/crocoblock.com\/knowledge-base\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Articles\",\"item\":\"https:\/\/crocoblock.com\/knowledge-base\/articles\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How to Create a Flexible Purchasing Plan with JetAppointment\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/crocoblock.com\/knowledge-base\/#website\",\"url\":\"https:\/\/crocoblock.com\/knowledge-base\/\",\"name\":\"Help Center\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/crocoblock.com\/knowledge-base\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/crocoblock.com\/knowledge-base\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/crocoblock.com\/knowledge-base\/#organization\",\"name\":\"Help Center\",\"url\":\"https:\/\/crocoblock.com\/knowledge-base\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/crocoblock.com\/knowledge-base\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2025\/04\/invert-crocoblock-logo.svg\",\"contentUrl\":\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2025\/04\/invert-crocoblock-logo.svg\",\"caption\":\"Help Center\"},\"image\":{\"@id\":\"https:\/\/crocoblock.com\/knowledge-base\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to Create a Flexible Purchasing Plan \u2014 JetAppointment | Crocoblock","description":"Learn how to create a flexible appointment slot purchase system with JetAppointment and JetFormBuilder, including payments, discounts, and user balance tracking.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/crocoblock.com\/knowledge-base\/jetappointment\/creating-flexible-purchasing-plan-with-jetappointment\/","og_locale":"en_US","og_type":"article","og_title":"How to Create a Flexible Purchasing Plan \u2014 JetAppointment | Crocoblock","og_description":"Learn how to create a flexible appointment slot purchase system with JetAppointment and JetFormBuilder, including payments, discounts, and user balance tracking.","og_url":"https:\/\/crocoblock.com\/knowledge-base\/jetappointment\/creating-flexible-purchasing-plan-with-jetappointment\/","og_site_name":"Help Center","article_modified_time":"2026-05-26T09:12:07+00:00","og_image":[{"url":"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2026\/05\/user-meta-field-for-the-slot-balance.webp"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"19 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/crocoblock.com\/knowledge-base\/jetappointment\/creating-flexible-purchasing-plan-with-jetappointment\/","url":"https:\/\/crocoblock.com\/knowledge-base\/jetappointment\/creating-flexible-purchasing-plan-with-jetappointment\/","name":"How to Create a Flexible Purchasing Plan \u2014 JetAppointment | Crocoblock","isPartOf":{"@id":"https:\/\/crocoblock.com\/knowledge-base\/#website"},"datePublished":"2026-05-26T09:06:34+00:00","dateModified":"2026-05-26T09:12:07+00:00","description":"Learn how to create a flexible appointment slot purchase system with JetAppointment and JetFormBuilder, including payments, discounts, and user balance tracking.","breadcrumb":{"@id":"https:\/\/crocoblock.com\/knowledge-base\/jetappointment\/creating-flexible-purchasing-plan-with-jetappointment\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/crocoblock.com\/knowledge-base\/jetappointment\/creating-flexible-purchasing-plan-with-jetappointment\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/crocoblock.com\/knowledge-base\/jetappointment\/creating-flexible-purchasing-plan-with-jetappointment\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/crocoblock.com\/knowledge-base\/"},{"@type":"ListItem","position":2,"name":"Articles","item":"https:\/\/crocoblock.com\/knowledge-base\/articles\/"},{"@type":"ListItem","position":3,"name":"How to Create a Flexible Purchasing Plan with JetAppointment"}]},{"@type":"WebSite","@id":"https:\/\/crocoblock.com\/knowledge-base\/#website","url":"https:\/\/crocoblock.com\/knowledge-base\/","name":"Help Center","description":"","publisher":{"@id":"https:\/\/crocoblock.com\/knowledge-base\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/crocoblock.com\/knowledge-base\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/crocoblock.com\/knowledge-base\/#organization","name":"Help Center","url":"https:\/\/crocoblock.com\/knowledge-base\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/crocoblock.com\/knowledge-base\/#\/schema\/logo\/image\/","url":"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2025\/04\/invert-crocoblock-logo.svg","contentUrl":"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2025\/04\/invert-crocoblock-logo.svg","caption":"Help Center"},"image":{"@id":"https:\/\/crocoblock.com\/knowledge-base\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/crocoblock.com\/knowledge-base\/wp-json\/wp\/v2\/article\/51834"}],"collection":[{"href":"https:\/\/crocoblock.com\/knowledge-base\/wp-json\/wp\/v2\/article"}],"about":[{"href":"https:\/\/crocoblock.com\/knowledge-base\/wp-json\/wp\/v2\/types\/article"}],"author":[{"embeddable":true,"href":"https:\/\/crocoblock.com\/knowledge-base\/wp-json\/wp\/v2\/users\/8"}],"wp:attachment":[{"href":"https:\/\/crocoblock.com\/knowledge-base\/wp-json\/wp\/v2\/media?parent=51834"}],"wp:term":[{"taxonomy":"builder-category","embeddable":true,"href":"https:\/\/crocoblock.com\/knowledge-base\/wp-json\/wp\/v2\/builder-category?post=51834"},{"taxonomy":"article-category","embeddable":true,"href":"https:\/\/crocoblock.com\/knowledge-base\/wp-json\/wp\/v2\/article-category?post=51834"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}