Integrating With Smartsheet Using Webhooks

Send Ziflow events to your Smartsheet using Webhooks.

Updated over a week ago

Summary: With our Smartsheet Webhook integration, you can extend your Ziflow online proofing operations to automatically create and update records. You'll see updates in Smartsheet in real-time - for new proofs, comments, decisions, and more. This will keep your team up to date in the tools they're already working with.

Available for: Users with Admin rights on Pro & Enterprise editions.

Our Webhook Zibot allows you to trigger a flow when the following events occur on a proof:

  • New proof/version: triggers when a new proof is ready for review.

  • Decision: triggers when a decision is made by a reviewer or when a decision is updated on the stage and/or proof.

  • New comment/reply: triggers when a reviewer adds a comment/reply to the proof.

  • Comment resolved: triggers when a comment is marked as resolved.

  • Comment labeled: triggers when a reviewer labels a comment.

  • Proof updated: triggers when the proof folder, setting, or custom property changes.

  • Stage updated: triggers when a stage is started or when a reviewer is added/removed.

  • Comment reaction: triggers when a comment reaction is added on a comment/reply level.


Learn how to:


Create Ziflow Webhook Flow

To integrate Smartsheet with Ziflow, you need to click on the Connect tab and then click on the + Create Flow button, choose Ziflow as the Application, and choose which Event (New proof/version, Decision made, New comment/reply, Comment resolved, Comment labeled) you want to trigger the integration.

Create Ziflow Webhook Flow

Set up Flow Event settings

The first step is selecting the event that will trigger your Zibot:

Set up Flow Event settings in Ziflow

Next, you will be presented with the event details page, which will vary depending on which event you select:


New proof/version

New proof/version event settings in Ziflow
  1. Triggered by - select the type of request that will trigger the Zibot.

  2. Created in - select the Ziflow folder that this flow will monitor.

  3. Created by - select the user responsible for this flow activation.


Decision made

Decision made event settings in Ziflow
  1. Triggered by decision made - select what level decision needs to be made to activate the flow.

  2. Type of decision - choose the decision that needs to be made to activate the flow.

  3. Created in - select the Ziflow folder that this flow will monitor.


New comment/reply added

New comment/reply added event settings in Ziflow
  1. Triggered by new comment/reply, choose which option should activate the flow.

  2. Made by - choose if a Zibot should be activated by a specific reviewer or anyone who adds a comment/reply.

  3. Created in - select the Ziflow folder that this flow will monitor.


Comment resolved

Comment resolved event settings in Ziflow
  1. Created in - select the Ziflow folder that this flow will monitor.


Comment labeled

Comment labeled event settings in Ziflow
  1. Comment is labeled as - select which label(s) should trigger a Zibot.

  2. Created in - select the Ziflow folder that this flow will monitor.


Proof updated

Proof updated event settings in Ziflow
  1. Triggered by - select which type of the proof updated event should trigger the Zibot.

  2. Modified in - choose the Ziflow folder that this flow will monitor.


Stage updated

Stage updated event configuration
  1. Triggered by - select which type of the stage updated event should trigger the Zibot. There are three types of stage update events: reviewer added, reviewer removed, stage locked, and deadline changed.

  2. Modified in - choose the Ziflow folder that this flow will monitor.


Comment reaction

Comment reaction event settings
  1. Triggered by - choose if you want to trigger a flow based on reactions added to comments or replies.

  2. Comment reacted with - select what type of reaction should trigger a flow.

  3. Created in - select the Ziflow folder that is going to be monitored by this flow.


Getting your Smartsheet API Key

To connect Ziflow with Smartsheet, you'll need to obtain an API Key from your Smartsheet account. To do that, please follow the instructions below:

  1. On the left Navigation Bar, select Account.

  2. Select Apps & Integrations.

  3. In the Personal Settings form, select API Access.

  4. In the API Access tab, select Generate new access token. Name the token that will be used for connecting with Ziflow. Once the API key is generated, copy it and save it somewhere in the notepad.

    1. You can also revoke existing tokens in this tab if needed.

 Getting your Smartsheet API Key

