| name | gamma-webhooks-events |
| description | Handle Gamma webhooks and events for real-time updates.
Use when implementing webhook receivers, processing events,
or building real-time Gamma integrations.
Trigger with phrases like "gamma webhooks", "gamma events",
"gamma notifications", "gamma real-time", "gamma callbacks".
|
| allowed-tools | Read, Write, Edit |
| version | 1.13.0 |
| license | MIT |
| author | Jeremy Longshore <jeremy@intentsolutions.io> |
| tags | ["saas","gamma","webhooks"] |
| compatibility | Designed for Claude Code, also compatible with Codex and OpenClaw |
Gamma Webhooks & Events
Overview
Gamma's public API (v1.0) is generation-focused and does not expose a traditional webhook system at time of writing. Instead, use the poll-based pattern (GET /v1.0/generations/{id}) to detect completion. For event-driven architectures, wrap polling in a background worker that emits application-level events when generations complete or fail.
Prerequisites
- Completed
gamma-sdk-patterns setup
- Event bus or message queue (Bull, RabbitMQ, or EventEmitter)
- Understanding of the generate-poll-retrieve pattern
Gamma Event Model (Application-Level)
Since Gamma does not push events, you create them by polling:
| Synthetic Event | Trigger Condition | Use Case |
|---|
generation.started | POST /generations returns generationId | Log, notify user |
generation.completed | Poll returns status: "completed" | Download export, update DB |
generation.failed | Poll returns status: "failed" | Alert, retry, notify user |
generation.timeout | Poll exceeds max duration | Alert, escalate |
Instructions
Step 1: Event Emitter Pattern
import { EventEmitter } from "events";
import { createGammaClient } from "./client";
export const gammaEvents = new EventEmitter();
export interface GenerationEvent {
generationId: string;
status: | | | ;
?: ;
?: ;
?: ;
?: ;
}
(): <> {
gamma = ({ : process..! });
{ generationId } = gamma.({
content,
: options. ?? ,
: options.,
: options.,
});
gammaEvents.(, {
generationId,
: ,
} );
deadline = .() + ;
(.() < deadline) {
result = gamma.(generationId);
(result. === ) {
: = {
generationId,
: ,
: result.,
: result.,
: result.,
};
gammaEvents.(, event);
event;
}
(result. === ) {
: = {
generationId,
: ,
: ,
};
gammaEvents.(, event);
event;
}
( (r, ));
}
: = {
generationId,
: ,
: ,
};
gammaEvents.(, timeoutEvent);
timeoutEvent;
}