Skip to main content
If you’re using Voiceflow within a larger organization, you might want to integrate with your existing observability or testing tools. Organization events webhooks let you automatically receive updates whenever something happens in your organization - for example, when a new project is created. Just provide a webhook URL, and Voiceflow will send event data there in real time.

Configuring your webhook settings

If you’re less technical, we recommend using a tool like Make to generate a webhook URL and run automations. If you’re a developer, you can hook into your existing infrastructure using any tool that can receive and process JSON payloads.
To enable sending data to a webhook whenever key events happen within an organization, head to your Voiceflow dashboard, click the Settings button in the bottom left corner, then select Organization. You can then add the URL that you’d like to send events to in the box provided. Once you’ve set a webhook URL, all future events will be automatically sent to it.

Supported events

The following organization-level events will be sent to the provided URL:
Human-readable nameName
New project createdorganization.project.created
Project deletedorganization.project.deleted
Project environment createdorganization.project.environment.created
Project environment publishedorganization.project.environment.published
Project environment mergedorganization.project.environment.merged
Project environment deletedorganization.project.environment.deleted

organization.project.created

Sent when a new project is created in the organization.
{
  "type": "organization.project.created",
  "data": {
    "createdBy": {
      "type": string, // e.g. "user"
      "userEmail": string
    },
    "organizationID": string,
    "projectID": string,
    "projectMetadata": {
      "name": string
    },
    "workspaceID": string
  },
  "resource": string, // organization-{organizationID}
  "time": number // unix timestamp MS, event time
}
{
  "data": {
    "createdBy": {
      "type": "user",
      "userEmail": "user@voiceflow.com"
    },
    "organizationID": "LVkmPy8AE2",
    "projectID": "6a16f4549e4196323d8a49b9",
    "projectMetadata": {
      "name": "My new project"
    },
    "workspaceID": "95kwAZ63nO"
  },
  "resource": "organization-LVkmPy8AE2",
  "time": 1779889237608,
  "type": "organization.project.created"
}

organization.project.deleted

Sent when a project is deleted from the organization.
{
  "type": "organization.project.deleted",
  "data": {
    "deletedBy": {
      "type": string, // e.g. "user"
      "userEmail": string
    },
    "organizationID": string,
    "projectID": string,
    "projectMetadata": {
      "name": string
    },
    "workspaceID": string
  },
  "resource": string, // organization-{organizationID}
  "time": number // unix timestamp MS, event time
}
{
  "data": {
    "deletedBy": {
      "type": "user",
      "userEmail": "user@voiceflow.com"
    },
    "organizationID": "LVkmPy8AE2",
    "projectID": "6a16f4789e4196323d8a49c3",
    "projectMetadata": {
      "name": "Legacy support agent"
    },
    "workspaceID": "95kwAZ63nO"
  },
  "resource": "organization-LVkmPy8AE2",
  "time": 1779889287387,
  "type": "organization.project.deleted"
}

organization.project.environment.created

Sent when a new environment is created within a project. The source describes the environment the new one was branched from.
{
  "type": "organization.project.environment.created",
  "data": {
    "createdBy": {
      "type": string, // e.g. "user"
      "userEmail": string
    },
    "createdProjectEnvironmentID": string,
    "createdProjectEnvironmentMetadata": {
      "alias": string,
      "isLive": boolean,
      "name": string,
      "trafficPercentage": number
    },
    "organizationID": string,
    "projectID": string,
    "projectMetadata": {
      "name": string
    },
    "source": {
      "environmentID": string,
      "environmentMetadata": {
        "alias": string,
        "isLive": boolean,
        "name": string,
        "trafficPercentage": number
      },
      "type": string // e.g. "environment"
    },
    "workspaceID": string
  },
  "resource": string, // organization-{organizationID}
  "time": number // unix timestamp MS, event time
}
{
  "data": {
    "createdBy": {
      "type": "user",
      "userEmail": "user@voiceflow.com"
    },
    "createdProjectEnvironmentID": "6a16f4dc9e4196323d8a49e5",
    "createdProjectEnvironmentMetadata": {
      "alias": "optimizeglobalprompt",
      "isLive": false,
      "name": "Optimize global prompt",
      "trafficPercentage": 0
    },
    "organizationID": "LVkmPy8AE2",
    "projectID": "69e8b60a99c9a35e1a5e8872",
    "projectMetadata": {
      "name": "My support agent"
    },
    "source": {
      "environmentID": "69e8b60a99c9a35e1a5e8875",
      "environmentMetadata": {
        "alias": "main",
        "isLive": true,
        "name": "Main",
        "trafficPercentage": 70
      },
      "type": "environment"
    },
    "workspaceID": "95kwAZ63nO"
  },
  "resource": "organization-LVkmPy8AE2",
  "time": 1779889372749,
  "type": "organization.project.environment.created"
}

organization.project.environment.published

