HomeGuidesRecipesAPI ReferenceChangelog
GuidesAPI ReferenceHelp CenterLog In

Price Schemes

The price of an experience isn't always a fixed value. With more complex configurations, the price may vary based on several factors. The following factors may be configured to affect price:

  • Price Type: Is the price per person or per outing
  • Privacy: Is it a shared (public) or private event
  • Group Size: Tiered pricing lets you configure different price points based on the group size
  • Schedule: The date and time of the event could vary the price
  • Demographic: Certain demographics may be configured to receive discounts

Price schemes are a powerful mechanism that can help configure pricing based on some of these factors. Fundamentally, a price scheme contains two things -- a price, and a set of constraints. The price defined in the scheme kicks in when all its constraints are met for an order.

Price schemes currently support 4 types of constraints:

  1. Price Type: Whether the order is for priced per person or per outing.
  2. Privacy: Whether the order is public or private.
  3. Quantity: How many guests are in the order.
  4. Schedules: Whether the event date/time fall within a chosen schedule.

To better understand how price schemes are defined, lets see some real examples.

Example 1: Public experience with a fixed price per-person

This scenario will need to have a single price scheme with two constraints. A single price scheme indicates that there is no variation is price and the constraints indicate what type of configuration is permitted.

{
  "id": "experience_id",
  "priceSchemes": [
    {
      "price": 100,
      "constraints": [
        {"object": "price_type_constraint", "priceType": "person"},
        {"object": "privacy_constraint", "privacy": "public"}
      ]
    }
  ]
}

Example 2: Public and private pricing

This scenario gets into optionality, therefore it will have more than one price scheme. In this case, there are 2 options -- the public tour with per-person pricing, or the private tour with per outing pricing. Each of these two options have a different price and a corresponding price scheme which determines that price.

The two prices available are:

  1. Public = 100 per person (same as Example 1)
  2. Private = 400 per outing
{
  "id": "experience_id",
  "priceSchemes": [
    {
      "price": 100,
      "constraints": [
        {"object": "price_type_constraint", "priceType": "person"},
        {"object": "privacy_constraint", "privacy": "public"}
      ]
    },
    {
      "price": 400,
      "constraints": [
        {"object": "price_type_constraint", "priceType": "outing"},
        {"object": "privacy_constraint", "privacy": "private"}
      ]
    }
  ]
}

Example 3: Tiered per-person pricing

With tiered pricing, the price changes based on the group size (quantity) i.e. there is a price scheme for each quantity threshold. In this example, we have the following quantity thresholds:

  • 1-4: $100 per person
  • 5-8: $90 per person
  • 9+: $80 per person
{
  "id": "experience_id",
  "priceSchemes": [
    {
      "price": 100,
      "constraints": [
        {"object": "quantity_constraint", "min": 1, "max": 4},
        {"object": "price_type_constraint", "priceType": "person"}
      ]
    },
    {
      "price": 90,
      "constraints": [
        {"object": "quantity_constraint", "min": 5, "max": 8},
        {"object": "price_type_constraint", "priceType": "person"}
      ]
    },
    {
      "price": 80,
      "constraints": [
        {"object": "quantity_constraint", "min": 9, "max": 99999},
        {"object": "price_type_constraint", "priceType": "person"}
      ]
    }
  ]
}

In this example, we are only considering per-person pricing, but it would be the same idea if you wanted to combine per-person and per-outing.

Also notice that we did not include the privacy constraint. What this means is, these price schemes are valid for whatever privacy you prefer -- public and private.

Example 4: Schedule restricted pricing

There may be situations where we only want to offer a certain price on a certain schedule. For instance, we may want to offer discounted group pricing only on weekdays.

  • Everyday price = 100 per person
  • Weekday offer = 80 per person for groups with more than 4 people
{
  "id": "experience_id",
  "priceSchemes": [
    {
      "price": 100,
      "constraints": [
        {"object": "price_type_constraint", "priceType": "person"},
        {"object": "privacy_constraint", "privacy": "public"}
      ]
    },
    {
      "price": 80,
      "constraints": [
        {"object": "quantity_constraint", "min": 4, "max": 99999},
        {"object": "price_type_constraint", "priceType": "outing"},
        {
          "object": "schedules_constraint",
          "schedules": {
            "items": ["id_of_weekday_schedule"]
          }
        }
      ]
    }
  ]
}

This price scheme relies on an existing schedule being already present with your criteria. Learn how to create schedules.