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.
- Use the same provider_id, location_id, product_id, category, and currency on every tier row.
- Set pricing_method=per_unit and billing_unit=week.
- Row A: min_units=1, max_units=3, unit_price=list price for short stays.
- Row B: min_units=4, max_units=12 with the mid-stay weekly price.
- 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.
- Keep product_id identical across centres so Hub treats them as one course family.
- Set location_id / location_name to each centre (e.g. MTL, TOR).
- Duplicate duration-tier rows per centre when prices differ.
- 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.
- Create Adults rows with category=Adults (and optional min_age/max_age for 18+).
- Create Juniors rows with category=Juniors and matching age bounds (e.g. 12–17).
- Keep product_id distinct when Adults and Juniors are separate sellable products.
- 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.
- Keep the base list-price rows unchanged.
- Add a promo row for the same product with valid_from / valid_to dates.
- Set conditions like complimentaryWeeks=2;minimumPaidWeeks=12.
- 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.
- Add a product_type_id=registration_fees row with pricing_method=flat_fee and flat_price set.
- Leave category empty unless you intentionally subtype fees.
- Add conditions such as registrationWaivedIfPaidWeeksGte=12.
- 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.
- Use product_type_id=accommodation and category=Homestay (or Residence).
- Set billing_unit to night or week according to your base rate.
- Add conditions thresholdNights=6;chargeAs=week_then_night when 6 nights bill as a week.
- Provide both night and week rate rows when your school publishes both.
Tip: Keep thresholdNights and chargeAs together — one without the other is incomplete.
