Webhooks
Event types
Every event PromptFloe can deliver. Subscribe to whichever subset matches your use case.
#Envelope
Every event has the same envelope. The data shape varies per type.
json
{
"id": "evt_xxx",
"type": "deployment.live",
"createdAt": "2026-04-26T12:34:56.789Z",
"workspaceId": "ws_xxx",
"data": { /* type-specific */ }
}#Apps
app.generated
An app finished generating and the preview is up.
| Field | Type | Description |
|---|---|---|
| appId | string | |
| chatId | string | |
| previewUrl | string | |
| durationMs | number | |
| tokensUsed | number |
app.failed
An app generation run failed before producing a preview.
| Field | Type | Description |
|---|---|---|
| chatId | string | |
| code | string | Error code — see Errors reference. |
| message | string |
app.updated
A follow-up prompt rewrote files in an existing app.
#Skills
skill.completed
A critique skill finished. Includes the markdown report and insights.
| Field | Type | Description |
|---|---|---|
| runId | string | |
| alias | string | |
| kind | "critique" | |
| markdown | string | |
| insights | Insight[] | |
| tokensUsed | number |
skill.failed
A skill run errored.
augmenter.applied
An augmenter finished and wrote files to the workspace.
| Field | Type | Description |
|---|---|---|
| runId | string | |
| alias | string | |
| appId | string | |
| filesChanged | number | |
| idempotencyKey | string |
#Deployments
deployment.queued
Deploy was created and is queued.
deployment.building
Build started on Netlify.
deployment.live
Deploy succeeded; the URL is live.
| Field | Type | Description |
|---|---|---|
| deploymentId | string | |
| appId | string | |
| siteName | string | |
| url | string |
deployment.failed
Deploy failed. Inspect the logs URL.
#Billing
subscription.updated
Tier or status changed (upgrade, downgrade, cancel, reactivate).
payment.succeeded
A recurring charge succeeded.
payment.failed
A recurring charge failed; the subscription may be in past_due.
#Where to go next
PromptFloe developer docs