Settings
Talking to Shopify…
Bunnasia Thailand · Bunnasia Thailand · sales invoices → Shopify orders
Settings
Talking to Shopify…
Connect
Create Outpost in the Shopify Dev Dashboard, install it on this store, then connect. Live stores use OAuth. Dev Dashboard stores can use Client ID and Client secret. Outpost locks Consignment Pool.
Allocating to a shop writes available qty at Consignment Pool. If Sumtracker shows that location empty, push shop floors now, and set Consignment Pool to Shopify-master in Sumtracker so it copies Shopify instead of overwriting it.
Bunnasia Thailand is connected · token …a14a
Location locked: Consignment Pool. Physical storefront and fulfill-online stay off.
https://shopify.dev/apps/default-app-home— that is correct for Outpost until Railway is live. Do not use 127.0.0.1 as the App URL. Webhooks API 2026-10. Scopes read_products,read_inventory,write_inventory,read_locations,read_orders,write_orders,read_draft_orders,write_draft_orders,read_customers,write_customers. Allowed redirection URLs (add every line, no trailing slash): https://outpost-bunnasia-th-production.up.railway.app/api/shopify/auth/callbackhttps://thailand.corebytetechnology.com/api/shopify/auth/callbackhttp://127.0.0.1:43148/api/shopify/auth/callbackConnecting with Client ID and secret does not use redirects. Redirects are only for Install on store (OAuth). They must match exactly, with no trailing slash.
Shopify stopped creating these on 1 Jan 2026. Use this only if you already have an old Admin API token.
Import from Shopify on Catalog. Auto-import adds in-stock variants that are not in the ledger yet, including products that come back into stock. Turn it off if you only want products you pick yourself.
One git repo. Bunnasia is the source of truth; the same commit updates Bunnasia Thailand and the App Store listing.
OUTPOST_TENANT=thailand SHOPIFY_STORE_DOMAIN=your-store.myshopify.com SHOPIFY_CLIENT_ID= SHOPIFY_CLIENT_SECRET= SHOPIFY_APP_URL=https://thailand.corebytetechnology.com SHOPIFY_API_VERSION=2026-10 SHOPIFY_WEBHOOK_SECRET= SHOPIFY_CONSIGNMENT_LOCATION_ID= SHOPIFY_CONSIGNMENT_LOCATION_NAME=Consignment Pool DATA_PATH=/data/store.json
Without keys, receive / allocate / sales invoice still run against the ledger and write a mock Shopify log. A sales invoice is an orders#create with inventory pulled from the pooled location.
inventoryAdjustQuantities
Shopify liveOct 26, 5:21 AM{
"request": {
"location": "Consignment Pool",
"sku": "7230042",
"delta": 6,
"reason": "Allocate to BM Grocery Bangrak"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:21 AM{
"request": {
"location": "Consignment Pool",
"sku": "4915372",
"delta": 6,
"reason": "Allocate to BM Grocery Bangrak"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify live{
"request": {
"location": "Consignment Pool",
"sku": "3566824",
"delta": 6,
"reason": "Allocate to BM Grocery Bangrak"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:19 AM{
"request": {
"location": "Consignment Pool",
"sku": "4692314",
"delta": 6,
"reason": "Allocate TF-1 to BM Grocery Lamai"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:19 AM{
"request": {
"location": "Consignment Pool",
"sku": "3566824",
"delta": 12,
"reason": "Allocate TF-1 to BM Grocery Lamai"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:19 AM{
"request": {
"location": "Consignment Pool",
"sku": "7686486",
"delta": 12,
"reason": "Allocate TF-1 to BM Grocery Lamai"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:19 AM{
"request": {
"location": "Consignment Pool",
"sku": "4915372",
"delta": 12,
"reason": "Allocate TF-1 to BM Grocery Lamai"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:19 AM{
"request": {
"location": "Consignment Pool",
"sku": "9300644706872",
"delta": 12,
"reason": "Allocate TF-1 to BM Grocery Lamai"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:19 AM{
"request": {
"location": "Consignment Pool",
"sku": "7230042",
"delta": 12,
"reason": "Allocate TF-1 to BM Grocery Lamai"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:19 AM{
"request": {
"location": "Consignment Pool",
"sku": "9310881915340",
"delta": 6,
"reason": "Allocate TF-1 to BM Grocery Lamai"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:19 AM{
"request": {
"location": "Consignment Pool",
"sku": "9151344",
"delta": 7,
"reason": "Allocate TF-1 to BM Grocery Lamai"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:19 AM{
"request": {
"location": "Consignment Pool",
"sku": "9151559",
"delta": 7,
"reason": "Allocate TF-1 to BM Grocery Lamai"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:19 AM{
"request": {
"location": "Consignment Pool",
"sku": "8481558",
"delta": 5,
"reason": "Allocate TF-1 to BM Grocery Lamai"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:19 AM{
"request": {
"location": "Consignment Pool",
"sku": "1314682",
"delta": 5,
"reason": "Allocate TF-1 to BM Grocery Lamai"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:19 AM{
"request": {
"location": "Consignment Pool",
"sku": "1314693",
"delta": 5,
"reason": "Allocate TF-1 to BM Grocery Lamai"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:19 AM{
"request": {
"location": "Consignment Pool",
"sku": "2734457",
"delta": 6,
"reason": "Allocate TF-1 to BM Grocery Lamai"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:19 AM{
"request": {
"location": "Consignment Pool",
"sku": "8638241",
"delta": 5,
"reason": "Allocate TF-1 to BM Grocery Lamai"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:19 AM{
"request": {
"location": "Consignment Pool",
"sku": "5591888",
"delta": 5,
"reason": "Allocate TF-1 to BM Grocery Lamai"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:19 AM{
"request": {
"location": "Consignment Pool",
"sku": "92309839057998",
"delta": 6,
"reason": "Allocate TF-1 to BM Grocery Lamai"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:19 AM{
"request": {
"location": "Consignment Pool",
"sku": "1156730",
"delta": 6,
"reason": "Allocate TF-1 to BM Grocery Lamai"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:19 AM{
"request": {
"location": "Consignment Pool",
"sku": "3448351",
"delta": 6,
"reason": "Allocate TF-1 to BM Grocery Lamai"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:19 AM{
"request": {
"location": "Consignment Pool",
"sku": "2090900",
"delta": 6,
"reason": "Allocate TF-1 to BM Grocery Lamai"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:19 AM{
"request": {
"location": "Consignment Pool",
"sku": "5196840",
"delta": 6,
"reason": "Allocate TF-1 to BM Grocery Lamai"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:19 AM{
"request": {
"location": "Consignment Pool",
"sku": "3990736",
"delta": 6,
"reason": "Allocate TF-1 to BM Grocery Lamai"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:19 AM{
"request": {
"location": "Consignment Pool",
"sku": "5555636",
"delta": 6,
"reason": "Allocate TF-1 to BM Grocery Lamai"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:19 AM{
"request": {
"location": "Consignment Pool",
"sku": "5544345",
"delta": 6,
"reason": "Allocate TF-1 to BM Grocery Lamai"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:18 AM{
"request": {
"location": "Consignment Pool",
"sku": "4692314",
"delta": 6,
"reason": "Allocate TF-1 to BM Grocery Bangrak"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:18 AM{
"request": {
"location": "Consignment Pool",
"sku": "3566824",
"delta": 6,
"reason": "Allocate TF-1 to BM Grocery Bangrak"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:18 AM{
"request": {
"location": "Consignment Pool",
"sku": "7686486",
"delta": 12,
"reason": "Allocate TF-1 to BM Grocery Bangrak"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:18 AM{
"request": {
"location": "Consignment Pool",
"sku": "4915372",
"delta": 6,
"reason": "Allocate TF-1 to BM Grocery Bangrak"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:18 AM{
"request": {
"location": "Consignment Pool",
"sku": "9300644706872",
"delta": 12,
"reason": "Allocate TF-1 to BM Grocery Bangrak"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:18 AM{
"request": {
"location": "Consignment Pool",
"sku": "7230042",
"delta": 6,
"reason": "Allocate TF-1 to BM Grocery Bangrak"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:18 AM{
"request": {
"location": "Consignment Pool",
"sku": "9310881915340",
"delta": 6,
"reason": "Allocate TF-1 to BM Grocery Bangrak"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:18 AM{
"request": {
"location": "Consignment Pool",
"sku": "9151344",
"delta": 7,
"reason": "Allocate TF-1 to BM Grocery Bangrak"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:18 AM{
"request": {
"location": "Consignment Pool",
"sku": "9151559",
"delta": 7,
"reason": "Allocate TF-1 to BM Grocery Bangrak"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:18 AM{
"request": {
"location": "Consignment Pool",
"sku": "8481558",
"delta": 5,
"reason": "Allocate TF-1 to BM Grocery Bangrak"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:18 AM{
"request": {
"location": "Consignment Pool",
"sku": "1314682",
"delta": 5,
"reason": "Allocate TF-1 to BM Grocery Bangrak"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:18 AM{
"request": {
"location": "Consignment Pool",
"sku": "1314693",
"delta": 5,
"reason": "Allocate TF-1 to BM Grocery Bangrak"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:18 AM{
"request": {
"location": "Consignment Pool",
"sku": "2734457",
"delta": 6,
"reason": "Allocate TF-1 to BM Grocery Bangrak"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}inventoryAdjustQuantities
Shopify liveOct 26, 5:18 AM{
"request": {
"location": "Consignment Pool",
"sku": "8638241",
"delta": 5,
"reason": "Allocate TF-1 to BM Grocery Bangrak"
},
"response": {
"error": "InventoryChangeInput must include the following argument: changeFromQuantity."
}
}