Shopify-Preise via n8n an eSagu übertragen: Workflow erstellen

In Teil 1 haben wir Shopify und eSagu mit n8n verbunden und die erforderlichen Zugangsdaten hinterlegt. In diesem zweiten Teil erstellen wir den eigentlichen Workflow.

Der Workflow reagiert auf Produktänderungen in Shopify, liest die Amazon-SKU und den Mindestpreis aus Shopify-Metafeldern aus und ermittelt damit den passenden Artikel in eSagu. Anschließend überträgt n8n den Mindest-, Fest- und Höchstpreis an die eSagu-API.

Voraussetzungen

Bevor Sie beginnen, müssen folgende Voraussetzungen erfüllt sein:

  • Die Shopify- und eSagu-Zugangsdaten aus Teil 1 sind in n8n hinterlegt.
  • Der Shopify-Artikel besitzt eine Amazon-SKU, die mit der SKU des Artikels in eSagu übereinstimmt.
  • In Shopify sind Metafelder für die Amazon-SKU und den Amazon-Mindestpreis vorhanden.
  • Der Mindestpreis ist beim jeweiligen Shopify-Produkt eingetragen.

1. Workflow erstellen

  1. In der n8n-Übersicht oben rechts auf Create workflow klicken.

Schaltfläche „Create workflow“ in der n8n-Übersicht

  1. Den Workflow beispielsweise Shopify x eSagu Connector nennen.

  2. Auf Add first step klicken.

Neuer n8n-Workflow mit dem Namen „Shopify x eSagu Connector“

2. Shopify-Trigger einrichten

  1. Nach Shopify suchen.

  2. Unter den verfügbaren Triggern On product updated auswählen.

Auswahl des Shopify-Triggers „On product updated“ in n8n

  1. Unter Credential to connect with die in Teil 1 eingerichteten Shopify-Zugangsdaten auswählen.

  2. Bei Trigger On die Einstellung Product Updated beibehalten.

Konfiguration des Shopify-Triggers für aktualisierte Produkte

  1. Auf Execute step klicken und anschließend ein Produkt in Shopify aktualisieren. n8n wartet dabei auf ein entsprechendes Ereignis.

  2. Prüfen, ob n8n die Produktdaten erfolgreich empfängt.

Erfolgreiche Testausführung des Shopify-Triggers mit Produktdaten

  1. Den Schritt zur besseren Übersicht in Shopify Trigger - On product updated umbenennen.

Umbenennung des Shopify-Triggers

3. Shopify-Metafelder vorbereiten

Für diesen Workflow werden zwei Produkt-Metafelder benötigt:

  • Amazon-Mindestpreis
  • Amazon-SKU

Die Metafelder finden Sie in Shopify unter SettingsMetafields and metaobjectsProducts.

Shopify-Einstellungen mit den Metafelddefinitionen für Produkte

Metafeld für den Mindestpreis

Das Beispiel verwendet folgende Definition:

  • Name: Amazon Minimum Price
  • Namespace und Schlüssel: custom.amazon_minimum_price
  • Typ: Money

Für die spätere n8n-Konfiguration wird nur der Schlüssel benötigt:

amazon_minimum_price

Shopify-Metafeld „Amazon Minimum Price“ mit dem Typ „Money“

Metafeld für die Amazon-SKU

Das Beispiel verwendet folgende Definition:

  • Name: Amazon SKU
  • Namespace und Schlüssel: custom.amazon_sku
  • Typ: Single line text

Für die spätere n8n-Konfiguration wird folgender Schlüssel benötigt:

amazon_sku

Shopify-Metafeld „Amazon SKU“ mit dem Typ „Single line text“

Die Namen und Schlüssel können abweichend gewählt werden. Entscheidend ist, dass die tatsächlichen Schlüssel anschließend in der Workflow-Konfiguration eingetragen werden.

4. Workflow-Konfiguration hinzufügen

  1. Hinter dem Shopify-Trigger auf das Pluszeichen klicken.

  2. Nach Edit Fields (Set) suchen und den Schritt hinzufügen.

Hinzufügen eines „Edit Fields (Set)“-Schritts

  1. Den Schritt in Workflow Configuration umbenennen.

  2. Den Modus Manual Mapping verwenden und folgende Felder anlegen:

Feld Typ Beispielwert
shopifyShopName String esagu-test-shop
shopifyApiVersion String 2026-07
amazonMinPriceMetafieldKey String amazon_minimum_price
amazonSkuMetafieldKey String amazon_sku
maxPricePercentage Number 0.2
fixedPricePercentage Number 0.1
esaguApiUrl String https://api.esagu.de/amzn/repricing/v1

