Zum Inhalt springen
 Custom · 30–60 Min · variabel

Perfect Day mit anderen Shops anbinden.

Du nutzt Wix, Squarespace, Jimdo, Webflow Ecommerce oder einen selbstgebauten Shop? Solange dein Shop bei jeder bezahlten Bestellung einen Webhook senden kann — direkt oder über einen Dienst wie Make.com — lässt sich Perfect Day anbinden.

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.

Die Mindest-Anforderungen

  1. Drei Dinge muss dein Shop können

    • Order-Webhook auslösen bei „Bestellung bezahlt"
    • HTTP-POST mit Basic-Auth-Header schicken
    • JSON-Payload in unserem Format konstruieren

    Kann dein Shop nur Bestell-Mails verschicken und sonst nichts? Dann nutze einen Bridge-Dienst wie Zapier oder Make.com, der die Bestell-Mail parst und den HTTP-Call macht.

Der erforderliche JSON-Body

Egal woher die Daten kommen — am Ende muss dieser JSON-Body an den Webhook gehen.

  1. Payload-Format

    Pflichtfelder: shop_order_id, shop_type, shop_domain, customer.email, items[].coupon_id und items[].count. Optional sind customer.name, customer.locale, order_total_cents, currency und placed_at.

    JSON · Webhook-Body
    {
      "shop_order_id": "1042",
      "shop_type": "custom",
      "shop_domain": "shop.example.com",
      "customer": {
        "email": "kunde@example.com",
        "name": "Max Mustermann",
        "locale": "de"
      },
      "items": [
        { "coupon_id": 15114, "count": 1 }
      ],
      "order_total_cents": 5000,
      "currency": "EUR",
      "placed_at": "2026-05-14T10:42:00Z"
    }
  2. Auth-Header

    Standard HTTP Basic Auth. Den Wert berechnest du aus Username und Anwendungspasswort.

    HTTP-Header
    Authorization: Basic <base64(USERNAME:APP_PASSWORD)>
    Content-Type: application/json
  3. Base64-Wert erzeugen

    Auf Mac/Linux im Terminal — das Ergebnis kommt hinter Basic :

    Bash
    echo -n "dein-name:xxxx xxxx xxxx xxxx xxxx xxxx" | base64

Bridge-Optionen für Shops ohne native Webhook-Funktion

  1. Option 1 — Zapier oder Make.com

    Beide bieten Trigger für viele Shop-Systeme plus eine HTTP-Action für den POST. Beispiel-Workflow (Make.com): Trigger „Watch new orders", optionale Action „Get product details" für den Coupon-ID-Lookup, dann „HTTP → Make a request" an die Webhook-URL. Der kostenlose Make.com-Tarif reicht für rund 1.000 Bestellungen pro Monat.

  2. Option 2 — IFTTT, n8n, Pipedream

    Gleicher Workflow, andere Oberfläche. n8n ist selbst hostbar und damit DSGVO-freundlicher. IFTTT ist eingeschränkter (kein komplexes JSON-Mapping).

  3. Option 3 — Eigener Bridge-Server

    Für eine eigene Webhook-URL: Cloudflare Workers (kostenlos bis 100k Requests/Tag), Vercel Serverless Functions, AWS Lambda oder ein eigener Node/PHP-Server. Beispiel-Code für Cloudflare Workers:

    Vollständigen Code anzeigen — TypeScript · Cloudflare Worker
    TypeScript · Cloudflare Worker
    export default {
      async fetch(req: Request): Promise<Response> {
        if (req.method !== 'POST') return new Response('Method not allowed', { status: 405 });
    
        const shopPayload = await req.json();
        const pfdPayload = mapToPerfectDay(shopPayload);
    
        const auth = btoa('DEIN-USER:DEIN APP PWD');
        const res = await fetch(
          'https://plattform.deinperfectday.de/wp-json/perfectday/shop/webhook/order',
          {
            method: 'POST',
            headers: {
              'Content-Type': 'application/json',
              'Authorization': 'Basic ' + auth,
            },
            body: JSON.stringify(pfdPayload),
          }
        );
        return new Response(await res.text(), { status: res.status });
      },
    };
    
    function mapToPerfectDay(shopPayload: any) {
      return {
        shop_order_id: shopPayload.orderNumber,
        shop_type:     'custom',
        shop_domain:   shopPayload.shop?.domain,
        customer: {
          email:  shopPayload.customer?.email,
          name:   shopPayload.customer?.name,
          locale: 'de',
        },
        items: shopPayload.lineItems.map((li: any) => ({
          coupon_id: parseInt(li.metadata?.pfd_coupon_id, 10),
          count:     li.quantity,
        })).filter((it: any) => it.coupon_id > 0),
        order_total_cents: Math.round(shopPayload.totalAmount * 100),
        currency:          shopPayload.currency,
        placed_at:         shopPayload.paidAt,
      };
    }

