La struttura
Ogni prompt ha cinque parti, in quest’ordine:- Il risultato, in un paragrafo, come lo descriveresti a un nuovo manager. Chi lo usa, dove gira, cosa non deve mai fare.
- Il blocco di contesto storekit qui sotto — copiato per intero. Dice al builder esattamente come storekit parlerà all’app, così non inventa un payload né salta la verifica delle firme.
- Cosa costruire, come elenco numerato. Nomina il path dell’endpoint, ogni schermata, ogni regola. Se controlleresti qualcosa in fase di test, deve essere in questa lista.
- Definition of done, come checkbox. Il builder le userà per testare il proprio lavoro.
- Cosa restituire: l’URL webhook pubblico, l’elenco delle variabili d’ambiente da impostare e come testarlo.
Il blocco di contesto
Incolla questo in ogni prompt, senza modifiche, subito dopo il paragrafo del risultato. È lo stesso blocco usato in tutte le recipe.order.created.v2, copia l’esempio di payload di quell’evento dal reference degli eventi e aggiungilo anche sotto “Example payload”.
Regole da ripetere
I builder le dimenticano se il prompt non è esplicito, per questo ogni recipe le enuncia. Copia nella parte 3 del tuo prompt le righe che ti servono.- Verifica la firma Svix di ogni richiesta usando la libreria ufficiale
svix. Non scrivere la tua verifica. Restituisci 400 quando fallisce. - Restituisci 200 non appena l’evento è salvato, poi elaboralo. Non far mai aspettare storekit su una stampante, un SMS o un’API di terze parti.
- Ignora ogni
svix-idche hai già visto. - Mantieni la history degli eventi in un vero database, non in memoria, così nulla va perso al riavvio o al redeploy dell’app.
- Non inviare nomi, numeri di telefono o indirizzi dei clienti ad alcun servizio di terze parti a meno che il prompt lo dica.
- Formatta il denaro dividendo per 100 e usando la valuta del locale.
- Mostra gli orari nel fuso orario locale del locale, non del server.
- Metti il webhook secret e ogni API key in variabili d’ambiente. Mai nel codice.
Scegliere un builder
Non raccomandiamo un builder rispetto a un altro per tutto, ma le recipe indicano dove conta:- Gli strumenti che ricevono webhook hanno bisogno di un URL pubblico stabile che resti attivo e, di solito, di un database. Replit offre tutti e tre in un solo posto, per questo le recipe che ricevono eventi sono scritte pensando a Replit. Anche Bolt e Lovable possono farlo se attacchi un backend (l’abbinamento tipico è con Supabase); quando scrivi loro il prompt, aggiungi “distribuisci il backend in modo che abbia un URL pubblico e dimmi qual è”.
- Gli strumenti solo-schermo che leggono da un database scritto da un altro tuo strumento si adattano bene a Lovable e v0.
- I job schedulati (un riepilogo giornaliero alle 23:30, un digest settimanale) hanno bisogno di un posto dove eseguire uno scheduler. Chiedilo esplicitamente al builder: “questo deve girare ogni giorno alle 23:30 Europe/London; dimmi come lo hai schedulato e come posso confermare che è stato eseguito”.
Collegare l’app finita
Una volta che il builder ti dà un URL, collegalo: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.Testare senza aspettare un ordine reale
- L’opzione di test-delivery nel portale webhook usa un esempio generico, non il tuo menu. Dimostra la connessione e la verifica della firma; non dimostra il tuo layout.
- Per un payload reale, effettua un piccolo ordine sulla tua storefront con un metodo di pagamento di test o un codice sconto del 100%, poi rimborsalo. Fallo con il log dell’app aperto.
- Rompi qualcosa di proposito una volta: cambia
STOREKIT_WEBHOOK_SECRETcon un valore errato e conferma che l’app restituisca 400 e che il portale mostri la consegna fallita. Rimetti il valore corretto.
Quando il builder sbaglia
Incolla l’errore, non una sua descrizione. La maggior parte delle correzioni è una di queste:- “Il log delle consegne storekit dice 400”. Il secret nell’app non corrisponde a quello dell’endpoint, oppure l’app sta parsando il body prima di verificarlo. Di’ al builder: “verifica il raw request body, esattamente com’è ricevuto, prima di parsare il JSON”.
- “Ha stampato due volte / inviato l’SMS due volte”. L’app non controlla
svix-id, o svolge il lavoro prima di restituire 200 e va in timeout. Ricorda al builder entrambe le regole. - “Ha funzionato, poi si è fermato dopo un giorno”. L’app è andata in sleep o la history era in memoria. Chiedi un deployment sempre attivo e un database.
- “I prezzi sono 100 volte più grandi”. Minor units — ricorda di dividere per 100.