What are Ordinal Based Rotating Products
Ordinal Rotations offer merchants the ability to establish an ordered list of products for delivery within a subscription plan. This ordered list dictates the specific product a customer receives at each delivery interval.
How Ordinal Based Rotating Products Work
To create an Ordinal Rotation subscription program, a series of selection rules will need to be defined. Each selection rule consists of a product
, a starting_ordinal
, and a public_id
.
- product: This identifies the specific product that will be delivered at a designated point in the sequence.
- starting_ordinal: This is a non-negative whole number that represents the first delivery "position" for the product in the planned sequence. See the "Additional Considerations" section below for more details on how
starting_ordinal
works. - The
starting_ordinal
is a natural number that represents the first delivery "position" for the product in the planned sequence. The sequencing is zero-based, and as such at least astarting_ordinal
of 0 is required. This zeroth ordinal represents the customer's first product delivery - the one that will be generated as part of the checkout order. The first renewal order will have astarting_ordinal
of 1, and so on. For example, if a product has astarting_ordinal
of 2, it means the customer will receive that product on their third delivery (second renewal order). If there are nostarting_ordinal
s with a number greater than 2, they will also receive that product on all subsequent renewal orders. - The
public_id
is a random ID generated and assigned to the Selection Rule.
Additional Considerations for starting_ordinal
starting_ordinal
- Repeating Products: If a product has no Selection Rules with a starting_ordinal greater than a specific value (e.g., no rules with starting_ordinal greater than 2), the customer will continue to receive that product on all subsequent renewal orders.
- Gaps in the Sequence: Selection Rules can have gaps in the starting_ordinal sequence. For example, if there are rules for
starting_ordinal
values of 0, 1, 2, and 5. In this case, deliveries for renewal orders between starting_ordinal 2 and 5 (not inclusive) wouldn't have an explicitly defined rule associated with them. all receive the product associated with the selection rule with a starting_ordinal of 2. In this scenario, the system would deliver the product associated with the previously defined rule in the sequence (i.e., the product with a starting_ordinal of 2 in this example). - Zeroth Ordinal Required: Ordinal rotations require a selection rule with a starting_ordinal of 0. This zeroth ordinal signifies the customer's first delivery product - the one that will be generated as part of the checkout order. The first renewal order will have a position associated with a
starting_ordinal
of 1, and so on. For example, if a Selection Rule has astarting_ordinal
of 2, it means the customer will receive the product associated with that Selection Rule on their third delivery (second renewal order).
Example
Consider the following configuration for Selection Rules associated with an Ordinal Based subscription program:
Coffee Product | Starting Ordinal |
---|---|
Light Roast Blend | 0 |
Medium Roast Single-Origin | 1 |
Dark Roast Blend | 4 |
Coffee of the Month | 5 |
In this example:
- Customers will receive the Light Roast Blend on their first delivery, which is generated as part of their checkout experience.
- They will then receive the Medium Roast Single-Origin on their second delivery (first renewal order,
starting_ordinal
incremented to 1). - After that, they will get the Medium Roast Single-Origin on the second and third renewal orders, since there are no explicitly defined rules with
starting_ordinal
s of 2 or 3. - After that, they will get the Dark Roast Blend on their fourth renewal order and all subsequent renewals until a higher starting_ordinal rule is defined.
- After that, they will get the Coffee of the Month on their fifth renewal order and all subsequent renewals until a Selection Rule associated with a higher
starting_ordinal
is defined .