Workspace Sharing Alert/Notification

Hello all - I'm looking to see if anyone has figured out a way to be alerted when sharing permissions change at a Workspace level? I know there's a template automation for sheet level sharing permission changes but having a sheet in a workspace with that setup then having the Workspace permissions change doesn't trigger the sheet level change.
I've looked through the Developers & API section for Workspaces but don't see anything about sharing changes, just to share a workspace. Also looking at the Smartsheet Data Governance Capabilities but I'm not sure if that includes seeing reports of share permissions changing? If it does, I wonder if I could get that report back into Smartsheet via DataShuttle and then just run simple automations to alert myself of changes with some fancy formulas, etc.
Any help or ideas on this would be great.
Thank you all for your time - Michael
Michael Halvey
"Strive for Progress, not Perfection."
Best Answer
-
Hi @MHalvey
Given that both Smartsheet Bridge and Microsoft Power Automate lack native actions to directly retrieve workspace share information, implementing a solution requires utilizing HTTP requests to interact with Smartsheet's API. Considering ease of development and integration, Power Automate is recommended for this task.
(Bridge)
(Power Automate)
Basic Flow
[Scheduled Trigger] (e.g., every 6 hours)
↓
[GET Workspace Shares via API]
↓
[Compare with Last Saved Record]
↓
[Changes Detected?]
↙ ↘
Yes No
↓ ↓
[Send Notification] [Do Nothing]
↓
[Update Saved Record]1. Scheduling: Can both Bridge and Power Automate be used for this workflow?
Yes, both Smartsheet Bridge and Power Automate can be configured to monitor workspace sharing permissions by leveraging their scheduling capabilities:
- Power Automate: Utilize the Recurrence trigger to initiate the workflow at specified intervals (e.g., every 6 hours).
- Smartsheet Bridge: Employ the Scheduled Trigger to start workflows on a defined schedule.
However, Power Automate's more intuitive interface and seamless integration with Microsoft services (such as Excel or SharePoint list to store the workspace-share-data) offer a more straightforward development experience for this use case.
2. Developing the Workflow in Bridge: What would it look like?
In Smartsheet Bridge, since there is no native action to retrieve workspace share information, the workflow would involve:
- API Call: Use the Call API module to send a
GET
request to Smartsheet's API endpoint:https://api.smartsheet.com/2.0/workspaces/{workspaceId}/shares
. This requires setting up an API profile with the necessary authentication headers. Smartsheet Help Center - Data Handling: Parse the API response to extract the current sharing information.
- Comparison Logic: To detect changes, compare the retrieved data with previously stored sharing information.
- Notification: If changes are detected, configure actions to send alerts or update relevant records.
- Update Stored Sharing Data: Update row in Smartsheet
While this approach is feasible, it involves a more complex setup than Power Automate.
3. Monitoring Multiple Workspaces: Is a separate flow required for each workspace?
No, it's not necessary to create individual flows for each workspace. In Power Automate, you can:
- Store Workspace IDs: Maintain an array of workspace IDs within the flow.
- Iterate Over Workspaces: Use an Apply to each loop to iterate through the array, performing the share check for each workspace. (In Bridge, you can use the child workflow.)
This approach centralizes the monitoring process, making it more efficient and easier to manage.
Recommended Workflow Using Power Automate:
- Initialize Variables:
- Create an array variable containing the IDs of the workspaces to monitor.
- Scheduled Trigger:
- Set up a Recurrence trigger to run the flow at specified intervals.
- Loop Through Workspaces:
- Use an Apply to each action to iterate over the workspace ID array.
- API Request:
- Within the loop, use the HTTP action to send a
GET
request tohttps://api.smartsheet.com/2.0/workspaces/{workspaceId}/shares
, replacing{workspaceId}
with the current ID from the array.
- Within the loop, use the HTTP action to send a
- Compare Data:
- Parse the response and compare it with the previously stored sharing data to identify any changes.
- Conditional Actions:
- If changes are detected, send notifications to relevant stakeholders and update the stored data accordingly.
- Update Stored Sharing Data
Answers
-
Hi @MHalvey
One idea is to use the Smartsheet API to regularly check the workspace shares and compare them with the last recorded state. If there’s a change (someone added, removed, or permission changed), you could trigger a notification.
The basic flow would be:
- Use
GET /workspaces/{workspaceId}/shares
to pull the current share list. - Save the results somewhere (like a database, sheet, or file).
- Run a scheduled check (for example, every 1–6 hours).
- If changes are found, send a notification or alert.
- Optionally, log changes for audit tracking.
For scheduling, depending on your platform:
- Smartsheet Bridge: Scheduled Triggers to launch workflows periodically.
- GCP: Cloud Scheduler triggers a Cloud Function or Pub/Sub.
- Apps Script: Time-driven triggers run functions automatically.
- Power Automate: Recurrence trigger to run flows on a schedule.
Smartsheet’s API rate limit is about 300 requests per minute, so polling every hour or something similar would not be a concern.
You could also use Data Shuttle to bring share reports into a sheet and set alerts from there, but it would be less real-time compared to API polling.
- Use
-
Hi @jmyzk_cloudsmart_jp - Thank you for the response and giving me hope there is a possible solution to track this.
I do have a couple of follow up questions if you don't mind answer?
1 - For scheduling - my company does have Bridge and Power Automate through our E5 licenses. Are you saying either of these directions could work with your basic workflow you described above?
2 - If I developed it through Bridge, what would that workflow look in it? I image there needs to be a API call in there for the workspace, I guess I'm just a little confused on how the data is taken and put into a sheet or excel file? If you are okay with sharing, any further details would be extremely helpful and I thank you.
3 - Regardless of scheduling, would all require an individual flow per workspace or could you maybe create one with all workspaces in your environment?
Thank you again for your time above and to review my continued questions, have a wonderful rest of your day - Michael
Michael Halvey
"Strive for Progress, not Perfection."
-
Hi @MHalvey
Given that both Smartsheet Bridge and Microsoft Power Automate lack native actions to directly retrieve workspace share information, implementing a solution requires utilizing HTTP requests to interact with Smartsheet's API. Considering ease of development and integration, Power Automate is recommended for this task.
(Bridge)
(Power Automate)
Basic Flow
[Scheduled Trigger] (e.g., every 6 hours)
↓
[GET Workspace Shares via API]
↓
[Compare with Last Saved Record]
↓
[Changes Detected?]
↙ ↘
Yes No
↓ ↓
[Send Notification] [Do Nothing]
↓
[Update Saved Record]1. Scheduling: Can both Bridge and Power Automate be used for this workflow?
Yes, both Smartsheet Bridge and Power Automate can be configured to monitor workspace sharing permissions by leveraging their scheduling capabilities:
- Power Automate: Utilize the Recurrence trigger to initiate the workflow at specified intervals (e.g., every 6 hours).
- Smartsheet Bridge: Employ the Scheduled Trigger to start workflows on a defined schedule.
However, Power Automate's more intuitive interface and seamless integration with Microsoft services (such as Excel or SharePoint list to store the workspace-share-data) offer a more straightforward development experience for this use case.
2. Developing the Workflow in Bridge: What would it look like?
In Smartsheet Bridge, since there is no native action to retrieve workspace share information, the workflow would involve:
- API Call: Use the Call API module to send a
GET
request to Smartsheet's API endpoint:https://api.smartsheet.com/2.0/workspaces/{workspaceId}/shares
. This requires setting up an API profile with the necessary authentication headers. Smartsheet Help Center - Data Handling: Parse the API response to extract the current sharing information.
- Comparison Logic: To detect changes, compare the retrieved data with previously stored sharing information.
- Notification: If changes are detected, configure actions to send alerts or update relevant records.
- Update Stored Sharing Data: Update row in Smartsheet
While this approach is feasible, it involves a more complex setup than Power Automate.
3. Monitoring Multiple Workspaces: Is a separate flow required for each workspace?
No, it's not necessary to create individual flows for each workspace. In Power Automate, you can:
- Store Workspace IDs: Maintain an array of workspace IDs within the flow.
- Iterate Over Workspaces: Use an Apply to each loop to iterate through the array, performing the share check for each workspace. (In Bridge, you can use the child workflow.)
This approach centralizes the monitoring process, making it more efficient and easier to manage.
Recommended Workflow Using Power Automate:
- Initialize Variables:
- Create an array variable containing the IDs of the workspaces to monitor.
- Scheduled Trigger:
- Set up a Recurrence trigger to run the flow at specified intervals.
- Loop Through Workspaces:
- Use an Apply to each action to iterate over the workspace ID array.
- API Request:
- Within the loop, use the HTTP action to send a
GET
request tohttps://api.smartsheet.com/2.0/workspaces/{workspaceId}/shares
, replacing{workspaceId}
with the current ID from the array.
- Within the loop, use the HTTP action to send a
- Compare Data:
- Parse the response and compare it with the previously stored sharing data to identify any changes.
- Conditional Actions:
- If changes are detected, send notifications to relevant stakeholders and update the stored data accordingly.
- Update Stored Sharing Data
-
@jmyzk_cloudsmart_jp That's a clever way to use a file on Office365 as memory storage for your Power Automate flow!
Hadn't thought of doing that yet.
Darren Mullen, join the Smartsheet Guru Elite
Get my 7 Smartsheet tips here
Author of: Smartsheet Architecture Solutions
-
Thank you @jmyzk_cloudsmart_jp for this! I’m going to work to develop it through Power Automate. I really appreciate your time and discussion on this. It’s extremely helpful. I hope you don’t mind me bugging you if I come across any further questions. Have a wonderful rest of your day.
Michael
Michael Halvey
"Strive for Progress, not Perfection."
-
@jmyzk_cloudsmart_jp - I've hit a road block with a Forbidden error on the HTTP connector. I was able to setup the previous steps but this error has me going in circles.
I didn't think there needed to be any Headers, Queries, Body, Cookies but I could be wrong. I saw Authentication in the Advance Parameters and thought maybe that's where the API token goes, similar to Bridge, however I am still receiving errors. Do you have any suggestions on this error?I was wrong, it was under the Header Key and Value section, just like in Bridge. This part of the workflow now is working as intended.You also mentioned in the section after the HTTP, I need to parse the data, can you explain that a little more? I would assume there's a connector that takes the data and converts it to an excel file that I can then bring back into Smartsheet and compare along previous data as mentioned in the Conditional Actions section below?
Compare Data:
- Parse the response and compare it with the previously stored sharing data to identify any changes.
Conditional Actions:
- If changes are detected, send notifications to relevant stakeholders and update the stored data accordingly.
Update Stored Sharing Data
Thank you again for your time and wisdom, you have been extremely helpful.
Michael
Michael Halvey
"Strive for Progress, not Perfection."
-
@jmyzk_cloudsmart_jp - I wanted to add some more details. I was able to figure out after the 'HTTP' action to 'Parse Json' action and then 'Add a row into a table' in an excel sheet on Sharepoint.
My thinking is after the data is ported there, then I could use DataShuttle to move it into a sheet in Smartsheet and use automations to alert from there.
My current road block is the Power Automate workflow says it's working however no data is appearing in my excel file on Sharepoint. Copilot is telling me to check my Schema after I confirmed my Advanced Parameters in the excel sheet match what I've got in the 'Add a row into a table' action.
If you think I'm missing anything else, please let me know as I'm just trying to pile this together from your post, google searches and Copilot help. 🤣
Thank you - Michael
Michael Halvey
"Strive for Progress, not Perfection."
-
Thanks for the detailed breakdown — you're close! 😊 From your flow image, I noticed that you're using an Apply to each, but the input doesn’t seem to be properly configured to iterate over each item in the result array from your HTTP response. As you can see below, the List dashboard shares' response is array of share information. ("result": [ share 1, share 2, share 3] and share 1, for example, has id, type, accessLevel, email, etc.
{
"pageNumber": 1,
"pageSize": 50,
"totalPages": 25,
"totalCount": 136,
"result": [
{
"id": "string",
"groupId": 0,
"userId": 0,
"type": "string",
"accessLevel": "ADMIN",
"ccMe": true,
"createdAt": "2019-08-24T14:15:22Z",
"email": "string",
"message": "string",
"modifiedAt": "2019-08-24T14:15:22Z",
"name": "string",
"scope": "string",
"subject": "string"
}
]
}Since the API response wraps the shares in a result array, you'll want to set the Apply to each to loop over body('Parse_JSON')?['result']. Then, within the loop, pull properties like email, accessLevel, and scope, and map those into the Excel row fields.
That might be why you're not seeing any data show up in the Excel file — it’s likely not iterating over the actual items.
Additionally, regarding your plan to use Data Shuttle to transfer Excel data into Smartsheet, if you are already in Power Automate, it may be more streamlined to insert the data directly into Smartsheet using the native Smartsheet connector (Add a row). That way, you can use Smartsheet’s built-in comparison features or formulas to track changes to workspace sharing over time (like before/after comparisons or triggering alerts when share settings change).
Cheers,😀
-
@jmyzk_cloudsmart_jp - Thank you again for your insight! I tried adding another 'Apply to each' over the 'Add a row into a table' however I'm getting this error now through both 'Apply to each.' 'Action 'Apply_to_each_1' failed: The execution of template action 'Apply_to_each_1' failed: the result of the evaluation of 'foreach' expression '@body('Parse_JSON')?['result']' is of type 'Null'. The result must be a valid array.'
I'm not quite sure why that's the case as I thought the array was valid.
I also noticed when I had data being adding into a new excel sheet, all the Parse Json data was in a single row for that Workspace. Is it possible to get each user in a shared Workspace on separate row in the excel file? I'm probably all over now so I again thank you for your time and help.
I looked into your second point about using the Smartsheet actions in Power Automate, but I'm not sure it will work for my case. Wouldn't the native 'Add a row' just keep adding the same data over and over? With DataShuttle's feature to 'Merge data into the target based on a key column value' and have it add new rows, delete rows that no longer match, I could use that to email alert if the COUNTIF changes? I've added my rough process flow per each Workspace and I was using this as my framework for the Power Automation.
Thank you again for your helpful feedback, have a wonderful rest of your day. - Michael
Michael Halvey
"Strive for Progress, not Perfection."
-
Hi @MHalvey
You're making significant progress — thanks for sharing the details and screenshots!
1. Why Everything Is Going into One Excel Row
It appears that the entire JSON response is being inserted into a single cell in Excel. This typically occurs when the flow is not looping correctly over the individual user entries. Make sure your Apply to each is looping over theresult
array from the parsed JSON.For example:
body('Parse_JSON')?['result']
But be sure to use the actual name of your Parse JSON step. If your step is called
Parse_JSON_2
, adjust accordingly. You can find the exact name by opening the expression editor and selecting it from Dynamic content.To confirm parsing worked, I recommend adding Compose actions or initializing variables like
email
,accessLevel
, etc. — this helps you see if the JSON data is being read correctly before writing to Excel.2. One Row Per Shared User
Once your loop is targeting the correct array, each iteration should write a single row into your Excel table with values like email and access level. Ensure your Excel file contains a properly formatted table with named columns.3. About the Outer Apply to each Loop
From your flow image, it looks like there's an outer loop. That's only needed if you're looping through multiple workspace IDs from an array. If you're just checking one workspace, you can remove this outer loop — it's not necessary.4. When Power Automate Starts to Struggle
Your logic is solid! Power Automate is very capable, but can take time to configure exactly right. For simple use cases, it's great — but if you're planning a full company-wide audit across workspaces, I'd lean toward a custom solution with Python, cloud functions, and a database. That gives you more control and scalability.Lastly, I guess walking through Power Automate step-by-step is a bit beyond the scope of this community, but you're on the right track. Feel free to keep asking design-level questions here!
Categories
- All Categories
- 14 Welcome to the Community
- Customer Resources
- 68K Get Help
- 474 Global Discussions
- 209 Use Cases
- 517 Announcements
- 5.6K Ideas & Feature Requests
- 87 Brandfolder
- 157 Just for fun
- 85 Community Job Board
- 521 Show & Tell
- 36 Member Spotlight
- 3 SmartStories
- 309 Events
- 37 Webinars
- 7.3K Forum Archives