Automations let you connect Supercycle with other apps or workflows in Shopify Flow. You can trigger Supercycle actions automatically when specific events happen, such as a return being created or a payment failing. This enables you to build powerful workflows that respond to cycle lifecycle events without manual intervention. Examples include:Documentation Index
Fetch the complete documentation index at: https://docs.supercycle.com/llms.txt
Use this file to discover all available pages before exploring further.
- Pause subscriptions when customers start a return
- Create charges for late fees, damage fees, or conversion to purchase
- Send notifications when returns are approved or received
- Update inventory based on return status changes
- Re-allocate items when a cycle has an item conflict
- Manage payment collection for failed subscription payments
Available triggers
Supercycle includes several triggers you can use to start an automation. Every trigger payload also includes acustomer reference (the Shopify customer) you can use in conditions and downstream actions.
Return created
Return created
Runs when a return is created inside Supercycle.
| Property | Description |
|---|---|
customer.id | Shopify customer ID |
returnOrder.formattedId | Display ID (e.g. #1001) |
returnOrder.sequentialId | Sequential numeric ID |
returnOrder.receivalStatus | Status: pending, received, or overdue |
returnOrder.createdAt | ISO 8601 date the return was created |
returnOrder.requestedAt | ISO 8601 date the return was requested |
returnOrder.tags | Tags on the return order |
returnOrder.rentals | Array of cycles in the return (see Cycle properties below) |
Return updated
Return updated
Runs when a return is updated inside Supercycle.Payload is identical to Return created.
Cycle created
Cycle created
Runs when a cycle is created inside Supercycle.
| Property | Description |
|---|---|
customer.id | Shopify customer ID |
rental.id | Cycle global ID (e.g. gid://supercycle/Rental/12345) |
rental.formattedId | Display ID (e.g. #1001) |
rental.sequentialId | Sequential numeric ID |
rental.status | Status: scheduled, unfulfilled, fulfilled, unreceived, received, or cancelled |
rental.fulfillmentStatus | Fulfillment status: pending, scheduled, in_progress, overdue, or complete |
rental.receivalStatus | Receival status: pending, scheduled, in_progress, overdue, or complete |
rental.packingStatus | Packing status: pending, printed, or packed |
rental.methodType | Method type: calendar, subscription, membership, or resale |
rental.conflictLevel | Item allocation conflict: none, item, or variant |
rental.lineItemId | Shopify line item ID |
rental.orderId | Shopify order ID |
rental.shopifyOrderName | Shopify order name (e.g. #1001) |
rental.subscriptionId | Supercycle subscription ID (if exists) |
rental.returnOrderId | Return order ID (if exists) |
rental.itemId | Allocated item ID |
rental.fulfillAt | ISO 8601 dispatch date |
rental.fulfilledAt | ISO 8601 date the cycle was fulfilled |
rental.receiveAt | ISO 8601 planned return date |
rental.receivedAt | ISO 8601 date the cycle was received |
rental.rentalStart | ISO 8601 cycle period start |
rental.rentalEnd | ISO 8601 cycle period end |
rental.minimumRentalEnd | ISO 8601 end of minimum cycle term |
rental.restockBy | ISO 8601 date the item should be restocked by |
rental.restockedAt | ISO 8601 date the item was restocked |
rental.cancelledAt | ISO 8601 cancellation date |
rental.createdAt | ISO 8601 creation date |
rental.updatedAt | ISO 8601 last updated date |
rental.tags | Tags on the cycle |
rental.customFields | Array of { key, value } custom fields |
rental.item | Allocated item details (see Item properties below) |
Cycle updated
Cycle updated
Runs when a cycle is updated inside Supercycle.Payload is identical to Cycle created.
Cycle canceled
Cycle canceled
Runs when a cycle is canceled inside Supercycle.Payload is identical to Cycle created.
Membership created
Membership created
Runs when a membership is created inside Supercycle.
| Property | Description |
|---|---|
customer.id | Shopify customer ID |
membership.id | Membership global ID |
membership.customerId | Shopify customer GID |
membership.status | Status: active, paused, cancelled, or expired |
membership.planTitle | Plan or product title |
membership.priceCents | Membership price in cents |
membership.creditAllowance | Total credits allowed |
membership.creditsUsed | Credits currently used |
membership.remainingCredits | Credits remaining |
membership.orderAllowance | Maximum orders allowed (null if unlimited) |
membership.ordersUsed | Orders used in current period |
membership.remainingOrders | Orders remaining (null if unlimited) |
membership.returnAllowance | Maximum returns allowed (null if unlimited) |
membership.returnsUsed | Returns used in current period |
membership.remainingReturns | Returns remaining (null if unlimited) |
membership.renewalDate | ISO 8601 next renewal date |
membership.minimumTermStart | ISO 8601 minimum term start date |
membership.minimumTermEnd | ISO 8601 minimum term end date |
membership.cancelAt | ISO 8601 scheduled cancellation date |
Membership updated
Membership updated
Runs when a membership is updated inside Supercycle.Payload is identical to Membership created.
Membership canceled
Membership canceled
Runs when a membership is canceled inside Supercycle.Payload is identical to Membership created.
Contract status updated
Contract status updated
Runs when a contract’s status changes inside Supercycle (for example, when a customer signs an unsigned contract).
| Property | Description |
|---|---|
customer.id | Shopify customer ID |
contract.id | Contract global ID (e.g. gid://supercycle/Contract/12345) |
contract.status | Current status: unsigned or signed |
contract.templateName | Name of the contract template |
contract.signedAt | ISO 8601 date the contract was signed |
contract.createdAt | ISO 8601 creation date |
contract.updatedAt | ISO 8601 last updated date |
Identity verification status updated
Identity verification status updated
Runs when an identity verification’s status changes inside Supercycle, including when a verification is first uploaded.
| Property | Description |
|---|---|
customer.id | Shopify customer ID |
identityVerification.id | Identity verification global ID (e.g. gid://supercycle/IdentityVerification/12345) |
identityVerification.status | Current status: pending, submitted, in_review, completed, on_hold, or expired |
identityVerification.result | Verification result: approved, rejected, or inconclusive |
identityVerification.createdAt | ISO 8601 creation date |
identityVerification.updatedAt | ISO 8601 last updated date |
Charge failed
Charge failed
Runs when a single charge payment attempt fails. Use this to react to individual payment failures (for example, on a damage charge).
| Property | Description |
|---|---|
customer.id | Shopify customer ID |
charge.id | Charge global ID (e.g. gid://supercycle/Charge/12345) |
charge.formattedId | Display ID (e.g. #1001) |
payment.errorCode | Error code from the failed payment attempt |
payment.errorMessage | Customer-friendly error message |
payment.subtotal | Amount due, in cents |
payment.paid | Amount paid, in cents |
Payment collection failed
Payment collection failed
Runs when a payment collection process completes without successfully capturing payment. Use this for dunning-style automations that react to repeated failures over time.
| Property | Description |
|---|---|
customer.id | Shopify customer ID |
paymentCollector.id | Payment collector global ID |
paymentCollector.status | Current status of the payment collector |
paymentCollector.summary | Summary text |
paymentCollector.chargeableId | Object being charged (e.g. gid://supercycle/Rental/12345) |
paymentCollector.subscriptionContractId | Shopify subscription contract ID |
paymentCollector.failedPaymentCount | Number of failed payment attempts |
paymentCollector.lastFailedPayment | Last failed payment (errorCode, errorMessage, subtotal, paid) |
paymentCollector.payments | Array of all payment attempts |
Shared sub-objects
Several triggers expose nested objects you can drill into:Item
Item
Available on
rental.item (Cycle triggers) and on each entry in returnOrder.rentals[].item.| Property | Description |
|---|---|
item.id | Item global ID |
item.productTitle | Product title |
item.variantTitle | Variant title |
item.serial | Serial number |
item.sequentialId | Sequential numeric ID |
item.status | Processing status: processed or unprocessed |
item.visibility | Visibility: available, unavailable, sold, or retired |
item.pickLocation | Physical warehouse location |
item.conditionId | Condition ID |
item.shopifyVariantId | Shopify variant GID |
item.shopifyProductId | Shopify product GID |
item.imageUrl | Image URL |
item.tags | Tags on the item |
item.createdAt | ISO 8601 creation date |
Customer
Customer
Available as
customer on every trigger.| Property | Description |
|---|---|
customer.identityVerified | Whether the customer has verified their identity |
customer.numberOfOutstandingCharges | Count of unpaid charges |
customer.outstandingBalance | Total outstanding balance, in cents |
customer.totalSpent | Lifetime spend, in cents |
customer.deposit.balance | Current deposit account balance |
customer.membership | Customer’s membership (see Membership properties) |
Available actions
Supercycle provides the following actions for use in Shopify Flow workflows.Create charge
Create charge
Create a charge for a chargeable object in Supercycle, such as a cycle or membership.
Returns a
| Property | Description |
|---|---|
customer | Shopify customer reference (required) |
chargeableId | The ID of the object to charge (e.g. gid://supercycle/Rental/1234567890) |
description | The message included in the charge |
amountCents | The charge amount in cents (e.g. 1234 for $12.34) |
Charge object you can reference in subsequent steps.Update subscription
Update subscription
Update a subscription’s status, recurring price, or billing start date.
Only
| Property | Description |
|---|---|
subscriptionId | The ID of the subscription (e.g. gid://supercycle/Subscription/1234567890) |
status | The status to set: active, paused, cancelled, or expired |
recurringPriceCents | New recurring price in cents (e.g. 1500 for $15.00) |
billingStartDate | New billing schedule start date. Supports Liquid date variables. |
subscriptionId is required — provide any combination of the other fields to update.Update membership
Update membership
Update the status of a membership.
| Property | Description |
|---|---|
membershipId | The ID of the membership (e.g. gid://supercycle/MembershipRental::Membership/1234567890) |
status | The status to set: active, paused, cancelled, or expired |
Get cycle data
Get cycle data
Get data about a cycle in Supercycle. Use this to retrieve cycle information for use in conditional logic.
Returns a
| Property | Description |
|---|---|
rentalId | The ID of the cycle (e.g. gid://supercycle/Rental/1234567890) |
Rental object with all cycle properties (see the Cycle created trigger for the full list).For example, to check if a cycle has a subscription before taking action:Use returned data
Access the returned data in subsequent steps:
{{getRental.subscriptionId}}— Subscription ID if it exists{{getRental.orderId}}— Associated order ID{{getRental.fulfilledAt}}— Fulfillment date{{getRental.receivedAt}}— Received date
Update cycle
Update cycle
Update properties of a cycle.
Only
| Property | Description |
|---|---|
rentalId | The ID of the cycle (e.g. gid://supercycle/Rental/1234567890) |
itemId | The item ID to assign to the cycle |
fulfilledAt | ISO 8601 datetime when the cycle was fulfilled (e.g. 2024-01-15T10:30:00Z) |
receivedAt | ISO 8601 datetime when the cycle was received |
rentalStart | ISO 8601 date when the cycle period starts |
rentalEnd | ISO 8601 date when the cycle period ends |
packingStatus | The packing status: pending, printed, or packed |
rentalId is required — provide any combination of the other fields to update.Add cycle tags
Add cycle tags
Re-allocate item
Re-allocate item
Re-allocate an available item to a cycle. Useful when the currently allocated item has a conflict (
Returns the updated
rental.conflictLevel of item or variant) and you want Supercycle to pick a fresh available item automatically.| Property | Description |
|---|---|
rentalId | The ID of the cycle (e.g. gid://supercycle/Rental/1234567890) |
Rental. Pair this with the Cycle updated trigger and a condition on rental.conflictLevel to automatically resolve item conflicts as soon as they appear.Create a workflow
Learn how to build your first workflow
Shopify Flow documentation
Explore Shopify Flow capabilities