✨Discover storytelling in the AI age with Pixar's Matthew Luhn at Sanity Connect, May 8th—register now

Getting Shopify webhook to work with sanity but the function in the Netlify environment catches an error.

2 replies
Last updated: Nov 18, 2020
Hello! I'm trying to get a Shopify webhook to work with sanity, using a Netlify environment and a Gatsby frontend. This is from a Github repo from lucasvocos. So far everything is connected and everything deploys fine but when I use Shopify to either send a test request or update a product, the function in the Netlify environment catches an error. I'm pretty sure Netlify has all the permissions and variables it needs. Function and error posted below.

https://github.com/lucasvocos/gatsby-sanity-shopify/blob/main/web/functions/shopify.js
I believe the error comes from line #56 in the function: How can I debug this?

client
      .transaction()
      .createIfNotExists(product)
      .patch(data.id.toString(), patch => patch.set(product))
      .commit()
ERROR:

Sanity error 4: ClientError: The mutation(s) failed: mutation failed on document "788032119674292900": Insufficient permissions; permission "create" required
    at onResponse (/var/task/src/node_modules/@sanity/client/lib/http/request.js:27:13)
    at /var/task/src/node_modules/get-it/lib-node/util/middlewareReducer.js:10:22
    at Array.reduce (<anonymous>)
    at applyMiddleware (/var/task/src/node_modules/get-it/lib-node/util/middlewareReducer.js:9:29)
    at onResponse (/var/task/src/node_modules/get-it/lib-node/index.js:81:22)
    at /var/task/src/node_modules/get-it/lib-node/index.js:48:55
    at callback (/var/task/src/node_modules/get-it/lib-node/request/node-request.js:57:46)
    at /var/task/src/node_modules/get-it/lib-node/request/node-request.js:141:14
    at DestroyableTransform.<anonymous> (/var/task/src/node_modules/simple-concat/index.js:7:13)
    at Object.onceWrapper (events.js:420:28) {
  response: {
    body: { error: [Object] },
    url: '***************************************',
    method: 'POST',
    headers: {
      'content-type': 'application/json; charset=utf-8',
      'content-length': '349',
      'x-sanity-shard': '*********************',
      'x-served-by': '*************',
      date: '********************',
      vary: 'Origin',
      xkey: 'project-************, project-******************',
      via: '1.1 google',
      'alt-svc': 'clear',
      connection: 'close'
    },
    statusCode: 403,
    statusMessage: 'Forbidden'
  }

Nov 17, 2020, 11:57 PM
The error looks to be coming from the promise after the client.commit() on line #61
Nov 18, 2020, 1:23 AM
I solved it. Whoooops.
Nov 18, 2020, 2:55 AM

Sanity– build remarkable experiences at scale

Sanity is a modern headless CMS that treats content as data to power your digital business. Free to get started, and pay-as-you-go on all plans.

Was this answer helpful?