Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 73 additions & 0 deletions docs/admin-guide/guides/event-streaming.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
---
title: "Event Streaming"
description: "Configure webhook destinations to receive real-time platform events"
icon: "webhook"
---

<Snippet file="enterprise-feature.mdx" />

## Overview

Event Streaming allows you to configure webhook destinations that receive real-time notifications when specific events occur in your Activepieces platform. This enables you to integrate Activepieces with external systems, monitoring tools, analytics platforms, or custom applications.

## Use Cases

- **Monitoring & Analytics**: Track flow executions, user activity, and system changes in real-time
- **Integration**: Sync events with external systems like SIEM tools, data warehouses, or custom dashboards
- **Compliance**: Maintain audit trails in external systems for compliance requirements
- **Automation**: Trigger downstream processes based on platform events

## Available Events

You can configure destinations to receive the following event types:

### Flow Events
- **Flow Created**: When a new flow is created
- **Flow Updated**: When a flow is modified
- **Flow Deleted**: When a flow is removed
- **Flow Run Started**: When a flow execution begins
- **Flow Run Finished**: When a flow execution completes
- **Flow Run Resumed**: When a paused flow execution resumes

### Folder Events
- **Folder Created**: When a new folder is created
- **Folder Updated**: When a folder is modified
- **Folder Deleted**: When a folder is removed

### Connection Events
- **Connection Upserted**: When a connection is created or updated
- **Connection Deleted**: When a connection is removed

### User Events
- **User Signed Up**: When a new user registers
- **User Signed In**: When a user logs in
- **User Password Reset**: When a password reset is requested
- **User Email Verified**: When a user verifies their email

### Security Events
- **Signing Key Created**: When a new signing key is generated
- **Project Role Created**: When a project role is created
- **Project Role Updated**: When a project role is modified
- **Project Role Deleted**: When a project role is removed
- **Project Release Created**: When a project release is created

## How to Configure

1. Go to **Platform Admin → Infrastructure → Event Destinations**
2. Click **Create Destination**
3. Enter your **Webhook URL** (must be a valid HTTPS endpoint)
4. Select the **Events** you want to receive
5. Click **Test Destination** to verify the connection (optional)
6. Click **Create Destination** to save

## Requirements

- **Enterprise Edition**: Event Streaming requires an enterprise plan with Audit Logs enabled
- **HTTPS Endpoint**: Webhook URLs must use HTTPS
- **Publicly Accessible**: Your endpoint must be accessible from the internet

## Troubleshooting

