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
idstringExample:73a74948-2b57-4cc3-971f-2b441828c977shopify_selling_plan_group_idstringExample:gid://shopify/SellingPlanGroup/100namestringExample:Summer Sneaker Dropinternal_namestringExample:summer-2026widgetobjectShow 3 child attributesHide child attributes
buttonobjectShow 4 child attributesHide child attributes
button_textstringExample:Preorder Nowcustom_colors_enabledbooleanExample:truetext_colorstringExample:#ffffffbackground_colorstringExample:#8700d3
disclaimerobjectShow 5 child attributesHide child attributes
show_disclaimerbooleanExample:truedisclaimer_textstringExample:Expected to ship by August 2026text_colorstringExample:#FFFFFFbackground_colorstringExample:#1F2937border_radiusintegerExample:4
badgeobjectShow 4 child attributesHide child attributes
show_badgebooleanExample:truebadge_textstringExample:Pre-Ordertext_colorstringExample:#FFFFFFbackground_colorstringExample:#000000
inventoryobjectShow 2 child attributesHide child attributes
stock_conditionstringExample:out_of_stockreservestringExample:on_sale
productsobjectShow 6 child attributesHide child attributes
selectionstringExample:customshopify_collection_idanytagsarray of anyseligible_inventory_policystringExample:allexcluded_shopify_variant_idsarray of anysexclusion_tagany
shippingobjectShow 6 child attributesHide child attributes
timelineobjectShow 4 child attributesHide child attributes
scopestringExample:sameshow_shipping_textbooleanExample:trueshipping_textstringExample:Shipping: As soon as possiblevariant_shipping_textstringExample:ASAP
delivery_timingstringExample:asapships_atanydays_after_checkoutanyfulfillmentobjectShow 3 child attributesHide child attributes
handlingstringExample:nonehold_reasonstringExample:Order contains a preorder product. All fulfillments are o…separate_ordersobjectShow 8 child attributesHide child attributes
groupingstringExample:offernumber_formatstringExample:suffixsuffixstringExample:SPLIThold_fulfillmentsbooleanExample:falsetagstringExample:STOQ-split-ordertransaction_gatewaystringExample:Prepaidoriginal_order_hold_taganyoriginal_order_split_tagany
on_holdobjectShow 3 child attributesHide child attributes
release_schedulestringExample:manualrelease_atanyrequire_paymentbooleanExample:false
paymentsobjectShow 7 child attributesHide child attributes
options_offeredstringExample:fulldefault_optionstringExample:fullfullobjectShow 7 child attributesHide child attributes
selling_plan_idstringExample:gid://shopify/SellingPlan/101checkout_chargeobjectShow 2 child attributesHide child attributes
charge_typestringExample:percentagecharge_amountintegerExample:100
remaining_balanceobjectShow 3 child attributesHide child attributes
charge_triggerstringExample:no_remaining_balancecharge_exact_timeanydays_after_checkoutany
price_adjustmentobjectShow 2 child attributesHide child attributes
adjustment_typeanyadjustment_amountany
option_titlestringExample:Full paymentoption_descriptionstringExample:Pay the full price nowdiscount_textstringExample:Save {{ discount }}
collection_schedulestringExample:manualshow_payment_widgetbooleanExample:falseshow_discounted_priceanycurrency_codestringExample:USD
availabilityobjectShow 4 child attributesHide child attributes
schedulestringExample:enabledstarts_atanyends_atanycurrent_statusstringExample:live
limitsobjectShow 9 child attributesHide child attributes
default_per_variantanydisplay_stylestringExample:nonelimit_textstringExample:{{ quantity }} units available for preordershow_iconsbooleanExample:trueprogress_barobjectShow 7 child attributesHide child attributes
progress_textstringExample:{{ sold }} of {{ total }} claimedfill_colorstringExample:#ffffffbackground_colorstringExample:#e5e5e5box_background_coloranytext_colorstringExample:#ffffffborder_radiusintegerExample:4show_percentagebooleanExample:false
order_tagsarray of stringstermsobjectShow 5 child attributesHide child attributes
require_acceptancebooleanExample:falseterms_textstringExample:I acknowledge and agree to the preorder terms and conditi…disable_button_until_acceptedbooleanExample:falserecord_acceptancebooleanExample:falseacceptance_labelstringExample:Preorder Terms Accepted
cartobjectShow 2 child attributesHide child attributes
allowed_itemsstringExample:mixederror_messagestringExample:Preorders must be purchased separately from regular items…
order_quantityobjectShow 2 child attributesHide child attributes
minimumanymaximumany
countdownobjectShow 12 child attributesHide child attributes
show_whenstringExample:disableddate_sourcestringExample:schedulestarts_atanyends_atanystarts_textanyends_textanylabelsobjectShow 4 child attributesHide child attributes
daysstringExample:DayshoursstringExample:HoursminutesstringExample:MinssecondsstringExample:Secs
text_colorstringExample:#000000background_colorstringExample:#f5f5f5border_radiusintegerExample:8unitsarray of stringscurrentobjectShow 3 child attributesHide child attributes
visible_phasestringExample:hiddentarget_atanyheading_textany
marketsobjectShow 2 child attributesHide child attributes
scopestringExample:allshopify_market_idsarray of anys
advancedobjectShow 2 child attributesHide child attributes
checkout_methodstringExample:selling_plancart_attributesobjectShow 3 child attributesHide child attributes
show_paymentbooleanExample:falseshow_shippingbooleanExample:truecustom_textany
integrationsobjectShow 2 child attributesHide child attributes
posobjectShow 2 child attributesHide child attributes
enable_posbooleanExample:trueinventory_checkstringExample:required
b2bobjectShow 1 child attributeHide child attributes
enable_b2bbooleanExample:true
batchesobjectShow 6 child attributesHide child attributes
release_strategystringExample:all_at_onceadvance_schedulestringExample:automaticlabel_formatstringExample:Batch {{ n }}status_textobjectShow 3 child attributesHide child attributes
paststringExample:Sold outlivestringExample:LiveupcomingstringExample:Coming soon
widgetobjectShow 4 child attributesHide child attributes
stylestringExample:roadmapprogressstringExample:countsshow_other_ship_datesbooleanExample:trueshow_namesbooleanExample:false
itemsarray of anys
translationsobjectcreated_atstringExample:2026-06-25T10:30:45Zupdated_atstringExample:2026-06-25T11:45:30Z
Endpoints
- GET
/preorders/offers - POST
/preorders/offers - GET
/preorders/offers/{id} - PATCH
/preorders/offers/{id} - GET
/preorders/offers/{id}/advanced - PATCH
/preorders/offers/{id}/advanced - GET
/preorders/offers/{id}/batches - PATCH
/preorders/offers/{id}/batches - GET
/preorders/offers/{id}/countdown - PATCH
/preorders/offers/{id}/countdown - POST
/preorders/offers/{id}/disable - POST
/preorders/offers/{id}/discard - POST
/preorders/offers/{id}/duplicate - POST
/preorders/offers/{id}/enable - GET
/preorders/offers/{id}/integrations - PATCH
/preorders/offers/{id}/integrations - GET
/preorders/offers/{id}/inventory - PATCH
/preorders/offers/{id}/inventory - GET
/preorders/offers/{id}/limits - PATCH
/preorders/offers/{id}/limits - GET
/preorders/offers/{id}/markets - PATCH
/preorders/offers/{id}/markets - GET
/preorders/offers/{id}/payments - PATCH
/preorders/offers/{id}/payments - GET
/preorders/offers/{id}/products - PATCH
/preorders/offers/{id}/products - POST
/preorders/offers/{id}/products/add_variants - POST
/preorders/offers/{id}/products/advance_batches - POST
/preorders/offers/{id}/products/bulk_toggle_inventory_policy - POST
/preorders/offers/{id}/products/remove_variants - GET
/preorders/offers/{id}/products/variants - GET
/preorders/offers/{id}/products/variants/{shopify_variant_id} - PATCH
/preorders/offers/{id}/products/variants/{shopify_variant_id} - POST
/preorders/offers/{id}/products/variants/{shopify_variant_id}/reset_count - POST
/preorders/offers/{id}/products/variants/{shopify_variant_id}/toggle_inventory_policy - POST
/preorders/offers/{id}/products/variants/bulk_update_settings - POST
/preorders/offers/{id}/restore - POST
/preorders/offers/{id}/schedule - GET
/preorders/offers/{id}/shipping - PATCH
/preorders/offers/{id}/shipping - GET
/preorders/offers/{id}/shipping/schedulable_orders - GET
/preorders/offers/{id}/translations - POST
/preorders/offers/{id}/translations/clear_locale - POST
/preorders/offers/{id}/translations/reset_to_defaults - POST
/preorders/offers/{id}/translations/set - POST
/preorders/offers/{id}/translations/set_many - POST
/preorders/offers/{id}/translations/unset - POST
/preorders/offers/{id}/unschedule - GET
/preorders/offers/{id}/widget - PATCH
/preorders/offers/{id}/widget - POST
/preorders/offers/bulk_disable - POST
/preorders/offers/bulk_enable
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"
}