> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stackone.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Tableau Webhook Setup Guide

> Configure Tableau to deliver events to StackOne.

## Prerequisites

The connector should already be set up, with a Connector Profile and a Linked Account. See [Getting Started](/connectors/tableau#getting-started) on the Tableau connector page.

<section data-guide-section data-guide-scopes="">
  <h2>Automatic webhook setup</h2>

  <p>StackOne creates and manages the Tableau webhooks automatically when the account is connected, and deletes them when the account is disconnected. You don't need to create any webhook in Tableau.</p>

  <ul>
    <li>Tableau allows one event per webhook, so StackOne creates one webhook for each event you enable in StackOne.</li>
    <li>The webhooks are created on the site the connection signs in to, which is the site set in Content URL.</li>
    <li>Each webhook is named after its event, for example `StackOne WorkbookCreated 1a2b3c4d`.</li>
  </ul>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Available webhook events</h2>

  <p>The following Tableau events can be enabled. Only events selected in StackOne get a webhook, and Tableau does not deliver events that have no webhook.</p>

  <Steps>
    <Step title="Workbook events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Events on published workbooks.</p>

        <ul>
          <li><strong>Workbook Created</strong> (`WorkbookCreated`) — Fired when a workbook is published to the site</li>
          <li><strong>Workbook Updated</strong> (`WorkbookUpdated`) — Fired when a published workbook is updated</li>
          <li><strong>Workbook Deleted</strong> (`WorkbookDeleted`) — Fired when a published workbook is deleted</li>
        </ul>
      </div>
    </Step>

    <Step title="Data source events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Events on published data sources.</p>

        <ul>
          <li><strong>Data Source Created</strong> (`DatasourceCreated`) — Fired when a data source is published to the site</li>
          <li><strong>Data Source Updated</strong> (`DatasourceUpdated`) — Fired when a published data source is updated</li>
          <li><strong>Data Source Deleted</strong> (`DatasourceDeleted`) — Fired when a published data source is deleted</li>
        </ul>
      </div>
    </Step>

    <Step title="Extract refresh events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Events on extract refreshes of workbooks and data sources.</p>

        <ul>
          <li><strong>Workbook Refresh Started</strong> (`WorkbookRefreshStarted`) — Fired when an extract refresh of a workbook starts</li>
          <li><strong>Workbook Refresh Succeeded</strong> (`WorkbookRefreshSucceeded`) — Fired when an extract refresh of a workbook succeeds</li>
          <li><strong>Workbook Refresh Failed</strong> (`WorkbookRefreshFailed`) — Fired when an extract refresh of a workbook fails</li>
          <li><strong>Data Source Refresh Started</strong> (`DatasourceRefreshStarted`) — Fired when an extract refresh of a published data source starts</li>
          <li><strong>Data Source Refresh Succeeded</strong> (`DatasourceRefreshSucceeded`) — Fired when an extract refresh of a published data source succeeds</li>
          <li><strong>Data Source Refresh Failed</strong> (`DatasourceRefreshFailed`) — Fired when an extract refresh of a published data source fails</li>
        </ul>
      </div>
    </Step>

    <Step title="Data label events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Events on data labels of workbooks and data sources. Available on Tableau Cloud only.</p>

        <ul>
          <li><strong>Label Created</strong> (`LabelCreated`) — Fired when a data label is added to a data source or workbook</li>
          <li><strong>Label Updated</strong> (`LabelUpdated`) — Fired when a data label on a data source or workbook is updated</li>
          <li><strong>Label Deleted</strong> (`LabelDeleted`) — Fired when a data label is removed from a data source or workbook</li>
        </ul>
      </div>
    </Step>

    <Step title="User events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Events on users of the site.</p>

        <ul>
          <li><strong>Admin Promoted</strong> (`AdminPromoted`) — Fired when a user is promoted to a Site Administrator role</li>
          <li><strong>Admin Demoted</strong> (`AdminDemoted`) — Fired when a user is demoted from a Site Administrator role</li>
          <li><strong>User Deleted</strong> (`UserDeleted`) — Fired when a user is removed from the site</li>
        </ul>
      </div>
    </Step>

    <Step title="Site events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Events on sites.</p>

        <ul>
          <li><strong>Site Created</strong> (`SiteCreated`) — Fired when a site is created. Tableau Cloud rejects this event when the webhook is created, so it is not delivered for Tableau Cloud sites</li>
          <li><strong>Site Updated</strong> (`SiteUpdated`) — Fired when a site's settings are updated. Tableau Cloud rejects this event when the webhook is created, so it is not delivered for Tableau Cloud sites</li>
          <li><strong>Site Deleted</strong> (`SiteDeleted`) — Fired when a site is deleted</li>
        </ul>
      </div>
    </Step>

    <Step title="View events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Events on views.</p>

        <ul>
          <li><strong>View Deleted</strong> (`ViewDeleted`) — Fired when a view is deleted</li>
        </ul>
      </div>
    </Step>
  </Steps>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Delivery format</h2>

  <p>Details of how Tableau delivers events to StackOne.</p>

  <ul>
    <li>Tableau sends one event per HTTP POST, with the same JSON body for every event: `resource`, `event_type`, `resource_name`, `site_luid`, `resource_luid`, `created_at` and `text`, a human-readable summary of the event.</li>
    <li>StackOne uses `resource_luid`, the LUID of the workbook, data source, user, site or view, as the event ID.</li>
    <li>For extract refresh events `resource` is `EXTRACTS`, and `created_at` is when the refresh job was created, so the started, succeeded and failed events of one refresh can carry the same `created_at`.</li>
    <li>Tableau can deliver one event more than once with an identical body. If a delivery does not get a success response, Tableau retries it three times.</li>
    <li>Tableau does not sign deliveries and sends no verification request. Each account's webhooks post to a callback URL unique to that account.</li>
  </ul>
</section>

## Verify

Your Connector should now be able to receive and process events. Try triggering an event and you should see an Event appear in the Connector logs.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.