Admin block on company detail page won't stay pinned after refresh

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

  1. Add a UI extension targeting admin.company-details.block.render to your app and deploy.
  2. Open a Company detail page in admin.
  3. Click Customize → add the block to the page.
  4. Capture the network request to AddSlotEntity (operation name in the URL).
  5. Hard-refresh the page.
  6. 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 slots array on success, OR
  • Return a userErrors payload explaining the failure (currently silent).

Hi @jeroen.slor - Thanks for the report. A fix is rolling out ASAP

This should now be fixed. Please let us know if you see anything else!

Just tested and indeed, it’s fixed, thanks!