Konfiguration der Shopify- und eSagu-Parameter im n8n-Workflow

shopifyShopName enthält nur den Teil vor .myshopify.com. Für den Shop beispielshop.myshopify.com tragen Sie daher beispielshop ein.

Die Werte 0.1 und 0.2 entsprechen 10 beziehungsweise 20 Prozent. Bei einem Mindestpreis von 13,37 EUR berechnet der Workflow damit:

  • Mindestpreis: 13,37 EUR
  • Festpreis: 14,71 EUR
  • Höchstpreis: 16,04 EUR

Verwenden Sie eine von Shopify unterstützte API-Version. Wenn Sie eine andere Version einsetzen, passen Sie shopifyApiVersion entsprechend an.

5. Produkt-Metafelder über Shopify abrufen

Das Produktupdate des Triggers enthält nicht alle benötigten Metafelder. Deshalb fragt der nächste Schritt die vollständigen Metafelddaten über die Shopify GraphQL Admin API ab.

  1. Hinter Workflow Configuration auf das Pluszeichen klicken.

  2. Nach HTTP Request suchen und den Schritt hinzufügen.

Auswahl eines HTTP-Request-Schritts

  1. Folgende Einstellungen vornehmen:
  • Method: POST
  • Authentication: Predefined Credential Type
  • Credential Type: Shopify OAuth2 API
  • Shopify OAuth2 API: die in Teil 1 eingerichteten Shopify-Zugangsdaten
  • Send Body: aktiviert
  • Body Content Type: JSON
  • Specify Body: Using JSON
  1. Als URL folgende Expression eintragen:
https://{{ $('Workflow Configuration').first().json.shopifyShopName }}.myshopify.com/admin/api/{{ $('Workflow Configuration').first().json.shopifyApiVersion }}/graphql.json
  1. Im JSON-Feld folgende GraphQL-Abfrage eintragen:
{
  "query": "query ($id: ID!) { product(id: $id) { id title metafields(first: 25) { nodes { namespace key type value } } } }",
  "variables": {
    "id": "gid://shopify/Product/{{ $('Shopify Trigger - On product updated').item.json.id }}"
  }
}

HTTP Request für das Abrufen der Shopify-Produkt-Metafelder

Die Abfrage liest die Produkt-ID, den Titel und bis zu 25 Metafelder aus. Besitzt ein Produkt mehr als 25 relevante Metafelder, muss der Wert bei metafields(first: 25) entsprechend angepasst oder eine Paginierung ergänzt werden.

  1. Auf Execute step klicken und prüfen, ob Shopify die Produkt- und Metafelddaten zurückgibt.

Erfolgreiche GraphQL-Abfrage der Shopify-Metafelder

  1. Den Schritt in HTTP Request - Shopify Metadata umbenennen.

Umbenennung des HTTP-Requests für Shopify-Metadaten

6. SKU und Preiswerte aufbereiten

Die Preiswerte werden von der eSagu-API in Cent verarbeitet. Ein Shopify-Mindestpreis von 13,37 EUR wird daher als 1337 übertragen.

  1. Hinter HTTP Request - Shopify Metadata einen weiteren Schritt vom Typ Edit Fields (Set) hinzufügen.

Hinzufügen eines Edit-Fields-Schritts zur Aufbereitung der Metafelder

  1. Den Schritt Edit Fields - Extract meta objects by name nennen.

  2. Den Modus Manual Mapping auswählen.

  3. Folgende Felder anlegen.

Shopify Product ID

  • Feldname: Shopify Product ID
  • Typ: String
  • Wert:
{{ $json.data.product.id }}

SKU / ID

  • Feldname: SKU / ID
  • Typ: String
  • Wert:
{{ $json.data.product.metafields.nodes.find(m => m.key === $('Workflow Configuration').first().json.amazonSkuMetafieldKey)?.value ?? null }}

Min price

  • Feldname: Min price
  • Typ: Number
  • Wert:
{{ (() => {
  const config = $('Workflow Configuration').first().json;
  const key = config.amazonMinPriceMetafieldKey;
  const metafield = $json.data.product.metafields.nodes.find(m => m.key === key);
  const amount = metafield
    ? JSON.parse(metafield.value)?.amount * 100
    : null;

  return Math.round(amount);
})() }}

