De structuur
Elke prompt heeft vijf onderdelen, in deze volgorde:- De uitkomst, in één alinea, zoals je die aan een nieuwe manager zou uitleggen. Wie het gebruikt, waar het draait, wat het nooit mag doen.
- Het storekit-contextblok hieronder — volledig gekopieerd. Het vertelt de builder precies hoe storekit met de app zal praten, zodat er geen payload verzonnen wordt of signatuurcontroles overgeslagen worden.
- Wat te bouwen, als genummerde lijst. Benoem het endpoint-pad, elk scherm, elke regel. Als je iets bij het testen zou controleren, hoort het in deze lijst.
- Definitie van klaar, als checkboxen. De builder gebruikt dit om zijn eigen werk te controleren.
- Wat terug te geven: de publieke webhook-URL, de lijst environment variables die je moet instellen, en hoe je het test.
Het contextblok
Plak dit ongewijzigd in elke prompt, direct na je uitkomst-alinea. Het is hetzelfde blok dat in alle recepten wordt gebruikt.order.created.v2 gebruikt, kopieer je de voorbeeldpayload van dat event uit de eventsreferentie en voeg je die ook toe onder “Example payload”.
Regels die vaak herhaling behoeven
Builders vergeten deze zaken tenzij de prompt het expliciet maakt, dus elk recept schrijft ze uit. Kopieer de regels die je nodig hebt in deel 3 van je prompt.- Verifieer de Svix-signatuur bij elk verzoek met de officiële
svix-bibliotheek. Schrijf geen eigen verificatie. Retourneer 400 als het mislukt. - Retourneer 200 zodra het event opgeslagen is, en verwerk het daarna. Laat storekit nooit wachten op een printer, een sms of een externe API.
- Negeer elke
svix-iddie je al hebt gezien. - Bewaar de eventgeschiedenis in een echte database, niet in het geheugen, zodat er niets verloren gaat wanneer de app herstart of opnieuw wordt gedeployed.
- Stuur klantnamen, telefoonnummers of adressen niet naar externe services tenzij de prompt dat aangeeft.
- Formatteer geldbedragen door te delen door 100 en de valuta van de vestiging te gebruiken.
- Toon tijden in de lokale tijdzone van de vestiging, niet die van de server.
- Zet de webhook-secret en API-sleutels in environment variables. Nooit in de code.
Een builder kiezen
We raden niet voor alles één builder aan, maar de recepten geven aan waar het uitmaakt:- Tools die webhooks ontvangen hebben een stabiele publieke URL nodig die online blijft en meestal een database. Replit biedt alle drie op één plek, dus recepten die events ontvangen zijn met Replit in gedachten geschreven. Bolt en Lovable kunnen dit ook als je een backend toevoegt (meestal in combinatie met Supabase); voeg bij het prompten toe: “deploy de backend zodat die een publieke URL heeft, en vertel me welke”.
- Tools die alleen een scherm tonen en uit een database lezen die je andere tool vult, passen goed bij Lovable en v0.
- Geplande taken (een dagelijkse samenvatting om 23:30, een wekelijkse digest) hebben ergens een scheduler nodig. Vraag de builder direct: “dit moet elke dag om 23:30 Europe/London draaien; vertel me hoe je het hebt ingepland en hoe ik kan controleren dat het draaide”.
De voltooide app aansluiten
Zodra de builder je een URL geeft, sluit je die aan:1
Open the webhooks portal
In the dashboard sidebar, go to Settings → Webhooks. If your plan includes webhooks and they are not yet enabled, click Enable Webhooks. If the page shows Upgrade to enable webhooks, contact support to discuss adding webhooks to your plan.
2
Add your app as an endpoint
In the embedded portal, add a new endpoint, paste the webhook URL your app builder gave you, and tick only the event types the recipe needs.
3
Copy the signing secret into your app
Open the endpoint you just created and copy its signing secret. In your app builder, save it as the environment variable
STOREKIT_WEBHOOK_SECRET (builders call this “secrets” or “environment variables”). Redeploy if the builder asks you to.4
Send a test event
Use the portal’s test option on the endpoint to send a sample event. The delivery log shows the response code from your app. A
2xx means your app accepted it; anything else, read the response body in the log — it is usually a missing secret.Testen zonder op een echte bestelling te wachten
- De testbezorgoptie in de webhooks-portal gebruikt een generiek voorbeeld, niet je menu. Het bewijst de verbinding en de signatuurcontrole; het bewijst je layout niet.
- Voor een echte payload plaats je een kleine bestelling op je eigen storefront met een testbetaalmethode of een 100%-kortingscode, en refund je die daarna. Doe dit met het log van de app open.
- Breek expres één keer iets: verander
STOREKIT_WEBHOOK_SECRETnaar een verkeerde waarde en bevestig dat de app 400 retourneert en dat de portal de mislukte bezorging toont. Zet daarna de juiste waarde terug.
Als de builder het verkeerd doet
Plak de foutmelding, niet een beschrijving ervan. De meeste fixes zijn een van deze:- “Er staat 400 in het storekit-bezorglog.” De secret in de app komt niet overeen met de secret van het endpoint, of de app parsed de body voordat hij die verifieert. Zeg tegen de builder: “verifieer de ruwe request body, exact zoals ontvangen, voordat je JSON parsed”.
- “Er is twee keer geprint / twee keer sms’d.” De app controleert
svix-idniet, of doet het werk voordat hij 200 retourneert waardoor het een time-out krijgt. Herhaal beide regels tegen de builder. - “Het werkte, en stopte na een dag.” De app is in slaap gevallen of de geschiedenis stond in het geheugen. Vraag om een always-on deployment en een database.
- “Prijzen zijn 100 keer te groot.” Minor units — herinner het aan delen door 100.