- **Events Not Received**: Verify your endpoint is publicly accessible and returns 2xx status codes
- **Test Fails**: Check that your URL is valid and uses HTTPS
- **Missing Events**: Ensure the event type is selected in your destination configuration
1 change: 1 addition & 0 deletions docs/docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@
"admin-guide/guides/manage-oauth2",
"admin-guide/guides/setup-ai-providers",
"admin-guide/guides/permissions",
"admin-guide/guides/event-streaming",
"admin-guide/guides/project-releases"
]
},
Expand Down
4 changes: 3 additions & 1 deletion nx.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@
"cache": true,
"inputs": [
"{projectRoot}/package.json",
{ "runtime": "if [ \"$AP_ENVIRONMENT\" = \"dev\" ]; then echo dev; else echo $(date +%s%N); fi" }
{
"runtime": "if [ \"$AP_ENVIRONMENT\" = \"dev\" ]; then echo dev; else echo $(date +%s%N); fi"
}
]
},
"lint": {
Expand Down
1 change: 1 addition & 0 deletions packages/ee/shared/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,4 @@ export * from './lib/oauth-apps'
export * from './lib/otp'
export * from './lib/authn'
export * from './lib/alerts'
export * from './lib/event-destinations'
13 changes: 5 additions & 8 deletions packages/ee/shared/src/lib/billing/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,14 +71,12 @@ export const PRICE_ID_MAP = {

export const STANDARD_CLOUD_PLAN: PlatformPlanWithOnlyLimits = {
plan: 'standard',
tablesEnabled: true,
eventStreamingEnabled: false,
includedAiCredits: 200,
activeFlowsLimit: 10,
projectsLimit: 1,
aiCreditsAutoTopUpState: AiCreditsAutoTopUpState.DISABLED,
agentsEnabled: true,
tablesEnabled: true,
todosEnabled: true,
mcpsEnabled: true,
embeddingEnabled: false,
globalConnectionsEnabled: false,
customRolesEnabled: false,
Expand All @@ -97,15 +95,13 @@ export const STANDARD_CLOUD_PLAN: PlatformPlanWithOnlyLimits = {
}

export const OPEN_SOURCE_PLAN: PlatformPlanWithOnlyLimits = {
tablesEnabled: true,
embeddingEnabled: false,
globalConnectionsEnabled: false,
customRolesEnabled: false,
mcpsEnabled: true,
tablesEnabled: true,
todosEnabled: true,
agentsEnabled: true,
includedAiCredits: 0,
environmentsEnabled: false,
eventStreamingEnabled: false,
analyticsEnabled: true,
showPoweredBy: false,
auditLogEnabled: false,
Expand All @@ -126,6 +122,7 @@ export const OPEN_SOURCE_PLAN: PlatformPlanWithOnlyLimits = {
export const APPSUMO_PLAN = (planName: PlanName): PlatformPlanWithOnlyLimits => ({
...STANDARD_CLOUD_PLAN,
plan: planName,
eventStreamingEnabled: false,
activeFlowsLimit: undefined,
})

Expand Down
34 changes: 34 additions & 0 deletions packages/ee/shared/src/lib/event-destinations/dto.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import { Static, Type } from '@sinclair/typebox'
import { ApplicationEventName } from '../audit-events'

export enum EventDestinationScope {
PLATFORM = 'PLATFORM',
PROJECT = 'PROJECT',
}

export const ListPlatformEventDestinationsRequestBody = Type.Object({
cursor: Type.Optional(Type.String()),
limit: Type.Optional(Type.Number()),
})

export type ListPlatformEventDestinationsRequestBody = Static<typeof ListPlatformEventDestinationsRequestBody>



export const CreatePlatformEventDestinationRequestBody = Type.Object({
events: Type.Array(Type.Enum(ApplicationEventName)),
url: Type.String({ format: 'uri' }),
})


export type CreatePlatformEventDestinationRequestBody = Static<typeof CreatePlatformEventDestinationRequestBody>

export const UpdatePlatformEventDestinationRequestBody = CreatePlatformEventDestinationRequestBody

export type UpdatePlatformEventDestinationRequestBody = Static<typeof UpdatePlatformEventDestinationRequestBody>

export const TestPlatformEventDestinationRequestBody = Type.Object({
url: Type.String({ format: 'uri' }),
})

export type TestPlatformEventDestinationRequestBody = Static<typeof TestPlatformEventDestinationRequestBody>
33 changes: 33 additions & 0 deletions packages/ee/shared/src/lib/event-destinations/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import { BaseModelSchema, DiscriminatedUnion } from '@activepieces/shared'
import { Static, Type } from '@sinclair/typebox'
import { ApplicationEventName } from '../audit-events/index'
import { EventDestinationScope } from './dto'

const EventDestinationBase = {
...BaseModelSchema,
platformId: Type.String(),
events: Type.Array(Type.Enum(ApplicationEventName)),
url: Type.String({ format: 'uri' }),
}



const EventDestinationProjectScope = Type.Object({
...EventDestinationBase,
scope: Type.Literal(EventDestinationScope.PROJECT),
projectId: Type.String(),
})

export const EventDestinationPlatformScope = Type.Object({
...EventDestinationBase,
scope: Type.Literal(EventDestinationScope.PLATFORM),
})

export const EventDestination = DiscriminatedUnion('scope', [
EventDestinationPlatformScope,
EventDestinationProjectScope,
])

export type EventDestination = Static<typeof EventDestination>

export * from './dto'
2 changes: 1 addition & 1 deletion packages/pieces/community/ai/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@activepieces/piece-ai",
"version": "0.1.0",
"version": "0.1.1",
"type": "commonjs",
"main": "./src/index.js",
"types": "./src/index.d.ts",
Expand Down
2 changes: 1 addition & 1 deletion packages/pieces/community/ai/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ export const ai = createPiece({
PieceCategory.ARTIFICIAL_INTELLIGENCE,
PieceCategory.UNIVERSAL_AI,
],
logoUrl: "https://cdn.activepieces.com/pieces/text-ai.svg",
logoUrl: "https://cdn.activepieces.com/pieces/new-core/text-ai.svg",
authors: ['anasbarg', 'amrdb', 'Louai-Zokerburg'],
actions: [askAI, summarizeText, generateImageAction, classifyText, extractStructuredData, runAgent],
triggers: [],
Expand Down
2 changes: 1 addition & 1 deletion packages/pieces/community/approval/package.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"name": "@activepieces/piece-approval",
"version": "0.1.14"
"version": "0.1.15"
}
2 changes: 1 addition & 1 deletion packages/pieces/community/approval/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ export const approval = createPiece({
description: 'Build approval process in your workflows',
auth: PieceAuth.None(),
minimumSupportedRelease: '0.30.0',
logoUrl: 'https://cdn.activepieces.com/pieces/approval.svg',
logoUrl: 'https://cdn.activepieces.com/pieces/new-core/approvals.svg',
authors: ["kishanprmr","MoShizzle","khaledmashaly","abuaboud"],
categories: [PieceCategory.CORE, PieceCategory.FLOW_CONTROL],
actions: [waitForApprovalLink, createApprovalLink],
Expand Down
2 changes: 1 addition & 1 deletion packages/pieces/community/connections/package.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"name": "@activepieces/piece-connections",
"version": "0.5.0"
"version": "0.5.1"
}
2 changes: 1 addition & 1 deletion packages/pieces/community/connections/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ export const connections = createPiece({
displayName: 'Connections',
description: 'Read connections dynamically',
minimumSupportedRelease: '0.36.1',
logoUrl: 'https://cdn.activepieces.com/pieces/connections.png',
logoUrl: 'https://cdn.activepieces.com/pieces/new-core/connections.svg',
categories: [PieceCategory.CORE],
auth: PieceAuth.None(),
authors: ["kishanprmr","AbdulTheActivePiecer","khaledmashaly","abuaboud"],
Expand Down
2 changes: 1 addition & 1 deletion packages/pieces/community/crypto/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@activepieces/piece-crypto",
"version": "0.0.15",
"version": "0.0.16",
"dependencies": {
"openpgp": "^6.2.0",
"buffer": "6.0.3"
Expand Down
2 changes: 1 addition & 1 deletion packages/pieces/community/crypto/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ export const Crypto = createPiece({
description: 'Generate random passwords and hash existing text',
auth: PieceAuth.None(),
minimumSupportedRelease: '0.30.0',
logoUrl: 'https://cdn.activepieces.com/pieces/crypto.png',
logoUrl: 'https://cdn.activepieces.com/pieces/new-core/crypto.svg',
categories: [PieceCategory.CORE],
authors: ['AbdullahBitar', 'kishanprmr', 'abuaboud', 'matthieu-lombard', 'antonyvigouret', 'danielpoonwj', 'prasanna2000-max'],
actions: [hashText, hmacSignature, generatePassword, base64Decode, base64Encode, openpgpEncrypt],
Expand Down
2 changes: 1 addition & 1 deletion packages/pieces/community/csv/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@activepieces/piece-csv",
"version": "0.4.9",
"version": "0.4.10",
"dependencies": {
"csv-parse": "5.6.0",
"csv-stringify": "6.5.2",
Expand Down
2 changes: 1 addition & 1 deletion packages/pieces/community/csv/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ export const csv = createPiece({
displayName: 'CSV',
description: 'Manipulate CSV text',
minimumSupportedRelease: '0.30.0',
logoUrl: 'https://cdn.activepieces.com/pieces/csv.svg',
logoUrl: 'https://cdn.activepieces.com/pieces/new-core/csv.svg',
auth: PieceAuth.None(),
categories: [PieceCategory.CORE],
actions: [csvToJsonAction, jsonToCsvAction],
Expand Down
2 changes: 1 addition & 1 deletion packages/pieces/community/data-mapper/package.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"name": "@activepieces/piece-data-mapper",
"version": "0.3.11"
"version": "0.3.12"
}
2 changes: 1 addition & 1 deletion packages/pieces/community/data-mapper/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ export const dataMapper = createPiece({
description: 'tools to manipulate data structure',

minimumSupportedRelease: '0.30.0',
logoUrl: 'https://cdn.activepieces.com/pieces/data-mapper.png',
logoUrl: 'https://cdn.activepieces.com/pieces/new-core/data-mapper.svg',
auth: PieceAuth.None(),
categories: [PieceCategory.CORE],
authors: ["kishanprmr","MoShizzle","AbdulTheActivePiecer","khaledmashaly","abuaboud"],
Expand Down
2 changes: 1 addition & 1 deletion packages/pieces/community/date-helper/package.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"name": "@activepieces/piece-date-helper",
"version": "0.1.20"
"version": "0.1.21"
}
2 changes: 1 addition & 1 deletion packages/pieces/community/date-helper/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ export const utilityDate = createPiece({
auth: PieceAuth.None(),
minimumSupportedRelease: '0.36.1',
categories: [PieceCategory.CORE],
logoUrl: 'https://cdn.activepieces.com/pieces/calendar_piece.svg',
logoUrl: 'https://cdn.activepieces.com/pieces/new-core/date-helper.svg',
authors: ["joeworkman","kishanprmr","MoShizzle","abuaboud","abdultheactivepiecer","onyedikachi-david"],
actions: [
getCurrentDate,
Expand Down
2 changes: 1 addition & 1 deletion packages/pieces/community/delay/package.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"name": "@activepieces/piece-delay",
"version": "0.3.21"
"version": "0.3.22"
}
2 changes: 1 addition & 1 deletion packages/pieces/community/delay/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ export const delay = createPiece({
displayName: 'Delay',
description: 'Use it to delay the execution of the next action',
minimumSupportedRelease: '0.36.1',
logoUrl: 'https://cdn.activepieces.com/pieces/delay.png',
logoUrl: 'https://cdn.activepieces.com/pieces/new-core/delay.svg',
authors: ["Nilesh","kishanprmr","MoShizzle","AbdulTheActivePiecer","khaledmashaly","abuaboud"],
categories: [PieceCategory.CORE, PieceCategory.FLOW_CONTROL],
auth: PieceAuth.None(),
Expand Down
2 changes: 1 addition & 1 deletion packages/pieces/community/file-helper/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@activepieces/piece-file-helper",
"version": "0.1.15",
"version": "0.1.16",
"dependencies": {
"adm-zip": "^0.5.16"
},
Expand Down
2 changes: 1 addition & 1 deletion packages/pieces/community/file-helper/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ export const filesHelper = createPiece({
description: 'Read file content and return it in different formats.',
auth: PieceAuth.None(),
minimumSupportedRelease: '0.30.0',
logoUrl: 'https://cdn.activepieces.com/pieces/file-piece.svg',
logoUrl: 'https://cdn.activepieces.com/pieces/new-core/file-helper.svg',
categories: [PieceCategory.CORE],
authors: ['kishanprmr', 'MoShizzle', 'abuaboud', 'Seb-C', 'danielpoonwj'],
actions: [
Expand Down
2 changes: 1 addition & 1 deletion packages/pieces/community/forms/package.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"name": "@activepieces/piece-forms",
"version": "0.4.10"
"version": "0.4.11"
}
2 changes: 1 addition & 1 deletion packages/pieces/community/forms/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ export const forms = createPiece({
auth: PieceAuth.None(),
minimumSupportedRelease: '0.65.0',
categories: [PieceCategory.CORE],
logoUrl: 'https://cdn.activepieces.com/pieces/human-input.svg',
logoUrl: 'https://cdn.activepieces.com/pieces/new-core/human-input.svg',
authors: ['anasbarg', 'MoShizzle', 'abuaboud'],
actions: [returnResponse],
triggers: [onFormSubmission, onChatSubmission],
Expand Down
2 changes: 1 addition & 1 deletion packages/pieces/community/framework/package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "@activepieces/pieces-framework",
"version": "0.23.0",
"version": "0.24.0",
"type": "commonjs"
}
Loading
Loading