Webhooks

12 min read

Updated on July 1, 2026

Webhooks allow krock.io to automatically send real-time notifications to your other applications whenever important events occur in your projects. This powerful feature helps you build seamless workflows and keep your entire team in sync across multiple platforms.

What are webhooks?

A webhook is an automated message that krock.io sends to another application when a specific event happens. For example, a new comment is added or a project status changes. Instead of constantly checking krock.io for updates, webhooks push information to your other tools instantly.

Think of it like this: rather than repeatedly calling someone to ask, “Is it ready yet?” webhooks are like getting a text message the moment something is ready. It’s automatic, instant, and efficient.

Why use webhooks with krock.io?

Webhooks help you:

  • Automate your workflow – Trigger actions in other apps without manual intervention
  • Stay informed in real-time – Get instant notifications in Slack, email, or your preferred tools
  • Integrate seamlessly – Connect krock.io with your existing tech stack
  • Save time – Eliminate the need to manually sync information between platforms

How to Access Webhooks in krock.io

Follow these steps to get started:

  • Open Workspace Settings – Navigate to your workspace and click on the settings icon
  • Go to the Webhooks tab – You’ll find this in the top navigation menu
  • Click “Add Webhook”

Workspace - Webhook - Krock.io

Configuring Your Webhook

Webhook setup Krock.io

Webhook title: Give your webhook a descriptive name to help you identify its purpose later.

Webhook URL: Enter the endpoint URL where krock.io will send the webhook data. This is the destination address of the external service you want to connect to. The URL field is required.

Select the event type: Choose which events in krock.io will trigger this webhook.

KROCK  – n8n – Discord Automation

The best way to understand webhooks in action is to see them working in real time. In the video below, we walk you through a complete hands-on example — connecting KROCK.io with Discord to automatically create channels and forward comments the moment they happen. Follow along to set up your first webhook automation from scratch.

 

Webhook events

Each webhook you create fires on one or more events. When an event happens, krock.io sends a POST request to your webhook URL with a JSON payload describing what changed.

Events are grouped into six categories: projects, stages, versions, media, comments, and replies. Pick the events you need when you add or edit a webhook under Select the event type.

Event groups at a glance

Group Events Data included in the payload
Projects create_project, delete_project, rename_project, change_duedate_project workspaceData, projectData
Stages create_stage, delete_stage, rename_stage, change_duedate_stage, change_status_stage workspaceData, projectData, stageData
Versions create_version, delete_version workspaceData, projectData, stageData, versionData
Media upload_media, delete_media, rename_media workspaceData, projectData, stageData, versionData, mediaData
Comments create_comment, edit_comment, delete_comment, resolved_comment workspaceData, projectData, stageData, versionData, mediaData*, commentData
Replies create_replies, edit_replies, delete_replies workspaceData, projectData, stageData, versionData, mediaData*, commentData, replyData

* mediaData appears only when the comment is attached to a media file. See Comment events.

How payloads are structured

Payloads are nested and build on each other. workspaceData and projectData are in every event. Each deeper group adds one more object on top.

Workspace → Project → Stage → Version → Media → Comment → Reply

So a create_comment payload contains everything down to the comment, while a create_project payload contains only the workspace and project. Every object also carries a connector string and a connectorObjects array, which you use to attach and reuse saved values (see Saving and Using Connector Parameters above).

Project events

Fire when a project is created or its top-level details change.

Event Fires when
create_project A new project is created
delete_project A project is deleted
rename_project A project’s title is changed
change_duedate_project A project’s due date is set or changed

Payload includes: workspaceData, projectData

Stage events

Fire when a stage (also called a step in URLs) changes. Stages live inside a project.

Event Fires when
create_stage A new stage is created
delete_stage A stage is deleted
rename_stage A stage’s title is changed
change_duedate_stage A stage’s due date is set or changed
change_status_stage A stage’s status changes (for example, In Review → Approved)

Payload includes: workspaceData, projectData, stageData

