Eine HTTP-Anfrage von Shopify Flow aus senden

Warum das für HTTP-Anfragen nutzen

Shopify Flow enthält eine integrierte Aktion Send HTTP request, die jedoch nur bei bestimmten Shopify-Plänen verfügbar ist. Wenn dein Shop auf Basic läuft, kannst du trotzdem externe APIs aufrufen, indem du stattdessen Workflow Transactional Email verwendest.

Du erstellst die Anfrage einmal in der App und wählst sie anschließend in deinem Workflow über die Aktion HTTP Request aus. Da die Anfrage in der App und nicht im Workflow gespeichert wird, landen Zugangsdaten außerdem nie in deiner Flow-Konfiguration - und du erhältst kostenlos eine vollständige Protokollierung von Anfragen und Antworten.

Was du bauen wirst

Einen Workflow, der alle 10 Minuten läuft, Produkte findet, die noch nicht in Airtable sind, und sie dorthin sendet.

Dabei kommt Folgendes zum Einsatz:

  • Secrets, um das Airtable-Token und die Base-ID zu speichern
  • HTTP Requests, um die Anfragevorlage zu definieren
  • Die Aktion HTTP Request in Shopify Flow, um sie auszuführen
  • History, um das Ergebnis zu prüfen

Video-Anleitung

Der gesamte Einrichtungsprozess: das Erstellen der Secrets, der HTTP-Anfrage und des Workflows. Das Video hat keinen Ton.

Bevor du beginnst

  • Workflow Transactional Email ist installiert.
  • Du hast Zugriff auf Shopify Flow.
  • Du hast eine Airtable-Base-ID und eine Tabelle, die bereit ist, Produktdaten zu empfangen.
  • Du hast ein Airtable-Zugriffstoken mit den passenden Berechtigungen.

Schritt 1: Zugangsdaten als Secrets speichern

Anstatt Zugangsdaten direkt in die Anfrage einzugeben, speichere sie einmal als Secrets und referenziere sie als {{ secrets.yourKeyName }}. Sie werden verschlüsselt gespeichert, sind über mehrere Anfragen hinweg wiederverwendbar und werden in deinem Verlauf unkenntlich gemacht.

Öffne Secrets und klicke auf Create secret.

Die Secrets-Seite mit der Schaltfläche „Create secret“

Gib den Schlüssel, den Wert und eine Beschreibung ein und speichere anschließend.

Eingabe eines Secret-Schlüssels, -Werts und einer Beschreibung

Dieses Beispiel speichert zwei Secrets: das persönliche Zugriffstoken und die Airtable-Base-ID.

Schritt 2: Die Anfrage erstellen

In diesem Beispiel wird Airtables Create-Records-Endpunkt verwendet.

Öffne HTTP Requests und klicke auf Create request.

Die HTTP-Requests-Seite mit der Schaltfläche „Create request“

Gib ihr einen aussagekräftigen Namen wie Create Airtable product record - genau danach wirst du später in Shopify Flow suchen.

Lege die Methode fest. Für das Erstellen von Airtable-Datensätzen ist das POST.

Gib den Endpunkt in das URL-Feld ein. Das Präfix https:// ist fest vorgegeben, gib also nur den Rest ein:

api.airtable.com/v0/{{ secrets.airTableProductsBaseId }}/Products

Dieses Bild zeigt, wie der Airtable-Endpunkt auf deine Base abgebildet wird, damit du ihn für deinen eigenen Fall anpassen kannst:

Wie die Airtable-Endpunkt-URL auf die Base abgebildet wird

Füge die von Airtable benötigten Header hinzu:

Authorization: Bearer {{ secrets.airtableAccessToken }}
Content-Type: application/json

Verwende im Anfragetext eine Variable für die Datensätze, damit Flow sie liefern kann:

{
  "records": {{ variables.records }}
}

Airtable erwartet, dass diese Variable zu einem Array in dieser Form aufgelöst wird:

"records": [
  {
    "fields": {
      "Title": "Classic White T-Shirt",
      "Handle": "classic-white-tshirt",
      "Product ID": 1001
    }
  },
  {
    "fields": {
      "Title": "Eco-Friendly Water Bottle",
      "Handle": "eco-water-bottle",
      "Product ID": 1002
    }
  }
]

Dieses Array bauen wir im nächsten Schritt im Workflow.

Die fertige Anfrage sieht so aus:

Die fertige Airtable-HTTP-Anfrage

Der HTTP-Anfrage-Editor mit Methode, URL, Headern und Body
Die Anfrage: Methode, URL, Header und Body - jeder davon kann Variablen und Secrets verwenden.