API Keys are only available in Smartsheet Business and Enterprise Plans.


Finding Sheet ID

To build integration between Ziflow and Smartsheet, you'll need to gather Sheet ID, which will be later used to set up Zibot.

Open up your Sheet and go to File, Properties, and then it’s displayed in the pop-up window.

Finding Sheet ID

Finding Column IDs

Another piece of information required to build a proper integration between Ziflow and Smartsheet is Column ID which will be also required to have both systems in sync.

Columns in your Sheet

For getting Column IDs, you'll need to use Postman or some other API tool that allows working with API.

Post a GET call for the following endpoint:

https://api.smartsheet.com/2.0/sheets/”SHEET ID”

Select Bearer Token as your authentication method and paste the API key copied from your Smarsheet account.

Authorization = Bearer Token

This is how the response should look like:

Getting column IDs with Postman GET call

Please save these column IDs because we'll be using them later on when configuring the Smarsheet Zibot.


New Proof creates a new Row in Smartsheet

(New proof created trigger is recommended for this type of integration)

Next, choose a Webhook Zibot:

Fill out Webhook Zibot details; this Zibot will create a new row in Smartsheet and update whichever columns you specify.

Fill out Zibot details
  1. Request type - the POST option should be selected as a request type since we want to send data to Smarsheet.

  2. Request URL - fill out with your Smartsheet URL. Please follow this link to see how to collect Sheet ID.

    https://api.smartsheet.com/2.0/sheets/{sheet_id}/rows
  3. Request body - should be filled with JSON body referencing columns that you would like to update in Smartsheet with data from Ziflow. In this case, I decided that records on the Smartsheet side should be populated with four fields from Ziflow: Name, Status, Public Link URL & Version. You'll need to copy column IDs

    [{"toTop":true,
    "cells": [
    {"columnId": {proof_name_column_id}, "value": "{$.proof.name}"},
    {"columnId": {version_column_id}, "value": "V {$.proof.version}"},
    {"columnId": {status_column_id}, "value": "In Progress"},
    {"columnId": {proof_public_url_column_id}, "value": "{$.proof.public_link}"}
    ]}]

    The following fields (proof_name_column_id, version_column_id, status_column_id, proof_public_url_column_id) should match fields existing IDs inside your Smartsheet columns.

    Columns in Smartsheet

  4. Headers - inside this section, please enter generated API key copied from your profile within Smartsheet.

    Smartsheet apikey entered in Zibot configuration for authorization

Save your Zibot configuration by pressing the Next button.

Before continuing with the next step, please create a custom property in Ziflow to hold this Smartsheet Row ID information. This is how I named the property in Ziflow:

Smartsheet Row ID property in Ziflow

Once you have the custom property ready, you might add a new Zibot to the flow, which will update the property with Row ID after the proof creation.

Zibot updating property with Smarsheet Row ID

This Zibot will get a Smartwsheet Row ID so you can store the value in a custom property and use it later to tell Ziflow which record should be updated when there are changes on the Ziflow side (new version or approval status).

Once you finish the flow configuration, please save all settings and activate the flow.

Save and activate flow in Ziflow

You can test if the flow works correctly by creating a sample proof in Ziflow and then checking if it added a record in Smatsheet.

Test the Zibot and see how Ziflow sends data to Smartsheet

Ziflow proof decision or a new version is updated in Smarstheet.

(Decision made or New version trigger is recommended for this type of integration)

Decision made selected as a flow trigger in Ziflow

Next, choose a Webhook Zibot:

Webhook selected as a flow Zibot in Ziflow

Fill out Webhook Zibot details; this Zibot will update a Smartsheet column status with a proof decision once it is calculated in Ziflow.

