Zum Inhalt springen
 Shopify · 15–20 Min · mittel

Perfect Day in Shopify anbinden.

Verkauf deine Perfect-Day-Coupons über deinen Shopify-Shop. Der einzige etwas knifflige Punkt: Shopifys nativer Webhook liefert Metafields nicht mit — dafür brauchst du eine kleine Bridge. Wir zeigen dir drei Wege, vom einfachsten zum flexibelsten.

Vorab nötig: Geh einmal die allgemeine Vorbereitung durch — Coupon anlegen, Anwendungspasswort holen, Webhook-URL bereitlegen. Dauert rund fünf Minuten und gilt für alle Shop-Systeme.

Schritt 1 — Produkt im Shopify-Admin anlegen

  1. Pro Coupon ein Shopify-Produkt

    Shopify-Admin → Products → Add product. Titel, Beschreibung, Preis und Bilder eintragen — wie bei jedem anderen Produkt. „Save" klicken.

Schritt 2 — Coupon-ID als Metafield ans Produkt hängen

Damit Shopify weiß, welcher Plattform-Coupon zu diesem Produkt gehört, hinterlegst du die Coupon-ID als Metafield.

  1. Metafield-Definition einmalig anlegen

    Shopify-Admin → Settings → Custom data → Products„Add definition". Felder:

    • Name: Perfect Day Coupon-ID
    • Namespace and key: perfectday.coupon_id
    • Type: Integer (one value)

    Speichern — diese Definition gilt jetzt für alle Produkte.

  2. Coupon-ID pro Produkt eintragen

    Im Produkt-Editor runterscrollen zum Block „Metafields"„Perfect Day Coupon-ID" → Wert eintragen (z. B. 15114) → „Save". Das Produkt ist jetzt mit dem Plattform-Coupon verknüpft.

Schritt 3 — Bridge einrichten (eine von drei Optionen)

Hier kommt der Punkt, an dem Shopify allein nicht reicht. Wähle die Option, die zu deinem Shopify-Plan passt.

  1. Option A — Shopify Flow (Plus / Advanced Plan)

    Wenn du Shopify Plus oder Advanced hast, ist Shopify Flow bereits dabei. Shopify-Admin → Apps → Shopify Flow„Create workflow" → Template „Order paid". Füge eine „Run code"-Action mit folgendem Skript hinzu:

    Vollständigen Code anzeigen — JavaScript · Flow „Run code"
    JavaScript · Flow „Run code"
    export default function transform(input) {
      const order = input.order;
      const items = order.lineItems.nodes
        .filter(li => li.product?.metafield?.value)
        .map(li => ({
          coupon_id: parseInt(li.product.metafield.value, 10),
          count:     li.quantity
        }));
      if (items.length === 0) return { skip: true };
      return {
        payload: {
          shop_order_id: String(order.name),
          shop_type:     "shopify",
          shop_domain:   order.shop?.myshopifyDomain || "shop",
          customer: {
            email:  order.customer?.email || order.email,
            name:   `${order.customer?.firstName || ''} ${order.customer?.lastName || ''}`.trim(),
            locale: order.customerLocale || "de"
          },
          items,
          order_total_cents: Math.round(parseFloat(order.totalPriceSet.shopMoney.amount) * 100),
          currency:          order.totalPriceSet.shopMoney.currencyCode,
          placed_at:         order.processedAt
        }
      };
    }
  2. Option A — HTTP-Request-Action anhängen

    Danach eine „Send HTTP request"-Action: Method POST, URL https://plattform.deinperfectday.de/wp-json/perfectday/shop/webhook/order, Body {{ steps.code.payload | json }}. Header:

    HTTP-Header
    Content-Type: application/json
    Authorization: Basic <DEINE_BASE64_AUTH>
  3. Base64-Auth erzeugen

    Den Authorization-Wert generierst du auf Mac/Linux im Terminal — das Ergebnis kommt hinter Basic in den Header. Danach den Workflow aktivieren.

    Bash
    echo -n "DEIN_USERNAME:DEIN APP PASSWORD" | base64
  4. Option B — Bridge via Make.com / Zapier (jeder Plan)

    Nutzt du Shopify Basic/Starter ohne Flow: Erstelle bei make.com oder Zapier einen Workflow — Trigger „Watch Orders (Paid)", Action 1 „Get a Product" (holt das Metafield), Action 2 „HTTP → Make a request" mit Basic-Auth an die Webhook-URL. Ein ausführliches Screen-Recording bekommst du auf Support-Anfrage.

  5. Option C — Custom Cloud Function

    Für technik-affine Anbieter: eine eigene Cloud Function (Vercel / Cloudflare Workers / AWS Lambda), die den Shopify-Webhook empfängt, das Metafield abruft und ans Perfect-Day-Webhook weitergibt. Ein vollständiges Code-Template senden wir auf Support-Anfrage.