Speichere die Anfrage. Sie ist nun in der Aktion HTTP Request in Shopify Flow auswählbar.

Schritt 3: Den Workflow erstellen

Öffne Shopify Flow und erstelle einen neuen Workflow.

Wähle einen zeitplanbasierten Trigger. Dieses Beispiel läuft zu Demonstrationszwecken alle 10 Minuten - wähle für den produktiven Einsatz etwas Sinnvolleres.

Ein zeitplanbasierter Trigger in Shopify Flow

Rufe die Produkte ab, die noch nicht in Airtable sind. Bereits gesendete Produkte erhalten im letzten Schritt das Tag added-to-airtable, daher schließt diese Abfrage sie aus. Siehe Shopifys Referenz zum Query-Argument.

Abrufen von nicht getaggten Produkten in Shopify Flow

Jetzt werden die Daten formatiert. Der Anfragetext erwartet eine Variable records, verwende also die Aktion Run code von Flow, um die abgerufenen Produkte in dieses Array umzuwandeln.

Hinzufügen der Aktion „Run code“

Konfiguriere den Schritt wie folgt:

Konfiguration des Run-code-Schritts

Die Query:

query {
  getProductData {
    id
    handle
    title
  }
}

Der Code:

export default function main(input) {
  const records = input.getProductData.map((data) => {
    const numericId = parseInt(data.id.replace("gid://shopify/Product/", ""));
    return {
      fields: {
        "Product ID": numericId,
        "Title": data.title,
        "Handle": data.handle
      }
    };
  });

  return {
    records: JSON.stringify(records)
  };
}

Das Ausgabeschema:

"The output of Run Code"
type Output {
  "The message returned by the script"
  records: String
}

Du kannst das Ergebnis rechts in der Vorschau ansehen:

Vorschau der Run-code-Ausgabe

Füge die von dieser App bereitgestellte Aktion HTTP Request hinzu.

Hinzufügen der Aktion „HTTP Request“

Wähle bei der Aufforderung die gespeicherte Anfrage aus - Create Airtable product record - speichere anschließend und kehre zum Workflow zurück.

Auswahl der gespeicherten HTTP-Anfrage

Übergib im Variablenfeld der Aktion die soeben formatierten Datensätze:

{
  "records": "{{runCode.records}}"
}

Übergeben der formatierten Datensätze an die Anfrage

Iteriere abschließend über die abgerufenen Produkte und tagge sie mit added-to-airtable, damit sie beim nächsten Durchlauf nicht erneut erfasst werden.

Taggen der Produkte nach dem Senden

Speichere und aktiviere den Workflow.

Schritt 4: Erfolg überprüfen

In History kannst du sehen, ob die Anfrage erfolgreich war und was Airtable zurückgesendet hat.

Die History-Liste mit der Anfrage

Öffne den Eintrag, um die Anfragedaten, die Antwortdaten und die Zeitangaben zu prüfen.

Die Detailansicht der Anfrage

Auf der Bearbeitungsseite der Anfrage führt dich die Schaltfläche Request history direkt zur nach dieser einen Anfrage gefilterten History.

Was die App dich nicht aufrufen lässt

Von Händlern konfigurierte Anfragen durchlaufen eine Sicherheitsprüfung. Anfragen an interne oder private Netzwerkadressen werden abgelehnt, einschließlich localhost, Cloud-Metadaten-Endpunkten und allem, was auf einen privaten Adressbereich verweist - selbst über eine Weiterleitung. Wenn du eine Fehlermeldung mit SSRF blocked siehst, steht das Ziel auf dieser Liste. Anfragen folgen außerdem maximal 5 Weiterleitungen und begrenzen die Antwort auf 10 MB.

Shopify Flow selbst begrenzt eine Aktionsantwort auf 50 KB. Wenn eine Testantwort größer ist, verhindert die App das Speichern, anstatt den Schritt innerhalb eines laufenden Workflows fehlschlagen zu lassen.

Best Practices

  • Verwende klare Anfragenamen, damit sie in Shopify Flow leicht zu finden sind.
  • Speichere API-Tokens als Secrets, anstatt sie direkt in Header einzugeben.
  • Halte den Body auf die Felder beschränkt, die das Ziel tatsächlich benötigt.
  • Prüfe nach jeder Änderung die History, um sicherzustellen, dass die Anfrage weiterhin erfolgreich ist.
  • Füge vor der Anfrage eine Bedingung hinzu, damit sie bei leeren Durchläufen nicht ausgeführt wird.

Verwandte Themen