Skip to main content

How to Create Price Lists and Coupons for Custom Pricing

Learn how to create price lists and coupons to set custom pricing, discounts, and markups for your courses and materials. Share with specific clients or students for precise pricing control.

Overview

Price Lists let you set custom pricing for your courses and materials, then share that pricing with specific clients or students through Coupons. Together, they give you precise control over who pays what — whether you're offering a corporate discount, a bulk rate, or a partner markup.

Available for: Service Provider Admins


How Price Lists Work

A Price List is a named set of pricing rules that adjust your standard course and material prices — either up (markup) or down (discount). Once you've created a Price List, you attach Coupons to it so students or clients can access those prices at checkout.

The three-step process:

  1. Create a Price List — define the pricing adjustment (e.g., 10% discount) and which products it applies to

  2. Add a Coupon — give the price list a shareable code or URL

  3. Share with users — send the coupon code or link; Hovn applies the pricing automatically at checkout


Part 1: Price Lists

What You Can Do

  • Set a default price adjustment that applies to all (or selected) courses and materials

  • Choose from four adjustment types: percentage discount, dollar discount, percentage markup, or dollar markup

  • Override the default adjustment for individual products with custom pricing

  • Apply the list automatically to all current and future courses and/or materials

  • Archive a price list when it is no longer needed


Creating a Price List

Navigate to Price Lists in your admin sidebar, then click + Price List.

Step 1: Internal Name and Description

  • Internal Name (required) — A label for your reference only. Students and clients never see this. Example: Acme Dental Pricing or Corporate Client Discount.

  • Internal Description (optional) — Add notes about the purpose and usage of this list. Useful when you manage multiple lists for different clients.


Step 2: Default Price Adjustment

Every product in the list uses this adjustment unless you override it per product. Choose an Adjustment Type and enter the Price Adjustment value.

Adjustment Type

What it does

Example

Discount Percentage

Reduces the price by a percentage

10% off → a $100 course costs $90

Discount Amount

Reduces the price by a fixed dollar amount

$15 off → a $100 course costs $85

Markup Percentage

Increases the price by a percentage

20% markup → a $100 course costs $120

Markup Amount

Increases the price by a fixed dollar amount

$25 markup → a $100 course costs $125

Tip: Discounts are used most often for client-specific pricing. Markups are useful when reselling or billing a client organization at a different rate.


Step 3: Product Selection

Decide which products the default adjustment applies to automatically:

  • Apply to all Courses — When turned on, every course (existing and new) in your catalog uses this price adjustment automatically. You don't need to add courses one by one.

  • Apply to all Materials — Same behavior for materials.

Important: If you leave both toggles off, the price list will have no products in it until you manually add them one by one from the Products tab. In most cases, turning on "Apply to all Courses" is the easiest setup.

Click Save to create the price list. You'll be taken directly to the Coupons tab.


Managing Products

The Products tab shows every course and material that has a price entry in this price list.

  • If "Apply to all Courses" is enabled, all your courses appear here automatically with their calculated final prices.

  • You can add individual products to set a custom price override that is different from the default adjustment.

Adding or Overriding a Product Price

