A space to discuss GraphQL queries, mutations, troubleshooting, throttling, and best practices.
We are giving customers the possibility to create accounts for which we require confirmation via an activation link, using the Customers API: https://shopify.dev/api/admin-rest/2022-07/resources/customer, like this:
const createCustomerBody = {
customer: {
email: email,
firstName: firstName,
lastName: lastName,
send_email_invite: true
}
};
const headers = {
Authorization: `BASIC ${token}`
};
const response = await (await fetch(
`https://${our-store}.myshopify.com/admin/api/2022-07/customers.json`,
{
method: 'POST',
headers: headers,
body: JSON.stringify(createCustomerBody)
}
)).json();
A new customer would then receive the invitation e-mail created with the customer invitation e-mail template defined in our store.
If a customer with that e-mail address already exists, this would give an error response, indicating that the e-mail address has already been taken. In that case we resend the invitation like so (by getting the customer id and using the `send_invite` API method:
if (response?.errors?.email === 'has already been taken') {
const found = await (await fetch(
`https://${ourStore}.myshopify.com/admin/api/2021-07/customers/search.json?query=${email}&fields=id`,
{
method: 'GET',
headers
}
)).json();
const customerId = found.customers[0].id;
const inviteSent = await (await fetch(
`https://${ourStore}.myshopify.com/admin/api/2021-07/customers/${customerId}/send_invite.json`,
{
method: 'POST',
headers
}
)).json();
}
So far, so good. But our invitation template has changed some time in the past. And customers who were sent an invitation before that but did not activate successfully afterwards still receive the e-mail with the old invitation template.
We would like that invitations be sent out using the current up-to-date invitation template, because the old template is outdated and contains a link to a page for activation which does not work.
How can we achieve this?