Skip to main content
Actions define what modification to apply when a schedule adjustment matches an order.

Skip order

Prevents an order from being created. The order will be excluded from the schedule entirely.
Use cases:
  • Customer going on vacation
  • Holiday closures
  • Temporary subscription pause
Input:
FieldTypeRequiredDescription
reasonstringYesReason for skipping the order
{
  "type": "SKIP_ORDER",
  "input": {
    "reason": "Customer on vacation"
  }
}

Change date

Reschedules an order to a different date within the billing period.
Use cases:
  • Customer requests different delivery day
  • Adjusting timing around events
Input:
FieldTypeRequiredDescription
newDatestringYesNew date for the order (ISO 8601)
{
  "type": "CHANGE_DATE",
  "input": {
    "newDate": "2025-02-15T00:00:00Z"
  }
}
Only supports the CYCLE matcher. The new date must be within one billing cycle of the original date and cannot be in the past.

Update shipping

Updates the shipping address for a specific order.
Use cases:
  • Customer temporarily at different address
  • One-time delivery to alternate location
Input:
FieldTypeRequiredDescription
address.firstNamestringNoFirst name
address.lastNamestringNoLast name
address.address1stringYesStreet address line 1
address.address2stringNoStreet address line 2
address.citystringNoCity
address.zipstringNoPostal/ZIP code
address.countryCodestringYesISO country code
address.provinceCodestringNoProvince/state code
address.phonestringNoPhone number
address.companystringNoCompany name
{
  "type": "UPDATE_SHIPPING",
  "input": {
    "address": {
      "firstName": "John",
      "lastName": "Doe",
      "address1": "123 Main St",
      "city": "New York",
      "countryCode": "US",
      "zip": "10001"
    }
  }
}
Address must include at least address1 and countryCode.

Update payment method

Updates the payment method for a specific order.
Use cases:
  • Use different card for specific order
  • One-time payment method override
Input:
FieldTypeRequiredDescription
paymentMethodIdstringYesPayment method identifier
{
  "type": "UPDATE_PAYMENT_METHOD",
  "input": {
    "paymentMethodId": "pm_abc123"
  }
}

Update products

Modifies product lines for a specific order.
Use cases:
  • One-time quantity change
  • Swap variant for single order
  • Adjust billing interval for specific cycle
Input:
FieldTypeRequiredDescription
linesarrayYesArray of line modifications (min 1)
lines[].lineIdstringYesID of the line to modify
lines[].variantIdstringNoNew variant ID to swap to
lines[].quantityintegerNoNew quantity (min 1)
lines[].intervalobjectNoOverride billing interval
lines[].interval.intervalCountintegerNoNumber of intervals
lines[].interval.intervalstringNoInterval unit: DAY, WEEK, MONTH, YEAR
lines[].nextBillingDatestringNoOverride next billing date (ISO 8601)
{
  "type": "UPDATE_PRODUCTS",
  "input": {
    "lines": [
      {
        "lineId": "line_abc123",
        "quantity": 2
      },
      {
        "lineId": "line_def456",
        "variantId": "variant_xyz789"
      }
    ]
  }
}
Line IDs must exist in the customer’s subscriptions.

Apply discount

Applies a discount (Shopify code or manual) to a specific order in the schedule.
Use cases:
  • One-time promotional discount for specific cycle
  • Loyalty reward for long-term subscribers
  • Compensation discount for service issues
The action supports two discount sources: Shopify discount codes and manual discounts.

Shopify code discount

Apply an existing Shopify discount code to the order. Input:
FieldTypeRequiredDescription
discountSourcestringYesMust be "code"
discountCodestringYesThe Shopify discount code to apply
{
  "type": "APPLY_DISCOUNT",
  "input": {
    "discountSource": "code",
    "discountCode": "SAVE20"
  }
}
Discount code must exist in Shopify, be active, and apply to subscriptions. Only basic discounts and free shipping discounts are supported.

Manual discount - line items

Create a custom discount targeting line items. Input:
FieldTypeRequiredDescription
discountSourcestringYesMust be "manual"
discountCodestringYesCustom discount title/name
discountTypestringYes"percentage" or "fixed_amount"
valuenumberYesDiscount value (percentage 0-100 or fixed amount in shop currency)
targetTypestringYesMust be "line_item"
targetingobjectYesSpecifies what to target
Targeting options:
  • { "type": "all" } - Apply to all line items
  • { "type": "products", "productIds": ["gid://shopify/Product/123", ...] } - Apply to specific products
Example: Percentage discount on all items
{
  "type": "APPLY_DISCOUNT",
  "input": {
    "discountSource": "manual",
    "discountCode": "Loyalty Reward",
    "discountType": "percentage",
    "value": 15,
    "targetType": "line_item",
    "targeting": {
      "type": "all"
    }
  }
}
Example: Fixed amount discount on specific products
{
  "type": "APPLY_DISCOUNT",
  "input": {
    "discountSource": "manual",
    "discountCode": "Product Promo",
    "discountType": "fixed_amount",
    "value": 10,
    "targetType": "line_item",
    "targeting": {
      "type": "products",
      "productIds": ["gid://shopify/Product/123456789"]
    }
  }
}

Manual discount - shipping

Create a custom discount targeting shipping. Input:
FieldTypeRequiredDescription
discountSourcestringYesMust be "manual"
discountCodestringYesCustom discount title/name
discountTypestringYesMust be "percentage"
valuenumberYesMust be 100 (free shipping)
targetTypestringYesMust be "shipping"
targetingobjectYesMust be { "type": "all" }
Example: Free shipping discount
{
  "type": "APPLY_DISCOUNT",
  "input": {
    "discountSource": "manual",
    "discountCode": "Free Shipping",
    "discountType": "percentage",
    "value": 100,
    "targetType": "shipping",
    "targeting": {
      "type": "all"
    }
  }
}
Only supports the CYCLE matcher. Only supports free shipping discounts (100% off) - partial shipping discounts and fixed amount shipping discounts are not supported.