Skip to main content

Prismatic Event Webhooks

A webhook is a way for an application to provide other applications with real-time information. This article covers outbound event webhooks in Prismatic - notifications you receive when events occur in your Prismatic account.

This article covers outbound webhooks

Here, we're talking about Prismatic-specific events that occur (e.g. an integration in Prismatic was published or a customer in Prismatic was updated), and you want an external app to know about that change.

If you're interested in incoming webhooks for your integrations (e.g. A Salesforce contact was updated and you want your integration's trigger to be notified), see What is a webhook?.

Why use Prismatic event webhooks?

Prismatic event webhooks allow you to stay informed about important changes and activities within your Prismatic platform. Here are some common use cases:

  • Audit Trail: Keep a record of all platform changes for compliance and tracking purposes
  • Monitoring & Alerting: Get notified when critical events occur, such as integrations being published or instances being deployed
  • Integration with External Systems: Send Prismatic events to your monitoring tools, logging systems, or custom applications
  • Real-time Updates: Receive immediate notifications instead of manually checking the web app or querying the Prismatic API

How event webhooks work

When an event occurs in your Prismatic organization, Prismatic sends a POST request to your configured webhook URL with a JSON payload containing details about the event.

Your application receives the webhook, validates it (optionally using HMAC signatures), and processes the event according to your business logic.

To get started with event webhooks, see Configuring event webhooks.

Webhook payload structure

When an event occurs, Prismatic sends a POST request to your webhook URL with a JSON payload. Here's an example of what the payload looks like:

{
"integration": {
"id": "SW50ZWdyYXRpb246ZWM5YzViM2EtZjNhNy00MDliLTllM2QtODA3MDAxNDVlNWU0",
"name": "Slack Integration",
"description": "Get alerts in Slack when new contacts are created",
"category": "Communication",
"has_unpublished_changes": false,
"version_number": 6,
"created_at": "2025-08-21T20:22:54.828609+00:00",
"updated_at": "2025-08-21T20:22:54.828609+00:00"
},
"customer": null,
"parent_integration": null,
"user": {
"id": "VXNlcjoyMzZkMDA3ZS0zZGIxLTQ4MWItOTMyNS0zMjhhYTE0OTY5MDA=",
"email": "user@example.com",
"name": "John Doe"
},
"event_type": "integration.published",
"timestamp": "2025-08-21T20:22:57.855591+00:00",
"organization_id": "T3JnYW5pemF0aW9uOmJjYjE0NjEzLTNjZTItNGQ0MC04OTZmLTIyNTZiNjcyYTllYw==",
"webhook_id": "c1e226a7-8d13-4d46-98d9-a99a2d6bdb37"
}

Payload fields

FieldDescription
event_typeThe type of event that occurred (e.g., integration.published)
timestampWhen the event occurred (ISO 8601 format)
webhook_idUnique identifier for the webhook that sent this notification
organization_idYour Prismatic organization ID
userInformation about the user who triggered the event (if applicable)
integrationIntegration details (for integration-related events)
customerCustomer details (for customer-related events)
instanceInstance details (for instance-related events)
workflowWorkflow details (for workflow-related events)
componentComponent details (for component-related events)
connectionConnection details (for connection-related events)
alert_monitorAlert monitor details (for alert-related events)
alert_groupAlert group details (for alert group events)
log_streamLog stream details (for log stream events)

Available event types

Prismatic provides comprehensive coverage of platform events. Here's a complete list of available event types:

Instance events

EventIDEmitted when
Instance Createdinstance.createdA new instance is created via createInstance.
Instance Updatedinstance.updatedAn instance's stored configuration is modified via updateInstance or updateInstanceConfigVariables. Does not fire when only toggling enabled - see instance.enabled / instance.disabled.
Instance Deletedinstance.deletedAn instance is removed via deleteInstance.
Instance Deployedinstance.deployedAn instance is successfully deployed via deployInstance. Configuration changes do not auto-deploy - this event is the signal that the running instance reflects the new config.
Instance Enabledinstance.enabledAn instance is activated (for example, updateInstance with enabled: true).
Instance Disabledinstance.disabledAn instance is deactivated (for example, updateInstance with enabled: false).

Customer events

EventIDDescription
Customer Createdcustomer.createdTriggered when a new customer is added to your platform
Customer Updatedcustomer.updatedTriggered when customer information is modified
Customer Deletedcustomer.deletedTriggered when a customer is removed from the platform

User events

