List signups
API v2 is in public beta: endpoints and fields can change before general availability. See the changelog
/back_in_stock/signupsCosts 1 rate-limit point · Rate limits
List back-in-stock signups (the waitlist), newest first, with the dashboard's waitlist filters.
status is pending (not notified yet) or notified; from/to are shop-local days matched against the signup date for pending and the notified date for notified. title and sku match the product title or SKU. without_orders keeps notified signups that led to no order. query matches part of the signup's or customer's email or phone, or the customer's name. Notified signups are ordered by notified date. source is where the signup came from (restock-rocket-extension is the storefront form; restock-rocket-extension-resubscribe is Quick Resubscribe). product_deleted and variant_deleted mark rows whose product or variant was deleted on Shopify.
Also searched aslist signupswaitlistshow the waitlistnotify me listwho's waitingback in stock signupslist waitlist entriesrestock signupscustomers waiting for restock
Query parameters
statusstringOne ofpendingnotifiedshopify_market_idsarrayshopify_product_idstringshopify_variant_idstringcustomer_idstringtitlestringskustringwithout_ordersstringfromstringtostringquerystringpagestringper_pagestring
Returns
signupsarray of objectsShow 20 child attributesHide child attributes
idstringExample:5f0c2a9e-3b1d-4c8e-9a51-2d7e6b1f0a42channelstringExample:emailcontactstringExample:john@example.comquantityintegerExample:2shopify_product_idstringExample:gid://shopify/Product/8784906035384shopify_variant_idstringExample:gid://shopify/ProductVariant/47284734423096product_titlestringExample:Trail Shoevariant_titlestringExample:Blue / MediumskustringExample:TS-BLU-Mshopify_market_idanycustomer_idstringExample:8b6f1e2a-0c4d-4f7a-b1e3-9d2c5a7f6e10customer_namestringExample:John Doeaccepts_marketingbooleanExample:falsecustomer_unsubscribed_atanycustomer_bounce_countintegerExample:0optin_confirmedanyunsubscribed_atanynotifications_countintegerExample:0notified_atanycreated_atstringExample:2026-06-25T13:45:30Z
metaobjectShow 4 child attributesHide child attributes
total_countintegerExample:147pageintegerExample:1per_pageintegerExample:50total_pagesintegerExample:3
Errors
Missing or invalid X-Auth-Token.
The request failed validation.
Rate limited: cost-weighted per token (read 1, write 2; 360 points / 60s). Check Retry-After.
Every error has the same shape: see Errors.
curl "https://app.stoqapp.com/api/v2/external/back_in_stock/signups" \
-H "X-Auth-Token: $STOQ_API_KEY"const res = await fetch("https://app.stoqapp.com/api/v2/external/back_in_stock/signups", {
headers: {
"X-Auth-Token": process.env.STOQ_API_KEY,
},
});
const data = await res.json();import os
import requests
res = requests.get(
"https://app.stoqapp.com/api/v2/external/back_in_stock/signups",
headers={"X-Auth-Token": os.environ["STOQ_API_KEY"]},
)
data = res.json()require "net/http"
require "json"
uri = URI("https://app.stoqapp.com/api/v2/external/back_in_stock/signups")
req = Net::HTTP::Get.new(uri, "X-Auth-Token" => ENV["STOQ_API_KEY"])
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body)curl "https://app.stoqapp.com/api/v2/external/back_in_stock/signups?status=pending&shopify_market_ids=gid%3A%2F%2Fshopify%2FMarket%2F12345&shopify_product_id=78000000001" \
-H "X-Auth-Token: $STOQ_API_KEY"const res = await fetch("https://app.stoqapp.com/api/v2/external/back_in_stock/signups?status=pending&shopify_market_ids=gid%3A%2F%2Fshopify%2FMarket%2F12345&shopify_product_id=78000000001", {
headers: {
"X-Auth-Token": process.env.STOQ_API_KEY,
},
});
const data = await res.json();import os
import requests
res = requests.get(
"https://app.stoqapp.com/api/v2/external/back_in_stock/signups?status=pending&shopify_market_ids=gid%3A%2F%2Fshopify%2FMarket%2F12345&shopify_product_id=78000000001",
headers={"X-Auth-Token": os.environ["STOQ_API_KEY"]},
)
data = res.json()require "net/http"
require "json"
uri = URI("https://app.stoqapp.com/api/v2/external/back_in_stock/signups?status=pending&shopify_market_ids=gid%3A%2F%2Fshopify%2FMarket%2F12345&shopify_product_id=78000000001")
req = Net::HTTP::Get.new(uri, "X-Auth-Token" => ENV["STOQ_API_KEY"])
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body){
"signups": [
{
"id": "5f0c2a9e-3b1d-4c8e-9a51-2d7e6b1f0a42",
"channel": "email",
"contact": "john@example.com",
"quantity": 2,
"shopify_product_id": "gid://shopify/Product/8784906035384",
"shopify_variant_id": "gid://shopify/ProductVariant/47284734423096",
"product_title": "Trail Shoe",
"variant_title": "Blue / Medium",
"sku": "TS-BLU-M",
"shopify_market_id": null,
"customer_id": "8b6f1e2a-0c4d-4f7a-b1e3-9d2c5a7f6e10",
"customer_name": "John Doe",
"accepts_marketing": false,
"customer_unsubscribed_at": null,
"customer_bounce_count": 0,
"optin_confirmed": null,
"unsubscribed_at": null,
"notifications_count": 0,
"notified_at": null,
"created_at": "2026-06-25T13:45:30Z"
}
],
"meta": {
"total_count": 147,
"page": 1,
"per_page": 50,
"total_pages": 3
}
}{
"errors": [
"Invalid API key"
],
"code": "auth_invalid",
"details": [
{
"code": "auth_invalid",
"message": "Invalid API key",
"path": null,
"value": null,
"expected": null
}
]
}{
"errors": [
"name is required"
],
"code": "validation_failed",
"details": [
{
"code": "validation_failed",
"message": "name is required",
"path": null,
"value": null,
"expected": null
}
]
}{
"errors": [
"Rate limit exceeded"
],
"code": "rate_limited",
"details": [
{
"code": "rate_limited",
"message": "Rate limit exceeded",
"path": null,
"value": null,
"expected": null
}
]
}