Inloggade kunder i din webbutik
Låt endast inloggade kunder anropa en webhook via din butiks domän, inaktivera den direkta URL:en och hämta det verifierade kund-ID:t i Shopify Flow.
Anropa en webhook från din egen webbutik och se vilken kund som skickade den. Ett grossistbeställningsformulär, en knapp för återbeställning på en B2B-kontosida eller ett förfrågningsformulär för inloggade kunder kan starta ett Shopify Flow-arbetsflöde, och arbetsflödet tar emot ID:t för den kund som är inloggad. Shopify signerar det ID:t, så att ingen kan utge sig för att vara en annan kund.
Detta bygger vidare på app-proxyns URL, se CORS, appens proxy-URL och webbläsarens anrop.
Ställ in det
- Öppna webhooken och gå till Avancerade inställningar.
- Under ”URL-inställningar” aktiverar du alternativet ”Använd appens proxy-URL”. Webhook-URL:en finns nu på din butiks domän, till exempel
https://your-store.com/apps/webhooks/abc123. - Under ”Vem kan anropa denna webhook?” väljer du ett av tre alternativ:
| Alternativ | Appens proxy-URL | Direktlänk till appen |
|---|---|---|
| Alla som har webbadressen | Fungerar för alla | Verk |
| Endast via din butiks domän | Fungerar för alla, även gäster | Avvisat med felkod 403 |
| Endast kunder som är inloggade i din butik | Fungerar för inloggade kunder; gäster får felmeddelande 401 | Avvisat med felkod 403 |
- Spara. Inställningen gäller för nästa förfrågan.

Vad appen kontrollerar
Varje förfrågan som skickas via appens proxy-URL innehåller en signatur från Shopify. Appen kontrollerar följande, i denna ordning:
- Signaturen. En begäran utan en giltig Shopify-signatur avvisas med felkod 401. Ingen kan förfalska den, eftersom Shopify skapar den med din apps hemliga nyckel.
- Din butik. En begäran som är undertecknad för en annan butik avvisas med felkod 403.
- Den inloggade kunden. När endast kunder som är inloggade i din butik tillåts avvisas en förfrågan utan inloggad kund med felkoden 401 (
customer_login_required). Kund-ID:t hämtas från signaturen, aldrig från förfrågans huvuddel. - Den direkta URL:en. Oavsett vilken begränsning som gäller returnerar appens direkta URL ett 403-fel (
proxy_required), så att ingen kan kringgå dessa kontroller.
En avvisad begäran når aldrig Shopify Flow och räknas inte in i ditt abonnemang.
Vad Shopify Flow tar emot
Webhook-utlösaren och synkroniseringswebhook-utlösaren har ett fält som heter customerId: det numeriska ID:t för den inloggade kunden, till exempel 7350001. Fältet är tomt för gäster och för alla förfrågningar som inte har skickats via appens proxy-URL. Dina mappade fält skickas som vanligt, se Kartläggning av nyttolast och Shopify Flow-variabler.
Ring från din butik
Begäran måste skickas från en sida i din butik medan kunden är inloggad, så att den går via din butiks domän. Kopiera webhook-URL:en från appen: Shopify låter dig ändra proxyvägen, så din kan skilja sig från exemplet. Det här kodavsnittet i en temasektion skickar företagets adress som B2B-kunden köper åt:
<script>
fetch('/apps/webhooks/abc123', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
companyLocationId: 'gid://shopify/CompanyLocation/{{ customer.current_location.id }}'
})
})
</script>Koppla fält 1 till companyLocationId så att arbetsflödet får platsuppgiften som fieldOne.
Checka in kunden i Shopify Flow
Shopify Flow kan läsa all information om kunden, så kontrollen hör hemma i arbetsflödet:
- Utlösare: Webhook-utlösare från Workflow Webhooks. Om du har flera webhooks lägger du till ett villkor: Webhook-ID:t ska stämma överens med det ID som visas i appen.
- Hämta kunddata med sökfrågan
id:{{customerId}}. Shopify Flow hämtar uppgifter om den inloggade kunden, inklusive taggar och företagsroller. - Villkor: kunden har taggen
wholesale, och en av kundens företagskontaktprofiler har en rolltilldelning där företagets plats-ID är lika medfieldOneoch där rollen ärOrdering onlyellerLocation admin. - I så fall: utför dina åtgärder, till exempel skapa ett orderutkast för den platsen. I annat fall: avbryt, eller skicka ett svar till webbgränssnittet med Synkron respons, så att sidan kan förklara orsaken för kunden.
Bra att veta
- Appens proxy-URL kräver att din webbutik är tillgänglig. För en lösenordsskyddad webbutik svarar den först efter att lösenordet till webbutiken har angetts.
- Gästerna får svar 401, så visa en inloggningslänk på den sidan.
- Historiken visar kund-ID för varje förfrågan, och vid en återuppspelning skickas det på nytt.
- När en kund begär att deras uppgifter ska raderas, raderas de historikposter som de har skickat in.
