Das ID-Mapping-Problem
Dieselbe physische Bestellung hat in jedem System andere IDs:
- Shopify:
#79043 (Order-Name), gid://shopify/Order/5847291823 (GraphQL-GID), 5847291823 (numerische ID).
- Mirakl-Operator:
COM-237482229-2-A (Mirakl-COM), jeder Operator hat eigenen COM-Space.
- PlentyOne: interne Order-ID
273957, plus External-Order-IDs die theoretisch die Marketplace-ID spiegeln — der Matching-Feld variiert je nach Plenty-Import-Pipeline.
Um einem Kunden zu antworten, der „Wo ist meine Bestellung #79043?"
von einer Shopify-Adresse schreibt, muss dein Code:
#79043 als Shopify-Order-Name erkennen.
- Shopify-Admin-API anfragen für numerische ID + Tags (die oft den
Mirakl-COM enthalten).
- Plenty per numerischer Shopify-ID ODER Mirakl-COM durchsuchen.
- Tracking aus dem Shipping-Package der Plenty-Order ziehen.
Paketwo's Bridge im Code
Der Matcher (in Produktion gehärtet):
# 1) Shopify-Seite: tag/note/name + Ambiguity-Guard
shopify_order = find_shopify_order_for_mirakl(
client=tenant.shopify_client,
mirakl_com="COM-237482229-2-A",
strategies=["tag", "note", "name"],
)
# 2) Plenty-Seite: search_orders_by_external_id
plenty_order = plenty.search_orders_by_external_id(
external_id=str(shopify_order.numeric_id),
)
# 3) Tracking aus dem Shipping-Package
tracking = plenty_order.shipping_packages[0].package_number
# 4) Antwort in Kundensprache komponieren
draft = responder.draft(
intent="wismo",
order=plenty_order,
tracking=tracking,
lang=customer_lang,
)
Shopify Partner App (read-only)
Paketwo ist registrierter Shopify Partner. Die Shopify-Admin-API-
Integration nutzt OAuth-Install + HMAC-verifizierte Webhooks + read-only
Scopes (read_orders, read_fulfillments). Dein Store
bleibt unangetastet — die App liest nur Bestellungen. App-Store-Listing in
Submission, geplant Q3 2026. Bis dahin per direktem OAuth-Install auf Anfrage.
Mirakl Read-only Safety
Paketwo's Mirakl-Client blockt nicht nur POST/PUT/DELETE, sondern auch
state-mutating GETs (/messages/{id}/read,
/orders/{id}/validate). Das ist über eine Path-Segment-Allowlist
durchgesetzt, bevor der Request die App verlässt. Selbst ein Bug im Bot kann
keine Kundenmail aus Versehen als „gelesen" für dein Team markieren.
FAQ
Brauche ich einen Paketwo-Account pro Kanal?
Nein, ein Tenant deckt alle Kanäle ab. Mailboxen, Plenty-Creds, Shopify-Install und Mirakl-Operators werden pro Tenant in einem Dashboard konfiguriert.
Was wenn Shopify und Plenty den Status uneinig haben?
Plenty ist die Source-of-Truth (dein ERP). Shopify dient nur zur Order-Erkennung; die Antwortdaten kommen aus Plenty + Live-Versand-Lookup.
Wie funktioniert der SSRF-Guard?
Shopify-OAuth-Install-URLs sind gegen Newline-, Path-, Scheme-Injection und per-Tenant-Store-Domain-Allowlist validiert. Nein, ein Angreifer kann den Install nicht zu einem fremden Host umlenken.
Verwandt:
Mirakl ↔ Plenty ·
WISMO-Automation Plenty ·
Zendesk vs. Paketwo