Run a Unified App
Engine automatically invokes your deployed TypeScript with the event payload. Call selected services, save processed results, and inspect the run in Requests. No separate receiver process is needed.
A payment clears. An issue changes. Fused receives the event and routes it to the apps you choose: run a Unified App in Engine, handle it in your backend, or give an agent fresh context through MCP.
Choose how to respond
Create a registration from the Webhooks page or CLI, then attach it to an app and select its events. Connect the provider to a Fused webhook URL, or use an available managed event connection.
Engine automatically invokes your deployed TypeScript with the event payload. Call selected services, save processed results, and inspect the run in Requests. No separate receiver process is needed.
A generated SDK receiver delivers selected events over an outbound connection. Durable, at-least-once delivery and acknowledgements let your backend handle each occurrence without its own public webhook endpoint.
MCP clients can listen for event-resource updates and read the latest retained payload. The client decides when the agent acts. Missed notifications are not replayed; use a durable receiver to handle every occurrence.
Three modes, in code
import * as z from "zod/mini";
import { buildUnifiedApp, fused } from "@fused/unified-app";
const issue = z.object({ id: z.string() });
export default buildUnifiedApp({
input: z.object({ body: z.object({ issue }) }),
output: z.object({ issueId: z.string() }),
fetch: { searchable: ["issueId"] },
// Keep a searchable result from the incoming event.
async execute({ input }) {
const issueId = input.body.issue.id;
await fused.db.set({ issueId });
return { issueId };
},
});The event becomes execute() input. This app saves the issue ID and returns a result.
Attach an applied webhook registration and select issue.created in your Unified App config. Match the input schema to the selected provider event.
Engine starts the consumer after deployment. Results and saved data are retained for 24 hours.
Event → Unified App → result
Read the normalized event from input.body
Call the service operations your app selects
Choose processed data to save with the run
Trace the run to its source event
Inspect status, timing, and provider calls
Retrieve results and saved data for 24 hours
SDK delivery can repeat an event, so handlers should be idempotent. Unified Apps retain authored failures for inspection rather than automatically repeating provider effects. Raw diagnostics require the relevant permission.