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
- In der n8n-Übersicht oben rechts auf Create workflow klicken.

-
Den Workflow beispielsweise
Shopify x eSagu Connectornennen. -
Auf Add first step klicken.

2. Shopify-Trigger einrichten
-
Nach Shopify suchen.
-
Unter den verfügbaren Triggern On product updated auswählen.

-
Unter Credential to connect with die in Teil 1 eingerichteten Shopify-Zugangsdaten auswählen.
-
Bei Trigger On die Einstellung Product Updated beibehalten.

-
Auf Execute step klicken und anschließend ein Produkt in Shopify aktualisieren. n8n wartet dabei auf ein entsprechendes Ereignis.
-
Prüfen, ob n8n die Produktdaten erfolgreich empfängt.

- Den Schritt zur besseren Übersicht in
Shopify Trigger - On product updatedumbenennen.

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 Settings → Metafields and metaobjects → Products.

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

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

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
-
Hinter dem Shopify-Trigger auf das Pluszeichen klicken.
-
Nach Edit Fields (Set) suchen und den Schritt hinzufügen.

-
Den Schritt in
Workflow Configurationumbenennen. -
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 |

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.
-
Hinter Workflow Configuration auf das Pluszeichen klicken.
-
Nach HTTP Request suchen und den Schritt hinzufügen.

- 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
- Als URL folgende Expression eintragen:
https://{{ $('Workflow Configuration').first().json.shopifyShopName }}.myshopify.com/admin/api/{{ $('Workflow Configuration').first().json.shopifyApiVersion }}/graphql.json
- 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 }}"
}
}

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.
- Auf Execute step klicken und prüfen, ob Shopify die Produkt- und Metafelddaten zurückgibt.

- Den Schritt in
HTTP Request - Shopify Metadataumbenennen.

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.
- Hinter HTTP Request - Shopify Metadata einen weiteren Schritt vom Typ Edit Fields (Set) hinzufügen.

-
Den Schritt
Edit Fields - Extract meta objects by namenennen. -
Den Modus Manual Mapping auswählen.
-
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));
})() }}

- 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
- Hinter dem vorherigen Schritt einen HTTP Request hinzufügen.

-
Den Schritt
HTTP Request - Find item in eSagu via SKUnennen. -
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
- Send Query Parameters aktivieren und folgende Parameter eintragen:
| Name | Wert |
|---|---|
by-sku-exact |
true |
by-sku |
{{ $json['SKU / ID'] }} |

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

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.
- Hinter der eSagu-Artikelsuche einen If-Schritt hinzufügen.

-
Den Schritt
If - Check for eSagu API errorsnennen. -
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

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
- Am true-Ausgang des If-Schritts einen weiteren Schritt vom Typ Edit Fields (Set) hinzufügen.

-
Den Schritt
Edit Fields - Simplify responsenennen. -
Ein Feld mit folgenden Einstellungen anlegen:
- Feldname:
body - Typ:
Object - Wert:
{{ $json.body.find(() => true) }}
-
Include Other Input Fields deaktiviert lassen.
-
Den Schritt ausführen und prüfen, ob
bodyjetzt direkt das gefundene Artikelobjekt enthält.

10. Preisgrenzen an eSagu übertragen
- Hinter Edit Fields - Simplify response einen weiteren HTTP Request hinzufügen.

-
Den Schritt
HTTP Request - Edit itemnennen. -
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
- Send Headers aktivieren und folgenden Header eintragen:
| Name | Wert |
|---|---|
accept |
application/json |

-
Send Body aktivieren.
-
Folgende Einstellungen auswählen:
- Body Content Type:
JSON - Specify Body:
Using JSON
- 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' }}"
}
}
-
Unter Options → Response die Option Include Response Headers and Status aktivieren.
-
Auf Execute step klicken.

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:
Shopify Trigger - On product updatedWorkflow ConfigurationHTTP Request - Shopify MetadataEdit Fields - Extract meta objects by nameHTTP Request - Find item in eSagu via SKUIf - Check for eSagu API errorsEdit Fields - Simplify responseHTTP Request - Edit item

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:
- Den Workflow speichern.
- 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:
- Daten aus einem Quellsystem abrufen
- benötigte Werte aufbereiten
- den passenden Datensatz in eSagu ermitteln
- die Daten über die eSagu-API übertragen
- 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.