A space to discuss GraphQL queries, mutations, troubleshooting, throttling, and best practices.
Im developing a Shopify app that needs to update a customers metafield with a value.
I have added a custom JS file to all pages using the ScriptTag API, using the app proxy I get a callback to my server, where I want to update the customer metafield using:
POST /admin/api/2022-07/customers/$CUSTOMER-ID/metafields.json
The problem is I cant find the customer ID from the JavaScript file.
I tried this codeblock:
var getCustomerId = function() { try { let curr = window.ShopifyAnalytics.meta.page.customerId; if (curr !== undefined && curr !== null && curr !== "") { return curr; } } catch(e) { } try { let curr = window.meta.page.customerId; if (curr !== undefined && curr !== null && curr !== "") { return curr; } } catch (e) { } try { let curr = _st.cid; if (curr !== undefined && curr !== null && curr !== "") { return curr; } } catch (e) { } try { let curr = ShopifyAnalytics.lib.user().traits().uniqToken; if (curr !== undefined && curr !== null && curr !== "") { return curr; } } catch (e) { } return null; }
And that gives me a customer id, but its a UUID, not a numeric ID, and thus I cannot feed it into the API call to update the metafield.
I also tried adding a liquid tag, so that I could extract it from JS
<div id="app-customer-id">{{ customer.id }}</div>
but no matter what I try and where in the shop I browse, that DIV is always blank. Im sure Im logged in as a valid customer, but on all pages that value is blank. My shop is in development-mode and is password protected.
Any help would be very much appreciated! Thanks.