Getting started
Enable the integration
Open the Flow editor
Triggers
Triggers fire automatically when subscription events occur. All triggers include the full subscription and customer property sets described below.Subscription lifecycle
| Trigger | Description |
|---|---|
| Subscription Created | Fires when a new subscription contract is created |
| Subscription Activated | Fires when a subscription is activated from paused or cancelled status |
| Subscription Cancelled | Fires when a subscription is cancelled |
| Subscription Paused | Fires when a subscription is paused |
| Subscription Updated | Fires when subscription details change (products, quantity, address, etc.) |
Billing events
| Trigger | Description |
|---|---|
| Subscription Billing Success | Fires when a billing attempt succeeds |
| Subscription Billing Failure | Fires when a billing attempt fails |
| Upcoming Order Notification | Fires when an upcoming order notification is sent based on configured buffer days |
Schedule changes
| Trigger | Description |
|---|---|
| Subscription Billing Interval Changed | Fires when the billing frequency is changed |
| Subscription Next Order Date Changed | Fires when the next billing/order date is modified |
Trigger properties
Subscription properties
Included with every trigger:| Property | Type | Description |
|---|---|---|
Subscription ID | Number | Internal subscription contract ID |
GraphQL Subscription ID | String | GraphQL ID of the subscription contract |
Status | String | ACTIVE, PAUSED, CANCELLED, EXPIRED, or FAILED |
Next Billing Date | String | Next billing date in UTC ISO 8601. Empty string if not ACTIVE. |
Billing Interval | String | Billing frequency unit: DAY, WEEK, MONTH, YEAR |
Billing Interval Count | Number | Number of intervals between billings (e.g. 2 + MONTH = every 2 months) |
Delivery Interval | String | Delivery frequency unit: DAY, WEEK, MONTH, YEAR |
Delivery Interval Count | Number | Number of intervals between deliveries |
Original Order ID | Number | ID of the first order. 0 for imported contracts. |
Original Order Name | String | Name of the first order. Empty string for imported contracts. |
Cancel Reason | String | Reason for cancellation (empty string if not cancelled) |
Pause Reason | String | Reason for pause (empty string if not paused) |
Total Successful Orders | Number | Total successfully completed orders for this contract |
Line Items | Array | Array of line items (see schema below) |
Order Note Attributes | Array | Array of key-value note attributes |
Customer properties
Included with every trigger:| Property | Type | Description |
|---|---|---|
customer_reference | Reference | Shopify customer reference |
Customer Email | Customer’s email address | |
Customer Phone | String | Customer’s phone number (empty string if not available) |
Customer Display Name | String | Customer’s display name |
Customer First Name | String | Customer’s first name |
Customer Last Name | String | Customer’s last name |
Billing event properties
For Subscription Billing Success, Subscription Billing Failure, and Upcoming Order Notification only:| Property | Type | Description |
|---|---|---|
Billing Attempt ID | Number | ID of the billing attempt |
Billing Attempt Status | String | SUCCESS, FAILURE, PENDING, or SCHEDULED |
Billing Attempt Count | Number | Number of billing attempts |
Billing Date | String | Scheduled billing date (UTC ISO 8601) |
Billing Attempt Time | String | Actual attempt timestamp (UTC ISO 8601) |
| Property | Type | Description |
|---|---|---|
Recurring Order ID | Number | Order ID from successful renewal |
Recurring Order Name | String | Order name from successful renewal |
order_reference | Reference | Shopify order reference |
Subscription Updated properties
For the Subscription Updated trigger only:| Property | Type | Description |
|---|---|---|
Contract Amount | Number | Total line item amount in contract currency |
Contract Amount USD | Number | Total line item amount converted to USD |
Line items schema
Each object in theLine Items array contains:
| Field | Type | Description |
|---|---|---|
lineItemId | String | ID of the line item |
variantId | Float | Shopify variant ID |
graphqlVariantId | String | GraphQL variant ID |
productId | ID | Shopify product ID (GraphQL format) |
quantity | Int | Quantity |
graphqlSellingPlanId | String | Selling plan ID for this line |
sellingPlanName | String | Selling plan name |
customAttributes | Array | Key-value custom attributes on the line item |
Actions
All actions return at minimum asuccess_message output field. Every action is logged in the subscription activity log with source SHOPIFY_FLOW.
Line item management
Add Line Item
Add Line Item
| Field | Type | Required | Description |
|---|---|---|---|
contract_id | String | Yes | Subscription contract ID |
product_variant_id | String | Yes | Shopify product variant ID to add |
quantity | String | Yes | Quantity to add |
is_one_time_product | String | "true" to add as a non-recurring line item. Default: "false" |
contract_id, product_variant_id, quantity, is_one_time_product, success_messageRemove Line Item
Remove Line Item
| Field | Type | Required | Description |
|---|---|---|---|
contract_id | String | Yes | Subscription contract ID |
line_id | String | Yes | Line item ID to remove |
remove_discount | String | Whether to also remove the associated discount |
contract_id, line_id, remove_discount, success_messageUpdate Line Item Quantity
Update Line Item Quantity
| Field | Type | Required | Description |
|---|---|---|---|
contract_id | String | Yes | Subscription contract ID |
line_id | String | Yes | Line item ID |
quantity | String | Yes | New quantity |
contract_id, line_id, quantity, success_messageUpdate Line Item Price
Update Line Item Price
| Field | Type | Required | Description |
|---|---|---|---|
contract_id | String | Yes | Subscription contract ID |
line_id | String | Yes | Line item ID |
base_price | String | Yes | New base price |
remove_pricing_policy | Boolean | Remove the existing pricing policy. Default: false |
contract_id, line_id, base_price, remove_pricing_policy, success_messageUpdate Line Item Attributes
Update Line Item Attributes
| Field | Type | Required | Description |
|---|---|---|---|
contract_id | String | Yes | Subscription contract ID |
line_id | String | Yes | Line item ID |
attributes | String | Yes | JSON array of key-value pairs |
contract_id, line_id, success_messageReplace Variant
Replace Variant
| Field | Type | Required | Description |
|---|---|---|---|
contract_id | String | Yes | Subscription contract ID |
old_variant_id | String | Yes | Comma-separated variant IDs to replace |
new_variant_id | String | Yes | Comma-separated variant IDs with optional quantities (e.g. 11111:2,22222:1) |
old_line_id | String | Specific line ID when multiple lines share the same variant | |
carry_forward_discount | String | Whether to carry the existing discount to the new variant |
contract_id, old_variant_id, new_variant_id, success_messageSubscription management
Update Subscription Status
Update Subscription Status
| Field | Type | Required | Description |
|---|---|---|---|
contract_id | String | Yes | Subscription contract ID |
status | String | Yes | ACTIVE, PAUSED, or CANCELLED |
contract_id, status, success_messageHide Subscription
Hide Subscription
contract_id (required)Output fields: contract_id, success_messageMerge Subscriptions
Merge Subscriptions
| Field | Type | Required | Description |
|---|---|---|---|
source_contract_id | String | Yes | Contract ID to merge from |
destination_contract_id | String | Yes | Contract ID to merge into |
source_contract_id, destination_contract_id, success_messageSplit Subscription
Split Subscription
| Field | Type | Required | Description |
|---|---|---|---|
contract_id | String | Yes | Subscription contract ID |
line_ids | String | Yes | Comma-separated line item IDs to move |
attempt_billing | String | Whether to immediately bill the new contract after splitting |
original_contract_id, new_contract_id, line_ids_moved, success_messageUpdate Order Note / Update Note Attributes
Update Order Note / Update Note Attributes
contract_id, order_note.Update Note Attributes — sets custom key-value note attributes. Required: contract_id, note_attributes (JSON array). Optional: overwrite_existing (boolean, default false). Output includes attributes_count.Billing & schedule
Update Billing Interval
Update Billing Interval
| Field | Type | Required | Description |
|---|---|---|---|
contract_id | String | Yes | Subscription contract ID |
billing_interval_count | String | Yes | Number of intervals between billings |
billing_interval | String | Yes | DAY, WEEK, MONTH, or YEAR |
contract_id, billing_interval_count, billing_interval, success_messageUpdate Frequency by Selling Plan
Update Frequency by Selling Plan
contract_id (required), selling_plan_id (required)Output fields: contract_id, selling_plan_id, selling_plan_name, billing_interval_count, billing_interval, delivery_interval_count, delivery_interval, success_messageUpdate Billing Date
Update Billing Date
2026-03-15T10:00:00Z.Input fields: contract_id (required), next_billing_date (required)Output fields: contract_id, next_billing_date, success_messageSkip Order
Skip Order
| Field | Type | Required | Description |
|---|---|---|---|
contract_id | String | Yes | Subscription contract ID |
line_id | String | Yes | Line item ID |
is_skip | Boolean | true to skip, false to unskip. Default: true |
contract_id, line_id, is_skip, success_messageAttempt Billing
Attempt Billing
contract_id or billing_attempt_id.Output fields: contract_id, success_messageUpdate Max / Min Cycles
Update Max / Min Cycles
contract_id, max_cycles.Update Min Cycles — set the minimum billing cycles before the customer can cancel. Required: contract_id, min_cycles.Discounts & pricing
Apply Discount Code
Apply Discount Code
contract_id (required), discount_code (required)Output fields: contract_id, discount_code, success_messageRemove Discount
Remove Discount
discount_id or discount_code.Input fields: contract_id (required), discount_id or discount_code (one required)Output fields: contract_id, discount_id, success_messageUpdate Pricing Policy
Update Pricing Policy
| Field | Type | Required | Description |
|---|---|---|---|
contract_id | String | Yes | Subscription contract ID |
base_price | String | Yes | Base price for the line item |
line_id | String | Specific line item ID — if omitted, applies to all lines | |
cycles | String | JSON defining cycle-based pricing adjustments | |
overwrite_existing | Boolean | Replace existing pricing policy. Default: false |
contract_id, line_id, base_price, success_messageDelivery & shipping
Update Delivery Interval
Update Delivery Interval
contract_id (required), delivery_interval_count (required), delivery_interval (required — DAY, WEEK, MONTH, or YEAR)Update Delivery Method
Update Delivery Method
contract_id (required), delivery_method_title (required). Optional: delivery_method_code, delivery_method_presentment_title, delivery_method_id.Update Delivery Price
Update Delivery Price
contract_id, delivery_price.Update Shipping Address
Update Shipping Address
contract_id, address1, city, country_codeOptional fields: address2, province, province_code, zip, country, first_name, last_name, phone, companyUpdate Payment Method
Update Payment Method
contract_id.Example workflows
Auto-pause after 3 failed payments
Auto-pause after 3 failed payments
PAUSEDApply loyalty discount after 6 months
Apply loyalty discount after 6 months
LOYAL10Notify team on high-value cancellation
Notify team on high-value cancellation
Auto-swap seasonal products
Auto-swap seasonal products
Field reference
Attributes JSON format — forattributes and note_attributes fields:
old_variant_id: comma-separated IDs to replace —12345,67890new_variant_id: comma-separated IDs with optional quantities —11111:2,22222:1