Click + Add Product (or the edit icon next to an existing product) to open the product pricing dialog.

  1. Product Type — Select Course or Material. Note: if "Apply to all Courses" is already on, you cannot manually add a course (it's already included). Use this to add individual materials or set overrides.

  2. Select Course / Material — Choose from your catalog.

  3. Base Price — Automatically populated from the course or material's standard price. You cannot edit this directly.

  4. Price Adjustment Type — Choose the adjustment method for this specific product (can be different from the list default).

  5. Price Adjustment — Enter the amount.

  6. Final Price — Calculated automatically. Review this before saving.

Click Save to apply the custom price.

How overrides work: A product-level price always takes priority over the default price list adjustment. For example, if your list has a 10% discount but you set a specific course to a 20% discount, that course uses 20%.

Removing a Product

Click the trash icon next to any product in the table to remove it from the price list. This does not delete the course or material — it only removes its custom pricing entry from this list.


Archiving a Price List

When a price list is no longer needed, go to the Edit tab and scroll to the bottom. Click Archive [Price List Name] and confirm.

What archiving does:

  • The price list and all its coupons become inactive

  • Any coupon codes linked to this list will no longer work at checkout

  • The price list cannot be edited once archived

  • Archived price lists are hidden from the active list but are not deleted

Important: This action cannot be undone. Make sure you notify anyone who has shared the coupon links before archiving.


Part 2: Coupons

What Is a Coupon?

A Coupon is the key that unlocks a specific Price List for a student at checkout. Each coupon has a unique code and a matching URL that automatically applies the pricing.

Students can access the discounted pricing in two ways:

  1. Enter the coupon code manually during checkout

  2. Use the coupon URL link you share with them — pricing is applied automatically


Creating a Coupon

Navigate to a Price List and click the Coupons tab. Click + Coupon to open the creation form.

Fields explained:

Field

Description

Internal Name

Your label for this coupon — not visible to students. E.g., Acme Dental Annual Promo

Internal Description

Optional notes for your team about this coupon's purpose

Code

The text code students enter at checkout (e.g., ACME-DENTAL-2025). Auto-formats to uppercase. Must be 3–15 characters. Must be unique across all your coupons.

URL

Auto-generated from the code. Share this link to apply the coupon automatically. Copy it with the copy icon.

Effective Date

The date the coupon becomes active. Defaults to today.

Expiration Date

Optional. Leave blank for no expiration. Must be on or after the effective date.

Payment Responsibility

Who pays at checkout when this coupon is used (see below).

Client

Optional. Link this coupon to a specific client for reporting.

Restrict Discovery Catalog

Optional. Limits courses visible to students.


Payment Responsibility

The Payment Responsibility setting controls who pays when a student uses this coupon.

Student Pays

The student checks out normally and pays directly at checkout. The price list pricing applies (e.g., the discounted price). This is the most common setting.

Use this when:

  • Offering a discount to individual students

  • Running a promotional code campaign

  • Giving a client's employees a discount they pay themselves

Client Pays (coming soon — currently not selectable in UI)

An order is created and assigned to the client account. The client receives an invoice and is billed separately. Students complete their training without paying upfront.

Use this when:

  • A company is paying for their employees' training

  • You have a billing relationship with the organization, not the individual

Note: When "Client Pays" is selected, you must choose a specific client from the Client dropdown. When "Student Pays" is selected, the Client field is optional — linking a client is for reporting purposes only.


Coupon Status

A coupon can be in one of three states:

Status

Meaning

Active

Effective date has passed and it has not expired. Students can use it now.

Inactive

The effective date is in the future. The coupon exists but cannot be used yet.

Expired

The expiration date has passed. The coupon code no longer works.


Sharing a Coupon

There are two ways to give students access to the special pricing:

Option 1: Share the Coupon Code

  • Copy the code (e.g., ACME-DENTAL-2025) and send it to students via email, SMS, etc.

  • Students enter the code at checkout on the booking/session page.

Option 2: Share the Coupon URL

  • Click the link/copy icon next to the URL field in the coupon form, or the link icon in the coupons table.

  • When a student opens this URL, the coupon is applied automatically — they don't need to type anything.

Best practice: The URL link is easier for students because it removes the manual entry step. Use it whenever you're sharing via email or a digital channel.


Limit the course catalog with a coupon (Restrict Discovery Catalog)

By default, a coupon changes pricing but visitors can still browse your full course catalog. Turn on Restrict Discovery Catalog on a coupon when only certain courses should appear—for example, a client's employees should only see courses on that price list.

When the toggle is on: Visitors and students who apply the coupon only see courses on that coupon’s price list.

When the toggle is off: The full catalog stays visible; the coupon still applies at checkout where the price list applies.

Learn more about setting up a coupon with restricted discovery enabled. Read the article: Limit Course Catalog with a Coupon in the Help Center


Example Use Cases

Scenario 1: Corporate Client Discount

Your client Acme Dental wants all their employees to get 15% off CPR classes.

  1. Create a Price List: Acme Dental Pricing, 15% Discount Percentage, Apply to all Courses: ON

  2. Create a Coupon: code ACME2025, no expiration, Payment Responsibility: Student Pays, Client: Acme Dental

  3. Share the coupon URL with Acme Dental's HR contact

  4. Employees click the link and book at the discounted rate


Scenario 2: Seasonal Promotional Code

You want to run a back-to-school promotion: $10 off all courses in September.

  1. Create a Price List: Back to School Promo, $10 Discount Amount, Apply to all Courses: ON

  2. Create a Coupon: code SCHOOL25, Effective Date: Sept 1, Expiration Date: Sept 30, Payment Responsibility: Student Pays

  3. Announce the code on your website or email newsletter

  4. The coupon automatically expires on October 1


Scenario 3: Client Pricing

A healthcare staffing agency sends you students and expects to pay a flat $5 less per person per course.

  1. Create a Price List: Healthcare Staffing Discount, $5 Discount Amount, Apply to all Courses: ON

  2. Create a Coupon: code HCSTAFF, no expiration, Payment Responsibility: Student Pays

  3. Share the link with the client's coordinator

  4. All bookings using this coupon are attributed to the staffing agency client in your reports


Scenario 4: Client catalog and external billing

Acme Dental employees should only see agreed courses, register for open sessions at no charge, and Acme is billed outside Hovn:

  1. Create a price list named "Acme Dental" with Apply to all Courses off

  2. On the Products tab, add only Acme-eligible courses and materials; set pricing to 100% off where appropriate

  3. Create coupon ACME100 with Student Pays (until Client Pays is available)

  4. Assign the Client field to Acme Dental for reporting

  5. Turn Restrict Discovery Catalog on

  6. Share the coupon URL from the coupon form

  7. Track orders under Price Lists → [list] → Orders and invoice Acme outside Hovn


Limitations

What you CAN do:

  • Create multiple price lists for different clients or promotions (e.g. Back to School Promo is one price list for each year you create a coupon code SCHOOL25, SCHOOL26 etc.)

  • Have multiple coupons per price list (useful for tracking different groups e.g. Nursing Department vs. Physician Group)

  • Mix product-level overrides with a list-wide default adjustment

  • Link a coupon to a client for reporting without requiring the client to pay

What you CANNOT do:

  • Use a price list without a coupon — coupons are always required for students to access the custom pricing

  • Edit a price list that has been archived

  • Create two coupons with the same code (codes must be unique within your account)

  • Set a coupon expiration date before its effective date


Troubleshooting

Coupon code isn't working at checkout

  1. Check the status — go to the Coupons tab and verify the coupon shows as "Active" (not Inactive or Expired)

  2. Check effective date — if the effective date is in the future, the coupon is not yet usable

  3. Check the price list — make sure the price list is not archived

  4. Check the code spelling — codes are uppercase and hyphenated; share via URL link to avoid typos

Student is seeing full price, not the discounted price

  1. Confirm the student used the coupon code or URL before checkout

  2. Check whether the course has a product-level override in the price list that sets a different price

  3. Verify "Apply to all Courses" is turned on in the price list, or that the specific course has been manually added to the Products tab

I accidentally archived a price list

Archived price lists cannot be unarchived. You will need to create a new price list with the same settings and issue new coupon codes. Notify anyone who had the old coupon URL that it is no longer active.

Did this answer your question?