Coupon-ID-Mapping bei Shops ohne Custom-Fields

  1. Mapping in der Bridge pflegen

    Unterstützt dein Shop keine Custom-Felder pro Produkt (manche sehr einfachen Shop-Builder), pflegst du das Mapping direkt in der Bridge. Voraussetzung: dein Shop-Produkt-Slug ist eindeutig und stabil.

    TypeScript
    const COUPON_MAPPING: Record<string, number> = {
      'gutschein-25-eur':  15114,
      'gutschein-50-eur':  15115,
      'gutschein-100-eur': 15116,
    };
    
    // In mapToPerfectDay():
    const couponId = COUPON_MAPPING[li.productSlug];

Test-Bestellung

  1. Bestellung auslösen und prüfen

    Egal welche Bridge-Variante: Test-Bestellung tätigen und im Plattform-Backoffice unter Perfect Day → Shop-Bestellungen auf den Eintrag mit shop_type=custom warten. Kunden-Mailbox auf die Brand-Mail prüfen.

Wenn etwas klemmt

Troubleshooting.

Webhook erreicht den Plattform-Server nicht

Die Plattform akzeptiert nur HTTPS-POSTs. Hat dein Bridge-Server ein gültiges SSL-Zertifikat und ist er öffentlich erreichbar? Test von extern: curl -v https://plattform.deinperfectday.de/wp-json/perfectday/shop/webhook/order muss eine 401 zurückgeben — nicht „Connection Refused".

Auth funktioniert nicht

Der Username ist der WordPress-Benutzername (user_login), nicht die E-Mail. Beim Base64-Encoding echo -n verwenden (ohne Newline-Zeichen).

Andere Fehler-Codes (400, 403, 429)

400 = ungültiger JSON-Body (oft fehlende Kunden-E-Mail), 403 = die Coupon-ID gehört nicht zu deinem Account, 429 = Rate-Limit, kurz warten und erneut senden.

Setup-Service

Lieber von uns einrichten lassen?

Ist dein Shop hier nicht aufgeführt oder hängst du beim Bridge-Setup? Schick uns einen Support-Request mit deinem Shop-System, den nativen Fähigkeiten (Webhooks, Custom-Fields, API) und Beispiel-Daten einer Test-Bestellung. Wir liefern dir ein vorgefertigtes Mapping-Template oder helfen bei eigenem Code.

Häufige Fragen

Noch Fragen?

Welche Shops sind „andere Shops"?
Alles außerhalb von Shopify, WooCommerce, Shopware, Magento und PrestaShop — zum Beispiel Wix, Squarespace, Jimdo, Webflow Ecommerce oder selbstgebaute Shops. Solange ein Webhook oder eine Bestell-API vorhanden ist, geht die Anbindung.
Was kostet eine Bridge über Make.com?
Der kostenlose Make.com-Tarif reicht für rund 1.000 Bestellungen pro Monat. Erst darüber wird ein bezahlter Tarif nötig. n8n ist bei Eigen-Hosting komplett kostenfrei.
Was, wenn mein Shop gar keine Webhooks kann?
Dann brauchst du einen Dienst, der die Bestell-Benachrichtigungs-Mail deines Shops parst und daraus einen HTTP-Call baut — z. B. Zapier mit „Parse Email". Schick uns dein Shop-System, wir beraten zum konkreten Weg.

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