Ingelogde klanten in uw webshop

Ingelogde klanten in uw webshop

Pagina kopiëren

Laat alleen ingelogde klanten een webhook aanroepen via het domein van uw winkel en ontvang de door Shopify ondertekende klant-ID in Shopify Flow.

Roep een webhook aan vanuit uw eigen webshop en ontdek welke klant deze heeft verzonden. Een groothandelsbestelformulier, een knop voor het opnieuw bestellen op een B2B-accountpagina of een aanvraagformulier voor ingelogde klanten kan een Shopify Flow-workflow starten, waarbij de workflow de ID ontvangt van de klant die is ingelogd. Shopify ondertekent die ID, zodat niemand zich kan voordoen als een andere klant.

Dit bouwt voort op de URL van de app-proxy; zie CORS, de URL van de app-proxy en browserverzoeken.

Stel het in

  1. Open de webhook en ga naar ‘Geavanceerde instellingen’.
  2. Schakel onder ‘URL-instellingen’ de optie ‘App-proxy-URL gebruiken’ in. De webhook-URL bevindt zich nu op het domein van uw winkel, bijvoorbeeld https://your-store.com/apps/webhooks/abc123.
  3. Kies bij ‘Wie kan deze webhook aanroepen?’ een van de drie opties:
Optie URL van de app-proxy Directe URL naar de app
Iedereen met de URL Geschikt voor iedereen Werken
Uitsluitend via het domein van uw winkel Geschikt voor iedereen, ook voor gasten Afgewezen met foutcode 403
Alleen klanten die bij uw winkel zijn ingelogd Werkt voor ingelogde klanten; gasten krijgen een 401-foutmelding Afgewezen met foutcode 403
  1. Opslaan. De instelling is van toepassing op het volgende verzoek.
Geavanceerde instellingen, URL-instellingen: de optie ‘App-proxy-URL gebruiken’ is ingeschakeld en bij ‘Wie kan deze webhook aanroepen?’ is ‘Alleen klanten die bij uw winkel zijn ingelogd’ geselecteerd
Deze instelling vindt u onder ‘Geavanceerde instellingen’ > ‘URL-instellingen’, direct onder de schakelaar voor de app-proxy-URL.

Wat de app controleert

Elk verzoek dat via de proxy-URL van de app wordt verzonden, is voorzien van een handtekening van Shopify. De app controleert, in deze volgorde:

  • De handtekening. Een verzoek zonder geldige Shopify-handtekening wordt afgewezen met foutcode 401. Niemand kan deze vervalsen, omdat Shopify deze genereert met de geheime sleutel van uw app.
  • Uw winkel. Een verzoek dat is ondertekend voor een andere winkel, wordt afgewezen met foutcode 403.
  • De aangemelde klant. Wanneer alleen klanten die bij uw winkel zijn aangemeld toegang hebben, wordt een verzoek zonder aangemelde klant geweigerd met foutcode 401 (customer_login_required). Het klant-ID is afkomstig uit de handtekening, nooit uit de hoofdtekst van het verzoek.
  • De directe URL. Bij beide beperkingen geeft de directe app-URL een 403-foutmelding (proxy_required), zodat niemand deze controles kan omzeilen.

Een afgewezen verzoek komt nooit bij Shopify Flow terecht en telt niet mee voor uw abonnement.

Wat Shopify Flow ontvangt

De Webhook-trigger en de Sync Webhook-trigger beschikken over een veld customerId: het numerieke ID van de aangemelde klant, bijvoorbeeld 7350001. Dit veld is leeg voor gasten en voor elk verzoek dat niet via de app-proxy-URL is binnengekomen. Uw toegewezen velden worden zoals gewoonlijk doorgegeven; zie Toewijzing van payloads en Flow-variabelen.

Bel het vanuit uw webshop

Het verzoek moet afkomstig zijn van een pagina van uw webwinkel terwijl de klant is ingelogd, zodat het via het domein van uw webwinkel verloopt. Kopieer de webhook-URL uit de app: Shopify biedt u de mogelijkheid om het proxypad aan te passen, waardoor uw pad kan afwijken van het voorbeeld. Dit codefragment in een themasectie verzendt de bedrijfslocatie waarvoor de B2B-klant een aankoop doet:

sections/wholesale-request.liquidhtml
<script>
  fetch('/apps/webhooks/abc123', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      companyLocationId: 'gid://shopify/CompanyLocation/{{ customer.current_location.id }}'
    })
  })
</script>

Koppel veld 1 aan companyLocationId, zodat de workflow de locatie als fieldOne ontvangt.

Registreer de klant in Shopify Flow

Shopify Flow kan alle gegevens over de klant lezen, dus de controle hoort in de workflow thuis:

  1. Trigger: Webhook-trigger uit Workflow Webhooks. Indien u meerdere webhooks hebt, voeg dan een voorwaarde toe: de webhook-ID is gelijk aan de ID die in de app wordt weergegeven.
  2. Haal klantgegevens op met de query id:{{customerId}}. Shopify Flow laadt de aangemelde klant, inclusief tags en bedrijfsrollen.
  3. Voorwaarde: de klant heeft het label wholesale en een van de contactprofielen van zijn bedrijf heeft een roltoewijzing waarvan de locatie-ID van het bedrijf gelijk is aan fieldOne en waarvan de rol Ordering only of Location admin is.
  4. In dat geval: voer de nodige acties uit, bijvoorbeeld het aanmaken van een conceptbestelling voor die locatie. Anders: stop, of stuur een reactie terug naar de webshop met een Synchrone reactie, zodat de pagina de klant kan uitleggen waarom.

Goed om te weten

  • De proxy-URL van de app vereist dat uw webshop bereikbaar is. Bij een met een wachtwoord beveiligde webshop reageert deze pas nadat het wachtwoord van de webshop is ingevoerd.
  • Gasten krijgen de 401-foutmelding te zien; zorg er daarom voor dat er op die pagina een inloglink wordt weergegeven.
  • In de geschiedenis wordt het klant-ID van elk verzoek weergegeven, en bij een herhaling wordt dit opnieuw verzonden.
  • Wanneer een klant verzoekt om verwijdering van zijn gegevens, worden de door hem verzonden geschiedenisgegevens gewist.