Merchants commonly use Mechanic for adding or removing tags from customers, orders, products, and other Shopify resources.

When writing your task scripts, use a "shopify" action to add or remove tags via the Shopify API. There are two usages available: one using GraphQL, and one using the REST API.

GraphQL

This is the recommended usage.

{% action "shopify" %}
  mutation {
    tagsAdd(
      id: {{ customer.admin_graphql_api_id | json }}
      tags: ["some", "new", "tags"]
    ) {
      userErrors {
        field
        message
      }
    }
  }
{% endaction %}
{% action "shopify" %}
  mutation {
    tagsRemove(
      id: {{ customer.admin_graphql_api_id | json }}
      tags: ["tags", "to", "remove"]
    ) {
      userErrors {
        field
        message
      }
    }
  }
{% endaction %}

REST

This approach is also valid, but has one risk: because it specifies all of the tags at once that the customer should have, it's possible to overwrite tags that some other task or app has added.

{% action "shopify" %}
  [
    "update",
    ["customer", {{ customer.id | json }}],
    {
      "tags": {{ customer.tags | add_tag: "approved" | json }}
    }
  ]
{% endaction %}
{% action "shopify" %}
  [
    "update",
    ["customer", {{ customer.id | json }}],
    {
      "tags": {{ customer.tags | remove_tag: "approved" | json }}
    }
  ]
{% endaction %}

These examples use add_tag and remove_tag, which are Liquid filters unique to Mechanic. Learn more about our filters here.

Did this answer your question?