n8n Workflow
Advanced

Shopify and Zendesk Customer Sync

Automate customer data synchronization between Shopify and Zendesk. This workflow ensures that when a customer's details are updated in Shopify, their contact information is created or updated in Zendesk, keeping your support and e-commerce platforms in sync.

Overview

This workflow automatically syncs customer updates from Shopify to Zendesk, creating new users or updating existing ones to ensure consistent contact information across both platforms.

🧠 Description & Use Case

This workflow automates the synchronization of customer contact information between Shopify and Zendesk. When a customer's profile is updated in your Shopify store, this workflow instantly checks and updates their corresponding record in Zendesk. This ensures that your customer support team always has the most current contact details, eliminating manual data entry and preventing data discrepancies.

🔄 How It Works:

  1. Trigger on Shopify Update

    • The workflow starts automatically whenever a customer's details are updated in Shopify.
  2. Search for Existing User in Zendesk

    • It takes the customer's email from the Shopify update and searches for a matching user in Zendesk.
  3. Merge Data

    • The original Shopify customer data is merged with the search results from Zendesk (including the Zendesk User ID and phone number).
  4. Check if User Exists (Branching)

    • An If node determines the next step:
      • If the user does not exist in Zendesk, a new user is created using their Shopify name, email, and phone number.
      • If the user exists, the workflow proceeds to check for data changes.
  5. Check for Data Modification

    • A second If node compares the phone number from Shopify with the phone number in the existing Zendesk record.
  6. Update or End

    • If the phone numbers are different, the workflow updates the user's profile in Zendesk with the new phone number.
    • If the phone numbers are the same, no action is needed, and the workflow ends.

✅ Real-World Use Cases:

  • Unified Customer View: Ensure your support agents in Zendesk have the latest phone number and contact details entered by customers in their Shopify account.
  • Data Integrity: Eliminate manual data entry errors and maintain a consistent, single source of truth for customer information across your e-commerce and support platforms.
  • Automated Contact Management: Automatically create Zendesk profiles for new customers as they update their information, streamlining the onboarding process for your support system.
  • Improved Customer Service: Reduce resolution times by allowing support agents to contact customers using up-to-date information without having to verify it first.

Instructions

Basic steps

  1. Download workflow JSON
  2. Import into n8n
  3. Configure node parameters as needed
  4. Test and enable the workflow

💡 Tips

After importing, verify all connectors and credentials match your environment.

Preview

Workflow Visualization

9 nodes
100%
Keep only UserId and emailsetUser exists in ZendeskifAdd Zendesk contact Id to Shopify datamergeOn customer updatedshopifyTriggerNoOpnoOpContact data is modifiedifCreate contact in ZendeskzendeskUpdate contact in ZendeskzendeskSearch contact by email adresszendesk

Nodes

1

Keep only UserId and email

set

v1
2

User exists in Zendesk

if

v1
3

Add Zendesk contact Id to Shopify data

merge

v1
4

On customer updated

shopifyTrigger

v1
5

NoOp

noOp

v1
6

Contact data is modified

if

v1
7

Create contact in Zendesk

zendesk

v1
8

Update contact in Zendesk

zendesk

v1
9

Search contact by email adress

zendesk

v1

Statistics