Fixed price

  • Feldname: Fixed price
  • Typ: Number
  • Wert:
{{ (() => {
  const config = $('Workflow Configuration').first().json;
  const key = config.amazonMinPriceMetafieldKey;
  const fixedPricePercentage = config.fixedPricePercentage;
  const metafield = $json.data.product.metafields.nodes.find(m => m.key === key);
  const amount = metafield
    ? JSON.parse(metafield.value)?.amount * 100
    : null;

  return Math.round(amount + (amount * fixedPricePercentage));
})() }}

Max price

  • Feldname: Max price
  • Typ: Number
  • Wert:
{{ (() => {
  const config = $('Workflow Configuration').first().json;
  const key = config.amazonMinPriceMetafieldKey;
  const maxPriceMarkupPercentage = config.maxPricePercentage;
  const metafield = $json.data.product.metafields.nodes.find(m => m.key === key);
  const amount = metafield
    ? JSON.parse(metafield.value)?.amount * 100
    : null;

  return Math.round(amount + (amount * maxPriceMarkupPercentage));
})() }}

Extraktion der Amazon-SKU und Berechnung der drei Preiswerte

  1. Den Schritt ausführen. In der Ausgabe sollten die Shopify-Produkt-ID, die SKU und die drei Preise erscheinen.

Im gezeigten Beispiel ergibt sich:

{
  "Shopify Product ID": "gid://shopify/Product/15955548275022",
  "SKU / ID": "01-0164",
  "Min price": 1337,
  "Fixed price": 1471,
  "Max price": 1604
}

7. Artikel über die SKU in eSagu suchen

  1. Hinter dem vorherigen Schritt einen HTTP Request hinzufügen.

Auswahl eines HTTP-Requests für die Artikelsuche in eSagu

  1. Den Schritt HTTP Request - Find item in eSagu via SKU nennen.

  2. Folgende Einstellungen vornehmen:

  • Method: GET
  • URL:
{{ $('Workflow Configuration').first().json.esaguApiUrl }}/item
  • Authentication: Generic Credential Type
  • Generic Auth Type: Bearer Auth
  • Bearer Auth: die in Teil 1 eingerichteten eSagu-Zugangsdaten
  1. Send Query Parameters aktivieren und folgende Parameter eintragen:
Name Wert
by-sku-exact true
by-sku {{ $json['SKU / ID'] }}

Konfiguration der exakten eSagu-Artikelsuche über die Amazon-SKU

  1. Den Schritt ausführen. Die Antwort muss genau den eSagu-Artikel enthalten, dessen SKU mit dem Shopify-Metafeld übereinstimmt.

Erfolgreich über die SKU gefundener Artikel in der eSagu-API

8. API-Antwort prüfen

Bevor Preise geändert werden, prüft der Workflow, ob die Anfrage erfolgreich war und genau einen Artikel geliefert hat.

  1. Hinter der eSagu-Artikelsuche einen If-Schritt hinzufügen.

Hinzufügen eines If-Schritts zur Prüfung der eSagu-Antwort

  1. Den Schritt If - Check for eSagu API errors nennen.

  2. Zwei Bedingungen mit AND verknüpfen:

Erste Bedingung:

  • Wert 1: {{ $json.statusCode }}
  • Operator: is less than
  • Wert 2: 399

Zweite Bedingung:

  • Wert 1: {{ $json.body.length }}
  • Operator: is equal to
  • Wert 2: 1

If-Bedingungen für HTTP-Status und Anzahl der gefundenen Artikel

Nur der true-Ausgang wird mit den weiteren Schritten verbunden. Der Workflow nimmt damit keine Änderung vor, wenn die API einen Fehler meldet oder keine eindeutige SKU-Zuordnung möglich ist.

9. eSagu-Antwort vereinfachen

  1. Am true-Ausgang des If-Schritts einen weiteren Schritt vom Typ Edit Fields (Set) hinzufügen.

Hinzufügen eines Edit-Fields-Schritts am true-Ausgang

  1. Den Schritt Edit Fields - Simplify response nennen.

  2. Ein Feld mit folgenden Einstellungen anlegen:

  • Feldname: body
  • Typ: Object
  • Wert:
{{ $json.body.find(() => true) }}
  1. Include Other Input Fields deaktiviert lassen.

  2. Den Schritt ausführen und prüfen, ob body jetzt direkt das gefundene Artikelobjekt enthält.

Vereinfachte eSagu-Antwort mit dem gefundenen Artikelobjekt

10. Preisgrenzen an eSagu übertragen

  1. Hinter Edit Fields - Simplify response einen weiteren HTTP Request hinzufügen.

