Worked examples

Six recipes for common Catalog v3 setups. Combine them as needed — for example duration tiers plus a free-week promo on the same product.

Example 1

Weekly course with duration tiers

Publish one course product with separate rows for 1–3, 4–12, and 13+ week bands using min_units / max_units.

  1. Use the same provider_id, location_id, product_id, category, and currency on every tier row.
  2. Set pricing_method=per_unit and billing_unit=week.
  3. Row A: min_units=1, max_units=3, unit_price=list price for short stays.
  4. Row B: min_units=4, max_units=12 with the mid-stay weekly price.
  5. Row C: min_units=13, leave max_units empty for open-ended long stay.

Tip: Hub Overview uses the entry-duration tier as the matrix base weekly price.

Example 2

Same course at multiple centres

Repeat product rows per centre. Centre scope is the row location_id / location_name pair.

  1. Keep product_id identical across centres so Hub treats them as one course family.
  2. Set location_id / location_name to each centre (e.g. MTL, TOR).
  3. Duplicate duration-tier rows per centre when prices differ.
  4. Use location_id=ALL only when the price truly applies everywhere.

Tip: Do not invent separate scope columns — Catalog v3 uses the row centre fields only.

Example 3

Adults vs Juniors with age bands

Split audience with category, and optionally pin ages with min_age / max_age.

  1. Create Adults rows with category=Adults (and optional min_age/max_age for 18+).
  2. Create Juniors rows with category=Juniors and matching age bounds (e.g. 12–17).
  3. Keep product_id distinct when Adults and Juniors are separate sellable products.
  4. Ensure booking captures student age whenever age columns are present.

Tip: Overlapping ages with the same category create ambiguous quotes.

Example 4

Free-week promotion

Add a promotional row (or conditions on a price row) that grants complimentary weeks.

  1. Keep the base list-price rows unchanged.
  2. Add a promo row for the same product with valid_from / valid_to dates.
  3. Set conditions like complimentaryWeeks=2;minimumPaidWeeks=12.
  4. Optionally limit the promo with country_scope / country_codes.

Tip: Use ISO dates (YYYY-MM-DD). Excel serial dates break import.

Example 5

Registration fee with waiver

Charge a registration fee product and waive it when the student books enough weeks.

  1. Add a product_type_id=registration_fees row with pricing_method=flat_fee and flat_price set.
  2. Leave category empty unless you intentionally subtype fees.
  3. Add conditions such as registrationWaivedIfPaidWeeksGte=12.
  4. Confirm Agent checkout can include/exclude the fee before booking.

Tip: Registration products live in Hub Products, not Course Rules catalog panels.

Example 6

Homestay night / week tiering

Price accommodation with night and week logic using tiered conditions.

  1. Use product_type_id=accommodation and category=Homestay (or Residence).
  2. Set billing_unit to night or week according to your base rate.
  3. Add conditions thresholdNights=6;chargeAs=week_then_night when 6 nights bill as a week.
  4. Provide both night and week rate rows when your school publishes both.

Tip: Keep thresholdNights and chargeAs together — one without the other is incomplete.