Skip to main content
The _cycle property format is subject to change as we iterate on it. Integrations and automations should use Shopify Flow instead of relying directly on this token.
Shopify line items in Supercycle carry rental information through custom properties. The _cycle property is attached to Shopify order line items and contains all information needed to create a rental. If an item doesn’t have a _cycle property, Supercycle will not process that item.

Structure

The _cycle format organizes rental data into two special sections (item and attachments), with all other rental attributes at the root level.

Root level fields

FieldTypeDescription
itemObjectItem selection rules.
attachmentsObject (optional)Additional data attached to the rental.
method_typeStringRental type: calendar, subscription, membership, or resale.
rental_startDateWhen the rental period starts.
rental_endDateWhen the rental period ends.

Item object

The item object specifies what is being rented and how to filter available inventory.
FieldTypeDescription
item.typeStringOnly existing for now (selects from existing inventory).
item.filtersObject (optional)Rules for selecting which item to use.

Filters

FieldTypeDescription
item.filters.availabilityObject (optional)Date range filter.
item.filters.availability.fromDateItem must be available from this date.
item.filters.availability.toDateItem must be available until this date.
item.filters.locationObject (optional)Location filter.
item.filters.location.shopify_idIntegerShopify location ID.
item.filters.conditionObject (optional)Condition filter.
item.filters.condition.idsArray of integersAcceptable condition IDs.

Attachments object

The attachments object contains optional add-ons for the rental. All attachments are optional.
FieldTypeDescription
attachments.membership_creditObject (optional)Membership credit information.
attachments.membership_credit.costIntegerCredit cost for this rental.
attachments.depositObject (optional)Deposit information.
attachments.deposit.shopify_idIntegerShopify variant ID for the deposit.
attachments.custom_fieldsObject (optional)Custom field key-value pairs.
attachments.subscription_contractObject (optional)Subscription contract details.

Code example

{
  "item": {
    "type": "existing",
    "filters": {
      "availability": {
        "from": "2026-02-17",
        "to": "2026-02-22"
      },
      "location": {
        "shopify_id": 12345
      },
      "condition": {
        "ids": [1, 2]
      }
    }
  },
  "attachments": {
    "membership_credit": {
      "cost": 15
    },
    "deposit": {
      "shopify_id": 67890
    },
    "custom_fields": {
      "field_name": "value"
    }
  },
  "method_type": "calendar",
  "rental_start": "2026-02-17",
  "rental_end": "2026-03-17"
}

Validations property

A separate _validations property on the line item contains cart validation rules. This property exists alongside the _cycle property.

Available validations

ValidationFieldsDescription
quantitymax (integer)Maximum quantity that can be added to cart. Corresponds to the available item count.
membershipcredits (integer)Credit cost for membership rentals.
required_variantid (integer), per_line (integer)Required variant (e.g., deposit) that must be in cart. id is the Shopify variant ID, per_line is quantity required per line item.
uniformitykey (string), value (any)Enforces that all line items in cart have the same value for a given key.

Example

{
  "quantity": {
    "max": 5
  },
  "membership": {
    "credits": 10
  },
  "required_variant": {
    "id": 67890,
    "per_line": 1
  }
}

Examples

{
  "item": {
    "type": "existing",
    "filters": {
      "availability": {
        "from": "2026-03-01",
        "to": "2026-03-07"
      },
      "location": {
        "shopify_id": 789
      }
    }
  },
  "method_type": "calendar",
  "rental_start": "2026-03-01",
  "rental_end": "2026-03-07"
}

How it works

  1. Generation: The _cycle property is generated when a customer selects rental options in the storefront.
  2. Storage: The property is attached to the line item as a custom property named _cycle.
  3. Processing: When an order is processed, Supercycle reads the property and creates rentals based on the information it contains.