graphql

Calls Shopify's GraphQL Admin API. It accepts query and variables paramters.

The response is saved in a variable defined following key string: as.

{% graphql query:query_or_mutation_string, variables:variables as result %}

Code below fetches all customers tagged:marketing-enabled and logs customer's details

{%- comment -%} GraphQL queries and mutations definitions {%- endcomment -%}
{% capture customers_query %}
  query customers($cursor: String, $query: String) {
    customers(first: 250, after: $cursor, query: $query) {
      edges {
        node {
          id
          tags
          firstName
          lastName
        }
        cursor
      }
      pageInfo {
        hasNextPage
      }
    }
  }
{% endcapture %}

{% assign cursor = "null" | parse_json %}

{% comment %} Iterate over pages {% endcomment %}
{% for n in (0..1000) %}
  {% json query_input %}
    { 
      "cursor": {{ cursor | json }},
      "query": "tag:marketing-enabled"
    }
  {% endjson %}

  {% graphql query:customers_query, variables:query_input as result %}

  {% comment %} Iterate over customer on single page {% endcomment %}
  {% for customer_edge in result.customers.edges %}
    {% assign customer = customer_edge.node %}
    {% log customer %}
  {% endfor %}

  {% if result.customers.pageInfo.hasNextPage %}
    {% assign cursor = result.customers.edges.last.cursor %}
  {% else %}
    {% break %}
  {% endif %}
{% endfor %}

Last updated