Version events

Fire when a version is added to or removed from a stage.

Event Fires when
create_version A new version is added to a stage
delete_version A version is deleted

Payload includes: workspaceData, projectData, stageData, versionData

Media events

Fire when a file is uploaded, removed, or renamed.

Event Fires when
upload_media A file is uploaded to a version
delete_media A media file is deleted
rename_media A media file is renamed

Payload includes: workspaceData, projectData, stageData, versionData, mediaData

Note: On upload_media, video files are still transcoding when the event fires. The convertVideos array reports "statusConvert": "in_progress" until each resolution finishes.

Comment events

Fire when a comment is added, changed, or resolved.

Event Fires when
create_comment A new comment is added
edit_comment A comment’s text is changed
delete_comment A comment is deleted
resolved_comment A comment is marked as done

Payload includes: workspaceData, projectData, stageData, versionData, mediaData*, commentData

Note: mediaData is included only when the comment is attached to a media file. General comments left on a stage arrive without it, so check for the object before you read from it.

Reply events

Fire when a reply on a comment is added or changed.

Event Fires when
create_replies A reply is added to a comment
edit_replies A reply’s text is changed
delete_replies A reply is deleted

Payload includes: workspaceData, projectData, stageData, versionData, mediaData*, commentData, replyData

Note: As with comment events, mediaData appears only when the parent comment is attached to media.

Payload data objects

Every payload is a JSON object built from one or more of the objects below. URLs shown here (logo, avatar, media sources) are shortened for readability — the real values are signed and expire, so use them soon after you receive them.

workspaceData

The workspace the event belongs to. Present in every event.

Field Description
id Workspace ID
slug URL-safe workspace name
title Workspace display name
subdomain Sharing subdomain
logo Workspace logo URL (signed, expires)
connector String used to save and reuse connector parameters
connectorObjects Saved values attached to this workspace
"workspaceData": {
  "id": 14,
  "connector": "Workspace:14-workspace-14-oaJCugi95S5...",
  "slug": "krockio",
  "title": "krock.io",
  "subdomain": "share",
  "logo": "https://d3ivy5c7vb1n6k.cloudfront.net/pm/.../logo.webp",
  "connectorObjects": [ ],
  "NoIdentConnectorObjects": [ ]
}

projectData

The project the event belongs to. Present in every event.

Field Description
id Project ID
title Project name
slug URL-safe project name
createdDate Creation time (Unix ms)
dueDate Due date (Unix ms), or null
url Link to the project
connector String for saving connector parameters
"projectData": {
  "id": 259396,
  "connector": "Project:259396-project-259396-oaJCugi95S5...",
  "slug": "n8nslackproject1",
  "title": "n8n-Slack-Project1",
  "createdDate": 1782829733000,
  "dueDate": null,
  "filesSize": null,
  "preview": "",
  "url": "https://share.krock.io/projects/259396",
  "connectorObjects": [ ]
}

stageData

The stage (step) the event belongs to. Added from stage events onward.

Field Description
id Stage ID
title Stage name
description Stage description
status Review status (for example, no-status, approved)
type Stage type (for example, assets)
isFolder true if the stage is a folder
startDate / dueDate Schedule dates (Unix ms), or null
assignee Array of assigned users (userId, name, email, avatar)
url Link to the stage
connector String for saving connector parameters
"stageData": {
  "id": 1425655,
  "connector": "Stage:1425655-stage-1425655-SLeN9gS9b0c...",
  "slug": "n8nslackstage1",
  "title": "n8n-Slack-stage1",
  "description": "",
  "createdDate": 1782829745000,
  "startDate": 1782792000000,
  "dueDate": null,
  "isFolder": false,
  "type": "assets",
  "status": "no-status",
  "url": "https://share.krock.io/projects/259396/steps1425655",
  "parentFolder": null,
  "assignee": [
    {
      "userId": 386,
      "email": "test@krock.io",
      "name": "TestUser",
      "avatar": "https://d3ivy5c7vb1n6k.cloudfront.net/pm/.../avatar.webp",
      "color": "#3b3c43"
    }
  ],
  "preview": null,
  "connectorObjects": [ ]
}