Schritt 4 — Test-Bestellung

  1. Bestellung auslösen und prüfen

    Mach eine Test-Bestellung im Shopify-Shop (Bogus-Gateway nutzen, falls du keine echte Zahlung auslösen willst) und markiere sie als „bezahlt". Dann prüfen:

    • Plattform-Backoffice → Perfect Day → Shop-Bestellungen: neue Bestellung mit shop_type=shopify?
    • Test-Kunden-Mailbox: Brand-Mail mit Coupon-Codes + Druck-Button angekommen?
Wenn etwas klemmt

Troubleshooting.

Webhook gibt 401 — authentication required

Username falsch — es ist der WordPress-Benutzername (user_login), nicht die E-Mail. Oder das Anwendungspasswort wurde widerrufen bzw. mit Kopier-Fehler übernommen. Im Zweifel ein neues generieren.

Webhook gibt 403 — forbidden_coupon

Die coupon_id im Metafield existiert nicht in deinem Plattform-Backoffice oder gehört zu einem anderen Anbieter. Prüfe unter Gutscheine, ob die ID dort vorkommt.

Webhook gibt 400 — validation

Fehlende oder ungültige Felder im JSON-Body. Häufig: customer.email fehlt, weil der Kunde als Gast bestellt hat. Das im Flow / Workflow abfangen.

Bestellung kommt durch, aber keine Mail beim Kunden

Im Plattform-Backoffice die Detail-Ansicht der Bestellung öffnen und den Mail-Status prüfen. Rot = SMTP-Problem auf unserer Seite, dann bitte den Support kontaktieren. Sonst: Spam-Ordner des Kunden prüfen.

Bestellung kommt doppelt durch

Kein Problem — der Webhook hat einen Idempotenz-Schutz. Beim zweiten Versuch siehst du duplicate: true in der Response, es werden keine doppelten Codes erzeugt und keine doppelte Mail versendet.

Setup-Service

Lieber von uns einrichten lassen?

Die Bridge-Konfiguration ist der knifflige Teil bei Shopify. Wir richten dir den Shopify-Flow oder den Make.com-Workflow komplett ein — du gibst uns nur temporären Zugriff, wir übernehmen den Rest.

Häufige Fragen

Noch Fragen?

Warum brauche ich überhaupt eine Bridge?
Shopifys nativer Order-Webhook liefert die Produkt-Metafields nicht automatisch mit. Die Bridge (Flow, Make.com oder Cloud Function) holt das Metafield mit der Coupon-ID nach und baut daraus den korrekten Webhook-Body.
Welche Option ist die einfachste?
Option A (Shopify Flow), falls du Plus oder Advanced hast — dann ist alles in Shopify selbst. Sonst Option B (Make.com): kostenloser Tarif reicht für die meisten Shops, kein Code nötig.
Ist das App-Password sicher in der Bridge?
Teile es nie öffentlich (kein GitHub, keine Screenshots). Nutze pro Shop ein eigenes Anwendungspasswort, dann kannst du einzelne Verbindungen gezielt sperren. Die Webhook-URL ist zwar öffentlich erreichbar, weist aber jede Anfrage ohne gültige Auth mit 401 ab.

Shop verbunden — und jetzt?

Sobald der Webhook läuft, erscheinen alle Bestellungen automatisch in deinem Backoffice. Brauchst du eine weitere Anbindung, geht jeder weitere Shop in wenigen Minuten.

Zur Shop-Übersicht