Smartsheet Webhook Zibot details
  1. Request type - the PUT option should be selected as a request type since we want to update the Smatsheet row with information from Ziflow proof.

  2. Request URL - fill out with your Smartsheet URL. Please follow this link to see how to collect Sheet ID.

    https://api.smartsheet.com/2.0/sheets/{sheet_id}/rows
  3. Request body - should be filled with JSON body referencing columns that you would like to update in Smartsheet with data from Ziflow. In this case, I decided that the row on the Smartsheet side should be updated with four fields from Ziflow: Status, Version & Proof Link URL.

    [{"id": "{$.proof.custom_properties[?(@.properties[?(@.name=='Smartsheet')])].properties[?(@.name=='Smartsheet Row ID')].value}",
    "cells":
    [
    {"columnId": {status_column_id}, "value": "Approved"},
    {"columnId": {version_column_id}, "value": "V {$.proof.version}"},
    {"columnId": {proof_public_url_column_id}, "value": "{$.proof.public_link}"}
    ]}]

    The following fields (version_column_id, status_column_id, proof_public_url_column_id) should match existing IDs inside your Smartsheet columns.

    Please also make sure to correctly reference your custom group property and property name in the JSON body.

    {$.proof.custom_properties[?(@.properties[?(@.name=='Smartsheet')])].properties[?(@.name=='Smartsheet Row ID')].value

  4. Headers - inside this section, please enter generated API key copied from your profile within Smartsheet.

    Smartsheet apikey enetered in headers section

Once you finish the flow configuration, please save all settings and activate the flow.

Save and enable flow after it's been configured in Ziflow

You can now test if the flow works correctly by submitting a proof decision on a sample proof in Ziflow and then checking if the flow has passed the correct proof status in the Smartsheet row.

Test Ziflow - Smartsheet integration

Update Smarstheet row with approval decision and date

(Decision made trigger is recommended for this type of integration)

Decision made

Next, choose a Webhook Zibot:

Webhook selected as a flow Zibot in Ziflow

Fill out Webhook Zibot details; this Zibot will update a Smartsheet row when a proof decision is submitted in Ziflow.

Smartsheet Webhook Zibot details
  1. Request type - the PUT option should be selected as a request type since we want to update the Smatsheet row with information from Ziflow proof.

  2. Request URL - fill out with your Smartsheet URL. Please follow this link to see how to collect Sheet ID.

    https://api.smartsheet.com/2.0/sheets/{sheet_id}/rows
  3. Request body - should be filled with JSON body referencing columns you would like to update in Smartsheet with data from Ziflow. In this case, I decided that the row on the Smartsheet side should be updated with four fields from Ziflow: Status & Approval time.

    [{"id": "{$.proof.custom_properties[?(@.properties[?(@.name=='Properties for integration purposes')])].properties[?(@.name=='Smartsheet Row ID')].value}", 
    "cells":
    [
    {"columnId": {status_column_id}, "value": "Approved"},
    {"columnId": {approval_time_id}, "value": "#{$fromMillis($.trigger.proofSerializedModel.calculatedProofStatusDate)}#"}
    ]}]


    The following fields (status_column_id, approval_time_id) should match existing IDs inside your Smartsheet columns.

    Please also make sure to correctly reference your custom group property and property name in the JSON body.

    {$.proof.custom_properties[?(@.properties[?(@.name=='Smartsheet')])].properties[?(@.name=='Smartsheet Row ID')].value

  4. Headers - inside this section, please enter generated API key copied from your profile within Smartsheet.

    Airtable apikey enetered in headers section

Once you finish the flow configuration, please save all settings and activate the flow.

Save and enable Smartsheet flow in Ziflow

You can now test if the flow works correctly by submitting a proof decision on a sample proof in Ziflow and then checking if the flow has passed the correct proof status and approval date in the Smartsheet row.

Test Ziflow - Smartsheet integration

Additional information:


Supporting Material:

Did this answer your question?