Total nodes:9
Disabled nodes:0
Node types:6
Connections:6
View full JSON structure
{
  "nodes": [
    {
      "id": "94fc73af-a35d-4d5c-a192-6190d2a731ff",
      "name": "Keep only UserId and email",
      "type": "n8n-nodes-base.set",
      "position": [
        1200,
        260
      ],
      "parameters": {
        "values": {
          "number": [
            {
              "name": "ZendeskUserId",
              "value": "={{ $json[\"id\"] }}"
            }
          ],
          "string": [
            {
              "name": "ZendeskEmail",
              "value": "={{ $json[\"email\"] }}"
            },
            {
              "name": "ZendeskPhone",
              "value": "={{ $json[\"phone\"]  }}"
            }
          ]
        },
        "options": {},
        "keepOnlySet": true
      },
      "typeVersion": 1
    },
    {
      "id": "6decc852-d5b9-40c4-b51e-832283637027",
      "name": "User exists in Zendesk",
      "type": "n8n-nodes-base.if",
      "position": [
        1660,
        140
      ],
      "parameters": {
        "conditions": {
          "number": [
            {
              "value1": "={{ $json[\"ZendeskUserId\"] }}",
              "operation": "isNotEmpty"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "70fa2ad7-c43c-4d22-ba6d-89495f8b5794",
      "name": "Add Zendesk contact Id to Shopify data",
      "type": "n8n-nodes-base.merge",
      "position": [
        1420,
        140
      ],
      "parameters": {
        "mode": "mergeByKey",
        "propertyName1": "email",
        "propertyName2": "ZendeskEmail"
      },
      "typeVersion": 1
    },
    {
      "id": "346d3e04-433c-4b43-868f-729d3ee67ee2",
      "name": "On customer updated",
      "type": "n8n-nodes-base.shopifyTrigger",
      "position": [
        740,
        120
      ],
      "webhookId": "a0d5e8ea-3f53-496e-a41b-cb022f715b43",
      "parameters": {
        "topic": "customers/update"
      },
      "credentials": {
        "shopifyApi": {
          "id": "10",
          "name": "Shopify account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a2ff1fa3-d67a-4abb-94ae-f22cad7de359",
      "name": "NoOp",
      "type": "n8n-nodes-base.noOp",
      "position": [
        2160,
        180
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "41418930-0898-4602-88a3-cf4238f32890",
      "name": "Contact data is modified",
      "type": "n8n-nodes-base.if",
      "position": [
        1940,
        80
      ],
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{ $json[\"phone\"] }}",
              "value2": "={{ $json[\"ZendeskPhone\"] }}",
              "operation": "notEqual"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "ee1791fb-eaa0-4829-af3b-e72d7b3e80d5",
      "name": "Create contact in Zendesk",
      "type": "n8n-nodes-base.zendesk",
      "position": [
        1940,
        240
      ],
      "parameters": {
        "name": "={{ $json[\"first_name\"] }} {{ $json[\"last_name\"] }}",
        "resource": "user",
        "additionalFields": {
          "email": "={{ $json[\"email\"] }}",
          "phone": "={{ $json[\"phone\"] ?? ' ' }}"
        }
      },
      "credentials": {
        "zendeskApi": {
          "id": "5",
          "name": "Zendesk account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "67dc85c6-39af-43cc-951e-bcfd31b73e46",
      "name": "Update contact in Zendesk",
      "type": "n8n-nodes-base.zendesk",
      "position": [
        2160,
        -20
      ],
      "parameters": {
        "id": "={{ $json[\"ZendeskUserId\"] }}",
        "resource": "user",
        "operation": "update",
        "updateFields": {
          "phone": "={{ $json[\"phone\"] ?? 0}}"
        }
      },
      "credentials": {
        "zendeskApi": {
          "id": "5",
          "name": "Zendesk account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "9ab30a51-e599-4361-b170-b18b9d4021cb",
      "name": "Search contact by email adress",
      "type": "n8n-nodes-base.zendesk",
      "position": [
        1000,
        260
      ],
      "parameters": {
        "limit": 1,
        "filters": {
          "query": "={{ $json[\"email\"] }}"
        },
        "resource": "user",
        "operation": "search"
      },
      "credentials": {
        "zendeskApi": {
          "id": "5",
          "name": "Zendesk account"
        }
      },
      "typeVersion": 1,
      "alwaysOutputData": true
    }
  ],
  "connections": {
    "On customer updated": {
      "main": [
        [
          {
            "node": "Add Zendesk contact Id to Shopify data",
            "type": "main",
            "index": 0
          },
          {
            "node": "Search contact by email adress",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "User exists in Zendesk": {
      "main": [
        [
          {
            "node": "Contact data is modified",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Create contact in Zendesk",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Contact data is modified": {
      "main": [
        [
          {
            "node": "Update contact in Zendesk",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "NoOp",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Keep only UserId and email": {
      "main": [
        [
          {
            "node": "Add Zendesk contact Id to Shopify data",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Search contact by email adress": {
      "main": [
        [
          {
            "node": "Keep only UserId and email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Add Zendesk contact Id to Shopify data": {
      "main": [
        [
          {
            "node": "User exists in Zendesk",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Actions

Share
Categories:
Tags:
ifnoopsetmergeshopifytriggerzendesk

Technical Specs

Complexity:
Advanced
Node Count:
9 nodes
Published:11 months ago
Updated:4 days ago

Compatibility

Platform:
N8N Cloud & Self-hosted
Min Version:
N8N v1.0.0+
Supports cloud and self-hosted deployment

License

This workflow template follows MIT license, you can freely use, modify and distribute.

Please comply with relevant third-party service terms when using.

Related Workflows