Task
Read a list of customers from a GoogleSheet and create them in Shopify using Shopify's Admin API (GraphQL).
Why ?
- Generate test users for development stores.
- Migrate customers from other platforms.
- Easy intro to Shopify's GraphQL API.
Setup
Setting up Google Sheets access
Follow the instructions in the N8N Docs for granting Oauth2 access to Google services. You'll need to grant API access to Google Sheets and Google Drive (to list available sheets).
Setting up Shopify access
Shopify's Admin API uses 'Header Auth' with a key of X-Shopify-Access-Token and a value of your shopify access token which starts with shpat_ .
How to generate a Shopify Access Token
To generate a Shopify Access Token create an app, grant the app the necessary scopes, then generate a token.
From inside a store do the following :
- click Settings (nav link)
- click Apps and sales channels (nav link)
- click Develop Apps (button)
- click Create App (button)
- give the app a name
- click configure Admin API Scopes (button)
- at a minimum grant read_customers and write_customers scope. Grant additional scopes if you plan on accessing other parts of the API.
- click save
To generate the token
- click install app (button)
- click install on the dialog that pops up (button)
- click 'reveal token once' (button)
- copy the token into a password vault or somewhere secure.
Template Updates
To test this out you'll need to make the following changes :
- Create a header credential where the key is X-Shopify-Access-Token and the value is your Shopify Access Token (it starts with shpat_
- In the GraphQL node change the endpoint URL to your store. Something like https://{your store goes here}.myshopify.com/admin/api/2025-04/graphql.json
Google Sheet Structure
Columns can be in any order, because the rows will be mapped to fields in a json object. N8N will treat the first row in the sheet as a column name, so at a minimum use the column names below in row 1 of your sheet.
- first_name : Any string
- last_name : Any string
- email : Valid email
- mobile_phone : International mobile phone format with no spaces eg. +61414708406 (Shopify will reject anything else).
Example CSV
"first_name","last_name","email","mobile_phone"
"Bob","Smith","[email protected]","+61414999999"