versionData

The specific version of a stage. Added from version events onward.

Field Description
id Version ID
versionOrder Version number within the stage (1, 2, 3…)
createdDate Creation time (Unix ms)
url Link to the version
connector String for saving connector parameters
"versionData": {
  "id": 1602803,
  "connector": "Version:1602803-version-1602803-SLeN9gS9b0c...",
  "createdDate": 1782829745000,
  "versionOrder": 1,
  "url": "https://share.krock.io/projects/259396/steps/1425655?version=1602803",
  "connectorObjects": [ ]
}

mediaData

The uploaded file. Present in media events, and in comment or reply events when the comment is attached to media.

Field Description
id Media ID
typeFile File type (video, image, pdf, audio)
originalName Original file name
filesSize Size in bytes and a human-readable unit
uploadedDate Upload time (Unix ms)
originalSrc Source URL of the original file (signed)
thumbnail_200x200 / thumbnail_550x550 Thumbnail URLs (signed)
convertVideos Transcoded renditions with type, size, and statusConvert
url Link to the media in the review view
connector String for saving connector parameters
"mediaData": {
  "id": 6027457,
  "connector": "Media:6027457-media-6027457-ZZxXvdQYxD1e...",
  "slug": "synconmoodreelv1video720pmp4",
  "typeFile": "video",
  "uploadedDate": 1782832987000,
  "filesSize": { "bytes": 9811401, "unit": "9,35 MB" },
  "originalName": "SynconMoodreel_v1_video_720p.mp4",
  "originalSrc": "https://d3ivy5c7vb1n6k.cloudfront.net/pm/.../951.mp4",
  "thumbnail_200x200": "https://d3ivy5c7vb1n6k.cloudfront.net/pm/.../951.jpg",
  "thumbnail_550x550": "https://d3ivy5c7vb1n6k.cloudfront.net/pm/.../951.jpg",
  "url": "https://platform.krock.io/projects/259404/steps/1425708?version=1602906&media=6027457",
  "convertVideos": [
    { "type": "video_360", "width": 640, "height": 360, "statusConvert": "in_progress", "src": "https://d3ivy5c7vb1n6k.cloudfront.net/pm/.../951_360p.mp4" },
    { "type": "video_720", "width": 1280, "height": 720, "statusConvert": "in_progress", "src": "https://d3ivy5c7vb1n6k.cloudfront.net/pm/.../951_720p.mp4" }
  ],
  "connectorObjects": [ ]
}

commentData

The comment. Present in comment events and reply events.

Field Description
id Comment ID
text Comment text
author Who wrote it (userId, name, avatar, status)
mentions Users mentioned in the comment
mediaId ID of the attached media, or null
frameId Frame the comment is pinned to, or null
timestamp / timeend Start and end time in seconds for time-based comments
isDone true when the comment is resolved
isPublic Whether the comment is visible to reviewers
replies Array of replies on the comment
url Link to the comment
connector String for saving connector parameters
"commentData": {
  "id": 1582780,
  "connector": "Comment:1582780-comment-1582780-ZZxXvdQYxD1e...",
  "frameId": null,
  "mediaId": 6027457,
  "createDate": 1782833602000,
  "editDate": 1782833602000,
  "text": "Test comment [Alex]",
  "isPublic": true,
  "isVisual": true,
  "fromReviewer": false,
  "isDone": false,
  "url": "https://platform.krock.io/projects/259404/steps/1425708?version=1602906&comm=1582780",
  "author": {
    "userId": 87,
    "name": "Pavel",
    "avatar": "https://d3ivy5c7vb1n6k.cloudfront.net/pm/.../avatar.webp",
    "color": "#3b3c43",
    "status": "administrator"
  },
  "mentions": [
    {
      "mentionId": 87859,
      "userId": 386,
      "name": "TestUser",
      "email": "test@krock.io",
      "avatar": "https://d3ivy5c7vb1n6k.cloudfront.net/pm/.../avatar.webp",
      "color": "#3b3c43"
    }
  ],
  "attachments": [ ],
  "replies": [ ],
  "timestamp": 0,
  "timeend": 9.0239,
  "pinned": false,
  "connectorObjects": [ ]
}

