Skip to content

Preorders · Resource

Offers

API v2 is in public beta: endpoints and fields can change before general availability. See the changelog

Preorder offers: what is sold as a preorder, how it is paid for and shipped, and how it looks on the storefront. Create, schedule and enable offers, and edit each capability group.

The offer object

Attributes

  • idstring
    Example: 73a74948-2b57-4cc3-971f-2b441828c977
  • shopify_selling_plan_group_idstring
    Example: gid://shopify/SellingPlanGroup/100
  • namestring
    Example: Summer Sneaker Drop
  • internal_namestring
    Example: summer-2026
  • widgetobject
    Show 3 child attributesHide child attributes
    • buttonobject
      Show 4 child attributesHide child attributes
      • button_textstring
        Example: Preorder Now
      • custom_colors_enabledboolean
        Example: true
      • text_colorstring
        Example: #ffffff
      • background_colorstring
        Example: #8700d3
    • disclaimerobject
      Show 5 child attributesHide child attributes
      • show_disclaimerboolean
        Example: true
      • disclaimer_textstring
        Example: Expected to ship by August 2026
      • text_colorstring
        Example: #FFFFFF
      • background_colorstring
        Example: #1F2937
      • border_radiusinteger
        Example: 4
    • badgeobject
      Show 4 child attributesHide child attributes
      • show_badgeboolean
        Example: true
      • badge_textstring
        Example: Pre-Order
      • text_colorstring
        Example: #FFFFFF
      • background_colorstring
        Example: #000000
  • inventoryobject
    Show 2 child attributesHide child attributes
    • stock_conditionstring
      Example: out_of_stock
    • reservestring
      Example: on_sale
  • productsobject
    Show 6 child attributesHide child attributes
    • selectionstring
      Example: custom
    • shopify_collection_idany
    • tagsarray of anys
    • eligible_inventory_policystring
      Example: all
    • excluded_shopify_variant_idsarray of anys
    • exclusion_tagany
  • shippingobject
    Show 6 child attributesHide child attributes
    • timelineobject
      Show 4 child attributesHide child attributes
      • scopestring
        Example: same
      • show_shipping_textboolean
        Example: true
      • shipping_textstring
        Example: Shipping: As soon as possible
      • variant_shipping_textstring
        Example: ASAP
    • delivery_timingstring
      Example: asap
    • ships_atany
    • days_after_checkoutany
    • fulfillmentobject
      Show 3 child attributesHide child attributes
      • handlingstring
        Example: none
      • hold_reasonstring
        Example: Order contains a preorder product. All fulfillments are o…
      • separate_ordersobject
        Show 8 child attributesHide child attributes
        • groupingstring
          Example: offer
        • number_formatstring
          Example: suffix
        • suffixstring
          Example: SPLIT
        • hold_fulfillmentsboolean
          Example: false
        • tagstring
          Example: STOQ-split-order
        • transaction_gatewaystring
          Example: Prepaid
        • original_order_hold_tagany
        • original_order_split_tagany
    • on_holdobject
      Show 3 child attributesHide child attributes
      • release_schedulestring
        Example: manual
      • release_atany
      • require_paymentboolean
        Example: false
  • paymentsobject
    Show 7 child attributesHide child attributes
    • options_offeredstring
      Example: full
    • default_optionstring
      Example: full
    • fullobject
      Show 7 child attributesHide child attributes
      • selling_plan_idstring
        Example: gid://shopify/SellingPlan/101
      • checkout_chargeobject
        Show 2 child attributesHide child attributes
        • charge_typestring
          Example: percentage
        • charge_amountinteger
          Example: 100
      • remaining_balanceobject
        Show 3 child attributesHide child attributes
        • charge_triggerstring
          Example: no_remaining_balance
        • charge_exact_timeany
        • days_after_checkoutany
      • price_adjustmentobject
        Show 2 child attributesHide child attributes
        • adjustment_typeany
        • adjustment_amountany
      • option_titlestring
        Example: Full payment
      • option_descriptionstring
        Example: Pay the full price now
      • discount_textstring
        Example: Save {{ discount }}
    • collection_schedulestring
      Example: manual
    • show_payment_widgetboolean
      Example: false
    • show_discounted_priceany
    • currency_codestring
      Example: USD
  • availabilityobject
    Show 4 child attributesHide child attributes
    • schedulestring
      Example: enabled
    • starts_atany
    • ends_atany
    • current_statusstring
      Example: live
  • limitsobject
    Show 9 child attributesHide child attributes
    • default_per_variantany
    • display_stylestring
      Example: none
    • limit_textstring
      Example: {{ quantity }} units available for preorder
    • show_iconsboolean
      Example: true
    • progress_barobject
      Show 7 child attributesHide child attributes
      • progress_textstring
        Example: {{ sold }} of {{ total }} claimed
      • fill_colorstring
        Example: #ffffff
      • background_colorstring
        Example: #e5e5e5
      • box_background_colorany
      • text_colorstring
        Example: #ffffff
      • border_radiusinteger
        Example: 4
      • show_percentageboolean
        Example: false
    • order_tagsarray of strings
    • termsobject
      Show 5 child attributesHide child attributes
      • require_acceptanceboolean
        Example: false
      • terms_textstring
        Example: I acknowledge and agree to the preorder terms and conditi…
      • disable_button_until_acceptedboolean
        Example: false
      • record_acceptanceboolean
        Example: false
      • acceptance_labelstring
        Example: Preorder Terms Accepted
    • cartobject
      Show 2 child attributesHide child attributes
      • allowed_itemsstring
        Example: mixed
      • error_messagestring
        Example: Preorders must be purchased separately from regular items…
    • order_quantityobject
      Show 2 child attributesHide child attributes
      • minimumany
      • maximumany
  • countdownobject
    Show 12 child attributesHide child attributes
    • show_whenstring
      Example: disabled
    • date_sourcestring
      Example: schedule
    • starts_atany
    • ends_atany
    • starts_textany
    • ends_textany
    • labelsobject
      Show 4 child attributesHide child attributes
      • daysstring
        Example: Days
      • hoursstring
        Example: Hours
      • minutesstring
        Example: Mins
      • secondsstring
        Example: Secs
    • text_colorstring
      Example: #000000
    • background_colorstring
      Example: #f5f5f5
    • border_radiusinteger
      Example: 8
    • unitsarray of strings
    • currentobject
      Show 3 child attributesHide child attributes
      • visible_phasestring
        Example: hidden
      • target_atany
      • heading_textany
  • marketsobject
    Show 2 child attributesHide child attributes
    • scopestring
      Example: all
    • shopify_market_idsarray of anys
  • advancedobject
    Show 2 child attributesHide child attributes
    • checkout_methodstring
      Example: selling_plan
    • cart_attributesobject
      Show 3 child attributesHide child attributes
      • show_paymentboolean
        Example: false
      • show_shippingboolean
        Example: true
      • custom_textany
  • integrationsobject
    Show 2 child attributesHide child attributes
    • posobject
      Show 2 child attributesHide child attributes
      • enable_posboolean
        Example: true
      • inventory_checkstring
        Example: required
    • b2bobject
      Show 1 child attributeHide child attributes
      • enable_b2bboolean
        Example: true
  • batchesobject
    Show 6 child attributesHide child attributes
    • release_strategystring
      Example: all_at_once
    • advance_schedulestring
      Example: automatic
    • label_formatstring
      Example: Batch {{ n }}
    • status_textobject
      Show 3 child attributesHide child attributes
      • paststring
        Example: Sold out
      • livestring
        Example: Live
      • upcomingstring
        Example: Coming soon
    • widgetobject
      Show 4 child attributesHide child attributes
      • stylestring
        Example: roadmap
      • progressstring
        Example: counts
      • show_other_ship_datesboolean
        Example: true
      • show_namesboolean
        Example: false
    • itemsarray of anys
  • translationsobject
  • created_atstring
    Example: 2026-06-25T10:30:45Z
  • updated_atstring
    Example: 2026-06-25T11:45:30Z
