location is failed to register webhook.

Nishant_kumar10
Tourist
6 0 1

Hi Everyone,

I am trying to aceess location through webhook, but no idea why it is not able to register.  Although the same code is working for other Webhooks and scopes or events like ('read_inventory',  'write_inventory'  OR   'read_products', 'write_products',)  BUT for   'read_locations'    it is not working-------------------------------------------

 

I searched about it so many places but not able to fix it. Hope someone will help me to fix . For your reference i am adding  some snip and the resulted error console. 
Thanks....

---server.js File----
require('isomorphic-fetch');
const Koa = require('koa');
const next = require('next');
const { default: createShopifyAuth } = require('@shopify/koa-shopify-auth');
const dotenv = require('dotenv');
const { verifyRequest } = require('@shopify/koa-shopify-auth');
const session = require('koa-session');
const request = require('request');
dotenv.config();
const { default: graphQLProxy } = require('@shopify/koa-shopify-graphql-proxy');
const Router = require('koa-router');
const {receiveWebhook, registerWebhook} = require('@shopify/koa-shopify-webhooks');
const { ApiVersion } = require('@shopify/koa-shopify-graphql-proxy');
const getSubscriptionUrl = require('./server/getSubscriptionUrl');

const port = parseInt(process.env.PORT, 10) || 3000;
const dev = process.env.NODE_ENV !== 'production';

const app = next({ dev });
const handle = app.getRequestHandler();

const { SHOPIFY_API_SECRET_KEY, SHOPIFY_API_KEY, HOST } = process.env;

app.prepare().then(() => {
 const server = new Koa();
 const router = new Router();
 server.use(session(server));
 server.keys = [SHOPIFY_API_SECRET_KEY];
server.use(
   createShopifyAuth({
     apiKey: SHOPIFY_API_KEY,
     secret: SHOPIFY_API_SECRET_KEY,
     scopes: [ 'read_locations' ],
async afterAuth(ctx) {
       const { shop, accessToken } = ctx.session;
       ctx.cookies.set('shopOrigin', shop, { httpOnly: false });

const registration = await registerWebhook({
       address: `${HOST}/webhooks/locations/create`,
       topic: 'LOCATIONS_CREATE',
       accessToken,
       shop,
       apiVersion: ApiVersion.October19
       });
      if (registration.success) {
         console.log('Successfully registered LOCATIONS webhook!');
      } else {
         console.log('Failed to register webhook', registration.result);
       };
     await getSubscriptionUrl(ctx, accessToken, shop);  // don't worry about it
     },
   }),
 );
const webhook = receiveWebhook({secret: SHOPIFY_API_SECRET_KEY});
router.post('/webhooks/locations/create', webhook, (ctx)=>{ console.log(ctx.state.webhook) console.log('your location payload is here....', ctx.state.webhook.payload) })

server.use(graphQLProxy({version: ApiVersion.October19}));

router.get('*', verifyRequest(), async (ctx) => { await handle(ctx.req, ctx.res); ctx.respond = false; ctx.res.statusCode = 200; });

server.use(router.allowedMethods()); server.use(router.routes()); server.listen(port, () => { console.log(`> Ready on http://localhost:${port}`); }); });

================ consoled result is here ===============
Failed to register webhook {
data: {
webhookSubscriptionCreate: { userErrors: [Array], webhookSubscription: null }
},
extensions: {
cost: {
requestedQueryCost: 10,
actualQueryCost: 10,
throttleStatus: [Object]
}
}
}

Replies 10 (10)

Visely-Team
Shopify Partner
1843 210 488

The raw response would be helpful. Anyways, the topic should be locations/create not LOCATIONS_CREATE.

Sergiu Svinarciuc | CTO @ visely.io
- Was my reply helpful? Click Like to let me know!
- Was your question answered? Mark it as an Accepted Solution!
- To learn more about the awesome stuff we do head over to visely.io or our blog
Nishant_kumar10
Tourist
6 0 1

Hi,

Thank you for your reply,  as you told to make

topic :'locations/create' 

i did that thing also but it is not working , and at thr same time if you will check 

shopify  tutorial page

https://github.com/Shopify/shopify-demo-app-node-react/blob/master/server.js   

or

koa-shopify-webhook  github page

https://github.com/Shopify/quilt/blob/master/packages/koa-shopify-webhooks/README.md

 

they have written like that only for different topics like 'PRODUCTS_CREATE' or 'ORDERS_CREATE' . 

so may be there are some other problem .. if it comes to you must reply here..

Thanks...

Visely-Team
Shopify Partner
1843 210 488

Ah ok, missed you are using app node, LOCATIONS_CREATE is correct. Can you post the raw response you are getting?

Sergiu Svinarciuc | CTO @ visely.io
- Was my reply helpful? Click Like to let me know!
- Was your question answered? Mark it as an Accepted Solution!
- To learn more about the awesome stuff we do head over to visely.io or our blog
Nishant_kumar10
Tourist
6 0 1

yeah ... that thing only i am getting as a response, in console

Failed to register webhook {
data: {
webhookSubscriptionCreate: { userErrors: [Array], webhookSubscription: null }
},
extensions: {
cost: {
requestedQueryCost: 10,
actualQueryCost: 10,
throttleStatus: [Object]
}
}
}
Visely-Team
Shopify Partner
1843 210 488

Is the userErrors array empty?

Sergiu Svinarciuc | CTO @ visely.io
- Was my reply helpful? Click Like to let me know!
- Was your question answered? Mark it as an Accepted Solution!
- To learn more about the awesome stuff we do head over to visely.io or our blog
Nishant_kumar10
Tourist
6 0 1

In my knowledge, why should it matter. anyway it is working for other scopes or topics . only location webhook i am not able to register.

Visely-Team
Shopify Partner
1843 210 488

🙂 it should matter because you can find the error message there, hence my question.

Sergiu Svinarciuc | CTO @ visely.io
- Was my reply helpful? Click Like to let me know!
- Was your question answered? Mark it as an Accepted Solution!
- To learn more about the awesome stuff we do head over to visely.io or our blog
Nishant_kumar10
Tourist
6 0 1

so what should i do ?

Visely-Team
Shopify Partner
1843 210 488

Can you add a code that would iterate through userErrors array and print the values if any, or something like that:

console.log('Failed to register webhook', registration.result.data.webhookSubscriptionCreate.userErrors.join(','));
Sergiu Svinarciuc | CTO @ visely.io
- Was my reply helpful? Click Like to let me know!
- Was your question answered? Mark it as an Accepted Solution!
- To learn more about the awesome stuff we do head over to visely.io or our blog
Nishant_kumar10
Tourist
6 0 1

it's coming like that...

Failed to register webhook [object Object]