replyData

The reply on a comment. Present in reply events only.

Field Description
repliesId Reply ID
commentId ID of the parent comment
text Reply text
author Who wrote it (userId, name, avatar, status)
mentions Users mentioned in the reply
createDate / editDate Timestamps (Unix ms)
url Link to the parent comment
connector String for saving connector parameters
"replyData": {
  "repliesId": 165185,
  "connector": "Reply:165185-reply-165185-ZZxXvdQYxD1e...",
  "commentId": 1582780,
  "createDate": 1782834478000,
  "editDate": 1782834478000,
  "text": "First reply [Test user]",
  "url": "https://platform.krock.io/projects/259404/steps/1425708?version=1602906&comm=1582780",
  "author": {
    "userId": 387,
    "name": "Pavel",
    "avatar": "https://d3ivy5c7vb1n6k.cloudfront.net/pm/.../avatar.webp",
    "color": "#3b3c43",
    "status": "administrator"
  },
  "mentions": [
    {
      "mentionId": 87860,
      "userId": 386,
      "name": "Test user",
      "email": "test@krock.io",
      "avatar": "https://d3ivy5c7vb1n6k.cloudfront.net/pm/.../avatar.webp",
      "color": "#3b3c43"
    }
  ],
  "connectorObjects": [ ]
}

Working with payloads

A few things to keep in mind when you build automations:

  • Timestamps are Unix time in milliseconds. Divide by 1,000 before converting to a date in most tools.
  • Check for optional objects. mediaData is not guaranteed in comment and reply events. Confirm it exists before reading from it.
  • Signed URLs expire. Logos, avatars, and media sources are time-limited. Download or forward them promptly, or pull fresh data when you need them.
  • Use connector to link saved values. Each object’s connector string ties saved parameters to that record, and they come back in connectorObjects on future events.

Saving and Using Connector Parameters

To save a parameter and use it in future webhooks, you need to call the following method:
Endpoint: https://platform.krock.io/api/web/v1/webhook/save-connect-params
Method: POST
Body Content Type: Form-Data

This method requires three parameters:

  1. connectorName: The name of the property you want to save. This can be any name you choose, but avoid using spaces or special characters.
  2. connectorValue: The actual value you want to store.
  3. connector: A pre-formatted string that links to a specific data model in krock.io. When you receive a webhook response, you’ll see objects like workspaceData, projectData, and others. Each of these objects contains a connector property that you can use here. By providing this connector, the value you’re saving gets attached to that specific data model.

How saved data appears in future webhooks

Once saved, your data will appear in the connectorObjects array the next time a webhook is triggered. This array contains all the instances you’ve saved for that particular connector.

Important to note: Each time you call this method with the same connector, it adds a new instance to the connectorObjects array rather than overwriting the existing one.

Practical example: Saving chat IDs in Discord

Let’s say you want to save Discord chat IDs so you can send messages to those chats later. Since each save adds a new entry to the array, you’ll need to:

  1. Loop through the connectorObjects array
  2. Check if the connector in each object matches the connector from the data model in your incoming webhook
  3. Use the matching entry to perform your action (like sending a message to that specific chat)

This approach ensures you’re working with the correct saved data for each webhook event.

 

Still need help?

If you can’t find what you’re looking for, reach out to support at support@krock.io.

Did this answer your question?

  • Happy
  • Normal
  • Sad

Like what you see? Share with a friend.

Experience a Faster Review Process with a Free Trial