When a merchant adds an admin block extension targeted at admin.company-details.block.render to a Company detail page, the AddSlotEntity GraphQL mutation succeeds (HTTP 200) but the response shows the slot was not persisted (slots: []). On page refresh, the block is no longer present and must be re-added every session.
The identical operation against admin.collection-details.block.render (ownerType COLLECTION) persists correctly with the same request shape. Differs only by ownerType enum value.
Environment
- Shopify Plus (B2B enabled)
- App API version
2026-01 - Reproducer: any company detail page on any Shopify B2B store running an admin block extension on this target.
Reproduction
- Add a UI extension targeting
admin.company-details.block.renderto your app and deploy. - Open a Company detail page in admin.
- Click Customize → add the block to the page.
- Capture the network request to
AddSlotEntity(operation name in the URL). - Hard-refresh the page.
- Observe: the block is gone, requires re-adding via Customize.
Evidence
Side-by-side request/response captures from a single store.
COLLECTION (works correctly)
Request:
{
"operationName": "AddSlotEntity",
"variables": {
"entityId": "019d4448-9008-7ccc-acd0-e56531ab71bf",
"slot": "sink",
"ownerType": "COLLECTION"
}
}
Response (HTTP 200):
{
"data": {
"resourceSlotEntityAdd": {
"resourceSlotEntities": {
"ownerType": "COLLECTION",
"slots": [
{
"slot": "sink",
"entities": [
{
"entityType": "UI_EXTENSION",
"entityIdentifier": "019d4448-9008-7ccc-acd0-e56531ab71bf"
}
]
}
]
}
}
}
}
Block persists across refresh. ✓
COMPANY (silently fails)
Request:
{
"operationName": "AddSlotEntity",
"variables": {
"entityId": "019d296a-7f8d-7f4d-be70-6bfe18d23f17",
"slot": "sink",
"ownerType": "COMPANY"
}
}
Response (HTTP 200):
{
"data": {
"resourceSlotEntityAdd": {
"resourceSlotEntities": {
"ownerType": "COMPANY",
"slots": []
}
}
}
}
Note: no userErrors, status 200, but slots is empty. Block does not persist; required to re-add via Customize after every refresh. ✗
Expected behaviour
AddSlotEntity with ownerType: "COMPANY" should persist the slot entity identically to the COLLECTION variant. Either:
- Return a populated
slotsarray on success, OR - Return a
userErrorspayload explaining the failure (currently silent).