Appointments Booking + Payments - Use Case - How to Charge Users for Booking Appointments

Use Case - How to Charge Users for Booking Appointments

Back to User Guide

Note: This guide covers features from:

Video Use-Case


CM Booking Calendar allows your manage and display multiple calendars with open spots for visitors to book. The Payments add-on allows you to charge users to book said spots.

Use Case Front-End

Use Case Assumptions

Want to Learn From The Start?

If you still haven't configured the your first calendar, check the use case: 

Appointments Booking - Use Case - How to Create a Calendar Booking System in WordPress

In this example use case guide, we'll cover how to charge users for booking spots in your calendars. We consider that you have already bought the CM Booking Calendar and installed, but not installed the Payments add-on

It follows:

Installing The Add-on

The process is the same for all CM plugins and add-ons.

  • Download the plugin from your customer dashboard
  • Log in to WordPress and navigate to the WordPress Admin  → Plugins settings
  • Click on Add New
  • Activate it and add the license

Installing Payment Plugin (EDD or WooCommerce)

You must choose between either Easy Digital Downloads or WooCommerce.

EDD or WooCommerce? No Difference For The Plugin

As far as the Payment add-on is concerned, there is almost no difference between using either EDD or WooCommerce. Both are free and provide free and paid add-ons. 

Head to Admin Dashboard → Plugins → Installed Plugins and click Add New

Search for either Easy Digital Downloads or WooCommerce and install it.

Configure Payment Plugins

Don't forget to configure the payment plugin! This way you can connect it to payment providers such as PayPal or credit card companies.


Be sure that your payment plugin has the correct Checkout and Cart pages set up. They are used by the plugin.

External Resources

Setting Up Calendars Recap

Selecting Payment Plugin

The plugin allows you to choose which payment plugin to use (EDD or WooCommerce) if they are activated. 

Head to  Admin Panel → CM Registration Pro → Settings → Payment tab

TIP: Why Setting is Useful

It's more than likely that you will use only one payment plugin. However, this option is useful to confirm that the add-on is connected with the payment plugin - if you can't choose any, chances are the payment plugin was not installed properly

Assigning a Price to a Booking


This is the most important process in using the add-on!

Step by Step

1) Create a Download/Product

EDD and WooCommerce work similarly. WooCommerce works with "products": you create a product and associate it with an appointment. In the case of EDD, the products are called "Downloads".


To manage them on EDD, navigate to DownloadsAll Downloads, as shown below:

The interface for adding or editing a download is the same as that of creating a page or post.

Two items are highlighted in the example screen: Download Stats and Download Prices.

Notes about them:

  • Download Stats - Shows the number of times this particular item (or appointment) was bought and its earnings. 
  • Download Prices - Where you can set the price for the booking.


To manage them on WooCommerce, navigate to  Products → All Products, as shown below:

The interface for adding or editing a download is also the same as that of creating a page or post. 

However, WooCommerce supports additional information, such as if the product is physical or not, its weight and shipment information. Since every booking is virtual, modifying these settings will not affect the add-on.

2) Set a Price for the Appointment

To set a price for an appointment, simply associate the calendar with the chosen downloads.

To do this, Edit or Add a Calendar and select the relevant download in the last field, "Payments".

You can choose to assign a single product to the calendar (if it has only one event duration).

If it has more than one event duration, you can apply the "Use different product for each duration" option, as shown in the example

3) Choose Between Automatic and Manual Booking

Just above the previous option, you will find an  additional  option: Automatic Booking.

If you set Automatic Booking to on, this calendar will not require moderation and approval for each booking.

4) Choose Between Direct Checkout or Email Notification

If automatic booking is on, you can also enable Send user directly to checkout. The behavior is:

  • Enabled - When user clicks payment button, they are directed to checkout
  • Disabled - When user clicks payment button, they receive email with checkout link

Accepting Bookings - Flow

This is, step by step, what happens during booking:

  1. The customer makes an appointment - To understand what the customer sees
  2. The appointment is approved - This step can be either automatic or manual (approval by the admin), depending on the Calendar settings.
  3. The admin sends the customer the Payment Request - The admin can send it by clicking the respective button while managing bookings.
    If the booking is not automatically accepted, the admin will approve it as well, as shown below:
  4. Customer pays - The status of the booking should change from Waiting for Payment to Accepted.
    The screen below shows both cases:

Sending Email Reminders

The Payments add-on includes two additional notifications:

To the user:

  1. Payment is pending
  2. Payment period has expired

 Read more about  Appointments Bookings' main templates.

To configure them, head to the  Email Templates tab.

The two templates are located at the end of the page. They refer to:

  • Finalize Booking - Instruct user on how to make payment. It's also sent as a reminder if the customer has not paid yet. 
  • Booking Deleted - Notify the user that the booking was deleted for lack of payment.

The emails' subject and body support placeholders, such as  {calendar-name}, which returns the appropriate calendar name.

You can find the full list by clicking the Placeholders button, located above every email template, as shown:

Setting When Reminders Will be Sent

You can modify this in the Payment tab, under Send reminder [hours]. As an example, 24 means the user will receive the reminder every 24 hours.

Translating the Plugin's Interface

The Payments add-on adds one extra label which can be customized. Read more about Appointments Bookings' labels.

Navigate to the  Labels tab.

Hover to the end of the page and, under Payment Labels, you will see the relevant label:

The Booking Price Label

This is the text shown to inform the cost of the booking. Its default value is "Cost of this booking is $%.2f"

What is "$%.2f"?

Since every booking has its own price, the label must be able to fetch the value depending on the appointment. Writing "$%.2f" does exactly this. If we consider a booking that costs $12.341, "$%.2f" will return "$12.34". 

The code can be customized. I have experience with coding

Refer to PHP's  sprintf function manual or also test it live on PHP Sandbox.

I don't have experience with coding

We can break it down to make it simpler to edit it:

The examples below use the $12.341 price.

  • $ - Is not actually a code: it will be shown as written, so it can be replaced. That allows you to change the currency easily: "%.2f ¥" will return "12.34 ¥", for instance. 
  • % - This is a variable and will be replaced with the actual price.
  • .2f - This section defines how many digits will be shown after the point. So, using "$%.1f" would return "$12.3", because 12.34 is rounded as 12.3.
  • Examples: 
    • "US$ %.2f" returns "US$ 12.34".
    • "%,.3fPLN" returns "12,341PLN".

More Information About Translating

EDD supports over 120 languages. For additional translations, EDD has a specific guide on the subject.

End Result

Following instructions found in the plugin and guides, you should be able to charge users for booking spots on your calendars.

Use Case Front-End

More information about the Appointments Booking Payments Add-on

Other WordPress products can be found at CreativeMinds WordPress Store

Let us know how we can Improve this Product Documentation Page

To open a Support Ticket visit our support center
Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.

Still need help? Contact Us Contact Us