Hex Webhooks & Events
Overview
Hex doesn't provide push webhooks. For event-driven integrations, poll run status or build your own notification system around run completions.
Instructions
Run Status Polling with Callback
async function runWithCallback(
client: HexClient,
projectId: string,
params: Record<string, any>,
onComplete: (result: any) => void,
onError: (error: Error) => void
) {
try {
const { runId } = await client.runProject(projectId, params);
const poll = async () => {
const status = await client.getRunStatus(projectId, runId);
if (status.status === 'COMPLETED') { onComplete(status); return; }
if (status.status === 'ERRORED' || status.status === 'KILLED') { onError(new Error(status.status)); return; }
setTimeout(poll, 5000);
};
poll();
} catch (err) { onError(err as Error); }
}
Notify on Completion
runWithCallback(client, 'project-id', { date: '2025-01-01' },
(result) => {
// Send Slack notification, email, etc.
fetch(process.env.SLACK_WEBHOOK_URL!, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ text: `Hex project completed: ${result.runId}` }),
});
},
(error) => console.error('Run failed:', error)
);