Rechten per sleutel
Een sleutel hoort bij één winkel en werkt alleen voor de rechten die je aanvinkt: abonnementen, klanten, punten en inwisselingen, lezen of schrijven.
Abonnementen opvragen, pauzeren, overslaan, verzetten en opzeggen kan ook vanuit je eigen systeem. Webhooks melden wat er verandert, en via de MCP-server werkt een AI-assistent met dezelfde gegevens, binnen de rechten die jij geeft.
Je hoeft geen toegang aan te vragen. Een sleutel maak je in een minuut aan, met precies de rechten die de koppeling nodig heeft.
Geef je ERP, je klantenservicetool en je AI-assistent elk een eigen sleutel. Zo zie je wie wat doet, en trek je één sleutel in zonder de rest te raken.
Je stelt een endpoint in en kiest de gebeurtenissen die je wilt ontvangen. Elk bericht is ondertekend. Lukt de bezorging niet, dan probeert Loyalo het opnieuw na 1, 5, 20, 60 en 240 minuten.
Stuur je sleutel mee in de header x-api-key. Antwoorden zijn JSON; lijsten geven een next_offset mee voor de volgende pagina.
curl "https://mwugkfkidoakjoelhtir.supabase.co/functions/v1/v2-api/subscriptions?status=active&limit=50" \
-H "x-api-key: $LOYALO_API_KEY" curl -X POST "https://mwugkfkidoakjoelhtir.supabase.co/functions/v1/v2-api/subscriptions/SUBSCRIPTION_ID/pause" \
-H "x-api-key: $LOYALO_API_KEY" curl -X POST "https://mwugkfkidoakjoelhtir.supabase.co/functions/v1/v2-api/points" \
-H "x-api-key: $LOYALO_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "customer_id": "…", "points": 100, "note": "Goodwill", "idempotency_key": "ticket-4711" }' import crypto from "node:crypto";
// Express-voorbeeld met de ruwe body (Buffer)
function verifyLoyaloWebhook(req, secret) {
const timestamp = req.header("x-loyalo-timestamp");
const signature = req.header("x-loyalo-signature");
const expected = crypto
.createHmac("sha256", secret)
.update(`${timestamp}.${req.rawBody}`)
.digest("hex");
const ok = crypto.timingSafeEqual(
Buffer.from(expected),
Buffer.from(signature ?? ""),
);
// Weiger verzoeken ouder dan 5 minuten
const fresh = Math.abs(Date.now() / 1000 - Number(timestamp)) < 300;
return ok && fresh;
} claude mcp add --transport http loyalo https://mwugkfkidoakjoelhtir.supabase.co/functions/v1/v2-api/mcp \
--header "Authorization: Bearer lo_live_xxxxxxxxxxxxxxxx" | Endpoint | Recht | Wat het doet |
|---|---|---|
| GET /subscriptions | subscriptions | Lijst met abonnementen van je winkel, nieuwste eerst. |
| GET /subscriptions/{id} | subscriptions | Eén abonnement met regels, bedrag en volgende incassodatum. |
| POST /subscriptions/{id}/pause | subscriptions:write | Pauzeert het abonnement (Shopify én Mollie). |
| POST /subscriptions/{id}/resume | subscriptions:write | Hervat een gepauzeerd abonnement. |
| POST /subscriptions/{id}/skip | subscriptions:write | Slaat de eerstvolgende levering over; de datum schuift één interval op. |
| POST /subscriptions/{id}/reschedule | subscriptions:write | Verzet de eerstvolgende levering naar een andere datum (binnen een jaar). |
| POST /subscriptions/{id}/cancel | subscriptions:write | Zegt het abonnement definitief op. |
| GET /customers | customers | Klanten met puntensaldo, bestedingen en taalvoorkeur. |
| GET /points | points | Puntentransacties, eventueel gefilterd op klant. |
| POST /points | points:write | Punten bijschrijven (positief) of afboeken (negatief). De klant geef je met customer_id (van Loyalo), shopify_customer_id of email: precies één. Dezelfde idempotency_key (of Idempotency-Key-header) boekt nooit twee keer. |
| GET /redemptions | redemptions | Verzilverde kortingen met code, status en vervaldatum. |
| GET /ping | — | Controleert je sleutel en geeft de winkel en rechten terug. |
Naast de webhooks van Shopify zelf, die over orders en klanten gaan, stuurt Loyalo events over het abonnement en de punten.
| Event | Wanneer |
|---|---|
| subscription.created | Nieuw abonnement aangemaakt |
| subscription.updated | Abonnement gewijzigd (datum, regels, frequentie) |
| subscription.paused | Abonnement gepauzeerd |
| subscription.resumed | Abonnement hervat |
| subscription.cancelled | Abonnement opgezegd |
| subscription.payment_failed | Incasso mislukt |
| points.changed | Puntensaldo van een klant gewijzigd |
| ping | Testbericht (knop in Loyalo) |
Een sleutel hoort bij één winkel en werkt alleen voor de rechten die je aanvinkt: abonnementen, klanten, punten en inwisselingen, lezen of schrijven.
Standaard 120 verzoeken per minuut per sleutel. Ga je eroverheen, dan krijg je een 429 en probeer je het even later opnieuw.
Punten bijschrijven met een idempotency-key boekt nooit twee keer, ook niet als je verzoek door een time-out opnieuw wordt gestuurd.
Elke webhook heeft een handtekening: HMAC-SHA256 over het tijdstip en de inhoud, met het geheim van je endpoint. Oude berichten weiger je.
Loyalo is ook een MCP-server. Een assistent zoals Claude of ChatGPT gebruikt dezelfde functies als tools, en kan zo in gewone taal een abonnement opzoeken of pauzeren.
Zo koppel je een assistentLaat je ERP weten dat er een abonnement is gestart of opgezegd, en haal de lopende abonnementen op voor je planning.
Pauzeer of verzet een abonnement vanuit je eigen supporttool, zonder van scherm te wisselen.
Schrijf punten bij voor een aankoop op een beurs of in je eigen app, en lees het saldo van een klant uit.
Haal abonnementen, klanten en punten op voor je datawarehouse of je BI-tool.
Ja. Een REST-API voor abonnementen, klanten, punten en inwisselingen, met sleutels die je zelf aanmaakt in het dashboard. De API zit in elk plan.
Met een API-sleutel in de header x-api-key, of als Bearer-token. Je maakt de sleutel aan bij Instellingen > API & webhooks. Een sleutel hoort bij één winkel en is na het aanmaken niet meer op te vragen, dus bewaar hem veilig.
Zeven events: een abonnement dat is aangemaakt, gewijzigd, gepauzeerd, hervat of opgezegd, een mislukte incasso en een gewijzigd puntensaldo. Daarnaast is er een testbericht dat je met een knop verstuurt.
Loyalo probeert de bezorging opnieuw na 1, 5, 20, 60 en 240 minuten. In het dashboard zie je elke bezorging met het resultaat en stuur je een mislukte bezorging handmatig opnieuw. Antwoord met een 2xx-status binnen 10 seconden.
Elke bezorging heeft de headers x-loyalo-timestamp en x-loyalo-signature. De handtekening is een HMAC-SHA256 over 'timestamp.body' met het geheim van je endpoint. Vergelijk in constante tijd en weiger verzoeken ouder dan vijf minuten.
Alleen als je hem een sleutel met schrijfrechten geeft. Met een sleutel met alleen leesrechten kan een assistent opzoeken en samenvatten, maar niets veranderen.
Ja. Orders en klanten staan in Shopify, en een abonnement met kaart staat daar als contract; die lees je gewoon via Shopify. De API van Loyalo voegt toe wat Shopify niet heeft: pauzeren, overslaan en verzetten in één verzoek, iDEAL-abonnementen en punten.
Verder lezen: API-documentatieIntegratiesInzicht
We laten je in een half uur zien hoe Loyalo in jouw shop werkt, of sturen je meteen een installatielink. De proefperiode duurt 14 dagen en vraagt geen creditcard.
Vragen over een koppeling? In een demo kijken we mee naar wat je wilt bouwen.