Developer signup is open. Create your account →
Service events, ready for action

Turn events into action.

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.

Register the source. Select the events. Choose what happens next.
Event sourceStripePayment confirmed
Fused Engine
Verify Queue Route
Choose the destination Unified App · run logic Backend · SDK receiver Agent · MCP resource
Only selected events reach each app

Choose how to respond

One event. Three ways to use it.

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.

01

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.

02

Handle it in your backend

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.

03

Give agents fresh context

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

Choose where the response runs.

issue-event.tsTypeScript
Hosted event handler
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 };
  },
});

Run inside Engine

The event becomes execute() input. This app saves the issue ID and returns a result.

Before you run it

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

Let the event run the integration.

Attach provider events to a Unified App and deploy it. Engine starts the consumer automatically and runs your reviewed code when a selected event arrives.See Unified App code
Your Unified App

The event runs your logic

Read the normalized event from input.body

Call the service operations your app selects

Choose processed data to save with the run

Execution receipt

See the outcome

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.

Turn provider activity into product moments people can rely on.