All guides

Webhooks guide

Test Shopify webhooks with a persistent HTTPS endpoint

Shopify CLI can deliver a sample topic payload directly to a public HTTPS URL. A capture-enabled PNTR hostname records the request so you can inspect Shopify's headers and payload before your application handler exists.

Explore PNTR's online webhook tester

Shopify CLI

shopify app webhook trigger \
  --api-version=YOUR_API_VERSION \
  --address=https://yourname.pntr.dev/shopify \
  --topic=orders/create

Setup

  1. 1

    Create a capture hostname

    Create a PNTR subdomain with the webhook flow and use a provider-specific path such as https://yourname.pntr.dev/shopify. Capture must remain enabled on that hostname.

  2. 2

    Choose the topic and API version

    Pick a topic your app actually consumes, such as orders/create, and use the API version from your Shopify app configuration. Topic availability and payload shape depend on that version.

  3. 3

    Trigger a sample delivery

    Run Shopify CLI's app webhook trigger command with the PNTR URL as the address. The CLI sample is useful for inspecting shape, but it does not prove that an installed shop subscription is configured correctly.

  4. 4

    Inspect Shopify metadata

    Open the PNTR request log and inspect X-Shopify-Topic, X-Shopify-Webhook-Id, X-Shopify-API-Version, X-Shopify-Hmac-Sha256, and the JSON body.

  5. 5

    Run an end-to-end shop test

    After your real handler is ready, perform the corresponding action in a development shop. That verifies the subscription, permissions, delivery, signature validation, and application behavior together.

Before you ship

Shopify CLI sample deliveries use a fixed sample payload, are not retried, and do not validate your webhook subscription. Verify X-Shopify-Hmac-Sha256 from the raw request body in the final application endpoint.

Primary documentation