Hinzufügen des HTTP-Requests für die Preisaktualisierung

  1. Den Schritt HTTP Request - Edit item nennen.

  2. Folgende Einstellungen vornehmen:

  • Method: PUT
  • URL:
{{ $('Workflow Configuration').first().json.esaguApiUrl }}/item/{{ $json.body.id }}/strategy
  • Authentication: Generic Credential Type
  • Generic Auth Type: Bearer Auth
  • Bearer Auth: die in Teil 1 eingerichteten eSagu-Zugangsdaten
  1. Send Headers aktivieren und folgenden Header eintragen:
Name Wert
accept application/json

Konfiguration der PUT-Anfrage an die eSagu-Strategie

  1. Send Body aktivieren.

  2. Folgende Einstellungen auswählen:

  • Body Content Type: JSON
  • Specify Body: Using JSON
  1. Folgenden JSON-Body eintragen:
{
  "priceSettings": {
    "minPrice": {{ $('Edit Fields - Extract meta objects by name').item.json['Min price'] }},
    "fixedPrice": {{ $('Edit Fields - Extract meta objects by name').item.json['Fixed price'] }},
    "maxPrice": {{ $('Edit Fields - Extract meta objects by name').item.json['Max price'] }},
    "mode": "{{ $('HTTP Request - Find item in eSagu via SKU')?.item?.json?.strategy?.priceSettings?.mode || 'OPTIMIZATION' }}"
  }
}
  1. Unter OptionsResponse die Option Include Response Headers and Status aktivieren.

  2. Auf Execute step klicken.

JSON-Body und erfolgreiche Statusantwort der eSagu-API

Der HTTP-Status 204 No Content bestätigt, dass eSagu die Preisgrenzen erfolgreich übernommen hat.

11. Workflow testen und aktivieren

Der fertige Workflow besteht aus folgenden Schritten:

  1. Shopify Trigger - On product updated
  2. Workflow Configuration
  3. HTTP Request - Shopify Metadata
  4. Edit Fields - Extract meta objects by name
  5. HTTP Request - Find item in eSagu via SKU
  6. If - Check for eSagu API errors
  7. Edit Fields - Simplify response
  8. HTTP Request - Edit item

Vollständiger n8n-Workflow für die Übertragung von Shopify-Preisen an eSagu

Führen Sie zunächst einen vollständigen Test mit einem einzelnen Produkt durch. Prüfen Sie anschließend in eSagu, ob Mindest-, Fest- und Höchstpreis korrekt übernommen wurden.

Wenn der Test erfolgreich war:

  1. Den Workflow speichern.
  2. Den Schalter oben rechts von Inactive auf Active stellen.

Ab diesem Zeitpunkt reagiert n8n auf Produktänderungen in Shopify. Sobald ein Produkt aktualisiert wird, liest der Workflow dessen Amazon-SKU und Mindestpreis aus und aktualisiert die zugehörigen Preisgrenzen in eSagu.

Workflow als Vorlage für weitere Automatisierungen

Der gezeigte Workflow ist nicht auf Shopify oder das Amazon-RePricing beschränkt. Er dient als Vorlage für die grundsätzliche Verbindung eines Drittsystems mit eSagu:

  1. Daten aus einem Quellsystem abrufen
  2. benötigte Werte aufbereiten
  3. den passenden Datensatz in eSagu ermitteln
  4. die Daten über die eSagu-API übertragen
  5. die Antwort prüfen und Fehler abfangen

Als Datenquelle kann statt Shopify beispielsweise ein Warenwirtschaftssystem, ein ERP- oder PIM-System, eine Datenbank, eine CSV-Datei, ein Webhook oder eine andere API verwendet werden. In n8n müssen dafür lediglich der Trigger und die Schritte zum Abrufen und Aufbereiten der Daten angepasst werden.

Das gleiche Prinzip lässt sich auch mit den weiteren eSagu-APIs einsetzen, unter anderem für:

  • RePricing for Amazon
  • RePricing for eBay
  • RePricing for Kaufland
  • RePricing for OTTO
  • Lost & Found
  • HelpDesk

Damit können nicht nur Preisgrenzen übertragen werden. Abhängig von der verwendeten API lassen sich beispielsweise Artikel suchen und bearbeiten, Einstellungen synchronisieren, Fälle auslesen oder HelpDesk-Vorgänge automatisieren.

Die verfügbaren Endpunkte, Felder und Methoden unterscheiden sich je nach eSagu-Produkt. Verwenden Sie deshalb für weitere Workflows die Dokumentation der jeweiligen eSagu-API und passen Sie URL, HTTP-Methode, Parameter und JSON-Inhalt entsprechend an.