Endpoints
The offer object
{
  "id": "73a74948-2b57-4cc3-971f-2b441828c977",
  "shopify_selling_plan_group_id": "gid://shopify/SellingPlanGroup/100",
  "name": "Summer Sneaker Drop",
  "internal_name": "summer-2026",
  "widget": {
    "button": {
      "button_text": "Preorder Now",
      "custom_colors_enabled": true,
      "text_color": "#ffffff",
      "background_color": "#8700d3"
    },
    "disclaimer": {
      "show_disclaimer": true,
      "disclaimer_text": "Expected to ship by August 2026",
      "text_color": "#FFFFFF",
      "background_color": "#1F2937",
      "border_radius": 4
    },
    "badge": {
      "show_badge": true,
      "badge_text": "Pre-Order",
      "text_color": "#FFFFFF",
      "background_color": "#000000"
    }
  },
  "inventory": {
    "stock_condition": "out_of_stock",
    "reserve": "on_sale"
  },
  "products": {
    "selection": "custom",
    "shopify_collection_id": null,
    "tags": [],
    "eligible_inventory_policy": "all",
    "excluded_shopify_variant_ids": [],
    "exclusion_tag": null
  },
  "shipping": {
    "timeline": {
      "scope": "same",
      "show_shipping_text": true,
      "shipping_text": "Shipping: As soon as possible",
      "variant_shipping_text": "ASAP"
    },
    "delivery_timing": "asap",
    "ships_at": null,
    "days_after_checkout": null,
    "fulfillment": {
      "handling": "none",
      "hold_reason": "Order contains a preorder product. All fulfillments are on hold, as configured in STOQ > Preorders.",
      "separate_orders": {
        "grouping": "offer",
        "number_format": "suffix",
        "suffix": "SPLIT",
        "hold_fulfillments": false,
        "tag": "STOQ-split-order",
        "transaction_gateway": "Prepaid",
        "original_order_hold_tag": null,
        "original_order_split_tag": null
      }
    },
    "on_hold": {
      "release_schedule": "manual",
      "release_at": null,
      "require_payment": false
    }
  },
  "payments": {
    "options_offered": "full",
    "default_option": "full",
    "full": {
      "selling_plan_id": "gid://shopify/SellingPlan/101",
      "checkout_charge": {
        "charge_type": "percentage",
        "charge_amount": 100
      },
      "remaining_balance": {
        "charge_trigger": "no_remaining_balance",
        "charge_exact_time": null,
        "days_after_checkout": null
      },
      "price_adjustment": {
        "adjustment_type": null,
        "adjustment_amount": null
      },
      "option_title": "Full payment",
      "option_description": "Pay the full price now",
      "discount_text": "Save {{ discount }}"
    },
    "collection_schedule": "manual",
    "show_payment_widget": false,
    "show_discounted_price": null,
    "currency_code": "USD"
  },
  "availability": {
    "schedule": "enabled",
    "starts_at": null,
    "ends_at": null,
    "current_status": "live"
  },
  "limits": {
    "default_per_variant": null,
    "display_style": "none",
    "limit_text": "{{ quantity }} units available for preorder",
    "show_icons": true,
    "progress_bar": {
      "progress_text": "{{ sold }} of {{ total }} claimed",
      "fill_color": "#ffffff",
      "background_color": "#e5e5e5",
      "box_background_color": null,
      "text_color": "#ffffff",
      "border_radius": 4,
      "show_percentage": false
    },
    "order_tags": [
      "STOQ-preorder"
    ],
    "terms": {
      "require_acceptance": false,
      "terms_text": "I acknowledge and agree to the preorder terms and conditions for this product.",
      "disable_button_until_accepted": false,
      "record_acceptance": false,
      "acceptance_label": "Preorder Terms Accepted"
    },
    "cart": {
      "allowed_items": "mixed",
      "error_message": "Preorders must be purchased separately from regular items. Please complete your current order first, or clear your cart to continue."
    },
    "order_quantity": {
      "minimum": null,
      "maximum": null
    }
  },
  "countdown": {
    "show_when": "disabled",
    "date_source": "schedule",
    "starts_at": null,
    "ends_at": null,
    "starts_text": null,
    "ends_text": null,
    "labels": {
      "days": "Days",
      "hours": "Hours",
      "minutes": "Mins",
      "seconds": "Secs"
    },
    "text_color": "#000000",
    "background_color": "#f5f5f5",
    "border_radius": 8,
    "units": [
      "days",
      "hours",
      "minutes",
      "seconds"
    ],
    "current": {
      "visible_phase": "hidden",
      "target_at": null,
      "heading_text": null
    }
  },
  "markets": {
    "scope": "all",
    "shopify_market_ids": []
  },
  "advanced": {
    "checkout_method": "selling_plan",
    "cart_attributes": {
      "show_payment": false,
      "show_shipping": true,
      "custom_text": null
    }
  },
  "integrations": {
    "pos": {
      "enable_pos": true,
      "inventory_check": "required"
    },
    "b2b": {
      "enable_b2b": true
    }
  },
  "batches": {
    "release_strategy": "all_at_once",
    "advance_schedule": "automatic",
    "label_format": "Batch {{ n }}",
    "status_text": {
      "past": "Sold out",
      "live": "Live",
      "upcoming": "Coming soon"
    },
    "widget": {
      "style": "roadmap",
      "progress": "counts",
      "show_other_ship_dates": true,
      "show_names": false
    },
    "items": []
  },
  "translations": {},
  "created_at": "2026-06-25T10:30:45Z",
  "updated_at": "2026-06-25T11:45:30Z"
}