Cannot get publication name and app handle without deprecated fields

I want to get “online store” publictaion id, and I try to request graphql with 2025-10 version

query MyQuery {
  publications(first: 1) {
    nodes {
      id
      name
      app {
        id
        handle
      }
      catalog {
        id
        status
        title
        ... on AppCatalog {
          id
          status
          title
        }
      }
    }
  }
}

I got the value

{
  "data": {
    "publications": {
      "nodes": [
        {
          "id": "gid://shopify/Publication/77327433900",
          "name": "Online Store",
          "app": {
            "id": "gid://shopify/App/580111",
            "handle": "online_store"
          },
          "catalog": null
        }
      ]
    }
  },
  "extensions": {
    "cost": {
      "requestedQueryCost": 5,
      "actualQueryCost": 5,
      "throttleStatus": {
        "maximumAvailable": 2000,
        "currentlyAvailable": 1995,
        "restoreRate": 100
      }
    }
  }
}

But name and app are marked “deprecated”, and suggest to use “catalog”, but catalog is null.

The name already has a post, but no solution:

Suggested replacement for deprecated publication.name is not implemented - GraphQL Admin API Troubleshooting - Shopify Developer Community Forums

Hey @zhlong, the publication ID for the online store above would be "id": "gid://shopify/Publication/77327433900". As for the catalog, is there something specific you’re needing from it that isn’t returned? I want to make sure I fully understand the issue here.

@KyleG-Shopify

I want to get the online store publication id, so I try to use

query MyQuery {
  publications(first: 1) {
    nodes {
      id
      name
      app {
        id
        handle
      }
    }
  }
}

The app is for detetmining the publication is Online Store or not. The document say app is Deprecated, Use AppCatalog.apps instead.

So I chang to

query MyQuery {
  publications(first: 1) {
    nodes {
      id
      catalog {
        id
        status
        title
        publication {
          id
        }
        ... on AppCatalog {
          id
          status
          title
        }
      }
    }
  }
}

But I got the null value "catalog": null, I need something like catalog.publication.id to get online store publication id.

The catalog field works when you add the catalogType: APP filter to your publications query.

Try this updated query to identify your Online Store publication:

{
  publications(first: 10, catalogType: APP) {
    nodes {
      id
      catalog {
        id
        title
        ... on AppCatalog {
          id
          title
        }
      }
    }
  }
}

This will return publications with their catalog information, where you can identify the Online Store by the catalog title. The catalog titles typically follow the pattern “Channel Catalog [ID] for Online Store” or similar descriptive names that clearly identify the sales channel.

You can also filter by other catalog types like MARKET for international catalogs or COMPANY_LOCATION for B2B catalogs when needed.

@KyleG-Shopify

Cool, I can got the id now. But the catalog title has no something like “for Online Store“, only “Channel Catalog [id] [uuid]“, so the “catalog.apps.nodes[0].handle“ is needed to determine whether online store or not.

query MyQuery {
  publications(first: 1, catalogType: APP) {
    nodes {
      id
      catalog {
        id
        status
        title
        ... on AppCatalog {
          id
          status
          title
          apps(first: 1) {
            nodes {
              title
              handle
            }
          }
        }
      }
    }
  }
}

And I can got the result.

{
  "data": {
    "publications": {
      "nodes": [
        {
          "id": "gid://shopify/Publication/77327433900",
          "catalog": {
            "id": "gid://shopify/AppCatalog/17908498604",
            "status": "ACTIVE",
            "title": "Channel Catalog 77327433900 acff4457-af36-4f4f-99c1-3e469da29254",
            "apps": {
              "nodes": [
                {
                  "title": "Online Store",
                  "handle": "online_store"
                }
              ]
            }
          }
        }
      ]
    }
  },
  "extensions": {
    "cost": {
      "requestedQueryCost": 7,
      "actualQueryCost": 7,
      "throttleStatus": {
        "maximumAvailable": 2000,
        "currentlyAvailable": 1993,
        "restoreRate": 100
      }
    }
  }
}

But it’s confusing that catalogType=null is not saying that filter and show ALL catalog.

Also confusing catalogType=null and catalogType=APP will filter out same publications id, but only drop catalog.