EventIDDescription
User Createduser.createdTriggered when a new user account is created
User Updateduser.updatedTriggered when user profile information is modified
User Deleteduser.deletedTriggered when a user account is removed

Integration events

EventIDDescription
Integration Createdintegration.createdTriggered when a new integration is created
Integration Updatedintegration.updatedTriggered when integration configuration is modified
Integration Deletedintegration.deletedTriggered when an integration is removed
Integration Publishedintegration.publishedTriggered when an integration is published to the marketplace

Workflow events

EventIDDescription
Workflow Createdworkflow.createdTriggered when a new workflow is created within an integration
Workflow Updatedworkflow.updatedTriggered when workflow configuration is modified
Workflow Deletedworkflow.deletedTriggered when a workflow is removed
Workflow Publishedworkflow.publishedTriggered when a workflow is published
Workflow Enabledworkflow.enabledTriggered when a workflow is activated
Workflow Disabledworkflow.disabledTriggered when a workflow is deactivated

Component events

EventIDDescription
Component Deletedcomponent.deletedTriggered when a custom component is removed
Component Publishedcomponent.publishedTriggered when a component is published to the marketplace

Connection events

EventIDDescription
Connection Updatedconnection.updatedTriggered when connection configuration is modified
Connection Deletedconnection.deletedTriggered when a connection is removed

Alert & monitoring events

EventIDDescription
Alert Monitor Createdalert_monitor.createdTriggered when a new alert monitor is configured
Alert Monitor Updatedalert_monitor.updatedTriggered when alert monitor settings are modified
Alert Monitor Deletedalert_monitor.deletedTriggered when an alert monitor is removed
Alert Group Createdalert_group.createdTriggered when a new alert group is created
Alert Group Updatedalert_group.updatedTriggered when alert group configuration is modified
Alert Group Deletedalert_group.deletedTriggered when an alert group is removed

Log stream events

EventIDDescription
Log Stream Createdlog_stream.createdTriggered when a new log stream is configured
Log Stream Updatedlog_stream.updatedTriggered when log stream settings are modified
Log Stream Deletedlog_stream.deletedTriggered when a log stream is removed

OAuth2 events

EventIDDescription
OAuth2 Authorization Completedoauth2.authorization_completedTriggered when OAuth2 authorization is successfully completed
OAuth2 Authorization Failedoauth2.authorization_failedTriggered when OAuth2 authorization fails
OAuth2 Token Refreshedoauth2.token_refreshedTriggered when an OAuth2 token is successfully refreshed
OAuth2 Token Refresh Failedoauth2.token_refresh_failedTriggered when OAuth2 token refresh fails

System events

EventIDDescription
Testwebhook.testTriggered when testing a webhook configuration

Event relationships

Several event types relate to the same underlying object but represent different state changes. Understanding how they relate helps you choose the right subset to subscribe to.

instance.updated vs instance.deployed

These are distinct signals, and most consumers want both:

  • instance.updated fires when an instance's stored configuration changes (via updateInstance or updateInstanceConfigVariables).
  • instance.deployed fires when you run the deployInstance mutation and the running instance begins using the new configuration.

Configuration changes do not automatically deploy. After updating config variables via the API, you must call deployInstance for the runtime to pick them up. If you're using webhooks to know when to bust a cache of deployed config, listen to instance.deployed.

connection.updated vs OAuth2 events

connection.updated fires only when a connection's stored configuration is modified via the updateOAuth2Connection mutation. It does not fire for OAuth2 token refreshes or user-initiated authorization flows:

  • OAuth2 token refreshes emit oauth2.token_refreshed or oauth2.token_refresh_failed.
  • User-completed OAuth2 authorization emits oauth2.authorization_completed or oauth2.authorization_failed.

Credential state and connection-configuration state change through separate mechanisms and surface as separate events. Subscribing only to instance.updated or connection.updated will not notify you of credential changes.

instance.updated is not a superset of all instance changes

A common misconception is that instance.updated fires for every event that affects an instance. It does not. For complete coverage of instance-related state, subscribe to:

  • instance.created, instance.updated, instance.deleted for configuration lifecycle
  • instance.deployed for runtime state
  • instance.enabled / instance.disabled for activation state
  • OAuth2 events and connection.updated for credential and connection state on the connections an instance uses

Payload contents

Instance webhook payloads identify the instance (ID, name, timestamps, deployed version, enabled state) but do not include the config variables themselves or a diff of what changed. If you need the new config values after an instance.updated event, query the instance by ID through the GraphQL API.

Next steps