Effectuez une requête HTTP depuis Shopify Flow
Pourquoi utiliser cette méthode pour les requêtes HTTP ?
Shopify Flow comprend une action intégrée « Envoyer une requête HTTP », mais celle-ci n'est disponible que sur certains forfaits Shopify. Si votre boutique est sous le forfait « Basic », vous pouvez tout de même appeler des API externes en utilisant à la place Workflow Transactional Email.
Vous créez la requête une seule fois dans l'application, puis vous la sélectionnez dans votre workflow à l'aide de l'action « Requête HTTP ». Le fait de conserver la requête dans l'application plutôt que dans le workflow signifie également que les identifiants ne figurent jamais dans la configuration de votre Shopify Flow, et que vous bénéficiez gratuitement d'une journalisation complète des requêtes et des réponses.
Ce que vous allez réaliser
Un workflow qui s'exécute toutes les 10 minutes, identifie les produits qui ne figurent pas encore dans Airtable et les y envoie.
Ceci utilise :
- Les secrets pour conserver le jeton Airtable et l'identifiant de base
- Requêtes HTTP pour définir le modèle de requête
- L'action « Requête HTTP » disponible sur Shopify Flow pour l'exécuter
- Historique permettant de vérifier le résultat
Guide vidéo
L'ensemble du processus : la création des secrets, la requête HTTP et le workflow. La vidéo est sans son.
Avant de commencer
- Workflow Transactional Email est installé.
- Vous avez accès à Shopify Flow.
- Vous disposez d'un identifiant de base Airtable et d'une table prête à recevoir les données relatives aux produits.
- Vous disposez d’un jeton d’accès Airtable () doté des autorisations nécessaires.
Étape 1 : Enregistrez les identifiants en tant que secrets
Au lieu de saisir vos identifiants dans la requête, enregistrez-les une seule fois en tant que « secrets » et faites-y référence à l'aide de l'{{ secrets.yourKeyName }}. Ils sont chiffrés au repos, réutilisables d'une requête à l'autre et supprimés de votre historique.
Ouvrez « Secrets » et cliquez sur « Créer un secret ».

Saisissez la clé, la valeur et une description, puis enregistrez.

Cet exemple stocke deux informations confidentielles : le jeton d'accès personnel et l'identifiant de la base Airtable.
Étape 2 : Créer la demande
Cet exemple utilise le point de terminaison « create-records » d'Airtable :.
Sélectionnez « Requêtes HTTP », puis cliquez sur « Créer une requête ».

Donnez-lui un nom clair, tel que « Créer une fiche produit Airtable » : c'est ce que vous rechercherez par la suite dans Shopify Flow.
Définissez la méthode. Pour créer des enregistrements Airtable, il s'agit de la méthode POST.
Saisissez le point de terminaison dans le champ URL. Le préfixe https:// est fixe ; saisissez donc le reste :
api.airtable.com/v0/{{ secrets.airTableProductsBaseId }}/Products
Cette image montre comment le point de terminaison Airtable correspond à votre base ; vous pouvez donc l'adapter à votre propre configuration :

Ajoutez les en-têtes requis par Airtable :
Authorization: Bearer {{ secrets.airtableAccessToken }}
Content-Type: application/json
Dans le corps de la requête, utilisez une variable pour les enregistrements afin que Shopify Flow puisse les fournir :
{
"records": {{ variables.records }}
}
Airtable s'attend à ce que cette variable soit une liste présentant la structure suivante :
"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
}
}
]
Nous allons créer ce tableau dans le workflow à l'étape suivante.
La requête finale se présente comme suit :



Enregistrez la requête. Elle est désormais disponible dans l'action « Requête HTTP » de Shopify Flow.
Étape 3 : Créer le workflow
Ouvrez Shopify Flow et créez un nouveau workflow.
Choisissez un déclencheur basé sur un calendrier. Dans cet exemple, le déclencheur s'exécute toutes les 10 minutes à des fins de démonstration ; choisissez une fréquence adaptée à votre environnement de production.

Récupérez les produits qui ne figurent pas encore dans Airtable. Les produits déjà envoyés se voient attribuer la balise added-to-airtable lors de la dernière étape ; cette requête les exclut donc. Consultez la référence aux arguments de requête d’Shopify à l’adresse.

Formatez à présent les données. Le corps de la requête attend une variable de type records ; utilisez donc l'action « Exécuter du code » de Shopify Flow pour organiser les produits récupérés sous la forme de ce tableau.

Veuillez configurer cette étape comme suit :

La requête :
query {
getProductData {
id
handle
title
}
}
Le 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)
};
}
Le schéma de sortie :
"The output of Run Code"
type Output {
"The message returned by the script"
records: String
}
Vous pouvez prévisualiser le résultat à droite :

Ajoutez l'action « Requête HTTP » proposée par cette application.

Lorsque vous y êtes invité, sélectionnez la demande que vous avez enregistrée - « Créer une fiche produit Airtable » - puis enregistrez et revenez au workflow.

Dans le champ « Variables » de l'action, transmettez les enregistrements que vous venez de mettre en forme :
{
"records": "{{runCode.records}}"
}
de requête
Enfin, parcourez les produits récupérés et balisez-les avec la balise added-to-airtable afin que la prochaine exécution ne les reprenne pas.

Enregistrez et activez le workflow.
Étape 4 : Vérifiez que cela a fonctionné
Dans l'historique, vous pouvez voir si la requête a abouti et quelle réponse Airtable a renvoyée.
de la requête
Ouvrez l'entrée pour examiner les données de la requête, celles de la réponse ainsi que les délais.

Depuis la page de modification de la demande, le bouton « Historique de la demande » vous permet d'accéder directement à l'historique filtré en fonction de cette demande précise.
Les numéros que l'application ne vous permettra pas d'appeler
Les requêtes configurées par les marchands sont soumises à un filtre de sécurité. Les requêtes vers des adresses réseau internes ou privées sont refusées, notamment localhost, les points de terminaison de métadonnées cloud et toute adresse correspondant à une plage privée, même via une redirection. Si vous constatez une erreur mentionnant SSRF blocked, cela signifie que la destination figure sur cette liste. Les requêtes ne peuvent en outre pas dépasser 5 redirections et la taille de la réponse est plafonnée à 10 Mo.
Shopify Flow Elle limite elle-même la taille d'une réponse d'action à 50 Ko. Si la réponse d'un test dépasse cette limite, l'application bloque l'enregistrement plutôt que de laisser l'étape échouer au sein d'un workflow en cours d'exécution.
Bonnes pratiques
- Utilisez des noms de requêtes clairs afin qu'ils soient faciles à retrouver dans Shopify Flow.
- Enregistrez les jetons API en tant que secrets plutôt que de les saisir dans les en-têtes.
- Veillez à ce que le programme se concentre sur les champs dont la destination a réellement besoin.
- Vérifiez l'historique après chaque modification afin de vous assurer que la requête aboutit toujours.
- Ajoutez une condition avant la requête afin qu'elle ne s'exécute pas lors de cycles vides.
Connexes
- Secrets - le stockage des identifiants.
- Variables et liquide - la référence de la variable, y compris la redéfinition dans le corps.
- Historique et dépannage - lecture d'une requête ayant échoué.