Sent when an environment within a project is published. publishedVersionIDBefore and publishedVersionIDAfter let you track what changed.
{
  "type": "organization.project.environment.published",
  "data": {
    "organizationID": string,
    "projectID": string,
    "projectMetadata": {
      "name": string
    },
    "publishedBy": {
      "type": string, // e.g. "user"
      "userEmail": string
    },
    "publishedProjectEnvironmentID": string,
    "publishedProjectEnvironmentMetadata": {
      "alias": string,
      "isLive": boolean,
      "name": string,
      "trafficPercentage": number
    },
    "publishedVersionIDAfter": string,
    "publishedVersionIDBefore": string,
    "workspaceID": string
  },
  "resource": string, // organization-{organizationID}
  "time": number // unix timestamp MS, event time
}
{
  "data": {
    "organizationID": "LVkmPy8AE2",
    "projectID": "69e8b60a99c9a35e1a5e8872",
    "projectMetadata": {
      "name": "My support agent"
    },
    "publishedBy": {
      "type": "user",
      "userEmail": "user@voiceflow.com"
    },
    "publishedProjectEnvironmentID": "69e8b60a99c9a35e1a5e8875",
    "publishedProjectEnvironmentMetadata": {
      "alias": "main",
      "isLive": true,
      "name": "Main",
      "trafficPercentage": 70
    },
    "publishedVersionIDAfter": "6a16f4b29e4196323d8a49db",
    "publishedVersionIDBefore": "69e8e543ce546b913fc2c965",
    "workspaceID": "95kwAZ63nO"
  },
  "resource": "organization-LVkmPy8AE2",
  "time": 1779889330124,
  "type": "organization.project.environment.published"
}
{
  "data": {
    "organizationID": "LVkmPy8AE2",
    "projectID": "69e8b60a99c9a35e1a5e8872",
    "projectMetadata": {
      "name": "My support agent"
    },
    "publishedBy": {
      "type": "user",
      "userEmail": "user@voiceflow.com"
    },
    "publishedProjectEnvironmentID": "6a16f4dc9e4196323d8a49e5",
    "publishedProjectEnvironmentMetadata": {
      "alias": "optimizeglobalprompt",
      "isLive": false,
      "name": "Optimize global prompt",
      "trafficPercentage": 0
    },
    "publishedVersionIDAfter": "6a16f5129e4196323d8a49f1",
    "publishedVersionIDBefore": "6a16f4dc9e4196323d8a49e3",
    "workspaceID": "95kwAZ63nO"
  },
  "resource": "organization-LVkmPy8AE2",
  "time": 1779889426435,
  "type": "organization.project.environment.published"
}

organization.project.environment.merged

Sent when one environment is merged into another. sourceProjectEnvironmentRemoved indicates whether the source environment was deleted as part of the merge.
{
  "type": "organization.project.environment.merged",
  "data": {
    "mergedBy": {
      "type": string, // e.g. "user"
      "userEmail": string
    },
    "organizationID": string,
    "projectID": string,
    "projectMetadata": {
      "name": string
    },
    "sourceProjectEnvironmentID": string,
    "sourceProjectEnvironmentMetadata": {
      "alias": string,
      "isLive": boolean,
      "name": string,
      "trafficPercentage": number
    },
    "sourceProjectEnvironmentRemoved": boolean,
    "targetProjectEnvironmentID": string,
    "targetProjectEnvironmentMetadata": {
      "alias": string,
      "isLive": boolean,
      "name": string,
      "trafficPercentage": number
    },
    "workspaceID": string
  },
  "resource": string, // organization-{organizationID}
  "time": number // unix timestamp MS, event time
}
{
  "data": {
    "mergedBy": {
      "type": "user",
      "userEmail": "user@voiceflow.com"
    },
    "organizationID": "LVkmPy8AE2",
    "projectID": "69e8b60a99c9a35e1a5e8872",
    "projectMetadata": {
      "name": "My support agent"
    },
    "sourceProjectEnvironmentID": "6a16f4dc9e4196323d8a49e5",
    "sourceProjectEnvironmentMetadata": {
      "alias": "optimizeglobalprompt",
      "isLive": false,
      "name": "Optimize global prompt",
      "trafficPercentage": 0
    },
    "sourceProjectEnvironmentRemoved": true,
    "targetProjectEnvironmentID": "69e8b60a99c9a35e1a5e8875",
    "targetProjectEnvironmentMetadata": {
      "alias": "main",
      "isLive": true,
      "name": "Main",
      "trafficPercentage": 70
    },
    "workspaceID": "95kwAZ63nO"
  },
  "resource": "organization-LVkmPy8AE2",
  "time": 1779889488361,
  "type": "organization.project.environment.merged"
}

organization.project.environment.deleted

Sent when an environment is deleted from a project.
{
  "type": "organization.project.environment.deleted",
  "data": {
    "deletedBy": {
      "type": string, // e.g. "user"
      "userEmail": string
    },
    "deletedProjectEnvironmentID": string,
    "deletedProjectEnvironmentMetadata": {
      "alias": string,
      "isLive": boolean,
      "name": string,
      "trafficPercentage": number
    },
    "organizationID": string,
    "projectID": string,
    "projectMetadata": {
      "name": string
    },
    "workspaceID": string
  },
  "resource": string, // organization-{organizationID}
  "time": number // unix timestamp MS, event time
}
{
  "data": {
    "deletedBy": {
      "type": "user",
      "userEmail": "user@voiceflow.com"
    },
    "deletedProjectEnvironmentID": "69e8b64d99c9a35e1a5e888b",
    "deletedProjectEnvironmentMetadata": {
      "alias": "feature-upselling",
      "isLive": false,
      "name": "Old unused environment",
      "trafficPercentage": 0
    },
    "organizationID": "LVkmPy8AE2",
    "projectID": "69e8b60a99c9a35e1a5e8872",
    "projectMetadata": {
      "name": "My support agent"
    },
    "workspaceID": "95kwAZ63nO"
  },
  "resource": "organization-LVkmPy8AE2",
  "time": 1779889527687,
  "type": "organization.project.environment.deleted"
}

Verifying requests come from Voiceflow

Once you enter a webhook URL into the settings page, you’ll automatically be provided with a webhook secret. This can be used to verify that events received by the webhook were really sent by Voiceflow. Follow these instructions to learn how to verify events using the webhook secret. If you accidentally leak your webhook secret, you can regenerate it using the 🔄 button on the settings page. Note that your previous webhook secret will remain valid for 24 hours after you regenerate it. If you’re receiving data from behind a restrictive firewall, you should know that events will come from one of Svix’s IP addresses, rather than Voiceflow’s.