# STOQ Docs > Preorders & back-in-stock for Shopify — REST APIs, the v2 action API, a JavaScript SDK, theme metafields, and an MCP server. ## Home - [STOQ Docs](/docs/index/): Preorders & back-in-stock for Shopify — REST APIs, the v2 action API, a JavaScript SDK, theme metafields, and an MCP server. - [API Key](/docs/api-key/): To integrate with STOQ's Back in Stock API, you'll need to obtain your API key. This key is essential for authenticating your API requests. Here's how to get it: - [Rate Limits](/docs/rate-limits/): The STOQ API uses a points-based rate limiting system to ensure fair usage and platform stability. Each API request consumes a certain number of points from your allowance, and the limit resets on... ## API v1 - [STOQ API v1](/v1/): ## Back in Stock - [Create Customer Intent to Buy Product](/v1/#operation-intents-json-post): POST /intents.json - Create a new intent for a customer to be notified when a product is back in stock. Unlike other API endpoints for Back in Stock, this API endpoint does not require an API Key. - [Delete intents (single or multiple)](/v1/#operation-intents-bulk-destroy-delete): DELETE /intents/bulk_destroy - Delete one or more intents by their IDs. Only intents that have not been sent (notified_at is null) can be deleted. - [Get a specific intent](/v1/#operation-intents-id-get): GET /intents/{id} - Retrieve a single back-in-stock intent (signup) by its STOQ ID. Returns the full intent record — the customer contact details, channel, requested quantity, and notification status. Returns 404 if no intent with that ID exists for the authenticated shop. - [Get products in demand report](/v1/#operation-intents-products-in-demand-get): GET /intents/products_in_demand - Retrieve a paginated list of product variants with demand metrics based on customer intents. - [List and filter intents](/v1/#operation-intents-get): GET /intents - List back-in-stock intents (signups) for the shop, newest first. Supports filtering by Shopify product or variant, customer email or phone, creation date range, and notification status, with page-based pagination (up to 500 per page). Returns the matching intents alongside pagination metadata. - [Notify a single intent](/v1/#operation-intents-notify-intent-post): POST /intents/notify_intent - Send the back-in-stock notification for a single intent immediately, regardless of current inventory. By default an intent that has already been notified will not be sent again; set `allow_resend` to true to force a resend. Returns 404 if the intent does not exist and 422 if the notification could not be sent. - [Notify multiple intents in bulk](/v1/#operation-intents-bulk-notify-intent-post): POST /intents/bulk_notify_intent - Send back-in-stock notifications for multiple intents in one request. Each intent is processed independently; the response reports which succeeded and which failed, returning 207 when only some succeed. Set `allow_resend` to true to re-notify intents that were already sent. - [Transfer signups from one variant to another](/v1/#operation-intents-transfer-signups-post): POST /intents/transfer_signups - Transfer intents (signups) from a source variant to a target variant. - [Add multiple product variants to a selling plan](/v1/#operation-external-preorders-id-add-variant-post): POST /external/preorders/{id}/add_variant - Attach one or more Shopify product variants to a selling plan so they become available for preorder. Pass the variant IDs in `shopify_variant_ids`; any that are already attached are reported back under `existing_variants` with a 422. Returns the list of variant IDs that were newly added. - [List and filter selling plans](/v1/#operation-external-preorders-get): GET /external/preorders - List the shop's preorder selling plans, newest first, with page-based pagination. Optionally filter by `name` (matches the display or internal name). Returns a lightweight representation of each plan plus pagination metadata; use Get a Specific Selling Plan for the full object. - [Create a new selling plan](/v1/#operation-external-preorders-post): POST /external/preorders - Create a new preorder selling plan. The `selling_plan` object defines billing, delivery, discount, button, badge, and fulfillment behavior; only the fields you set are applied and the rest fall back to defaults. Returns the created selling plan, including its STOQ ID, on success. - [Get a specific selling plan](/v1/#operation-external-preorders-id-get): GET /external/preorders/{id} - Retrieve a single preorder selling plan by its STOQ ID, including the full billing, delivery, pricing, button, badge, fulfillment, and market configuration, the count of attached variants, and the associated Shopify selling-plan IDs. Returns 404 if no plan with that ID exists for the shop. - [Update a selling plan](/v1/#operation-external-preorders-id-put): PUT /external/preorders/{id} - Update an existing preorder selling plan. Supply a `selling_plan` object with the fields you want to change; omitted fields are left unchanged. Returns the updated selling plan, or 422 with validation errors if the changes are invalid. - [Delete a selling plan (soft delete)](/v1/#operation-external-preorders-id-delete): DELETE /external/preorders/{id} - Soft-delete a preorder selling plan by ID. The plan is discarded (its `discarded_at` is set) and detached from the storefront, but historical preorder data is preserved. Returns 404 if the plan does not exist and 422 if it could not be deleted. - [Get product variants associated with a selling plan](/v1/#operation-external-preorders-id-product-variants-get): GET /external/preorders/{id}/product_variants - Retrieve product variants associated with a selling plan, including their preorder details and sales metrics. - [Remove multiple product variants from a selling plan](/v1/#operation-external-preorders-id-remove-variant-delete): DELETE /external/preorders/{id}/remove_variant - Remove multiple product variants from a selling plan. Optionally, you can also update the inventory policy - [Send shipping update emails to multiple orders](/v1/#operation-external-preorders-send-shipping-update-post): POST /external/preorders/send_shipping_update - Send shipping update emails to multiple preorders. You can specify orders using either: - [Queue a bulk update of inventory policy for multiple variants](/v1/#operation-external-preorders-id-bulk-toggle-inventory-policy-post): POST /external/preorders/{id}/bulk_toggle_inventory_policy - Queues a background job to update the inventory policy for multiple variants. - [Update variant-specific settings for a selling plan](/v1/#operation-external-preorders-id-update-variant-settings-patch): PATCH /external/preorders/{id}/update_variant_settings - Update per-variant preorder settings within a selling plan, such as the variant's custom `shipping_text` and `preorder_max_count` (the cap on preorder units). Identify the variant with `shopify_variant_id`; only the settings you include are changed. Returns the updated variant settings. ## API v2 (Beta) - [API v2 — Overview](/v2/docs/api-v2/): STOQ's action-driven external API. One catch-all endpoint, classes that describe themselves, and a discovery surface (/help, skill.md, llms.txt, MCP) designed for both humans and AI agents. - [Getting Started](/v2/docs/api-v2/getting-started/): Authenticate and make your first v2 API call. - [Dispatch & Discovery](/v2/docs/api-v2/dispatch-and-discovery/): How requests are routed and how to introspect the API — for humans and AI agents. - [Errors & Responses](/v2/docs/api-v2/errors/): v2 status codes, response envelope, and validation behavior. - [Bulk & Async Jobs](/v2/docs/api-v2/bulk-and-async-jobs/): How to submit and poll long-running operations: bulk actions and CSV exports. - [Migrating from v1](/v2/docs/api-v2/migrating-from-v1/): How the v1 REST endpoints map to v2 actions, and why the action model. - [Integrating AI agents](/v2/docs/api-v2/ai-integration/): Teach any AI agent the v2 API without an SDK — skill.md for the system prompt, llms.txt for discovery, and the /help manifest for exact request shapes. - [MCP Server](/v2/docs/api-v2/mcp/): Connect Claude, Cursor, or any MCP client to the v2 API — every action exposed as a tool, generated from the same registry that drives HTTP dispatch. - [Common tasks](/v2/docs/api-v2/common-tasks/): Recipes for things you'll actually do with the Preorders v2 API — find offers, attach variants, release and charge orders. - [Offer](/v2/docs/api-v2/offer/): The preorder offer (selling plan) resource: CRUD, lifecycle, schedule, discard/restore. - [Offer capabilities](/v2/docs/api-v2/offer-capabilities/): The twelve capability groups exposed on a preorder offer. Each has a Read action, an Update (deep partial PATCH) for settings and toggles, and intent-bearing POST actions for operations with side effects. - [Product variants](/v2/docs/api-v2/product-variants/): Per-Shopify-variant reads, metafield administration, and bulk recalculation. - [Reports](/v2/docs/api-v2/reports/): Preorder analytics — nine reports, each readable as JSON and exportable as a CSV via an async job. - [Orders](/v2/docs/api-v2/orders/): Preorder order lifecycle, payments, fulfillment, tags, and bulk actions. - [Overview](/v2/docs/api-v2/back-in-stock/): The back-in-stock surface: signups (the waitlist), the notification send log, shop settings, and reports. - [Signups](/v2/docs/api-v2/back-in-stock-signups/): The waitlist resource: CRUD, notify-now, bulk operations, variant transfers, and the read-only notification send log. - [Settings](/v2/docs/api-v2/back-in-stock-settings/): The shop-level settings singleton: five capabilities, GET + PATCH only, deep-partial updates. - [Reports](/v2/docs/api-v2/back-in-stock-reports/): Five back-in-stock reports, each readable as JSON and exportable as a CSV via an async job. ## API v2 Reference - [STOQ API v2 (Beta)](/v2-reference/): STOQ's action-driven, AI-native external API. Every action is self-describing (`description`, `aliases`, `notes`, JSON request schema) and also reachable via the `/help` manifest, `skill.md`, `llms.txt`, and the MCP server. **Public beta** — actions and schemas may change before GA. All endpoints require the `X-Auth-Token` API key. - [List](/v2-reference/#operation-back-in-stock-notifications-get): GET /back_in_stock/notifications - List back-in-stock notifications (the send log) in this shop, paginated. - [Read](/v2-reference/#operation-back-in-stock-notifications-id-get): GET /back_in_stock/notifications/{id} - Read one back-in-stock notification (a single send-log entry). - [List](/v2-reference/#operation-back-in-stock-reports-get): GET /back_in_stock/reports - List every available back-in-stock report (name, description, aliases, url). - [Conversions](/v2-reference/#operation-back-in-stock-reports-conversions-get): GET /back_in_stock/reports/conversions - Time-series of orders attributed to back-in-stock alerts and the revenue recovered. - [Conversions Export](/v2-reference/#operation-back-in-stock-reports-conversions-export-post): POST /back_in_stock/reports/conversions/export - Async CSV export of the back-in-stock conversions time series. - [Exports](/v2-reference/#operation-back-in-stock-reports-exports-job-id-get): GET /back_in_stock/reports/exports/{job_id} - Check the status of an async report export and get the download URL when ready. - [Notifications](/v2-reference/#operation-back-in-stock-reports-notifications-get): GET /back_in_stock/reports/notifications - Time-series of back-in-stock notifications sent, split by channel (email/sms/push). - [Notifications Export](/v2-reference/#operation-back-in-stock-reports-notifications-export-post): POST /back_in_stock/reports/notifications/export - Async CSV export of the back-in-stock notifications time series. - [Products In Demand](/v2-reference/#operation-back-in-stock-reports-products-in-demand-get): GET /back_in_stock/reports/products_in_demand - Ranked variants by back-in-stock demand (pending/total signups, last requested). - [Products In Demand Export](/v2-reference/#operation-back-in-stock-reports-products-in-demand-export-post): POST /back_in_stock/reports/products_in_demand/export - Async CSV export of the back-in-stock products-in-demand report. - [Signups](/v2-reference/#operation-back-in-stock-reports-signups-get): GET /back_in_stock/reports/signups - Time-series of back-in-stock signups created (day/week/month). - [Signups Export](/v2-reference/#operation-back-in-stock-reports-signups-export-post): POST /back_in_stock/reports/signups/export - Async CSV export of the back-in-stock signups time series. - [Summary](/v2-reference/#operation-back-in-stock-reports-summary-get): GET /back_in_stock/reports/summary - High-level overview of back-in-stock activity over a date window. - [Summary Export](/v2-reference/#operation-back-in-stock-reports-summary-export-post): POST /back_in_stock/reports/summary/export - Async CSV export of the back-in-stock summary report. - [Read](/v2-reference/#operation-back-in-stock-settings-get): GET /back_in_stock/settings - Read all back-in-stock settings for the shop. - [Update](/v2-reference/#operation-back-in-stock-settings-patch): PATCH /back_in_stock/settings - Update back-in-stock settings for the shop. - [Alerts](/v2-reference/#operation-back-in-stock-settings-alerts-get): GET /back_in_stock/settings/alerts - Read back-in-stock merchant alert and scheduled report settings. - [Alerts](/v2-reference/#operation-back-in-stock-settings-alerts-patch): PATCH /back_in_stock/settings/alerts - Update back-in-stock merchant alert and scheduled report settings. - [Channels](/v2-reference/#operation-back-in-stock-settings-channels-get): GET /back_in_stock/settings/channels - Read back-in-stock notification channel settings. - [Channels](/v2-reference/#operation-back-in-stock-settings-channels-patch): PATCH /back_in_stock/settings/channels - Update back-in-stock notification channel toggles. - [Compliance](/v2-reference/#operation-back-in-stock-settings-compliance-get): GET /back_in_stock/settings/compliance - Read back-in-stock compliance settings (double opt-in). - [Compliance](/v2-reference/#operation-back-in-stock-settings-compliance-patch): PATCH /back_in_stock/settings/compliance - Update back-in-stock compliance settings (double opt-in). - [Delivery](/v2-reference/#operation-back-in-stock-settings-delivery-get): GET /back_in_stock/settings/delivery - Read back-in-stock delivery settings (batching, stock threshold, locations, any-variant). - [Delivery](/v2-reference/#operation-back-in-stock-settings-delivery-patch): PATCH /back_in_stock/settings/delivery - Update back-in-stock delivery settings (batching, stock threshold, locations, any-variant). - [Tagging](/v2-reference/#operation-back-in-stock-settings-tagging-get): GET /back_in_stock/settings/tagging - Read back-in-stock order tagging settings. - [Tagging](/v2-reference/#operation-back-in-stock-settings-tagging-patch): PATCH /back_in_stock/settings/tagging - Update back-in-stock order tagging settings. - [List](/v2-reference/#operation-back-in-stock-signups-get): GET /back_in_stock/signups - List back-in-stock signups (the waitlist) in this shop, paginated. - [Create](/v2-reference/#operation-back-in-stock-signups-post): POST /back_in_stock/signups - Create a back-in-stock signup (add a customer to the waitlist for a variant). - [Read](/v2-reference/#operation-back-in-stock-signups-id-get): GET /back_in_stock/signups/{id} - Read one back-in-stock signup's full representation. - [Delete](/v2-reference/#operation-back-in-stock-signups-id-delete): DELETE /back_in_stock/signups/{id} - Delete a pending back-in-stock signup (remove the customer from the waitlist). - [Notify](/v2-reference/#operation-back-in-stock-signups-id-notify-post): POST /back_in_stock/signups/{id}/notify - Send the back-in-stock notification for one signup now, regardless of stock state. - [Bulk Delete](/v2-reference/#operation-back-in-stock-signups-bulk-delete-post): POST /back_in_stock/signups/bulk_delete - Delete up to 1000 pending back-in-stock signups in one request. - [Bulk Notify](/v2-reference/#operation-back-in-stock-signups-bulk-notify-post): POST /back_in_stock/signups/bulk_notify - Send back-in-stock notifications for up to 1000 signups in one request. - [Transfer](/v2-reference/#operation-back-in-stock-signups-transfer-post): POST /back_in_stock/signups/transfer - Move back-in-stock signups from one variant to another (variant merges or replacements). - [List](/v2-reference/#operation-preorders-offers-get): GET /preorders/offers - List preorder offers in this shop, paginated. - [Create](/v2-reference/#operation-preorders-offers-post): POST /preorders/offers - Create a new preorder offer. - [Read](/v2-reference/#operation-preorders-offers-id-get): GET /preorders/offers/{id} - Read a preorder offer's full representation. - [Update](/v2-reference/#operation-preorders-offers-id-patch): PATCH /preorders/offers/{id} - Update top-level fields of a preorder offer. - [Advanced](/v2-reference/#operation-preorders-offers-id-advanced-get): GET /preorders/offers/{id}/advanced - Read power-user settings for a preorder offer (line item properties, button text overrides, Shopify selling plan attachment). - [Advanced](/v2-reference/#operation-preorders-offers-id-advanced-patch): PATCH /preorders/offers/{id}/advanced - Update advanced (power-user) settings on a preorder offer. - [Advanced Attach To Shopify Selling Plan](/v2-reference/#operation-preorders-offers-id-advanced-attach-to-shopify-selling-plan-post): POST /preorders/offers/{id}/advanced/attach_to_shopify_selling_plan - Re-attach the offer to a Shopify selling plan group (resume syncing). - [Advanced Detach From Shopify Selling Plan](/v2-reference/#operation-preorders-offers-id-advanced-detach-from-shopify-selling-plan-post): POST /preorders/offers/{id}/advanced/detach_from_shopify_selling_plan - Detach the offer from Shopify selling plan groups; Stoq continues to manage it via the storefront integration. - [Advanced Set Button Text Override](/v2-reference/#operation-preorders-offers-id-advanced-set-button-text-override-post): POST /preorders/offers/{id}/advanced/set_button_text_override - Override the widget button text for one state (before_launch, after_launch, or out_of_stock). - [Advanced Set Custom Css](/v2-reference/#operation-preorders-offers-id-advanced-set-custom-css-post): POST /preorders/offers/{id}/advanced/set_custom_css - Set custom CSS overrides for this offer's storefront widget. Send an empty string to clear. - [Advanced Set Custom Line Item Property](/v2-reference/#operation-preorders-offers-id-advanced-set-custom-line-item-property-post): POST /preorders/offers/{id}/advanced/set_custom_line_item_property - Set a free-text custom line item property added to every preorder cart line. - [Checkout](/v2-reference/#operation-preorders-offers-id-checkout-get): GET /preorders/offers/{id}/checkout - Read checkout settings for a preorder offer. - [Checkout](/v2-reference/#operation-preorders-offers-id-checkout-patch): PATCH /preorders/offers/{id}/checkout - Update checkout settings on a preorder offer. - [Checkout Add Order Tag](/v2-reference/#operation-preorders-offers-id-checkout-add-order-tag-post): POST /preorders/offers/{id}/checkout/add_order_tag - Add a tag to the set applied to orders containing this offer. - [Checkout Remove Order Tag](/v2-reference/#operation-preorders-offers-id-checkout-remove-order-tag-post): POST /preorders/offers/{id}/checkout/remove_order_tag - Remove a tag from the set applied to orders containing this offer. - [Checkout Set Mixed Cart Error Message](/v2-reference/#operation-preorders-offers-id-checkout-set-mixed-cart-error-message-post): POST /preorders/offers/{id}/checkout/set_mixed_cart_error_message - Set the error message shown when a blocked mixed cart reaches checkout. - [Checkout Set Order Tags](/v2-reference/#operation-preorders-offers-id-checkout-set-order-tags-post): POST /preorders/offers/{id}/checkout/set_order_tags - Replace the set of tags applied to orders containing this offer. - [Checkout Set Terms Text](/v2-reference/#operation-preorders-offers-id-checkout-set-terms-text-post): POST /preorders/offers/{id}/checkout/set_terms_text - Set the terms-acceptance text shown next to the checkbox. - [Countdown](/v2-reference/#operation-preorders-offers-id-countdown-get): GET /preorders/offers/{id}/countdown - Read the countdown timer configuration for a preorder offer. - [Countdown](/v2-reference/#operation-preorders-offers-id-countdown-patch): PATCH /preorders/offers/{id}/countdown - Update countdown timer settings on a preorder offer. - [Countdown Set Custom End Date](/v2-reference/#operation-preorders-offers-id-countdown-set-custom-end-date-post): POST /preorders/offers/{id}/countdown/set_custom_end_date - Set the custom end date for the countdown timer. - [Countdown Set Ends Text](/v2-reference/#operation-preorders-offers-id-countdown-set-ends-text-post): POST /preorders/offers/{id}/countdown/set_ends_text - Set the text shown next to the countdown timer when the offer is closing. - [Countdown Set Mode](/v2-reference/#operation-preorders-offers-id-countdown-set-mode-post): POST /preorders/offers/{id}/countdown/set_mode - Set whether the countdown timer follows the offer's schedule or a custom date. - [Countdown Set Starts Text](/v2-reference/#operation-preorders-offers-id-countdown-set-starts-text-post): POST /preorders/offers/{id}/countdown/set_starts_text - Set the text shown before the countdown timer when the offer hasn't started yet. - [Countdown Set Style](/v2-reference/#operation-preorders-offers-id-countdown-set-style-post): POST /preorders/offers/{id}/countdown/set_style - Set the countdown timer's visual style (type, colors, border radius). - [Countdown Set Unit Labels](/v2-reference/#operation-preorders-offers-id-countdown-set-unit-labels-post): POST /preorders/offers/{id}/countdown/set_unit_labels - Set the unit labels for the countdown timer (Days/Hours/Mins/Secs). - [Disable](/v2-reference/#operation-preorders-offers-id-disable-post): POST /preorders/offers/{id}/disable - Disable (pause) a preorder offer. Optionally flip attached variants' inventory policy back to DENY. - [Discard](/v2-reference/#operation-preorders-offers-id-discard-post): POST /preorders/offers/{id}/discard - Discard (soft-delete) a preorder offer. - [Enable](/v2-reference/#operation-preorders-offers-id-enable-post): POST /preorders/offers/{id}/enable - Enable a preorder offer. Optionally flip attached variants' inventory policy to CONTINUE. - [Integrations](/v2-reference/#operation-preorders-offers-id-integrations-get): GET /preorders/offers/{id}/integrations - Read integration settings for a preorder offer (POS, B2B). - [Integrations](/v2-reference/#operation-preorders-offers-id-integrations-patch): PATCH /preorders/offers/{id}/integrations - Update integration settings on a preorder offer. - [Inventory](/v2-reference/#operation-preorders-offers-id-inventory-get): GET /preorders/offers/{id}/inventory - Read the inventory configuration for a preorder offer. - [Inventory](/v2-reference/#operation-preorders-offers-id-inventory-patch): PATCH /preorders/offers/{id}/inventory - Update inventory settings on a preorder offer. - [Inventory Set Provider](/v2-reference/#operation-preorders-offers-id-inventory-set-provider-post): POST /preorders/offers/{id}/inventory/set_provider - Set the inventory provider for a preorder offer (stoq or shopify). - [Inventory Set Reservation Timing](/v2-reference/#operation-preorders-offers-id-inventory-set-reservation-timing-post): POST /preorders/offers/{id}/inventory/set_reservation_timing - Set when inventory is reserved (at sale or at fulfillment). - [Limits](/v2-reference/#operation-preorders-offers-id-limits-get): GET /preorders/offers/{id}/limits - Read order quantity limits for a preorder offer. - [Limits](/v2-reference/#operation-preorders-offers-id-limits-patch): PATCH /preorders/offers/{id}/limits - Update quantity limits on a preorder offer. - [Limits Set Max Per Customer](/v2-reference/#operation-preorders-offers-id-limits-set-max-per-customer-post): POST /preorders/offers/{id}/limits/set_max_per_customer - Set the maximum quantity a single customer can preorder across all their orders. - [Limits Set Max Per Order](/v2-reference/#operation-preorders-offers-id-limits-set-max-per-order-post): POST /preorders/offers/{id}/limits/set_max_per_order - Set the maximum quantity a customer can preorder per order. - [Limits Set Min Per Order](/v2-reference/#operation-preorders-offers-id-limits-set-min-per-order-post): POST /preorders/offers/{id}/limits/set_min_per_order - Set the minimum quantity a customer must preorder per order. - [Limits Set Total Max](/v2-reference/#operation-preorders-offers-id-limits-set-total-max-post): POST /preorders/offers/{id}/limits/set_total_max - Set the total quantity that can be preordered across all customers. - [Markets](/v2-reference/#operation-preorders-offers-id-markets-get): GET /preorders/offers/{id}/markets - Read market scoping for a preorder offer. - [Markets](/v2-reference/#operation-preorders-offers-id-markets-patch): PATCH /preorders/offers/{id}/markets - Update market scoping on a preorder offer. - [Markets Add Market](/v2-reference/#operation-preorders-offers-id-markets-add-market-post): POST /preorders/offers/{id}/markets/add_market - Add a market to the preorder offer's scope. - [Markets Remove Market](/v2-reference/#operation-preorders-offers-id-markets-remove-market-post): POST /preorders/offers/{id}/markets/remove_market - Remove a market from the preorder offer's scope. - [Markets Set Markets](/v2-reference/#operation-preorders-offers-id-markets-set-markets-post): POST /preorders/offers/{id}/markets/set_markets - Replace the set of markets a preorder offer applies to. - [Payments](/v2-reference/#operation-preorders-offers-id-payments-get): GET /preorders/offers/{id}/payments - Read the payment configuration for a preorder offer. - [Payments](/v2-reference/#operation-preorders-offers-id-payments-patch): PATCH /preorders/offers/{id}/payments - Update payment settings on a preorder offer. - [Payments Disable Option](/v2-reference/#operation-preorders-offers-id-payments-disable-option-post): POST /preorders/offers/{id}/payments/disable_option - Remove a payment option (full or partial) from the offer. - [Payments Enable Option](/v2-reference/#operation-preorders-offers-id-payments-enable-option-post): POST /preorders/offers/{id}/payments/enable_option - Add a payment option (full or partial) to the offer. - [Payments Set Deposit Percent](/v2-reference/#operation-preorders-offers-id-payments-set-deposit-percent-post): POST /preorders/offers/{id}/payments/set_deposit_percent - Set the deposit percentage charged at checkout on the partial payment option. - [Payments Set Discount](/v2-reference/#operation-preorders-offers-id-payments-set-discount-post): POST /preorders/offers/{id}/payments/set_discount - Set the preorder discount. - [Payments Set Discount Text](/v2-reference/#operation-preorders-offers-id-payments-set-discount-text-post): POST /preorders/offers/{id}/payments/set_discount_text - Set the discount blurb shown on the offer's payment options. - [Payments Set Mode](/v2-reference/#operation-preorders-offers-id-payments-set-mode-post): POST /preorders/offers/{id}/payments/set_mode - Switch the offer between full, partial, and full-and-partial payment modes. - [Payments Set Option Copy](/v2-reference/#operation-preorders-offers-id-payments-set-option-copy-post): POST /preorders/offers/{id}/payments/set_option_copy - Set the merchant-facing copy on a payment option (title, description, discount text). - [Products](/v2-reference/#operation-preorders-offers-id-products-get): GET /preorders/offers/{id}/products - Read the products configuration for a preorder offer (source rule + variant summary). - [Products](/v2-reference/#operation-preorders-offers-id-products-patch): PATCH /preorders/offers/{id}/products - Update the product selection on a preorder offer — set the source rule plus its matching sub-block. - [Products Add Variants](/v2-reference/#operation-preorders-offers-id-products-add-variants-post): POST /preorders/offers/{id}/products/add_variants - Attach variants to a custom-source preorder offer. - [Products Bulk Toggle Inventory Policy](/v2-reference/#operation-preorders-offers-id-products-bulk-toggle-inventory-policy-post): POST /preorders/offers/{id}/products/bulk_toggle_inventory_policy - Flip the Shopify inventory policy on variants attached to a preorder offer (CONTINUE or DENY). - [Products Remove Variants](/v2-reference/#operation-preorders-offers-id-products-remove-variants-post): POST /preorders/offers/{id}/products/remove_variants - Remove variants from a custom-source preorder offer. - [Products Set Collection](/v2-reference/#operation-preorders-offers-id-products-set-collection-post): POST /preorders/offers/{id}/products/set_collection - Change the collection driving a collection-sourced preorder offer. - [Products Set Excluded Variants](/v2-reference/#operation-preorders-offers-id-products-set-excluded-variants-post): POST /preorders/offers/{id}/products/set_excluded_variants - Replace the explicit excluded-variant list for an all-source preorder offer. - [Products Set Exclusion Tag](/v2-reference/#operation-preorders-offers-id-products-set-exclusion-tag-post): POST /preorders/offers/{id}/products/set_exclusion_tag - Set the exclusion tag for an all-source preorder offer (variants with this tag are excluded). - [Products Set Source To All](/v2-reference/#operation-preorders-offers-id-products-set-source-to-all-post): POST /preorders/offers/{id}/products/set_source_to_all - Switch the offer to apply to every variant in the shop, minus exclusions. Requires confirm: true. - [Products Set Source To Collection](/v2-reference/#operation-preorders-offers-id-products-set-source-to-collection-post): POST /preorders/offers/{id}/products/set_source_to_collection - Switch the offer to a collection-driven variant source. - [Products Set Source To Custom](/v2-reference/#operation-preorders-offers-id-products-set-source-to-custom-post): POST /preorders/offers/{id}/products/set_source_to_custom - Switch the offer to a custom variant list. Optionally seed it with variant IDs. - [Products Variants](/v2-reference/#operation-preorders-offers-id-products-variants-get): GET /preorders/offers/{id}/products/variants - List the variants attached to a preorder offer with their per-variant settings, paginated. - [Products Variants](/v2-reference/#operation-preorders-offers-id-products-variants-variant-id-get): GET /preorders/offers/{id}/products/variants/{variant_id} - Read the per-offer settings of a single variant attached to a preorder offer. - [Products Variants](/v2-reference/#operation-preorders-offers-id-products-variants-variant-id-patch): PATCH /preorders/offers/{id}/products/variants/{variant_id} - Set per-offer overrides on an attached variant — shipping text, max preorder count, market-scoped overrides. - [Restore](/v2-reference/#operation-preorders-offers-id-restore-post): POST /preorders/offers/{id}/restore - Restore a discarded preorder offer. - [Schedule](/v2-reference/#operation-preorders-offers-id-schedule-post): POST /preorders/offers/{id}/schedule - Set the schedule window for a preorder offer. - [Shipping](/v2-reference/#operation-preorders-offers-id-shipping-get): GET /preorders/offers/{id}/shipping - Read shipping settings for a preorder offer. - [Shipping](/v2-reference/#operation-preorders-offers-id-shipping-patch): PATCH /preorders/offers/{id}/shipping - Update shipping settings on a preorder offer. - [Shipping Set Delivery Asap](/v2-reference/#operation-preorders-offers-id-shipping-set-delivery-asap-post): POST /preorders/offers/{id}/shipping/set_delivery_asap - Set delivery to 'as soon as possible' (no specific date or window). - [Shipping Set Delivery Date](/v2-reference/#operation-preorders-offers-id-shipping-set-delivery-date-post): POST /preorders/offers/{id}/shipping/set_delivery_date - Set an exact delivery date for the preorder. - [Shipping Set Delivery Window](/v2-reference/#operation-preorders-offers-id-shipping-set-delivery-window-post): POST /preorders/offers/{id}/shipping/set_delivery_window - Set a delivery window in days from checkout (e.g. 'ships within 14 days'). - [Shipping Set Shipping Text](/v2-reference/#operation-preorders-offers-id-shipping-set-shipping-text-post): POST /preorders/offers/{id}/shipping/set_shipping_text - Set the customer-facing shipping text shown on the PDP. - [Shipping Set Split Order Tag](/v2-reference/#operation-preorders-offers-id-shipping-set-split-order-tag-post): POST /preorders/offers/{id}/shipping/set_split_order_tag - Set the tag applied to split orders on Shopify. - [Shipping Set Split Transaction Gateway](/v2-reference/#operation-preorders-offers-id-shipping-set-split-transaction-gateway-post): POST /preorders/offers/{id}/shipping/set_split_transaction_gateway - Set the payment gateway used for the split order transaction (e.g. 'Prepaid'). - [Translations](/v2-reference/#operation-preorders-offers-id-translations-get): GET /preorders/offers/{id}/translations - Read every translation override on a preorder offer, plus the full enumeration of translatable field paths. - [Translations Clear Locale](/v2-reference/#operation-preorders-offers-id-translations-clear-locale-post): POST /preorders/offers/{id}/translations/clear_locale - Remove all translation overrides for one locale on a preorder offer. - [Translations Set](/v2-reference/#operation-preorders-offers-id-translations-set-post): POST /preorders/offers/{id}/translations/set - Set a single translation override (one locale, one field) on a preorder offer. - [Translations Set Many](/v2-reference/#operation-preorders-offers-id-translations-set-many-post): POST /preorders/offers/{id}/translations/set_many - Set many translation overrides for one locale on a preorder offer, atomically. - [Translations Unset](/v2-reference/#operation-preorders-offers-id-translations-unset-post): POST /preorders/offers/{id}/translations/unset - Remove a translation override (one locale, one field) from a preorder offer. - [Unschedule](/v2-reference/#operation-preorders-offers-id-unschedule-post): POST /preorders/offers/{id}/unschedule - Clear the schedule window on a preorder offer. - [Widget](/v2-reference/#operation-preorders-offers-id-widget-get): GET /preorders/offers/{id}/widget - Read the widget configuration for a preorder offer. - [Widget](/v2-reference/#operation-preorders-offers-id-widget-patch): PATCH /preorders/offers/{id}/widget - Update any subset of the widget configuration on a preorder offer. - [Widget Set Badge Colors](/v2-reference/#operation-preorders-offers-id-widget-set-badge-colors-post): POST /preorders/offers/{id}/widget/set_badge_colors - Set the preorder badge's text and background colors. - [Widget Set Badge Text](/v2-reference/#operation-preorders-offers-id-widget-set-badge-text-post): POST /preorders/offers/{id}/widget/set_badge_text - Set the preorder badge text. - [Widget Set Billing Widget Text](/v2-reference/#operation-preorders-offers-id-widget-set-billing-widget-text-post): POST /preorders/offers/{id}/widget/set_billing_widget_text - Set the billing widget's title and description (the PDP payment-breakdown block). - [Widget Set Button Colors](/v2-reference/#operation-preorders-offers-id-widget-set-button-colors-post): POST /preorders/offers/{id}/widget/set_button_colors - Set the preorder button's text and background colors (implicitly enables custom colors). - [Widget Set Button Text](/v2-reference/#operation-preorders-offers-id-widget-set-button-text-post): POST /preorders/offers/{id}/widget/set_button_text - Set the preorder button's call-to-action label. - [Widget Set Disclaimer Style](/v2-reference/#operation-preorders-offers-id-widget-set-disclaimer-style-post): POST /preorders/offers/{id}/widget/set_disclaimer_style - Set the disclaimer banner's colors and border radius. - [Widget Set Disclaimer Text](/v2-reference/#operation-preorders-offers-id-widget-set-disclaimer-text-post): POST /preorders/offers/{id}/widget/set_disclaimer_text - Set the disclaimer banner text shown under the preorder button. - [List](/v2-reference/#operation-preorders-orders-get): GET /preorders/orders - List preorder orders in this shop, paginated. - [Read](/v2-reference/#operation-preorders-orders-id-get): GET /preorders/orders/{id} - Read a preorder order's full representation. - [Cancel](/v2-reference/#operation-preorders-orders-id-cancel-post): POST /preorders/orders/{id}/cancel - Cancel a preorder. Optionally refund deposit / balance and notify the customer. - [Fulfillment](/v2-reference/#operation-preorders-orders-id-fulfillment-get): GET /preorders/orders/{id}/fulfillment - Read the fulfillment hold state and fulfillment-order summary of a preorder order. - [Fulfillment](/v2-reference/#operation-preorders-orders-id-fulfillment-patch): PATCH /preorders/orders/{id}/fulfillment - Update fulfillment attributes on a preorder order. Only `hold_reason_note` is writable. - [Fulfillment Apply Holds](/v2-reference/#operation-preorders-orders-id-fulfillment-apply-holds-post): POST /preorders/orders/{id}/fulfillment/apply_holds - Apply fulfillment holds on the order's fulfillment orders. Idempotent. - [Fulfillment Release Holds](/v2-reference/#operation-preorders-orders-id-fulfillment-release-holds-post): POST /preorders/orders/{id}/fulfillment/release_holds - Release fulfillment holds on the order without applying offer-configured tags. - [Fulfillment Set Hold Reason](/v2-reference/#operation-preorders-orders-id-fulfillment-set-hold-reason-post): POST /preorders/orders/{id}/fulfillment/set_hold_reason - Set the hold-reason note that will be used the next time the order is held. - [Hold Fulfillments](/v2-reference/#operation-preorders-orders-id-hold-fulfillments-post): POST /preorders/orders/{id}/hold_fulfillments - Apply fulfillment holds on the preorder order's fulfillment orders. - [Payments](/v2-reference/#operation-preorders-orders-id-payments-get): GET /preorders/orders/{id}/payments - Read the deposit, remaining balance, and refund state of a preorder order. - [Payments Charge Balance](/v2-reference/#operation-preorders-orders-id-payments-charge-balance-post): POST /preorders/orders/{id}/payments/charge_balance - Charge the remaining balance. `auto` uses the customer's saved payment method; `manual` just marks balance collected. - [Payments Refund](/v2-reference/#operation-preorders-orders-id-payments-refund-post): POST /preorders/orders/{id}/payments/refund - Refund the entire preorder (deposit + balance). - [Payments Refund Balance](/v2-reference/#operation-preorders-orders-id-payments-refund-balance-post): POST /preorders/orders/{id}/payments/refund_balance - Refund the remaining-balance portion of a preorder (only valid after the balance was collected). - [Payments Refund Deposit](/v2-reference/#operation-preorders-orders-id-payments-refund-deposit-post): POST /preorders/orders/{id}/payments/refund_deposit - Refund the deposit portion of a preorder. - [Payments Send Collection Url](/v2-reference/#operation-preorders-orders-id-payments-send-collection-url-post): POST /preorders/orders/{id}/payments/send_collection_url - Send the remaining-balance payment-collection URL to the customer. - [Release](/v2-reference/#operation-preorders-orders-id-release-post): POST /preorders/orders/{id}/release - Release the order's fulfillment holds and apply offer-configured order tags. - [Split Fulfillment Orders](/v2-reference/#operation-preorders-orders-id-split-fulfillment-orders-post): POST /preorders/orders/{id}/split_fulfillment_orders - Split the order's fulfillment orders so preorder items ship separately from regular items. - [Tags](/v2-reference/#operation-preorders-orders-id-tags-get): GET /preorders/orders/{id}/tags - Read the order tags applied by Stoq. - [Tags](/v2-reference/#operation-preorders-orders-id-tags-patch): PATCH /preorders/orders/{id}/tags - Replace the order's tag set. PATCH form of tags/set. - [Tags Add](/v2-reference/#operation-preorders-orders-id-tags-add-post): POST /preorders/orders/{id}/tags/add - Add one or more tags to the Shopify order. - [Tags Remove](/v2-reference/#operation-preorders-orders-id-tags-remove-post): POST /preorders/orders/{id}/tags/remove - Remove one or more tags from the Shopify order. - [Tags Set](/v2-reference/#operation-preorders-orders-id-tags-set-post): POST /preorders/orders/{id}/tags/set - Replace every tag on the Shopify order with the supplied list. - [Bulk Cancel](/v2-reference/#operation-preorders-orders-bulk-cancel-post): POST /preorders/orders/bulk_cancel - Cancel many preorder orders (max 1000), with optional refund flags. - [Bulk Release](/v2-reference/#operation-preorders-orders-bulk-release-post): POST /preorders/orders/bulk_release - Release fulfillments on many preorder orders (max 1000). - [Bulk Send Payment Collection Url](/v2-reference/#operation-preorders-orders-bulk-send-payment-collection-url-post): POST /preorders/orders/bulk_send_payment_collection_url - Send payment-collection URLs to many preorder customers (max 1000). - [Bulk Set Tags](/v2-reference/#operation-preorders-orders-bulk-set-tags-post): POST /preorders/orders/bulk_set_tags - Apply tags to many preorder orders in one job (max 1000). - [Jobs](/v2-reference/#operation-preorders-orders-jobs-job-id-get): GET /preorders/orders/jobs/{job_id} - Check the status of a bulk-order job. - [List](/v2-reference/#operation-preorders-product-variants-get): GET /preorders/product_variants - List Shopify variants attached to any preorder offer in this shop. - [Read](/v2-reference/#operation-preorders-product-variants-variant-id-get): GET /preorders/product_variants/{variant_id} - Read a Shopify variant's preorder context: every offer it's in, aggregate counts, and current metafield state. - [Detach From All Offers](/v2-reference/#operation-preorders-product-variants-variant-id-detach-from-all-offers-post): POST /preorders/product_variants/{variant_id}/detach_from_all_offers - Remove a variant from every preorder offer it's attached to. Customer orders are unaffected. - [Offers](/v2-reference/#operation-preorders-product-variants-variant-id-offers-get): GET /preorders/product_variants/{variant_id}/offers - List the preorder offers a Shopify variant is attached to. - [Recalculate Preorder Count](/v2-reference/#operation-preorders-product-variants-variant-id-recalculate-preorder-count-post): POST /preorders/product_variants/{variant_id}/recalculate_preorder_count - Recompute preorder_count for a variant from active order line items, then push to Shopify. - [Reset Metafields](/v2-reference/#operation-preorders-product-variants-variant-id-reset-metafields-post): POST /preorders/product_variants/{variant_id}/reset_metafields - Clear all preorder-related Shopify metafields on a variant. Keeps the variant attached to its offers. - [Reset Preorder Count](/v2-reference/#operation-preorders-product-variants-variant-id-reset-preorder-count-post): POST /preorders/product_variants/{variant_id}/reset_preorder_count - Hard-reset the preorder_count metafield + DB columns on a variant to zero. - [Sync Metafields](/v2-reference/#operation-preorders-product-variants-variant-id-sync-metafields-post): POST /preorders/product_variants/{variant_id}/sync_metafields - Force-resync every preorder metafield for a variant from local DB state to Shopify. - [Bulk Recalculate Preorder Counts](/v2-reference/#operation-preorders-product-variants-bulk-recalculate-preorder-counts-post): POST /preorders/product_variants/bulk_recalculate_preorder_counts - Recompute preorder_count for many variants in one job (max 5000). - [Bulk Reset Metafields](/v2-reference/#operation-preorders-product-variants-bulk-reset-metafields-post): POST /preorders/product_variants/bulk_reset_metafields - Reset preorder metafields for many variants in one job (max 5000). - [Bulk Sync Metafields](/v2-reference/#operation-preorders-product-variants-bulk-sync-metafields-post): POST /preorders/product_variants/bulk_sync_metafields - Force-resync preorder metafields for many variants in one job (max 5000). - [Jobs](/v2-reference/#operation-preorders-product-variants-jobs-job-id-get): GET /preorders/product_variants/jobs/{job_id} - Check the status of a bulk variant-admin job. - [List](/v2-reference/#operation-preorders-reports-get): GET /preorders/reports - List every available preorder report (name, description, aliases, url). - [Balance Collection](/v2-reference/#operation-preorders-reports-balance-collection-get): GET /preorders/reports/balance_collection - Outstanding preorder balances and balance-collection performance metrics. - [Balance Collection Export](/v2-reference/#operation-preorders-reports-balance-collection-export-post): POST /preorders/reports/balance_collection/export - Async CSV export of the balance-collection report. - [By Date](/v2-reference/#operation-preorders-reports-by-date-get): GET /preorders/reports/by_date - Time-series of all preorder metrics at the chosen granularity (day/week/month). - [By Date Export](/v2-reference/#operation-preorders-reports-by-date-export-post): POST /preorders/reports/by_date/export - Async CSV export of the time-series preorder report. - [By Offer](/v2-reference/#operation-preorders-reports-by-offer-get): GET /preorders/reports/by_offer - Per-offer breakdown of preorder activity (orders, units, revenue, customers). - [By Offer Export](/v2-reference/#operation-preorders-reports-by-offer-export-post): POST /preorders/reports/by_offer/export - Async CSV export of the per-offer preorder report. - [By Product](/v2-reference/#operation-preorders-reports-by-product-get): GET /preorders/reports/by_product - Per-product preorder performance, rolled up across variants. - [By Product Export](/v2-reference/#operation-preorders-reports-by-product-export-post): POST /preorders/reports/by_product/export - Async CSV export of the per-product preorder report. - [By Variant](/v2-reference/#operation-preorders-reports-by-variant-get): GET /preorders/reports/by_variant - Per-variant preorder performance for a specific offer. - [By Variant Export](/v2-reference/#operation-preorders-reports-by-variant-export-post): POST /preorders/reports/by_variant/export - Async CSV export of the per-variant preorder report. - [Cancellations](/v2-reference/#operation-preorders-reports-cancellations-get): GET /preorders/reports/cancellations - Preorder cancellation metrics with reason and per-offer breakdowns. - [Cancellations Export](/v2-reference/#operation-preorders-reports-cancellations-export-post): POST /preorders/reports/cancellations/export - Async CSV export of the cancellations report. - [Customers](/v2-reference/#operation-preorders-reports-customers-get): GET /preorders/reports/customers - Paginated list of customers with preorder activity in the window. - [Customers Export](/v2-reference/#operation-preorders-reports-customers-export-post): POST /preorders/reports/customers/export - Async CSV export of the customers report. - [Exports](/v2-reference/#operation-preorders-reports-exports-job-id-get): GET /preorders/reports/exports/{job_id} - Check the status of an async report export and get the download URL when ready. - [Revenue](/v2-reference/#operation-preorders-reports-revenue-get): GET /preorders/reports/revenue - Preorder revenue over a date window, bucketed by day/week/month. - [Revenue Export](/v2-reference/#operation-preorders-reports-revenue-export-post): POST /preorders/reports/revenue/export - Async CSV export of the preorder revenue report. - [Summary](/v2-reference/#operation-preorders-reports-summary-get): GET /preorders/reports/summary - High-level overview of preorder activity over a date window. - [Summary Export](/v2-reference/#operation-preorders-reports-summary-export-post): POST /preorders/reports/summary/export - Async CSV export of the preorder summary report. ## SDK (Beta) - [Headless & Hydrogen](/sdk/docs/headless/): Run STOQ preorders and back-in-stock on a headless storefront with the Storefront SDK — a script tag for any stack, React hooks for Hydrogen. - [Guide: Build a headless product page](/sdk/docs/build-with-the-sdk/): Step-by-step: preorder button, payment-option modal, and back-in-stock signups on a headless storefront with the STOQ SDK — every step verified end-to-end. - [SDK recipes](/sdk/docs/sdk-recipes/): Build the common storefront pieces with the JavaScript SDK — notify-me, preorder buttons, and variant state. - [Live demo](/sdk/docs/examples/live-demo/): The Storefront SDK running live in your browser against a real store — preorder widget, notify-me, and derived variant state, with source. - [Notify-me (back in stock)](/sdk/docs/examples/notify-me/): Copy-paste back-in-stock signup examples — drop-in custom element, one-call renderer, modal, inline form, and React. - [Preorder widget & button](/sdk/docs/examples/preorder/): Copy-paste preorder examples — drop-in widget element, one-call renderer, a hand-built button, and React. - [A complete product page](/sdk/docs/examples/product-page/): Branch between in-stock, preorder, and notify-me — and keep it in sync as the shopper switches variants. ## Frontend - [JavaScript API](/frontend/docs/javascript-api/): STOQ provides a JavaScript API for custom integrations within your Shopify theme. This API is accessible through the window.RestockRocket object when our app loads into your theme. - [Custom events](/frontend/docs/custom-events/): STOQ emits custom events that you can listen to for custom integrations. All events are dispatched on the window object (except where noted) and include detailed information in the event.detail... - [Preorder metafields](/frontend/docs/preorder-metafields/): Which preorder data lives at the shop (offer) level vs the variant level vs the market level — and how to read each. - [Shop Level Metafields](/frontend/docs/preorder-metafields/shop-level-metafields/): The selling_plans metafield is the source of truth for every preorder offer's config — button text, shipping copy, limits — and the variants it applies to. - [Product Variant Level Metafields](/frontend/docs/preorder-metafields/product-variant-level-metafields/): Key: sellingplanids Type: json Namespace: restockrocketproduction Owner: Product Variant - [Market level product variant Metafields](/frontend/docs/preorder-metafields/market-level-product-variant-metafields/): This document outlines the structure and usage of market-specific metafields for product variants. These metafields enable market-specific order limit tracking, and shipping information display. ## MCP (Beta) - [stoq-api-v2](/mcp/): STOQ's MCP server exposes every v2 API action as a tool, so AI agents can run preorder and - [back_in_stock_notifications_list](/mcp/#operation-back-in-stock-notifications-list-tool): tool - List back-in-stock notifications (the send log) in this shop, paginated. Aliases: list notifications, back in stock send log, restock notifications sent, who got notified, notification history, show sent restock alerts. Note: status=blocked surfaces sends stopped by plan limits (with blocked_reason). - [back_in_stock_notifications_read](/mcp/#operation-back-in-stock-notifications-read-tool): tool - Read one back-in-stock notification (a single send-log entry). Aliases: show notification, get notification, look up sent restock alert, notification details. - [back_in_stock_reports_list](/mcp/#operation-back-in-stock-reports-list-tool): tool - List every available back-in-stock report (name, description, aliases, url). Aliases: reports, list reports, available reports, what reports are there, report catalog. - [back_in_stock_reports_conversions_read](/mcp/#operation-back-in-stock-reports-conversions-read-tool): tool - Time-series of orders attributed to back-in-stock alerts and the revenue recovered. Aliases: did the alerts convert, recovered revenue, conversion trend, orders from alerts, revenue recovered over time. - [back_in_stock_reports_conversions_export](/mcp/#operation-back-in-stock-reports-conversions-export-tool): tool - Async CSV export of the back-in-stock conversions time series. Aliases: export conversions, download conversions, conversions csv, recovered revenue csv. - [back_in_stock_reports_exports_read](/mcp/#operation-back-in-stock-reports-exports-read-tool): tool - Check the status of an async report export and get the download URL when ready. Aliases: check export status, get export, poll export, download url for export, export status. - [back_in_stock_reports_notifications_read](/mcp/#operation-back-in-stock-reports-notifications-read-tool): tool - Time-series of back-in-stock notifications sent, split by channel (email/sms/push). Aliases: notification trend, alerts sent, sends by channel, how many alerts went out, blocked notifications. - [back_in_stock_reports_notifications_export](/mcp/#operation-back-in-stock-reports-notifications-export-tool): tool - Async CSV export of the back-in-stock notifications time series. Aliases: export notifications, download notifications, notifications csv, alerts csv. - [back_in_stock_reports_products_in_demand_read](/mcp/#operation-back-in-stock-reports-products-in-demand-read-tool): tool - Ranked variants by back-in-stock demand (pending/total signups, last requested). Aliases: demand report, what should I restock, most wanted products, top requested variants, products in demand, restock priorities. - [back_in_stock_reports_products_in_demand_export](/mcp/#operation-back-in-stock-reports-products-in-demand-export-tool): tool - Async CSV export of the back-in-stock products-in-demand report. Aliases: export demand report, download products in demand, demand csv, restock list csv. - [back_in_stock_reports_signups_read](/mcp/#operation-back-in-stock-reports-signups-read-tool): tool - Time-series of back-in-stock signups created (day/week/month). Aliases: signup trend, signups over time, waitlist growth, new signups, daily signups. - [back_in_stock_reports_signups_export](/mcp/#operation-back-in-stock-reports-signups-export-tool): tool - Async CSV export of the back-in-stock signups time series. Aliases: export signups, download signups, signups csv, waitlist csv. - [back_in_stock_reports_summary_read](/mcp/#operation-back-in-stock-reports-summary-read-tool): tool - High-level overview of back-in-stock activity over a date window. Aliases: summary, overview, how is back in stock doing, how many people are waiting, waitlist size, dashboard stats. - [back_in_stock_reports_summary_export](/mcp/#operation-back-in-stock-reports-summary-export-tool): tool - Async CSV export of the back-in-stock summary report. Aliases: export summary, download summary, summary csv, export overview. - [back_in_stock_settings_update](/mcp/#operation-back-in-stock-settings-update-tool): tool - Update back-in-stock settings for the shop. Aliases: edit settings, change settings, modify settings, update back in stock settings, configure notifications. Note: Accepts any combination of capability blobs: channels, delivery, compliance, tagging, alerts — deep partial, delegated to the capability PATCHes, errors accumulated. Boolean toggles are set via this PATCH (or the capability PATCH): channels.email.enabled, channels.sms.enabled, channels.push.enabled, delivery.batching.enabled, delivery.locations.filter_enabled, delivery.any_variant.enabled, compliance.optin_required, tagging.order_tags.enabled, alerts.signups_threshold.notify, alerts.scheduled_reports.daily, alerts.scheduled_reports.weekly, alerts.scheduled_reports.monthly — e.g. { channels: { sms: { enabled: true } } }. - [back_in_stock_settings_read](/mcp/#operation-back-in-stock-settings-read-tool): tool - Read all back-in-stock settings for the shop. Aliases: get settings, show settings, view settings, back in stock settings, notification settings, settings. - [back_in_stock_settings_alerts_read](/mcp/#operation-back-in-stock-settings-alerts-read-tool): tool - Read back-in-stock merchant alert and scheduled report settings. Aliases: get alert settings, show alerts, view signup threshold, view scheduled reports, alerts. - [back_in_stock_settings_alerts_update](/mcp/#operation-back-in-stock-settings-alerts-update-tool): tool - Update back-in-stock merchant alert and scheduled report settings. Aliases: edit alert settings, change alert settings, set signup threshold, notify me on high demand, enable signup threshold alerts, disable signup threshold alerts, alert me when a product gets lots of signups, enable daily report, enable weekly report, enable monthly report, disable daily report, disable weekly report, disable monthly report, schedule reports, turn off report emails. Note: Toggles set via this PATCH: signups_threshold.notify, scheduled_reports.daily, scheduled_reports.weekly, scheduled_reports.monthly — e.g. { scheduled_reports: { weekly: true } }. signups_threshold.count is the per-variant signup count that triggers the merchant alert email. - [back_in_stock_settings_channels_update](/mcp/#operation-back-in-stock-settings-channels-update-tool): tool - Update back-in-stock notification channel toggles. Aliases: edit channels, change channels, modify channels, enable email notifications, turn on email alerts, disable email notifications, turn off email alerts, enable sms, turn on SMS alerts, enable text notifications, disable sms, turn off SMS alerts, stop text notifications, enable push notifications, turn on web push, disable push notifications, turn off web push. Note: Channel toggles are set via this PATCH: email.enabled, sms.enabled, push.enabled — e.g. { sms: { enabled: true } }. Enabling SMS for the first time triggers a restricted-content verification check; sends may be held until the shop is verified. - [back_in_stock_settings_channels_read](/mcp/#operation-back-in-stock-settings-channels-read-tool): tool - Read back-in-stock notification channel settings. Aliases: get channels, show channels, view notification channels, which channels are enabled, channels. - [back_in_stock_settings_compliance_update](/mcp/#operation-back-in-stock-settings-compliance-update-tool): tool - Update back-in-stock compliance settings (double opt-in). Aliases: edit compliance settings, change compliance settings, require double opt-in, enable double opt-in, turn on double opt-in, require opt-in confirmation, gdpr opt-in, disable double opt-in, turn off double opt-in, remove opt-in confirmation. Note: The double-opt-in toggle is set via this PATCH: optin_required — e.g. { optin_required: true }. When enabled, signups must confirm via email before they are eligible for notifications (GDPR double opt-in). - [back_in_stock_settings_compliance_read](/mcp/#operation-back-in-stock-settings-compliance-read-tool): tool - Read back-in-stock compliance settings (double opt-in). Aliases: get compliance settings, show compliance, view opt-in settings, is double opt-in enabled, compliance. - [back_in_stock_settings_delivery_read](/mcp/#operation-back-in-stock-settings-delivery-read-tool): tool - Read back-in-stock delivery settings (batching, stock threshold, locations, any-variant). Aliases: get delivery settings, show delivery settings, view batching, view stock threshold, view location filter, delivery. - [back_in_stock_settings_delivery_update](/mcp/#operation-back-in-stock-settings-delivery-update-tool): tool - Update back-in-stock delivery settings (batching, stock threshold, locations, any-variant). Aliases: edit delivery settings, change delivery settings, batch notifications, enable batching, turn on batching, disable batching, turn off batching, send all at once, set batch size, set batching multiplier, set batching mode, set wait between batches, set stock threshold, set minimum stock to notify, only notify when 5 in stock, require minimum quantity before notifying, filter by location, enable location filter, disable location filter, set notification locations, only count inventory at locations, notify for any variant, enable any variant notifications, disable any variant notifications, notify when any variant restocks. Note: Deep partial. Toggles set via this PATCH: batching.enabled, locations.filter_enabled, any_variant.enabled — e.g. { batching: { enabled: true } }. batching.mode is an enum: 'multiplier' (batch size = restocked quantity x batching.multiplier) or 'fixed' (batch size = batching.batch_size); batching.wait_hours is the wait between batches. stock_threshold is the minimum restocked quantity before notifications send (>= 1). locations.location_ids and any_variant.product_ids are arrays of Shopify numeric ids and are replaced wholesale when present. - [back_in_stock_settings_tagging_read](/mcp/#operation-back-in-stock-settings-tagging-read-tool): tool - Read back-in-stock order tagging settings. Aliases: get tagging settings, show order tagging, view order tag, what tag is applied to recovered orders, tagging. - [back_in_stock_settings_tagging_update](/mcp/#operation-back-in-stock-settings-tagging-update-tool): tool - Update back-in-stock order tagging settings. Aliases: edit tagging settings, change tagging settings, tag recovered orders, enable order tagging, turn on order tagging, disable order tagging, turn off order tagging, set back in stock order tag, change order tag, rename order tag. Note: The toggle is set via this PATCH: order_tags.enabled — e.g. { order_tags: { enabled: true } }. order_tags.tag is the single tag applied to Shopify orders attributed to a back-in-stock notification (default 'STOQ-back-in-stock'). - [back_in_stock_signups_create](/mcp/#operation-back-in-stock-signups-create-tool): tool - Create a back-in-stock signup (add a customer to the waitlist for a variant). Aliases: create signup, add to waitlist, add customer to the notify me list, register a restock alert, sign someone up for back in stock. Note: email is required for the email channel, phone for sms. shopify_product_id is resolved from the variant when omitted. Returns 409 when a pending signup already exists for the same contact + variant + channel. - [back_in_stock_signups_list](/mcp/#operation-back-in-stock-signups-list-tool): tool - List back-in-stock signups (the waitlist) in this shop, paginated. Aliases: list signups, waitlist, show the waitlist, notify me list, who's waiting, back in stock signups, list waitlist entries, restock signups, customers waiting for restock. Note: status compiles notified_at / unsubscribed_at / blocked_at into one lifecycle value; email and phone filters match partial values on the signup or its customer. - [back_in_stock_signups_read](/mcp/#operation-back-in-stock-signups-read-tool): tool - Read one back-in-stock signup's full representation. Aliases: show signup, get signup, look up waitlist entry, view restock signup, signup details. - [back_in_stock_signups_delete](/mcp/#operation-back-in-stock-signups-delete-tool): tool - Delete a pending back-in-stock signup (remove the customer from the waitlist). Aliases: delete signup, remove from waitlist, remove waitlist entry, cancel restock alert, take customer off the notify me list. Note: Pending signups only; deleting an already-notified signup returns 409. - [back_in_stock_signups_notify](/mcp/#operation-back-in-stock-signups-notify-tool): tool - Send the back-in-stock notification for one signup now, regardless of stock state. Aliases: notify signup, send the restock email, notify this customer, send back in stock notification, resend restock notification. Note: 409 when the signup was already notified and allow_resend is not set. - [back_in_stock_signups_bulk_delete](/mcp/#operation-back-in-stock-signups-bulk-delete-tool): tool - Delete up to 1000 pending back-in-stock signups in one request. Aliases: bulk delete signups, clear the waitlist, delete waitlist entries, remove signups in bulk, purge pending restock signups. Note: Pending-only: 422 listing the offending ids when any signup was already notified. - [back_in_stock_signups_bulk_notify](/mcp/#operation-back-in-stock-signups-bulk-notify-tool): tool - Send back-in-stock notifications for up to 1000 signups in one request. Aliases: bulk notify signups, notify the waitlist, notify everyone waiting, send restock emails to the whole waitlist, bulk send back in stock notifications. Note: Responds 200 when all succeed, 207 with { success, failed } on partial failure. Already-notified signups fail unless allow_resend is set. - [back_in_stock_signups_transfer](/mcp/#operation-back-in-stock-signups-transfer-tool): tool - Move back-in-stock signups from one variant to another (variant merges or replacements). Aliases: transfer signups, move the waitlist, move signups to another variant, merge waitlists, shift restock signups to a new variant. Note: scope picks which signups move: pending (default), notified, or all. Signups that would duplicate a pending signup on the target variant are dropped. from_shopify_product_id is resolved from the source variant when omitted. - [preorders_offers_list](/mcp/#operation-preorders-offers-list-tool): tool - List preorder offers in this shop, paginated. Aliases: list offers, show all offers, preorder offers, all preorders. - [preorders_offers_create](/mcp/#operation-preorders-offers-create-tool): tool - Create a new preorder offer. Aliases: new offer, make a preorder, create preorder offer. - [preorders_offers_update](/mcp/#operation-preorders-offers-update-tool): tool - Update top-level fields of a preorder offer. Aliases: edit offer, modify offer, change offer settings. - [preorders_offers_read](/mcp/#operation-preorders-offers-read-tool): tool - Read a preorder offer's full representation. Aliases: show offer, get preorder offer, look up offer, view offer. - [preorders_offers_advanced_update](/mcp/#operation-preorders-offers-advanced-update-tool): tool - Update advanced (power-user) settings on a preorder offer. Aliases: edit advanced, change advanced settings, modify advanced, enable line item property, include in line item properties, add cart property, show on cart line, disable line item property, exclude from line item properties, remove cart property, hide from cart line, clear button text override, remove button text override, reset button text for state, use default button text. Note: Deep partial. Toggles and clears are done via this PATCH: the line-item-property toggles are `line_item_properties.include_shipping_text`, `.include_payment_breakdown`, and `.include_acknowledgement` (true/false each). `button_text_overrides` is deep-partial per state — send null to clear an override for one state, e.g. `{ "button_text_overrides": { "out_of_stock": null } }` removes that override (the read shape still emits all three states, with null for unset). `custom_css` is cleared by sending an empty string or null. - [preorders_offers_advanced_read](/mcp/#operation-preorders-offers-advanced-read-tool): tool - Read power-user settings for a preorder offer (line item properties, button text overrides, Shopify selling plan attachment). Aliases: get advanced, show advanced settings, view advanced settings, view line item properties, view advanced. - [preorders_offers_advanced_attach_to_shopify_selling_plan](/mcp/#operation-preorders-offers-advanced-attach-to-shopify-selling-plan-tool): tool - Re-attach the offer to a Shopify selling plan group (resume syncing). Aliases: attach to shopify selling plan, use shopify selling plans, resume shopify sync, reattach to shopify. - [preorders_offers_advanced_detach_from_shopify_selling_plan](/mcp/#operation-preorders-offers-advanced-detach-from-shopify-selling-plan-tool): tool - Detach the offer from Shopify selling plan groups; Stoq continues to manage it via the storefront integration. Aliases: detach from shopify selling plan, stop using shopify selling plans, manage selling plan internally, bypass shopify selling plan. Note: Strongly discouraged for most merchants. Breaks Shopify-native integrations like checkout selling plan display and third-party subscription apps. Does not delete the existing Shopify selling plan group — it just stops syncing. - [preorders_offers_advanced_set_button_text_override](/mcp/#operation-preorders-offers-advanced-set-button-text-override-tool): tool - Override the widget button text for one state (before_launch, after_launch, or out_of_stock). Aliases: set button text override, override button text, change button text for state, set state button text. - [preorders_offers_advanced_set_custom_css](/mcp/#operation-preorders-offers-advanced-set-custom-css-tool): tool - Set custom CSS overrides for this offer's storefront widget. Send an empty string to clear. Aliases: set custom css, add custom css, override widget css, customize widget styles, clear custom css. - [preorders_offers_advanced_set_custom_line_item_property](/mcp/#operation-preorders-offers-advanced-set-custom-line-item-property-tool): tool - Set a free-text custom line item property added to every preorder cart line. Aliases: set custom line item property, set custom cart property, set custom cart text, add custom cart text. - [preorders_offers_checkout_read](/mcp/#operation-preorders-offers-checkout-read-tool): tool - Read checkout settings for a preorder offer. Aliases: get checkout settings, show checkout, view terms, view mixed cart, view order tags, checkout. - [preorders_offers_checkout_update](/mcp/#operation-preorders-offers-checkout-update-tool): tool - Update checkout settings on a preorder offer. Aliases: edit checkout, change checkout settings, modify checkout, enable terms, require terms, require acknowledgement, show terms checkbox, turn on terms, disable terms, hide terms checkbox, remove terms requirement, turn off terms, enable disable until acknowledged, require acknowledgement before buying, lock button until terms accepted, grey out button until terms checked, disable disable until acknowledged, don't lock button on terms, allow buying without acknowledging first, keep button enabled before terms, include terms in line item properties, record terms acceptance on order, add acknowledgement to line items, show terms accepted on order, allow mixed cart, permit mixed cart, enable mixed cart, let preorders mix with regular items, block mixed cart, disable mixed cart, prevent mixed cart, force separate checkout. Note: Boolean toggles are set via this PATCH: terms.enabled, terms.disable_button_until_acknowledged, terms.include_in_line_item_properties, mixed_cart.allowed — this PATCH is how you turn these on/off, e.g. { terms: { enabled: true } } or { mixed_cart: { allowed: false } }. - [preorders_offers_checkout_add_order_tag](/mcp/#operation-preorders-offers-checkout-add-order-tag-tool): tool - Add a tag to the set applied to orders containing this offer. Aliases: add order tag, add tag to preorder orders, append order tag. - [preorders_offers_checkout_remove_order_tag](/mcp/#operation-preorders-offers-checkout-remove-order-tag-tool): tool - Remove a tag from the set applied to orders containing this offer. Aliases: remove order tag, delete order tag, drop order tag. - [preorders_offers_checkout_set_mixed_cart_error_message](/mcp/#operation-preorders-offers-checkout-set-mixed-cart-error-message-tool): tool - Set the error message shown when a blocked mixed cart reaches checkout. Aliases: set mixed cart error message, change mixed cart message, set mixed cart warning, customize mixed cart error. - [preorders_offers_checkout_set_order_tags](/mcp/#operation-preorders-offers-checkout-set-order-tags-tool): tool - Replace the set of tags applied to orders containing this offer. Aliases: set order tags, replace order tags, change order tags, set tags on preorder orders. - [preorders_offers_checkout_set_terms_text](/mcp/#operation-preorders-offers-checkout-set-terms-text-tool): tool - Set the terms-acceptance text shown next to the checkbox. Aliases: set terms text, change terms text, update terms, change acknowledgement text, set fine print. - [preorders_offers_countdown_update](/mcp/#operation-preorders-offers-countdown-update-tool): tool - Update countdown timer settings on a preorder offer. Aliases: edit countdown, change timer, modify countdown settings, enable countdown, show timer, turn on countdown, enable countdown timer, disable countdown, hide timer, turn off countdown, disable countdown timer, set countdown text, set timer text, change countdown label, set timer label. Note: Deep partial. `countdown.enabled` is toggled via this PATCH (`enabled` true/false); `text` is an alias for `ends_text` — both write the same column, and an explicit `ends_text` wins when both are sent. - [preorders_offers_countdown_read](/mcp/#operation-preorders-offers-countdown-read-tool): tool - Read the countdown timer configuration for a preorder offer. Aliases: get countdown, show timer, view countdown timer, view timer settings, countdown settings. - [preorders_offers_countdown_set_custom_end_date](/mcp/#operation-preorders-offers-countdown-set-custom-end-date-tool): tool - Set the custom end date for the countdown timer. Aliases: set custom end date, set timer end date, change timer deadline. Note: Has no visible effect unless mode is `to_custom_date`. - [preorders_offers_countdown_set_ends_text](/mcp/#operation-preorders-offers-countdown-set-ends-text-tool): tool - Set the text shown next to the countdown timer when the offer is closing. Aliases: set ends text, set timer end text, set 'ends in' text. - [preorders_offers_countdown_set_mode](/mcp/#operation-preorders-offers-countdown-set-mode-tool): tool - Set whether the countdown timer follows the offer's schedule or a custom date. Aliases: set countdown mode, change timer mode, use schedule for timer, use custom date for timer. - [preorders_offers_countdown_set_starts_text](/mcp/#operation-preorders-offers-countdown-set-starts-text-tool): tool - Set the text shown before the countdown timer when the offer hasn't started yet. Aliases: set starts text, set timer pre-launch text, set 'starts in' text. - [preorders_offers_countdown_set_style](/mcp/#operation-preorders-offers-countdown-set-style-tool): tool - Set the countdown timer's visual style (type, colors, border radius). Aliases: set timer style, change timer style, set countdown style, change timer colors. - [preorders_offers_countdown_set_unit_labels](/mcp/#operation-preorders-offers-countdown-set-unit-labels-tool): tool - Set the unit labels for the countdown timer (Days/Hours/Mins/Secs). Aliases: set unit labels, change timer labels, set countdown unit text, change timer unit text. - [preorders_offers_disable](/mcp/#operation-preorders-offers-disable-tool): tool - Disable (pause) a preorder offer. Optionally flip attached variants' inventory policy back to DENY. Aliases: pause, turn off, deactivate, stop offer, end preorder, disable and stop overselling, close out preorder. Note: Variants are left at their existing inventory policy unless `update_inventory_policy: true` is passed. - [preorders_offers_discard](/mcp/#operation-preorders-offers-discard-tool): tool - Discard (soft-delete) a preorder offer. Aliases: delete, remove, archive, trash, soft delete. Note: Recoverable via restore indefinitely. Discarded offers are never hard-deleted. - [preorders_offers_enable](/mcp/#operation-preorders-offers-enable-tool): tool - Enable a preorder offer. Optionally flip attached variants' inventory policy to CONTINUE. Aliases: turn on, activate, launch, go live, start offer. Note: Variants are left at their existing inventory policy unless `update_inventory_policy: true` is passed. - [preorders_offers_integrations_read](/mcp/#operation-preorders-offers-integrations-read-tool): tool - Read integration settings for a preorder offer (POS, B2B). Aliases: get integrations, show integrations, view pos settings, view b2b settings, integration settings. - [preorders_offers_integrations_update](/mcp/#operation-preorders-offers-integrations-update-tool): tool - Update integration settings on a preorder offer. Aliases: edit integrations, change integration settings, modify integrations, enable pos, turn on pos, allow in pos, enable point of sale, disable pos, turn off pos, block from pos, disable point of sale, enable pos skip inventory check, skip inventory check on pos, bypass inventory at pos, allow pos sale without inventory, disable pos skip inventory check, enforce inventory check at pos, stop bypassing inventory at pos, enable b2b, turn on b2b, allow b2b, enable wholesale, disable b2b, turn off b2b, block b2b, disable wholesale. Note: Boolean toggles are set via this PATCH: pos.enabled, pos.skip_inventory_check, b2b.enabled — e.g. { pos: { enabled: false } } or { b2b: { enabled: true } }. - [preorders_offers_inventory_update](/mcp/#operation-preorders-offers-inventory-update-tool): tool - Update inventory settings on a preorder offer. Aliases: edit inventory, change inventory settings, modify inventory, enable continue selling, allow overselling, enable oversell, auto continue selling, auto-apply continue selling on attach, disable continue selling, stop auto continue selling, disable oversell, prevent overselling on attach, enable auto apply continue selling, auto continue selling on attach, auto-flip new variants to continue, apply oversell to new variants, disable auto apply continue selling, stop auto continue selling on attach, don't auto-flip new variants, no oversell on new variants. Note: Deep partial. Setting provider to 'shopify' will force product_variants_source to 'custom' via the model callback. Continue-selling is toggled via this PATCH: `continue_selling.enabled` and `continue_selling.auto_apply_to_new_variants` BOTH map to the single underlying `inventory_policy_auto_enable` flag — the auto-flip-on-attach intent (newly-attached variants get their Shopify inventory_policy flipped to CONTINUE). When both fields are present, auto_apply_to_new_variants wins. Neither field flips EXISTING variants — to flip variants that are already attached, use POST .../products/bulk_toggle_inventory_policy, or pass the update_inventory_policy flag to the offer lifecycle enable/disable actions. - [preorders_offers_inventory_read](/mcp/#operation-preorders-offers-inventory-read-tool): tool - Read the inventory configuration for a preorder offer. Aliases: get inventory settings, show inventory, view inventory policy, view reservation timing, view stock handling. - [preorders_offers_inventory_set_provider](/mcp/#operation-preorders-offers-inventory-set-provider-tool): tool - Set the inventory provider for a preorder offer (stoq or shopify). Aliases: set inventory provider, switch inventory provider, use shopify inventory, use stoq inventory. - [preorders_offers_inventory_set_reservation_timing](/mcp/#operation-preorders-offers-inventory-set-reservation-timing-tool): tool - Set when inventory is reserved (at sale or at fulfillment). Aliases: set reservation timing, reserve on sale, reserve on fulfillment, change inventory reservation, set when inventory is held. - [preorders_offers_limits_read](/mcp/#operation-preorders-offers-limits-read-tool): tool - Read order quantity limits for a preorder offer. Aliases: get limits, show limits, view quantity limits, view order min max, limits. - [preorders_offers_limits_update](/mcp/#operation-preorders-offers-limits-update-tool): tool - Update quantity limits on a preorder offer. Aliases: edit limits, change limits, modify quantity limits, clear max per customer, remove customer limit, no customer limit, unlimited per customer, clear total max, remove total cap, no total limit, uncap total preorders, enable show remaining, show remaining units, show stock left, display quantity remaining, disable show remaining, hide remaining units, hide stock left, stop showing quantity. Note: Deep partial. Toggles and clears are done via this PATCH: clear a limit by sending null — `per_customer.max: null` removes the per-customer limit, `total.max: null` removes the total cap; `display.show_remaining` (true/false) toggles the remaining-units display on the storefront. Note: per_customer.max and total.max are stored config — storefront enforcement of these limits is follow-up work and not live yet. - [preorders_offers_limits_set_max_per_customer](/mcp/#operation-preorders-offers-limits-set-max-per-customer-tool): tool - Set the maximum quantity a single customer can preorder across all their orders. Aliases: set max per customer, set customer limit, limit per customer, maximum per customer, one per customer. Note: Stored config only today — storefront enforcement of the per-customer limit is follow-up work and not live yet. Clear the limit via PATCH .../limits with `per_customer.max: null`. - [preorders_offers_limits_set_max_per_order](/mcp/#operation-preorders-offers-limits-set-max-per-order-tool): tool - Set the maximum quantity a customer can preorder per order. Aliases: set maximum per order, set max quantity, maximum order quantity, set order limit. - [preorders_offers_limits_set_min_per_order](/mcp/#operation-preorders-offers-limits-set-min-per-order-tool): tool - Set the minimum quantity a customer must preorder per order. Aliases: set minimum per order, set min quantity, minimum order quantity, set order minimum. - [preorders_offers_limits_set_total_max](/mcp/#operation-preorders-offers-limits-set-total-max-tool): tool - Set the total quantity that can be preordered across all customers. Aliases: set total max, set total cap, cap total preorders, limit total units, set overall limit. Note: Stored config only today — storefront enforcement of the total cap is follow-up work and not live yet. Clear the cap via PATCH .../limits with `total.max: null`. - [preorders_offers_markets_update](/mcp/#operation-preorders-offers-markets-update-tool): tool - Update market scoping on a preorder offer. Aliases: edit markets, change market scoping, modify markets, enable market scoping, turn on market scoping, scope to markets, enable markets, disable market scoping, turn off market scoping, remove market restrictions, global preorder, enable all markets, apply to all markets, all countries, available everywhere. Note: Deep partial. Scoping is toggled via this PATCH: `enabled` (true/false). The offer applies to ALL markets when scoping is off (`{ "enabled": false }`) or when scoping is on with an empty market list — the serializer compiles applies_to_all_markets from exactly that state. PATCH bodies: all markets → `{ "enabled": true, "market_ids": [] }` (or `{ "enabled": true, "applies_to_all_markets": true }`, which also clears the list); specific markets → `{ "enabled": true, "market_ids": ["gid://shopify/Market/1", ...] }` (GIDs or numeric IDs). For incremental edits keep using add_market / remove_market / set_markets. - [preorders_offers_markets_read](/mcp/#operation-preorders-offers-markets-read-tool): tool - Read market scoping for a preorder offer. Aliases: get markets, show market scoping, view markets, what markets, which countries, market settings. - [preorders_offers_markets_add_market](/mcp/#operation-preorders-offers-markets-add-market-tool): tool - Add a market to the preorder offer's scope. Aliases: add market, include market, add country, extend to market. - [preorders_offers_markets_remove_market](/mcp/#operation-preorders-offers-markets-remove-market-tool): tool - Remove a market from the preorder offer's scope. Aliases: remove market, exclude market, drop market, remove country. - [preorders_offers_markets_set_markets](/mcp/#operation-preorders-offers-markets-set-markets-tool): tool - Replace the set of markets a preorder offer applies to. Aliases: set markets, change markets, restrict to markets, set countries, set regions. - [preorders_offers_payments_read](/mcp/#operation-preorders-offers-payments-read-tool): tool - Read the payment configuration for a preorder offer. Aliases: get payment settings, show payments, view billing, view deposit, view discount, payment options. - [preorders_offers_payments_update](/mcp/#operation-preorders-offers-payments-update-tool): tool - Update payment settings on a preorder offer. Aliases: edit payments, change payment settings, modify billing, change discount, update remaining balance settings, clear discount, remove discount, no discount, stop discount, remove preorder discount, enable auto collect, enable auto charge, auto-charge balance, automatically charge balance, turn on auto collect, disable auto collect, disable auto charge, stop auto charge, turn off auto collect, manual balance collection, enable auto collect on fulfillment, charge on fulfillment, auto charge at ship time, collect balance on ship, disable auto collect on fulfillment, don't charge on fulfillment, turn off charge at ship time, stop collecting on ship. Note: Use SetOptionCopy / EnableOption / DisableOption to edit individual payment options. Boolean toggles are set via this PATCH: remaining_balance.auto_collect, remaining_balance.auto_collect_on_fulfillment — e.g. { remaining_balance: { auto_collect: false } }. Clear the discount via { discount: { type: "no_discount" } } (the stored value is nulled automatically). - [preorders_offers_payments_disable_option](/mcp/#operation-preorders-offers-payments-disable-option-tool): tool - Remove a payment option (full or partial) from the offer. Aliases: disable payment option, remove full payment option, remove partial payment option, stop offering deposit, stop offering full payment. Note: Only valid on full_and_partial offers — an offer must keep at least one payment option. Use set_mode to switch a single-mode offer. - [preorders_offers_payments_enable_option](/mcp/#operation-preorders-offers-payments-enable-option-tool): tool - Add a payment option (full or partial) to the offer. Aliases: enable payment option, add full payment option, add partial payment option, offer both payment options, let customers choose how to pay. Note: Idempotent. Newly added options start from the dashboard defaults — use set_deposit_percent / set_option_copy to fine-tune. Disable with disable_option. - [preorders_offers_payments_set_deposit_percent](/mcp/#operation-preorders-offers-payments-set-deposit-percent-tool): tool - Set the deposit percentage charged at checkout on the partial payment option. Aliases: set deposit percent, set deposit percentage, change deposit amount, set upfront payment percent, change down payment. Note: Requires a partial payment option (mode partial or full_and_partial) — use set_mode first. Percent must be between 1 and 99; 100% upfront is the full payment mode. - [preorders_offers_payments_set_discount](/mcp/#operation-preorders-offers-payments-set-discount-tool): tool - Set the preorder discount. Aliases: set discount, apply discount, change discount, set percentage off, set amount off. - [preorders_offers_payments_set_discount_text](/mcp/#operation-preorders-offers-payments-set-discount-text-tool): tool - Set the discount blurb shown on the offer's payment options. Aliases: set discount text, change discount blurb, set discount message, change discount copy, set savings text. Note: Pass option_type (full | partial) to target one payment option; omit it to apply the text to every option. Supports the {{ discount }} placeholder. - [preorders_offers_payments_set_mode](/mcp/#operation-preorders-offers-payments-set-mode-tool): tool - Switch the offer between full, partial, and full-and-partial payment modes. Aliases: set payment mode, full payment only, partial payment only, deposit only, offer both full and partial payment, change payment options. Note: Idempotent. Collapsing from full_and_partial keeps the surviving option's copy; newly enabled modes start from the dashboard defaults. Use set_deposit_percent and set_option_copy afterwards to fine-tune. - [preorders_offers_payments_set_option_copy](/mcp/#operation-preorders-offers-payments-set-option-copy-tool): tool - Set the merchant-facing copy on a payment option (title, description, discount text). Aliases: set option copy, set partial option copy, set full option copy, change billing title, set payment option text, set deposit option text. - [preorders_offers_products_read](/mcp/#operation-preorders-offers-products-read-tool): tool - Read the products configuration for a preorder offer (source rule + variant summary). Aliases: get products, show linked products, view variants on offer, view product source, what's on this offer. - [preorders_offers_products_update](/mcp/#operation-preorders-offers-products-update-tool): tool - Update the product selection on a preorder offer — set the source rule plus its matching sub-block. Aliases: edit products, change product selection, change variant source, set products, modify products on offer. Note: Delegates to the set_source_to_* actions; switching source resets the variant set. source 'all' requires confirm: true. Only the sub-block matching `source` may be provided. - [preorders_offers_products_add_variants](/mcp/#operation-preorders-offers-products-add-variants-tool): tool - Attach variants to a custom-source preorder offer. Aliases: add variants, attach variants, add products to offer, link variants, include variants. Note: Custom source only. Runs through BulkVariantAdditionService (async). - [preorders_offers_products_bulk_toggle_inventory_policy](/mcp/#operation-preorders-offers-products-bulk-toggle-inventory-policy-tool): tool - Flip the Shopify inventory policy on variants attached to a preorder offer (CONTINUE or DENY). Aliases: flip inventory policy, toggle continue selling on variants, set inventory policy for variants, enable oversell on these variants, disable oversell on these variants. Note: Async via SellingPlans::BulkInventoryPolicyUpdateJob. Omit variant_ids to apply to all attached variants. - [preorders_offers_products_remove_variants](/mcp/#operation-preorders-offers-products-remove-variants-tool): tool - Remove variants from a custom-source preorder offer. Aliases: remove variants, detach variants, remove products from offer, unlink variants, exclude variants. Note: Custom source only. Resets per-variant metafields on Shopify. - [preorders_offers_products_set_collection](/mcp/#operation-preorders-offers-products-set-collection-tool): tool - Change the collection driving a collection-sourced preorder offer. Aliases: change collection, swap collection, use a different collection, update the collection on the offer. Note: Collection-sourced offers only — returns 409 Conflict otherwise. Use set_source_to_collection to switch a non-collection offer to collection source. - [preorders_offers_products_set_excluded_variants](/mcp/#operation-preorders-offers-products-set-excluded-variants-tool): tool - Replace the explicit excluded-variant list for an all-source preorder offer. Aliases: set excluded variants, exclude variants list, block variants from offer. Note: All-source offers only. - [preorders_offers_products_set_exclusion_tag](/mcp/#operation-preorders-offers-products-set-exclusion-tag-tool): tool - Set the exclusion tag for an all-source preorder offer (variants with this tag are excluded). Aliases: set exclusion tag, exclude by tag, set exclude tag. Note: All-source offers only. - [preorders_offers_products_set_source_to_all](/mcp/#operation-preorders-offers-products-set-source-to-all-tool): tool - Switch the offer to apply to every variant in the shop, minus exclusions. Requires confirm: true. Aliases: set source to all, apply to all products, auto-source, every variant, shop-wide preorder. Note: Requires `confirm: true` in the body. Resolution runs async over the entire catalog. - [preorders_offers_products_set_source_to_collection](/mcp/#operation-preorders-offers-products-set-source-to-collection-tool): tool - Switch the offer to a collection-driven variant source. Aliases: set source to collection, use a collection, link to collection, set products from collection, drive variants from collection. Note: Resolution runs asynchronously. New variants added to the collection in Shopify are NOT auto-picked-up — call this action again to refresh. - [preorders_offers_products_set_source_to_custom](/mcp/#operation-preorders-offers-products-set-source-to-custom-tool): tool - Switch the offer to a custom variant list. Optionally seed it with variant IDs. Aliases: set source to custom, use custom variants, custom product list, switch to custom. Note: Variant attachment runs through BulkVariantAdditionService and is async (202 + job_id). - [preorders_offers_products_variants_list](/mcp/#operation-preorders-offers-products-variants-list-tool): tool - List the variants attached to a preorder offer with their per-variant settings, paginated. Aliases: list variants on offer, variants attached to offer, show offer variants, attached variants, offer variant list. - [preorders_offers_products_variants_read](/mcp/#operation-preorders-offers-products-variants-read-tool): tool - Read the per-offer settings of a single variant attached to a preorder offer. Aliases: show variant settings on offer, view per-variant overrides, get variant on offer, variant settings. - [preorders_offers_products_variants_update_settings](/mcp/#operation-preorders-offers-products-variants-update-settings-tool): tool - Set per-offer overrides on an attached variant — shipping text, max preorder count, market-scoped overrides. Aliases: override variant settings, set shipping text for variant, set max count for variant, per-variant overrides. Note: null clears an override; the variant falls back to the offer-level value. market_overrides writes the per-market metafields (market_shipping_text, market_preorder_max_count) keyed by Shopify market GID. - [preorders_offers_restore](/mcp/#operation-preorders-offers-restore-tool): tool - Restore a discarded preorder offer. Aliases: undelete, undiscard, undo delete, bring back. Note: Variant attachments and metafields are not auto-restored. Re-attach via the products capability. - [preorders_offers_schedule](/mcp/#operation-preorders-offers-schedule-tool): tool - Set the schedule window for a preorder offer. Aliases: set schedule, schedule launch, set start date, set end date, schedule offer. Note: Does not auto-enable. Storefront reads the schedule live. - [preorders_offers_shipping_update](/mcp/#operation-preorders-offers-shipping-update-tool): tool - Update shipping settings on a preorder offer. Aliases: edit shipping, change shipping settings, change delivery, change fulfillment, modify shipping, enable fulfillment hold, hold fulfillments, hold preorder fulfillments, turn on fulfillment hold, prevent shipping until released, disable fulfillment hold, release fulfillments, stop holding fulfillments, turn off fulfillment hold, let preorder ship immediately, enable shipping timeline, show shipping timeline, show detailed shipping, turn on timeline, disable shipping timeline, hide shipping timeline, show simplified shipping, turn off timeline, enable split, enable split orders, enable split fulfillments, turn on order splitting, separate preorder from regular, disable split, disable split orders, disable split fulfillments, turn off order splitting, stop separating preorders, enable split hold fulfillments, hold split order fulfillments, hold fulfillments on split order, don't ship split order immediately, disable split hold fulfillments, release split order fulfillments, ship split order immediately, stop holding split order, enable split sequential number, sequential split order numbers, number split orders sequentially, sequential order name for split, disable split sequential number, no sequential split order numbers, stop numbering split orders sequentially. Note: Deep partial. Prefer the intent-bearing actions (set_delivery_*, set_shipping_text, set_split_order_tag, set_split_transaction_gateway) for narrow edits. Toggles are done via this PATCH: `fulfillment.hold` (true/false) holds/releases fulfillment orders containing preorder items; `display.show_shipping_timeline` (true shows the detailed PDP timeline, false the simplified text); `fulfillment.split.enabled` (true/false) turns order splitting on/off (flips both split flags); `fulfillment.split.hold_fulfillments` (true/false) holds the split order's fulfillments; `fulfillment.split.sequential_number` (true/false) gives split orders a sequential order name. - [preorders_offers_shipping_read](/mcp/#operation-preorders-offers-shipping-read-tool): tool - Read shipping settings for a preorder offer. Aliases: get shipping, show shipping, view delivery, view fulfillment, view shipping text, shipping settings. - [preorders_offers_shipping_set_delivery_asap](/mcp/#operation-preorders-offers-shipping-set-delivery-asap-tool): tool - Set delivery to 'as soon as possible' (no specific date or window). Aliases: set delivery asap, ship asap, set delivery to asap, ship as soon as possible. - [preorders_offers_shipping_set_delivery_date](/mcp/#operation-preorders-offers-shipping-set-delivery-date-tool): tool - Set an exact delivery date for the preorder. Aliases: set delivery date, ship on date, set ship date, set exact delivery date. - [preorders_offers_shipping_set_delivery_window](/mcp/#operation-preorders-offers-shipping-set-delivery-window-tool): tool - Set a delivery window in days from checkout (e.g. 'ships within 14 days'). Aliases: set delivery window, ship within days, set delivery in days, set ship window. - [preorders_offers_shipping_set_shipping_text](/mcp/#operation-preorders-offers-shipping-set-shipping-text-tool): tool - Set the customer-facing shipping text shown on the PDP. Aliases: set shipping text, change shipping text, update shipping message, set delivery text, change PDP shipping line. - [preorders_offers_shipping_set_split_order_tag](/mcp/#operation-preorders-offers-shipping-set-split-order-tag-tool): tool - Set the tag applied to split orders on Shopify. Aliases: set split order tag, change split tag, set split order label. - [preorders_offers_shipping_set_split_transaction_gateway](/mcp/#operation-preorders-offers-shipping-set-split-transaction-gateway-tool): tool - Set the payment gateway used for the split order transaction (e.g. 'Prepaid'). Aliases: set split transaction gateway, set split payment gateway, change split order gateway. - [preorders_offers_translations_read](/mcp/#operation-preorders-offers-translations-read-tool): tool - Read every translation override on a preorder offer, plus the full enumeration of translatable field paths. Aliases: get translations, show translations, view translations, list translations, view localized text, i18n, localization. - [preorders_offers_translations_clear_locale](/mcp/#operation-preorders-offers-translations-clear-locale-tool): tool - Remove all translation overrides for one locale on a preorder offer. Aliases: clear locale, remove locale, wipe locale, drop translations for locale, remove all translations for a language. - [preorders_offers_translations_set](/mcp/#operation-preorders-offers-translations-set-tool): tool - Set a single translation override (one locale, one field) on a preorder offer. Aliases: set translation, add translation, translate field, localize a field, set localized text. - [preorders_offers_translations_set_many](/mcp/#operation-preorders-offers-translations-set-many-tool): tool - Set many translation overrides for one locale on a preorder offer, atomically. Aliases: set many translations, translate offer, bulk translate, localize offer, translate to french, add translations. Note: All-or-nothing. Pre-validates every field path before writing. - [preorders_offers_translations_unset](/mcp/#operation-preorders-offers-translations-unset-tool): tool - Remove a translation override (one locale, one field) from a preorder offer. Aliases: unset translation, remove translation, clear translation, delete localized text, remove localized override. - [preorders_offers_unschedule](/mcp/#operation-preorders-offers-unschedule-tool): tool - Clear the schedule window on a preorder offer. Aliases: clear schedule, remove schedule, no schedule, unschedule offer. - [preorders_offers_widget_read](/mcp/#operation-preorders-offers-widget-read-tool): tool - Read the widget configuration for a preorder offer. Aliases: get widget, show widget, view button settings, view badge settings, view disclaimer settings, preorder ui. - [preorders_offers_widget_update](/mcp/#operation-preorders-offers-widget-update-tool): tool - Update any subset of the widget configuration on a preorder offer. Aliases: edit widget, change widget settings, modify widget, update preorder ui, enable badge, show badge, turn on badge, make badge visible, disable badge, hide badge, turn off badge, remove badge, enable disclaimer, show disclaimer, turn on disclaimer, show fine print, show shipping notice, disable disclaimer, hide disclaimer, turn off disclaimer, hide fine print, remove shipping notice, enable custom button colors, use custom button colors, turn on button colors, apply custom colors, disable custom button colors, use theme button colors, turn off button colors, revert to theme colors, enable billing widget, show payment breakdown, show payment widget, turn on billing widget, disable billing widget, hide payment breakdown, hide payment widget, turn off billing widget. Note: Deep partial. Use the intent-bearing widget actions for narrow edits. Boolean toggles are set via this PATCH: badge.enabled, disclaimer.enabled, button.colors.enabled, billing_widget.enabled — e.g. { badge: { enabled: false } }. Clearing a value: send null. - [preorders_offers_widget_set_badge_colors](/mcp/#operation-preorders-offers-widget-set-badge-colors-tool): tool - Set the preorder badge's text and background colors. Aliases: change badge colors, set badge color, customize badge colors, change badge background. - [preorders_offers_widget_set_badge_text](/mcp/#operation-preorders-offers-widget-set-badge-text-tool): tool - Set the preorder badge text. Aliases: change badge text, set badge label, rename badge, change preorder badge text, update badge text. Note: Use enable_badge / disable_badge to control visibility. - [preorders_offers_widget_set_billing_widget_text](/mcp/#operation-preorders-offers-widget-set-billing-widget-text-tool): tool - Set the billing widget's title and description (the PDP payment-breakdown block). Aliases: set billing widget title, set billing widget description, change payment breakdown text, edit billing widget copy. Note: These fields are shared with the first payment option's copy (see payments/set_option_copy). Use enable_billing_widget / disable_billing_widget to control visibility. - [preorders_offers_widget_set_button_colors](/mcp/#operation-preorders-offers-widget-set-button-colors-tool): tool - Set the preorder button's text and background colors (implicitly enables custom colors). Aliases: change button colors, set button color, customize button colors. Note: Setting either color implicitly enables custom colors. Use disable_button_colors to revert to the theme's defaults. - [preorders_offers_widget_set_button_text](/mcp/#operation-preorders-offers-widget-set-button-text-tool): tool - Set the preorder button's call-to-action label. Aliases: change button text, rename button, set button label, change preorder button label, update button text. - [preorders_offers_widget_set_disclaimer_style](/mcp/#operation-preorders-offers-widget-set-disclaimer-style-tool): tool - Set the disclaimer banner's colors and border radius. Aliases: change disclaimer colors, set disclaimer style, style the disclaimer, set disclaimer border radius, change disclaimer background. - [preorders_offers_widget_set_disclaimer_text](/mcp/#operation-preorders-offers-widget-set-disclaimer-text-tool): tool - Set the disclaimer banner text shown under the preorder button. Aliases: change disclaimer text, set disclaimer text, edit disclaimer, change disclaimer message, set shipping disclaimer. Note: Use enable_disclaimer / disable_disclaimer to control visibility. - [preorders_orders_list](/mcp/#operation-preorders-orders-list-tool): tool - List preorder orders in this shop, paginated. Aliases: list preorder orders, show all preorder orders, preorder orders, list orders. - [preorders_orders_read](/mcp/#operation-preorders-orders-read-tool): tool - Read a preorder order's full representation. Aliases: show preorder order, get order, look up order, view preorder order. - [preorders_orders_cancel](/mcp/#operation-preorders-orders-cancel-tool): tool - Cancel a preorder. Optionally refund deposit / balance and notify the customer. Aliases: cancel order, cancel preorder, void preorder, stop this preorder. Note: Does not cancel the Shopify order; sets cancelled_at on the preorder attribution. Use the refund flags for refunds. - [preorders_orders_fulfillment_update](/mcp/#operation-preorders-orders-fulfillment-update-tool): tool - Update fulfillment attributes on a preorder order. Only `hold_reason_note` is writable. Aliases: update fulfillment, edit fulfillment, change hold reason, update hold note. Note: Hold state changes go through release_holds / apply_holds. `all_held`, `any_held`, and `fulfillment_orders` are read-only. Delegates to SetHoldReason; existing holds on Shopify aren't re-written. - [preorders_orders_fulfillment_read](/mcp/#operation-preorders-orders-fulfillment-read-tool): tool - Read the fulfillment hold state and fulfillment-order summary of a preorder order. Aliases: order fulfillment, shipping, hold state, fulfillment hold. - [preorders_orders_fulfillment_apply_holds](/mcp/#operation-preorders-orders-fulfillment-apply-holds-tool): tool - Apply fulfillment holds on the order's fulfillment orders. Idempotent. Aliases: apply holds, add holds to fulfillments, place fulfillments on hold. - [preorders_orders_fulfillment_release_holds](/mcp/#operation-preorders-orders-fulfillment-release-holds-tool): tool - Release fulfillment holds on the order without applying offer-configured tags. Aliases: release holds, release fulfillments without tags, remove fulfillment hold only. Note: Use the top-level `release` action when you want tags applied too. - [preorders_orders_fulfillment_set_hold_reason](/mcp/#operation-preorders-orders-fulfillment-set-hold-reason-tool): tool - Set the hold-reason note that will be used the next time the order is held. Aliases: set hold reason, change hold note, update fulfillment hold note. Note: Updates the note on the first attributed preorder offer. Existing holds on Shopify aren't re-written. - [preorders_orders_hold_fulfillments](/mcp/#operation-preorders-orders-hold-fulfillments-tool): tool - Apply fulfillment holds on the preorder order's fulfillment orders. Aliases: hold order, hold fulfillments, re-hold fulfillments, pause fulfillment, stop the order from shipping. - [preorders_orders_payments_read](/mcp/#operation-preorders-orders-payments-read-tool): tool - Read the deposit, remaining balance, and refund state of a preorder order. Aliases: order payments, deposit, balance, remaining balance, refund. - [preorders_orders_payments_charge_balance](/mcp/#operation-preorders-orders-payments-charge-balance-tool): tool - Charge the remaining balance. `auto` uses the customer's saved payment method; `manual` just marks balance collected. Aliases: charge remaining balance, collect balance, auto-charge balance, take the balance now. Note: `auto` may fail if no saved payment method or declined; check the response or poll status. - [preorders_orders_payments_refund](/mcp/#operation-preorders-orders-payments-refund-tool): tool - Refund the entire preorder (deposit + balance). Aliases: refund order, refund preorder, full refund, give the customer their money back. - [preorders_orders_payments_refund_balance](/mcp/#operation-preorders-orders-payments-refund-balance-tool): tool - Refund the remaining-balance portion of a preorder (only valid after the balance was collected). Aliases: refund balance, refund remaining balance, refund the rest. - [preorders_orders_payments_refund_deposit](/mcp/#operation-preorders-orders-payments-refund-deposit-tool): tool - Refund the deposit portion of a preorder. Aliases: refund deposit, give the deposit back, refund up-front payment. - [preorders_orders_payments_send_collection_url](/mcp/#operation-preorders-orders-payments-send-collection-url-tool): tool - Send the remaining-balance payment-collection URL to the customer. Aliases: send payment link, request balance payment, send payment collection url, ask customer for balance, send collection email. Note: Idempotent — calling twice resends the email with a fresh URL. - [preorders_orders_release](/mcp/#operation-preorders-orders-release-tool): tool - Release the order's fulfillment holds and apply offer-configured order tags. Aliases: release order, release fulfillments, let it ship, unhold order, open fulfillments. Note: Returns 409 if balance hasn't been collected; pass `force: true` to override. - [preorders_orders_split_fulfillment_orders](/mcp/#operation-preorders-orders-split-fulfillment-orders-tool): tool - Split the order's fulfillment orders so preorder items ship separately from regular items. Aliases: split order, separate preorder lines, split fulfillments, separate preorder from regular. - [preorders_orders_tags_read](/mcp/#operation-preorders-orders-tags-read-tool): tool - Read the order tags applied by Stoq. Aliases: order tags, order labels, tag the order. - [preorders_orders_tags_update](/mcp/#operation-preorders-orders-tags-update-tool): tool - Replace the order's tag set. PATCH form of tags/set. Aliases: update order tags, edit order tags, replace order tags. Note: `tags` is replaced wholesale (delegates to tags/set). `applied_by_stoq` and `applied_by_merchant` are read-only. - [preorders_orders_tags_add](/mcp/#operation-preorders-orders-tags-add-tool): tool - Add one or more tags to the Shopify order. Aliases: add order tag, add tag, tag the order, append order tag. - [preorders_orders_tags_remove](/mcp/#operation-preorders-orders-tags-remove-tool): tool - Remove one or more tags from the Shopify order. Aliases: remove order tag, remove tag, untag the order, drop order tag. - [preorders_orders_tags_set](/mcp/#operation-preorders-orders-tags-set-tool): tool - Replace every tag on the Shopify order with the supplied list. Aliases: set order tags, replace order tags, overwrite order tags, reset tags on order. Note: Pass an empty list to clear all tags. Implemented as fetch-current + remove stale + add new on the Shopify side. - [preorders_orders_bulk_cancel](/mcp/#operation-preorders-orders-bulk-cancel-tool): tool - Cancel many preorder orders (max 1000), with optional refund flags. Aliases: bulk cancel, cancel many orders, batch cancel preorders. - [preorders_orders_bulk_release](/mcp/#operation-preorders-orders-bulk-release-tool): tool - Release fulfillments on many preorder orders (max 1000). Aliases: bulk release, release many orders, batch release, release these orders. - [preorders_orders_bulk_send_payment_collection_url](/mcp/#operation-preorders-orders-bulk-send-payment-collection-url-tool): tool - Send payment-collection URLs to many preorder customers (max 1000). Aliases: bulk send payment collection url, request balance from many customers, send payment links in bulk, ask many customers for balance. - [preorders_orders_bulk_set_tags](/mcp/#operation-preorders-orders-bulk-set-tags-tool): tool - Apply tags to many preorder orders in one job (max 1000). Aliases: bulk set tags, tag many orders, batch tag orders, add tags to many orders, remove tags from many orders, replace tags on many orders. Note: `mode` is one of add | remove | replace (default add). `replace` overwrites each order's full tag set. - [preorders_orders_jobs_read](/mcp/#operation-preorders-orders-jobs-read-tool): tool - Check the status of a bulk-order job. Aliases: check bulk order job, poll bulk order job, get order job status. - [preorders_product_variants_list](/mcp/#operation-preorders-product-variants-list-tool): tool - List Shopify variants attached to any preorder offer in this shop. Aliases: list preorder variants, variants in preorder, find variants in preorder offers, preorder variants, all preorder variants. - [preorders_product_variants_read](/mcp/#operation-preorders-product-variants-read-tool): tool - Read a Shopify variant's preorder context: every offer it's in, aggregate counts, and current metafield state. Aliases: show preorder context for variant, look up variant preorders, variant preorder state, get preorder variant, show variant in preorders. - [preorders_product_variants_detach_from_all_offers](/mcp/#operation-preorders-product-variants-detach-from-all-offers-tool): tool - Remove a variant from every preorder offer it's attached to. Customer orders are unaffected. Aliases: remove variant from all preorders, detach from preorder, kick variant out of offers, remove from all offers. Note: Destructive. Same effect as calling Offer::Products::RemoveVariants against every offer the variant is in. - [preorders_product_variants_offers_list_offers](/mcp/#operation-preorders-product-variants-offers-list-offers-tool): tool - List the preorder offers a Shopify variant is attached to. Aliases: which offers is this variant in, find offers for variant, variant's preorder offers, what offers contain this variant. - [preorders_product_variants_recalculate_preorder_count](/mcp/#operation-preorders-product-variants-recalculate-preorder-count-tool): tool - Recompute preorder_count for a variant from active order line items, then push to Shopify. Aliases: recalculate preorder count from orders, fix preorder count, rebuild count, recompute preorder count, fix variant count drift. - [preorders_product_variants_reset_metafields](/mcp/#operation-preorders-product-variants-reset-metafields-tool): tool - Clear all preorder-related Shopify metafields on a variant. Keeps the variant attached to its offers. Aliases: clear preorder metafields, wipe variant preorder data, reset variant metafields, clear variant metafields. Note: Doesn't detach. Next offer settings change will re-write the metafields from current state. - [preorders_product_variants_reset_preorder_count](/mcp/#operation-preorders-product-variants-reset-preorder-count-tool): tool - Hard-reset the preorder_count metafield + DB columns on a variant to zero. Aliases: zero out preorder count, clear preorder count, reset count to zero. Note: Use recalculate_preorder_count for a recompute from real orders; this is a destructive zero. - [preorders_product_variants_sync_metafields](/mcp/#operation-preorders-product-variants-sync-metafields-tool): tool - Force-resync every preorder metafield for a variant from local DB state to Shopify. Aliases: force resync to shopify, push metafields to shopify, refresh shopify metafields, fix shopify metafield drift. Note: Idempotent. Useful when a previous metafield write failed. - [preorders_product_variants_bulk_recalculate_preorder_counts](/mcp/#operation-preorders-product-variants-bulk-recalculate-preorder-counts-tool): tool - Recompute preorder_count for many variants in one job (max 5000). Aliases: recalculate counts for variants, bulk fix preorder counts, recalculate many variants, batch recompute counts. - [preorders_product_variants_bulk_reset_metafields](/mcp/#operation-preorders-product-variants-bulk-reset-metafields-tool): tool - Reset preorder metafields for many variants in one job (max 5000). Aliases: clear metafields for variants, bulk reset variant metafields, wipe metafields for many variants. - [preorders_product_variants_bulk_sync_metafields](/mcp/#operation-preorders-product-variants-bulk-sync-metafields-tool): tool - Force-resync preorder metafields for many variants in one job (max 5000). Aliases: force resync many variants, bulk refresh metafields, push many variants to shopify. - [preorders_product_variants_jobs_read](/mcp/#operation-preorders-product-variants-jobs-read-tool): tool - Check the status of a bulk variant-admin job. Aliases: check bulk variant job status, poll bulk variant job, get variant job status. - [preorders_reports_list](/mcp/#operation-preorders-reports-list-tool): tool - List every available preorder report (name, description, aliases, url). Aliases: reports, list reports, available reports, what reports are there, report catalog. - [preorders_reports_balance_collection_read](/mcp/#operation-preorders-reports-balance-collection-read-tool): tool - Outstanding preorder balances and balance-collection performance metrics. Aliases: outstanding balances, balance collection, who hasn't paid, balance status, payment collection, outstanding payments. - [preorders_reports_balance_collection_export](/mcp/#operation-preorders-reports-balance-collection-export-tool): tool - Async CSV export of the balance-collection report. Aliases: export balance_collection, download outstanding balances, balance collection csv, export who hasn't paid. - [preorders_reports_by_date_read](/mcp/#operation-preorders-reports-by-date-read-tool): tool - Time-series of all preorder metrics at the chosen granularity (day/week/month). Aliases: time series, daily breakdown, trend, over time, preorder trend, show trend. - [preorders_reports_by_date_export](/mcp/#operation-preorders-reports-by-date-export-tool): tool - Async CSV export of the time-series preorder report. Aliases: export by_date, download time series, trend csv. - [preorders_reports_by_offer_read](/mcp/#operation-preorders-reports-by-offer-read-tool): tool - Per-offer breakdown of preorder activity (orders, units, revenue, customers). Aliases: per-offer report, offer performance, which offers are working, compare offers, report by offer. - [preorders_reports_by_offer_export](/mcp/#operation-preorders-reports-by-offer-export-tool): tool - Async CSV export of the per-offer preorder report. Aliases: export by_offer, download by_offer, by offer csv. - [preorders_reports_by_product_read](/mcp/#operation-preorders-reports-by-product-read-tool): tool - Per-product preorder performance, rolled up across variants. Aliases: per-product report, product performance, which products are preordering, report by product. - [preorders_reports_by_product_export](/mcp/#operation-preorders-reports-by-product-export-tool): tool - Async CSV export of the per-product preorder report. Aliases: export by_product, download by_product, by product csv. - [preorders_reports_by_variant_read](/mcp/#operation-preorders-reports-by-variant-read-tool): tool - Per-variant preorder performance for a specific offer. Aliases: per-variant report, variant performance, which variants are selling, variant report. Note: Requires offer_id (or offer_ids[]). Variant-level data without an offer scope isn't supported. - [preorders_reports_by_variant_export](/mcp/#operation-preorders-reports-by-variant-export-tool): tool - Async CSV export of the per-variant preorder report. Aliases: export by_variant, download by_variant, by variant csv. - [preorders_reports_cancellations_read](/mcp/#operation-preorders-reports-cancellations-read-tool): tool - Preorder cancellation metrics with reason and per-offer breakdowns. Aliases: cancellations, refunds, how often do customers cancel, cancellation rate, cancellation report. Note: Reason breakdown requires the cancel_reason field on OrderAttribution. Reasons not yet captured will appear as 'unknown'. - [preorders_reports_cancellations_export](/mcp/#operation-preorders-reports-cancellations-export-tool): tool - Async CSV export of the cancellations report. Aliases: export cancellations, download cancellations, cancellations csv. - [preorders_reports_customers_read](/mcp/#operation-preorders-reports-customers-read-tool): tool - Paginated list of customers with preorder activity in the window. Aliases: customer list, who preordered, preorder customers, customers report, list customers. - [preorders_reports_customers_export](/mcp/#operation-preorders-reports-customers-export-tool): tool - Async CSV export of the customers report. Aliases: export customers, download customers, customers csv. - [preorders_reports_exports_read](/mcp/#operation-preorders-reports-exports-read-tool): tool - Check the status of an async report export and get the download URL when ready. Aliases: check export status, get export, poll export, download url for export, export status. - [preorders_reports_revenue_read](/mcp/#operation-preorders-reports-revenue-read-tool): tool - Preorder revenue over a date window, bucketed by day/week/month. Aliases: revenue, how much money, sales, preorder revenue, how much did we make, what did we earn. - [preorders_reports_revenue_export](/mcp/#operation-preorders-reports-revenue-export-tool): tool - Async CSV export of the preorder revenue report. Aliases: export revenue, download revenue, revenue csv. - [preorders_reports_summary_read](/mcp/#operation-preorders-reports-summary-read-tool): tool - High-level overview of preorder activity over a date window. Aliases: summary, overview, how is preorder doing, preorder summary, dashboard stats, what's happening with preorders. - [preorders_reports_summary_export](/mcp/#operation-preorders-reports-summary-export-tool): tool - Async CSV export of the preorder summary report. Aliases: export summary, download summary, summary csv, export overview. - [generate_storefront_widget](/mcp/#operation-generate-storefront-widget-tool): tool - Generate a ready-to-paste STOQ storefront widget snippet for a variant — a preorder widget/button, a notify-me (back-in-stock) form, or event-tracking listeners. Returns code, not an API call. surface=sdk for headless/Hydrogen (@artossoftware/stoq-sdk); surface=theme for a Shopify theme running the STOQ app embed (window._RestockRocket + Liquid).