Anchor to section titled 'undefined'

pubSubWebhookSubscriptionCreate
mutation

Creates a new Google Cloud Pub/Sub webhook subscription.

Building an app? If you only use app-specific webhooks, you won't need this. App-specific webhook subscriptions specified in your shopify.app.toml may be easier. They are automatically kept up to date by Shopify & require less maintenance. Please read About managing webhook subscriptions.


The type of event that triggers the webhook.

Specifies the input fields for a Google Cloud Pub/Sub webhook subscription.


Was this section helpful?

The list of errors that occurred from executing the mutation.

The webhook subscription that was created.


Was this section helpful?

Examples

Hide code
Copy
mutation pubSubWebhookSubscriptionCreate($topic: WebhookSubscriptionTopic!, $webhookSubscription: PubSubWebhookSubscriptionInput!) {
  pubSubWebhookSubscriptionCreate(topic: $topic, webhookSubscription: $webhookSubscription) {
    webhookSubscription {
      id
      topic
      format
      endpoint {
        __typename
        ... on WebhookPubSubEndpoint {
          pubSubProject
          pubSubTopic
        }
      }
    }
  }
}
curl -X POST \
https://your-development-store.myshopify.com/admin/api/2024-01/graphql.json \
-H 'Content-Type: application/json' \
-H 'X-Shopify-Access-Token: {access_token}' \
-d '{
"query": "mutation pubSubWebhookSubscriptionCreate($topic: WebhookSubscriptionTopic!, $webhookSubscription: PubSubWebhookSubscriptionInput!) { pubSubWebhookSubscriptionCreate(topic: $topic, webhookSubscription: $webhookSubscription) { webhookSubscription { id topic format endpoint { __typename ... on WebhookPubSubEndpoint { pubSubProject pubSubTopic } } } } }",
 "variables": {
    "topic": "ORDERS_CREATE",
    "webhookSubscription": {
      "pubSubProject": "my-gcp-project",
      "pubSubTopic": "my-gcp-topic",
      "format": "JSON"
    }
  }
}'
const { admin } = await authenticate.admin(request);

const response = await admin.graphql(
  `#graphql
  mutation pubSubWebhookSubscriptionCreate($topic: WebhookSubscriptionTopic!, $webhookSubscription: PubSubWebhookSubscriptionInput!) {
    pubSubWebhookSubscriptionCreate(topic: $topic, webhookSubscription: $webhookSubscription) {
      webhookSubscription {
        id
        topic
        format
        endpoint {
          __typename
          ... on WebhookPubSubEndpoint {
            pubSubProject
            pubSubTopic
          }
        }
      }
    }
  }`,
  {
    variables: {
      "topic": "ORDERS_CREATE",
      "webhookSubscription": {
        "pubSubProject": "my-gcp-project",
        "pubSubTopic": "my-gcp-topic",
        "format": "JSON"
      }
    },
  },
);

const data = await response.json();
session = ShopifyAPI::Auth::Session.new(
  shop: "your-development-store.myshopify.com",
  access_token: access_token
)
client = ShopifyAPI::Clients::Graphql::Admin.new(
  session: session
)

query = <<~QUERY
  mutation pubSubWebhookSubscriptionCreate($topic: WebhookSubscriptionTopic!, $webhookSubscription: PubSubWebhookSubscriptionInput!) {
    pubSubWebhookSubscriptionCreate(topic: $topic, webhookSubscription: $webhookSubscription) {
      webhookSubscription {
        id
        topic
        format
        endpoint {
          __typename
          ... on WebhookPubSubEndpoint {
            pubSubProject
            pubSubTopic
          }
        }
      }
    }
  }
QUERY

variables = {
  "topic": "ORDERS_CREATE",
  "webhookSubscription": {
    "pubSubProject": "my-gcp-project",
    "pubSubTopic": "my-gcp-topic",
    "format": "JSON"
  }
}

response = client.query(query: query, variables: variables)
const client = new shopify.clients.Graphql({session});
const data = await client.query({
  data: {
    "query": `mutation pubSubWebhookSubscriptionCreate($topic: WebhookSubscriptionTopic!, $webhookSubscription: PubSubWebhookSubscriptionInput!) {
      pubSubWebhookSubscriptionCreate(topic: $topic, webhookSubscription: $webhookSubscription) {
        webhookSubscription {
          id
          topic
          format
          endpoint {
            __typename
            ... on WebhookPubSubEndpoint {
              pubSubProject
              pubSubTopic
            }
          }
        }
      }
    }`,
    "variables": {
      "topic": "ORDERS_CREATE",
      "webhookSubscription": {
        "pubSubProject": "my-gcp-project",
        "pubSubTopic": "my-gcp-topic",
        "format": "JSON"
      }
    },
  },
});
use Shopify\Clients\Graphql;

$client = new Graphql("your-development-store.myshopify.com", $accessToken);
$query = <<<QUERY
  mutation pubSubWebhookSubscriptionCreate($topic: WebhookSubscriptionTopic!, $webhookSubscription: PubSubWebhookSubscriptionInput!) {
    pubSubWebhookSubscriptionCreate(topic: $topic, webhookSubscription: $webhookSubscription) {
      webhookSubscription {
        id
        topic
        format
        endpoint {
          __typename
          ... on WebhookPubSubEndpoint {
            pubSubProject
            pubSubTopic
          }
        }
      }
    }
  }
QUERY;

$variables = [
  "topic" => "ORDERS_CREATE",
  "webhookSubscription" => [
    "pubSubProject" => "my-gcp-project",
    "pubSubTopic" => "my-gcp-topic",
    "format" => "JSON",
  ],
];

$response = $client->query(["query" => $query, "variables" => $variables]);
Hide code
Input variables
Copy
{
  "topic": "ORDERS_CREATE",
  "webhookSubscription": {
    "pubSubProject": "my-gcp-project",
    "pubSubTopic": "my-gcp-topic",
    "format": "JSON"
  }
}
Hide code
Response
JSON
{
  "pubSubWebhookSubscriptionCreate": {
    "webhookSubscription": {
      "id": "gid://shopify/WebhookSubscription/7768084096",
      "topic": "ORDERS_CREATE",
      "format": "JSON",
      "endpoint": {
        "__typename": "WebhookPubSubEndpoint",
        "pubSubProject": "my-gcp-project",
        "pubSubTopic": "my-gcp-topic"
      }
    }
  }
}