subscribe returns its own unsubscribe function, which is why the effect returns it
directly. refetch is stable across renders, so the effect subscribes once rather than on
every render. The event name is typed from the catalogue the SDK ships with, so a name that
does not exist is a compile error; once
tappify extension types has generated the payloads, a
field that is not on that payload is one too. settings.changed is one of the six events
Tappify sends today, so this handler runs the first time an owner saves your panel.
Refetching without a subscription
When all you want is for a query to reload, name the events instead of writing a handler:The events you can subscribe to
Delivery is filtered by what the owner granted:
price.changed reaches an install only when
store.metadata:read is granted. The type stays the full catalogue either way.
Every payload and every field is on Events.
The same events on your server
The handler routesPOST /tappify/events for the names your manifest lists under
server.events, with the token already verified and request.event typed to the payload:
Tappify posts every name your manifest lists under
server.events to POST /tappify/events as
it happens, one delivery per install. A 5xx or an unreachable server is retried three times over
about twelve minutes, for that install alone; a 4xx is taken as your answer and recorded on the
install’s runtime timeline instead. A name your manifest does not list reaches your components
only, through tap.data.subscribe.