# Managing billing
Source: https://help.gowindmill.com/account-admin/managing-billing
Access your billing portal, download past invoices, and review your seat usage over time from the Windmill billing settings.
The billing page is where Admins, HR Admins, and Integration Managers manage payment details, view invoices, and track seat usage over time. See [Permissions and access](/permissions-and-access) for details on who has access.
To open it, head to [Settings → Billing](https://app.gowindmill.com/COMPANY/config/billing).
## Manage billing in Stripe
Windmill uses Stripe to handle payments. Click **Billing portal** in the **Manage billing** card to open the Stripe-hosted customer portal in a new tab.
From the billing portal, you can:
* Update your default payment method
* Edit your billing address, business name, and tax ID
* Download tax receipts
* Cancel your subscription
Changes you make in Stripe sync back to Windmill automatically. You don't need to notify us when you update your card or billing details.
### Subscription alerts
If your subscription needs attention — for example, a failed payment or an upcoming cancellation — Windmill shows a banner at the top of the billing page with a direct link to the billing portal. Resolve issues there to avoid any interruption in service.
## Invoices
The **Invoices** card lists every invoice Windmill has issued to your account, including the date, invoice number, amount, status, and a short description.
Use the date range picker in the top right to filter to **last 7 days**, **last 30 days**, **last 90 days**, **last year**, or a custom range.
For each invoice, you can:
* Click the invoice number to open the hosted Stripe invoice in a new tab
* Click the download icon to download the invoice PDF
Invoice statuses include:
* **Paid** — payment succeeded
* **Open** — invoice issued but not yet paid
* **Void** or **Uncollectible** — invoice was canceled or written off
## Members over time
The **Members over time** chart tracks your provisioned seat count over the last 90 days. In the billing UI, an active member is a provisioned member who has not been archived. It does not mean someone who recently logged in or used Windmill.
Toggle between **Daily**, **Weekly**, and **Monthly** views using the buttons in the top right.
Click any point on the chart to open a dialog listing the provisioned, unarchived members included in the seat count on that date, including each person's name, username, and the date they were added to Windmill.
For more on how seats are counted and billed, see [Pricing](/getting-started/pricing).
## FAQs
Admins, HR Admins, and Integration Managers can view and manage billing settings. If **Billing** does not appear in your settings, ask a member with one of these roles or contact [support@gowindmill.com](mailto:support@gowindmill.com).
Click **Billing portal** on the billing page and update your payment method directly in Stripe. The change applies to your next invoice automatically.
Open the billing portal and cancel from there. Your account stays active through the end of the current billing period. We're sorry to see you go — if there's anything we can do to help, reach out to [support@gowindmill.com](mailto:support@gowindmill.com) first.
Your recurring invoice is based on the provisioned seat count at the start of the billing period. Seats added mid-cycle generate a separate prorated charge after the next nightly billing sync. Archiving members does not generate a mid-cycle refund; the lower seat count applies to your next recurring invoice. See [Pricing](/getting-started/pricing) for details.
Yes. Click the invoice number in the Invoices card to open the hosted Stripe invoice, or use the download icon to grab the PDF.
# Prepare for a difficult performance conversation
Source: https://help.gowindmill.com/best-practices/skills/difficult-performance-conversation
Build a clear and fact-based plan for a sensitive manager conversation.
Use this skill to help a manager prepare for a conversation about a performance concern. The skill separates facts from assumptions and keeps the discussion focused on clear next steps.
## Skill instructions
```markdown theme={null}
# Job
Help a manager prepare for a difficult performance conversation.
## Inputs
Ask for the employee, the concern, and the result that the manager wants. Ask for the meeting date if it is relevant.
## Evidence
Review information that the manager can see, such as feedback, goals, reviews, and shared 1:1 notes. Use company policies or feedback methods when they are available.
Separate confirmed facts from manager observations. Identify missing evidence.
## Output
Create a short conversation plan with:
- Confirmed facts and examples
- A clear opening statement
- Questions for the employee
- Expected changes and support
- Follow-up actions and dates
Use direct and respectful language.
## Limits
Do not diagnose the employee or guess their intent. Do not make a termination, promotion, rating, or performance improvement plan decision. Tell the manager to contact HR when policy or legal review is necessary.
```
## Use the skill
### Example request
"Use the difficult performance conversation skill to help me discuss missed deadlines with Jordan."
# Create an employee growth plan
Source: https://help.gowindmill.com/best-practices/skills/employee-growth-plan
Create practical development goals from feedback, reviews, and role expectations.
Use this skill to create a focused development plan for an employee. The plan connects available evidence to practical actions and manager support.
## Skill instructions
```markdown theme={null}
# Job
Create a practical employee growth plan.
## Inputs
Ask for the employee, the plan period, and the employee's career goal. The career goal is optional. Resolve the employee before you continue.
## Evidence
Review feedback, goals, reviews, recent work, and shared 1:1 notes that the user can see. Use role or level expectations when they are available.
## Output
Create a concise plan with:
- Two or three strengths to continue
- One or two development priorities
- A goal for each priority
- Actions, measures, and target dates
- Support from the manager or company
- A check-in schedule
Connect each priority to evidence. Mark assumptions and missing information.
## Limits
Do not promise a promotion, pay change, or role change. Do not add weaknesses that the evidence does not support. Do not change employee goals or records unless the user asks for that action separately.
```
## Use the skill
### Example request
"Use the employee growth plan skill to create a six-month plan for Jordan."
# Skill library
Source: https://help.gowindmill.com/best-practices/skills/index
Copy and adapt sample skills for common HR and manager tasks.
Use these sample skills to give Windy consistent instructions for common people-management tasks. You can copy each skill as written or adapt it to your company process.
## Add a sample skill
Open one of the sample skills below and copy its instructions.
Open [Settings > Skills](https://app.gowindmill.com/COMPANY/config/skills) and select **Create Skill**.
Add a clear name, paste the instructions, and select **Publish**. Share the skill with the people or groups that need it.
## Sample skills
Prepare a brief for a manager who has a new direct report.
Build a fact-based plan for a sensitive conversation.
Turn rough notes into clear and useful feedback.
Convert survey findings into clear next steps.
Create practical development goals from employee evidence.
## Use skills safely
### Review each result
Review each result before you use it in an employee process. Windy must use available evidence and must identify missing information. Windy must not make employment decisions for you.
For more information about creating and sharing skills, see [Skills](/features/skills).
# Catch up on a new direct report
Source: https://help.gowindmill.com/best-practices/skills/new-manager-catch-up
Prepare a grounded brief for a manager who has a new direct report.
Use this skill when a manager takes responsibility for a new direct report. It gives the manager a concise view of recent work, feedback, and open items.
## Skill instructions
```markdown theme={null}
# Job
Prepare a catch-up brief for a manager who has a new direct report.
## Inputs
Ask who started reporting to the manager. Also ask if there is an important issue to check. The second answer is optional. Resolve each employee before you continue.
## Evidence
Review the last three to six months of information that the manager can see:
- Recent work from connected tools
- Feedback given and received
- Current and recent performance reviews
- Shared 1:1 notes and open actions
Treat information from the manager as a lead. Verify it when possible.
## Output
Create one brief for each employee. Include:
- Recent work
- Important feedback
- Review status
- Open actions and decisions
Keep the brief concise. Cite each source.
## Limits
Do not show restricted information. Do not make claims that the evidence does not support. Do not change reviews, 1:1s, or employee records.
```
## Use the skill
### Example request
"Use the new direct report skill to help me prepare for my first 1:1 with Jordan."
# Turn Pulse results into an action plan
Source: https://help.gowindmill.com/best-practices/skills/pulse-action-plan
Summarize Pulse results and create practical follow-up actions.
Use this skill after a Pulse closes. It helps People teams explain the results and select clear follow-up actions.
## Skill instructions
```markdown theme={null}
# Job
Turn Pulse results into a clear action plan.
## Inputs
Ask which Pulse to review, why it was sent, and who will receive the final summary. Resolve the Pulse before you continue.
## Evidence
Review the questions, response rate, scores, written responses, and available comparison data. Note if the Pulse is anonymous. Use only permitted group data.
## Output
Create a concise report with:
- Response rate and important limits
- Main strengths and concerns
- Repeated themes from written responses
- Three to five actions with an owner and target date
- A short employee update
Separate direct results from your interpretation.
## Limits
Do not identify an anonymous respondent. Do not guess who wrote a response. Do not present a small or incomplete sample as a company-wide conclusion. Do not change or publish the Pulse results.
```
## Use the skill
### Example request
"Use the Pulse action plan skill to review our quarterly engagement Pulse."
# Write useful employee feedback
Source: https://help.gowindmill.com/best-practices/skills/useful-employee-feedback
Turn rough notes into specific, respectful, and useful employee feedback.
Use this skill to turn rough observations into feedback that an employee can understand and act on.
## Skill instructions
```markdown theme={null}
# Job
Turn rough notes into clear and useful employee feedback.
## Inputs
Ask who will receive the feedback, what happened, and whether the feedback is private or public. Ask what the writer wants the employee to understand or do next.
## Method
Use the company feedback method when one is available. Otherwise, organize the feedback as:
- Situation: when and where it happened
- Behavior: what the person did
- Effect: what changed because of it
- Next step: what to continue or change
## Output
Write one concise feedback message. Keep the writer's meaning and tone. If an important fact is missing, ask for it before you finish.
## Limits
Do not add facts, motives, or personality judgments. Do not use protected personal information. Do not change constructive feedback into praise or make praise sound like a performance concern.
```
## Use the skill
### Example request
"Use the employee feedback skill to improve these notes before I send them to Jordan."
# Company Info
Source: https://help.gowindmill.com/company-settings/company-info
Set your organization's name, description, and logo in Windmill so Windy has accurate, up-to-date details about your company across every workflow.
Company Info is where your organization's identity lives in Windmill: your **company name**, a short **description** of what your company does, and your **logo**. Windy uses your company name and description as baseline context so its responses refer to your company accurately.
Your company name and description give Windy the basic facts about your organization. They show up wherever Windy needs to refer to your company by name or explain what it does.
## Setting up your company info
Go to [Settings → Company info](https://app.gowindmill.com/COMPANY/config/company-info) in the Windmill Dashboard.
Enter your **company name**, then click **Save Changes**.
Hover over the logo and click **Edit logo**. Upload a PNG, JPG, or WebP file (up to 5 MB), then crop it. The logo saves automatically.
Under **Company profile**, click **Edit description**. Write a short summary of what your company does, then click **Save**.
Keep the description concise and factual. A sentence or two about what your company does and who it serves is enough for Windy to work with.
## Where company info is used
Your company name and description provide baseline context for Windy across Windmill. They help Windy refer to your organization accurately when it answers questions, supports 1:1s, and assists with reviews. Your logo identifies your organization in the Windmill Dashboard.
## FAQs
On **Settings → Company info**, click **Edit description** under **Company profile**, make your changes, and click **Save**. Your updated description takes effect throughout Windmill.
Only **Admins** and **HR Admins** can manage company info, along with [Company values](/company-settings/company-values) and [Company Knowledge](/company-settings/company-knowledge). This keeps your organization's core identity consistent.
Your company name, description, and logo now live on their own **Company info** page (**Settings → Company info**). [Company Knowledge](/company-settings/company-knowledge) is now a document library for the reference material you want Windy to draw on, and your [Company values](/company-settings/company-values) live on their own page too.
# Adding knowledge
Source: https://help.gowindmill.com/company-settings/company-knowledge/adding-knowledge
Create, upload, or link documents for Windy to use.
Write a document in Windmill, upload a file you already have, or link one from Google Drive or Notion.
## Creating a document
Go to [Settings → Knowledge](https://app.gowindmill.com/COMPANY/config/knowledge).
Click **Add knowledge**, then **Create document**.
Enter a **Title** and a **When to use this** note, and choose the **Location**. Then click **Create document**.
The document opens in the editor. Write the body in **Content**.
## Uploading files
Click **Add knowledge**, then **Upload document**, or drag files onto the library. Windmill converts each file into a knowledge document.
You can upload Word, Excel, PowerPoint, PDF, CSV, Markdown, and text files.
## Linking Google Drive and Notion documents
Link a document to keep it in Google Drive or Notion instead of copying it. Windy always uses the latest version. Click **Add knowledge**, then **Link a document**. See [Linked documents](/company-settings/company-knowledge/linked-documents).
A linked document gets the access of the Windmill folder it's in, not its sharing in Google Drive or Notion. Anyone who can see the folder can read it, even if they can't open the original. See [Who can see a linked document](/company-settings/company-knowledge/linked-documents#who-can-see-a-linked-document).
## The document editor
Open any document to edit it. The editor has:
* **Breadcrumbs** that show the document's folder
* The **Title**
* The **When to use** note
* The **Content**, which several people can edit at once
Changes save automatically, and an indicator shows when they're saved.
## FAQs
Upload it. See [Uploading files](#uploading-files).
You can also attach the file in Slack or **Ask Windy** and ask Windy to add it:
@Windy, add this file to Company Knowledge.
Organize it **by level**. Spreadsheets and pasted tables usually lose the structure Windy needs to compare expectations across levels.
A structure that works well:
* A heading for the framework, like `Engineering Competency Framework`
* A section for each level, like `L1 - Associate` through `L10 - Fellow`
* Under each level, the expectations for each competency, like *Technical Skills* or *Communication*
Tips:
* If the framework is a spreadsheet, upload it, then reorganize it by level.
* Write expectations that are specific and observable, so Windy can use them in review follow-ups and suggestions.
* To use levels as explicit criteria in a cycle, reference the framework in your [review](/features/performance-reviews/writing-a-review) questions.
# Company Knowledge
Source: https://help.gowindmill.com/company-settings/company-knowledge/index
Give Windy your company's policies, playbooks, and frameworks to work from.
Company Knowledge is a library of documents Windy uses as context, like leveling frameworks, policies, and playbooks. With it, Windy's answers reflect how your company actually works.
## Overview
The library lives at [Settings → Knowledge](https://app.gowindmill.com/COMPANY/config/knowledge). You organize documents into folders and choose who can see each top-level folder.
Each document has three parts:
* **Title**: what the document is, like *Engineering Leveling Framework*
* **When to use**: a short note that tells Windy when the document is relevant
* **Content**: the body of the document
## Where Windy uses knowledge
Windy draws on knowledge when it answers questions, prepares 1:1s, and helps with reviews. In performance reviews, Windy can reference it in self, peer, and upward review chats, and use it to frame suggestions in manager reviews.
Windy always knows each document's title and **When to use** note. To make Windy read a document in full, mention it in a chat in the Windmill Dashboard. See [Reference people, Pulses, and documents](/windy/talking-to-windy#reference-people-pulses-and-documents).
## The knowledge library
The library shows documents and folders in a table:
* **File**: the document or folder name
* **Type**: *Folder* or *Document*
* **Access**: who can see it. See [Sharing and access](/company-settings/company-knowledge/organizing-and-sharing#sharing-and-access).
* **Usage (5w)**: how often Windy used the document each week, over the last five weeks
* **Last updated**: when it last changed
Use **search** to filter by title. Folders expand in place.
## Ways to add knowledge
* **Create a document** in the Windmill editor. See [Adding knowledge](/company-settings/company-knowledge/adding-knowledge#creating-a-document).
* **Upload a file**, like a Word document, spreadsheet, or PDF. See [Uploading files](/company-settings/company-knowledge/adding-knowledge#uploading-files).
* **Link a Google Drive or Notion document.** It stays in the source, and Windy uses the latest version. See [Linked documents](/company-settings/company-knowledge/linked-documents).
## Usage
The **Usage** tab shows when and where Windy used your knowledge. You can switch between **7 days** and **30 days**, filter by **Feature**, and search by title.
You only see usage for documents you can edit. Entries show which document Windy used, when, and where. They never show who asked or what content Windy used.
## Who can edit Company Knowledge
Admins and HR Admins can add, edit, and organize knowledge and see the Usage tab. Everyone else benefits from the knowledge through Windy but can't change it.
## FAQs
Windy uses a leveling framework, rubric, or competency matrix as general context. It doesn't add the framework as explicit criteria to 1:1 prep or the review packet.
Where it shows up:
* **Self reviews**: Windy asks follow-up questions that help employees describe their impact against their level.
* **Manager reviews**: Windy frames suggested observations and draft answers against the employee's level.
* **1:1s**: The framework can inform [Catch Me Up](/features/1-on-1s/catch-me-up) summaries, suggested topics, and Windy chats about an employee. Windy doesn't add it to the shared agenda or 1:1 templates.
To make level expectations explicit, reference the framework where you want it:
* **Reviews**: link or quote it in your [review](/features/performance-reviews/writing-a-review) questions.
* **1:1s**: add a career growth section to your [1:1 templates](/features/1-on-1s/templates).
A specific **When to use** note helps Windy reach for it, like *"Reference when discussing an engineer's level, scope, or promotion readiness."*
The **When to use** note tells Windy *when* a document is relevant. The **Content** is what Windy reads once it decides to use the document. If the note is vague or empty, Windy can miss a document that would help, so keep it specific.
Check two things:
* **The When to use note.** If it's missing or vague, Windy may not recognize when the document is relevant.
* **The folder's access.** Windy only uses a document for people who can see it. A folder only Admins and HR Admins can see won't help anyone else. See [Sharing and access](/company-settings/company-knowledge/organizing-and-sharing#sharing-and-access).
The **Usage** tab shows whether Windy is using the document.
# Linked documents
Source: https://help.gowindmill.com/company-settings/company-knowledge/linked-documents
Add Google Drive and Notion documents to Company Knowledge without copying them.
Link a Google Drive or Notion document to add it to [Company Knowledge](/company-settings/company-knowledge) without copying it. Your team keeps editing it in the source, and Windy uses the latest version.
Linking works best for documents that change often, like a handbook in Google Docs or a team wiki in Notion.
Linked documents are rolling out gradually. If you don't see **Link a document**, contact your Windmill team.
## How linked documents work
* **The source stays the original.** You edit the document in Google Drive or Notion. Windmill reads it when needed and never changes it.
* **Windy uses it like any other knowledge.** Windy sees its title and **When to use** note, reads its content, and finds it in search.
* **The Windmill folder decides who can see it.** See [Who can see a linked document](#who-can-see-a-linked-document).
## Before you start
You need:
* **A connected integration**: [Google Workspace](/integrations/google-workspace) or [Notion](/integrations/notion)
* **Admin or HR Admin access**
* **Edit access to the folder** you're linking into
You can link these documents:
| Source | Documents |
| - | - |
| **Google Drive** | Google Docs, Sheets, Slides, and Drawings, plus PDF, text, Markdown, and CSV files |
| **Notion** | Pages |
## Linking a document
Go to [Settings → Knowledge](https://app.gowindmill.com/COMPANY/config/knowledge).
Click **Add knowledge**, then **Link a document**, then **Google Drive** or **Notion**.
Search for it and select it to see a preview. If it's already linked, you'll see where. Click **Next**.
Add a **When to use this** note and choose the **Location**. Check **Sharing** to see who will be able to read it, then click **Link**.
The document shows **Processing** for a few minutes while Windmill prepares it for Windy.
### Which integration Windmill uses
* **Your company's account connection**, if it can open the document
* **Otherwise, your personal connection**
* **Never another member's personal connection**
The document's details show who linked it and through which connection.
## Who can see a linked document
A linked document gets the access of the Windmill folder it's in, not its sharing in Google Drive or Notion. Anyone who can see the folder can read it, even if they can't open the original. This includes documents linked through a personal connection.
Linking never changes sharing in Google Drive or Notion. To limit who can read a linked document in Windmill, put it in a folder with narrower access. See [Sharing and access](/company-settings/company-knowledge/organizing-and-sharing#sharing-and-access).
## How changes reach Windmill
Windmill picks up edits automatically:
| Source | Content and title | Windy search |
| - | - | - |
| **Google Drive** | Within an hour | Within two hours |
| **Notion** | Within a few minutes | Within an hour |
The document's details show when it was last edited.
To rename a linked document, rename it in the source. The new title follows the same timing.
## Document status
When Windmill can't read a linked document, the library shows a status and Windy stops using the document until it's fixed.
| Status | Meaning | Fix |
| - | - | - |
| **Processing** | Windmill is preparing the document. | None needed. It takes a few minutes. |
| **Reconnect required** | The connection's sign-in expired. | Reconnect the integration, or click **Relink**. |
| **Can't open in Google Drive** or **Notion** | The connection lost access. | Restore access in the source, or click **Relink**. Once access is back, it works again within an hour. |
| **Deleted in Google Drive** or **Notion** | The original was deleted. | Click **Remove**. |
If you can't edit the folder, ask someone who can.
## Managing linked documents
* **Edit it** in the source. Use **Open in Google Drive** or **Open in Notion**.
* **Change the When to use note** in Windmill at any time.
* **Move it** to another folder. Its access changes to match.
* **Remove it** to take it out of Windmill for everyone. Windy stops using it, and the original stays in the source.
## FAQs
Windmill reads the content from the source when needed. It keeps a cache of the content for up to 48 hours, and a search index of the text so Windy can find it. The index updates when the document changes, and Windmill deletes it when you remove the document.
No. Linked documents are read-only in Windmill. Edit them in Google Drive or Notion.
No. Windmill checks that the connection can open the document when you link it. After that, the Windmill folder decides who can read it.
Edits take up to an hour to arrive from Google Drive, and a few minutes from Notion. If it's been longer, check the document for a status like **Reconnect required**. See [Document status](#document-status).
Documents linked through an account connection keep working. A document linked through that person's personal connection stops working when the connection loses access. Click **Relink** to read it through your account or an account connection.
Windmill only lists supported documents that the integration has synced and that you can open. Check the document type, and check that the integration can access it. See [Limiting Drive access](/integrations/google-workspace#limiting-drive-access) or [How Page Access Works](/integrations/notion#how-page-access-works).
# Organizing and sharing
Source: https://help.gowindmill.com/company-settings/company-knowledge/organizing-and-sharing
Group knowledge into folders and choose who can see it.
Use folders to organize your library. Share a top-level folder to choose who can see what's inside.
## Organizing knowledge
* **Create folder**: click **Create folder** in the toolbar.
* **Move**: drag a document into a folder, or use **Move to…**.
* **Rename**: use **Rename**. Linked documents take their title from the source, so rename them there.
* **Delete**: use **Delete**. For a linked document, use **Remove**. The original stays in the source.
You can rename and delete folders, but you can't move a folder into another folder. To reorganize, move the documents instead.
## Sharing and access
You set access on **top-level folders**. Everything inside a top-level folder, including its subfolders and documents, gets the same access. You can't share a single document or subfolder.
To change who can see a folder, use **Share** on the top-level folder.
The **Access** column shows who can see each item:
* **Everyone**: everyone at your company
* A summary like **Managers · 2 groups · 1 person**: specific roles, groups, people, or a manager's reporting line
* **Admins and HR Admins**: no one else
Linked documents work the same way. They get the access of their folder, not their sharing in Google Drive or Notion. See [Who can see a linked document](/company-settings/company-knowledge/linked-documents#who-can-see-a-linked-document).
# Company Values
Source: https://help.gowindmill.com/company-settings/company-values
Define your organization's core values in Windmill so Windy can ground shoutouts and performance reviews in the principles that matter most to your company.
Company Values are the core principles that guide your organization, such as *Customer Focus*, *Innovation*, or *Collaboration*. Windmill uses your values to keep shoutouts and performance reviews grounded in the culture you're building.
Windy uses your values in performance reviews, and Windmill tags shoutouts with the values they reflect.
## Setting up your company values
Go to [Settings → Company values](https://app.gowindmill.com/COMPANY/config/company-values) in the Windmill Dashboard.
If you haven't set any values yet, click **Set company values** to open the editor.
Enter the **name** of the value (e.g., *Customer First*) and a short **description** of what living it looks like (e.g., *We prioritize responsiveness, reliability, and tailored service for every client, no matter the size*).
Click **Add Value** for each additional core value. To remove a value, click **Remove Value**.
Click **Save company values** to apply your changes. Each value must have a unique name.
Limit yourself to 3–5 core values. Too many values dilute focus and make them harder to remember and reinforce.
## Where values are used
Your company values appear in these parts of Windmill:
* **Performance reviews**: Windy uses your values as context in self, upward, and manager review chats, and in manager review suggestions and drafts
* **Shoutouts**: When a [shoutout](/features/shoutouts) is posted to Slack, Windmill tags it with the values it reflects, such as *#Innovation*
This keeps reviews and recognition aligned with what matters most to your organization.
## Best practices
**Keep values short and clear**
Use action-oriented language that's easy to understand and remember.
**Make expectations tangible**
Write descriptions that show what living this value looks like in practice.
**Review regularly**
Periodically revisit your values to make sure they still reflect your team's evolving culture.
## FAQs
Yes. You can edit, add, or remove values at any time from **Settings → Company values**. Changes are reflected throughout Windmill wherever values are used.
We recommend 3–5 core values. This keeps them memorable and actionable. Too many values dilute their impact and make them harder to reinforce consistently.
Only **Admins** and **HR Admins** can manage company values, along with [Company info](/company-settings/company-info) and [Company Knowledge](/company-settings/company-knowledge). This keeps your organization's core identity consistent.
Company values now live on their own **Company values** page (**Settings → Company values**). [Company Knowledge](/company-settings/company-knowledge) is now a document library for the reference material you want Windy to draw on, while your name, description, and logo live on the **Company info** page.
# Feedback settings
Source: https://help.gowindmill.com/company-settings/feedback
Configure the feedback audiences, default audience, and edit time limit for your company.
Admins and HR Admins can configure company Feedback settings. The settings described here are available when the Feedback page is enabled for your company.
## Open Feedback settings
Open [**Settings > Feedback**](https://app.gowindmill.com/COMPANY/config/feedback/settings). You can also open **Feedback actions > Configure feedback settings** from the Feedback page.
If your company does not have the Feedback page enabled, the settings page shows the earlier Feedback controls.
## Configure audience options
Under **Visibility options**, enable the audiences that members can select when they give feedback. At least one option must remain enabled.
Select an enabled audience under **Default option**. If you disable the current default, Windmill selects another enabled option.
Changes save automatically. Check the success message after each change.
| Option | Audience |
| - | - |
| **Recipient only** | The person the feedback is about. |
| **Manager only** | The person's direct manager. |
| **Manager hierarchy** | The person's direct and indirect managers. |
| **Recipient and managers** | The person and their direct and indirect managers. |
| **Public** | Everyone in the company. |
The author retains access. Admins and HR Admins can read feedback about other people. If a recipient has no manager, they can read **Manager only** and **Manager hierarchy** feedback about themselves. See [Feedback visibility](/features/continuous-feedback#feedback-visibility) for the complete access rules.
The **Leave feedback** form starts with the default option. Members can change it to another allowed option. The **Request feedback** form uses the default without an audience control. The person who responds can select an allowed audience.
When several options are available, Windy asks the author to select one before final confirmation. When only one option is available, Windy uses that option.
## Configure the edit time limit
Under **Editing > Edit window**, select one of these values:
* **No editing**
* **1 hour**
* **24 hours**
* **7 days**
Changes save automatically.
The Feedback page does not currently provide edit or delete controls. The current Windy and MCP edit and delete tools use a limit of one week, regardless of this setting. Do not use this setting to enforce a shorter limit through those tools.
Feedback linked to a delivered Shoutout cannot be edited or deleted through those tools.
## Introduce the settings to your team
Tell members which audiences are available and what the default audience permits. Explain that creating a Shoutout makes linked feedback public.
Use [Introduce Feedback to Your Team](/giving-and-receiving-feedback-on-windmill) for team communication. Use [Feedback](/features/continuous-feedback) for instructions on giving and requesting feedback.
# Connected Data
Source: https://help.gowindmill.com/data/connected-data
Overview of the data Windmill syncs from your integrations — meetings, messages, code, tasks, and HRIS records — and how Windy uses it across the platform.
Windmill connects to your business applications through their APIs. This data powers 1:1s, Performance Reviews, Feedback, and other features that help you understand team contributions and collaboration patterns.
## Overview
The more systems you connect to Windmill, the better Windy becomes at identifying collaboration patterns and generating insights. Each integration provides different types of data that contribute to a comprehensive view of each team member.
Windmill only collects data from systems you explicitly authorize. Every member can view connected integrations in **Settings > Integrations**. Admins, HR Admins, and Integration Managers can connect and manage company integrations.
## Types of data collected
Windmill integrates with different categories of tools to build a comprehensive picture of overall performance:
**Development and engineering tools** Track code contributions, pull requests, issue resolution, and technical project work. Examples include GitHub, Jira, and Linear.
**Collaboration and productivity tools** Capture document creation, file sharing, meeting participation. Examples include Google Workspace, Slack, Notion, and Figma.
**Go-To-Market tools** Monitor customer interactions, support tickets, sales activities, and client communications. Examples include Salesforce, HubSpot, Zendesk, and Front.
**Meeting and communication platforms** Sync meeting transcripts, attendance, and scheduled calls. Examples include Zoom, Google Meet, Gong, Granola, and Roam. See [Meetings and Recordings](/data/meetings-and-recordings) for details.
**HR systems** Pull employee roster, org chart structure, and reporting relationships. See [Employee Information](/org-chart/employee-information) for what's collected.
## How data is used
All the data Windmill collects serves specific purposes:
**1:1s** Windy uses connected data to build [Catch Me Up](/features/1-on-1s/catch-me-up) summaries for 1:1s. A summary can include recent work, meetings, and other information you can see.
**Performance Reviews** Managers see aggregated data about performance, contributions, and collaboration patterns which help improve performance reviews.
Connect more integrations to give Windmill better context about team collaboration. This improves the quality of all features.
## Connected-content permissions
When connected content has source-level access controls, Windmill keeps that permission context. For example:
* If you can't access a Google Doc, you can't see it in Windmill
* Transcript access is based on meeting participants and integration-specific rules. See [Meetings and Recordings](/data/meetings-and-recordings#access-and-permissions)
* If you don't have access to a Slack channel, you can't see messages from that channel
Some integrations provide company-level activity or usage data instead of user-scoped content. Windmill applies the permissions for the applicable feature to this data. See [Permissions and Access](/permissions-and-access#connected-system-permissions).
## Managing connected data
You can view all your connected integrations in **Settings > Integrations**. From there, you can:
* See what data each integration provides
* Review which systems are currently connected
* Disconnect integrations you no longer want to use
* Add new integrations to expand Windmill's visibility
For detailed setup instructions for each integration, see our [Integrations documentation](/integrations/integrations).
## What Windmill does NOT collect
Windmill is selective about what data we sync. We never collect:
* Payroll information or salary data
* Social Security Numbers, addresses, or sensitive PII
* Employment contracts or benefits information
* Private messages in channels where Windy isn't present
For more details about privacy and what specific data we collect from HRIS systems, see [Employee Information](/org-chart/employee-information).
## Data sync timing
Different types of data sync on different schedules. For complete details about sync frequency and data freshness, see [Data Sync and Freshness](/data/data-sync-and-freshness).
# Data Sync and Freshness
Source: https://help.gowindmill.com/data/data-sync-and-freshness
How often Windmill refreshes data from connected integrations, sync frequency by source, and how soon new activity becomes available to Windy and reports.
Windmill updates data in the background to keep team information current. Different systems sync data on different schedules based on their integration type and API limitations.
## Understanding sync schedules
### Sync frequency by type
**Real-time (almost immediately available in the platform)**
* Slack messages and interactions with Windy
* New feedback submissions directly to Windy
**Scheduled each hour**
* Meeting transcripts (Zoom, Google Meet, Gong, Granola, Roam)
* Development tools (GitHub, Jira, Linear)
* Collaboration tools (Google Workspace activity, Figma)
* Customer tools (Salesforce, HubSpot, Attio, Pipedrive, Zendesk)
* Profile pictures from Slack
**Up to a day**
* HRIS data (employee roster, org chart updates, reporting structure)
Windmill syncs data in the background automatically. You don't need to manually trigger syncs or refresh pages to see new data.
### Data visibility expectations
**Responses to Windy** When team members respond to Windy in Slack, those responses populate in the Windmill Dashboard within an hour of being sent.
**Integration activity** Most integration activity (commits, issues, documents, meetings) appears in Windmill within one to two hours of occurring in the source system.
**HRIS updates** Changes to your org chart or employee roster can take up to a day to appear in Windmill.
**Meeting transcripts** Transcripts sync hourly, but there's typically a one-hour delay after a meeting ends before the transcript becomes available in the source system (Zoom, Google Meet, etc.). Factor in both delays:
* Meeting ends at 2:00 PM
* Transcript available in Zoom/Meet by 3:00 PM
* Transcript syncs to Windmill by 4:00 PM
### What affects sync timing
**API rate limits** Some integrations have rate limits that affect how quickly we can fetch data. We optimize sync schedules to stay within these limits while providing timely updates.
**Data volume** Organizations with high activity volumes (hundreds of commits per day, thousands of messages) may experience slightly longer sync times during peak periods.
**Integration health** If an integration loses its connection or authentication expires, data stops syncing until the connection is restored. Check **Settings > Integrations** to verify all integrations are healthy.
### Checking data freshness
**Integration status** **Settings > Integrations** shows each integration's status. Check that the status is healthy to verify data is flowing as expected.
**Activity timestamps** In citations, each activity shows when it occurred in the source system (not when it synced to Windmill). This gives you an accurate picture of when work happened.
## Troubleshooting sync issues
### Delayed or missing data
If data isn't appearing in Windmill as expected:
**1. Check integration status** Go to **Settings > Integrations** and verify the integration is connected and healthy. Look for error messages or authentication issues.
**2. Verify permissions** Make sure Windmill has the necessary permissions in the source system. For example, GitHub needs read access to repositories, Figma needs access to a TeamID, and Slack needs access to channels.
**3. Confirm data exists in the source system** Check that the data appears in the source tool (GitHub, Jira, Slack, etc.) before expecting it in Windmill. If it's not in the source system, Windmill can't sync it.
**4. Wait for the next sync** If data is recent, wait for the next hourly sync. Most activity appears within one to two hours.
**5. Contact support** If data still isn't appearing after checking these items, reach out to [support@gowindmill.com](mailto:support@gowindmill.com) with details about what's missing.
### Sync reliability
Windmill monitors integration health and automatically retries failed syncs. If a sync fails due to a temporary issue (like API downtime), Windmill will retry on the next scheduled sync.
**What we monitor:**
* Integration health for each integration
* Sync success rates and failures
* API errors and rate limits
* Data volume and processing times
If Windmill detects persistent issues with an integration, our team is automatically notified and will investigate.
### Manual sync requests
For integrations that support manual sync, go to **Settings > Integrations**, open the integration's three-dot menu, and select **Incremental Sync** or **Full Sync**. **Full Sync** lets you choose a date range. For HRIS integrations, source changes may still take up to a day to appear.
If you need historical data synced for a specific use case, reach out to [support@gowindmill.com](mailto:support@gowindmill.com) and we can assist.
## Historical data
**Extended historical data** If you'd like historical data from any integration, let us know during onboarding or reach out via your shared support Slack channel. Depending on the system, we can configure longer lookback periods for specific integrations.
The more historical data Windmill has, the better Windy becomes at understanding collaboration patterns. If you're setting up a new integration, consider requesting extended historical data.
## FAQs
Sync timing varies by integration. HRIS integrations, including HiBob, can
take up to a day to reflect changes. For the current timing of a specific
integration, check that integration's help article or contact support.
Sync schedules are configured at the integration level and can't be customized per customer. If you have specific timing requirements, reach out to [support@gowindmill.com](mailto:support@gowindmill.com) to discuss options.
If a source system (like GitHub or Slack) experiences downtime, Windmill will retry syncs when the system comes back online. Historical data won't be lost—Windmill will backfill any missed activity on the next successful sync.
Yes, Windmill syncs data 24/7, including nights and weekends.
# Deals
Source: https://help.gowindmill.com/data/deals
How Windmill syncs deal information from your CRM integrations to surface revenue context, ownership, and pipeline activity in 1:1s and reviews.
Windmill syncs deal information from your connected CRM platforms. This makes it easy to understand sales opportunities, track team contributions to revenue, and reference customer relationships during performance reviews and 1:1s.
## Supported platforms
Windmill currently supports deals from:
* **Attio** - Records from the Deals object
* **HubSpot** - Records from the Deals object
* **Pipedrive** - Records from the Deals object
* **Salesforce** - Records from the Opportunities object (Salesforce calls deals "opportunities")
Deals are synced **hourly** from all platforms. When you connect a CRM integration, Windmill pulls comprehensive deal information including deal details, associated activities, contacts, and team members.
**Initial sync:**
When you first connect a supported CRM integration, Windmill starts a date-range sync for the previous six months. After that, the latest changes are synced each hour.
**What's synced:**
The available data depends on the CRM and its integration settings. Supported data can include:
* Deal details including name, stage, amount, and close date
* Associated activities (meetings, calls, emails, tasks, notes, recordings)
* Contacts from the prospect organization
* Team members involved in the deal
Windmill automatically syncs readable custom deal fields. For Salesforce, this support applies only to fields on the standard **Opportunity** object. The Salesforce integration user must have **Read Access** to each field. [Learn about Salesforce data support](/integrations/salesforce#connected-data).
## Access and permissions
Deal access depends on the CRM.
**How it works:**
* **HubSpot, Pipedrive, and Salesforce:** Windmill copies each deal's permissions from the CRM. Only team members who can access a deal in the CRM can view it in Windmill.
* **Attio:** Every Windmill member who is a user in the connected Attio workspace can view the synced deals.
* Managers with subtree visibility can view deals without being directly involved if they have access to those deals.
**What else syncs:**
Deal records sync with their associated activities, contacts, and team members. HubSpot and Attio also send Windmill change events for other CRM records, such as contacts, companies, notes, and tasks. Windmill stores these events as activity for the person who made the change.
## Sync timing
All deal data syncs **hourly** from connected CRM platforms. This means:
* New data appears after a successful sync. Source processing and queue work can add more time.
* The sync happens automatically in the background
* You don't need to manually trigger syncs
## FAQs
Available scope controls depend on the CRM. Some integrations let you limit the authorized workspaces, objects, lists, pipelines, or teams.
The initial sync covers the previous six months. If you need older data, open the integration's three-dot menu in **Settings > Integrations** and select **Full Sync** to choose a date range.
No. Windmill only reads data from your CRM—it never writes back or modifies any information in your CRM systems.
# Meetings and Recordings
Source: https://help.gowindmill.com/data/meetings-and-recordings
How Windmill syncs meeting transcripts, AI summaries, and notes from Zoom, Zoom: My Notes, Google Meet, Gong, Granola, and Roam, and where they appear in Windmill.
Windmill pulls meeting transcripts and available notes or summaries from your connected platforms. Windmill can also generate summaries and action items from a transcript. Each recording attaches to matching 1:1s, feeds performance reviews, and is searchable by Windy.
## Supported platforms
Windmill supports recordings from **Zoom, Zoom: My Notes, Google Meet, Gong, Granola, and Roam**.
* Windmill schedules most sources for an hourly sync. Zoom: My Notes sends new notes to Windmill after Zoom creates them, and Windmill checks recent notes each day. The source must finish processing the transcript first, and queue work can add more time.
* Windmill stores meeting text, including **transcripts**, available notes or summaries, and generated summaries and action items. Audio and video stay on the original platform.
* When you connect a supported source, Windmill starts a date-range sync for the previous six months. For Zoom: My Notes, Windmill finds past meetings from your calendar events and from meetings that your company's Zoom integration synced.
* When a recording's calendar event matches a 1:1 in Windmill, it appears on that 1:1 page automatically.
## Per-platform details
[**Zoom**](/integrations/zoom): Meeting transcripts and cloud-recording transcripts from your company-wide integration, with available summaries. See [Zoom transcripts, recordings, and My Notes](/integrations/zoom-meeting-content).
[**Zoom: My Notes**](/integrations/zoom-my-notes): New notes, summaries, and available transcripts from your personal Zoom account. Only the member who connects the integration can see the synced notes.
[**Google Meet**](/integrations/google-workspace): Transcripts from native recordings or Gemini Notes. **"Also start a transcript"** must be turned on in the meeting for Windmill to receive the transcript.
[**Gong**](/integrations/gong): Transcripts and AI summaries from public Gong calls. Summaries include a short summary, key points, and action items when AI is enabled in Gong. Private calls are never imported.
[**Granola**](/integrations/granola): Notes and transcripts from recordings you can access in Granola. Granola appears as a **linked recording** on the 1:1 page and does not populate the shared agenda. See the [Granola integration](/integrations/granola) for setup and Personal or Workspace API keys.
[**Roam**](/integrations/roam): Meeting and recording data, including available transcripts.
## Access and permissions
Visibility depends on the source. Recording access is based on matched participants and integration-specific rules. Zoom: My Notes content is only visible to the member who connected it. Granola visibility depends on the API key type and recording owner. Gong syncs public calls only.
## Accessing meeting transcripts
* **Within 1:1s** — attached recordings show up on the 1:1 page once available.
* **Through Windy** — ask Windy in Slack about a recorded meeting that is available to you (e.g. "Show me my last meeting with Jordan").
## Where to learn more
* [1:1 Recordings](/features/1-on-1s/recordings)
* [Granola integration](/integrations/granola)
* [Roam integration](/integrations/roam)
* [Gong integration](/integrations/gong)
# Stats
Source: https://help.gowindmill.com/data/stats
Stats available in Windmill for tracking team activity, 1:1 cadence, feedback volume, recognition, pulse responses, and performance review progress.
Stats provide quantitative insights into activity in Windmill and across your integrations.
## Overview
Stats aggregate activity from Windmill and connected integrations.
Each stat is calculated based on data synced from your integrations. Stats are updated regularly as new data flows in from your connected systems.
## Available stats
The stats available to your workspace depend on which integrations you have. Below is a complete reference of all stats organized by category.
### Meetings
Track time spent in different types of meetings from calendar and meeting providers.
| Stat | Description | Unit |
| - | - | - |
| Meeting Time | Total time spent in all meetings | hours |
| Internal Meeting Time | Time spent in meetings where all participants are employees from your organization | hours |
| External Meeting Time | Time spent in meetings with at least one participant outside your organization | hours |
| Virtual Meetings | Time spent in meetings from video conferencing providers (e.g. Zoom, Google Meet) | hours |
| One-Time Meetings | Time spent in non-recurring meetings | hours |
| Recurring Meetings | Time spent in meetings from recurring calendar events | hours |
| Scheduled Meetings | Time spent in meetings that have a corresponding calendar event | hours |
| Unscheduled Meetings | Time spent in meetings from video conferencing providers without a calendar event | hours |
| 1:1 Meetings | Time spent in meetings linked to a 1:1 in Windmill | hours |
### Windmill activity
Track how actively employees engage with Windmill itself, including web logins and Windy chats.
| Stat | Description | Unit |
| - | - | - |
| Windmill Active Days | Days the employee used Windmill or sent a message to Windy. This usage metric does not affect billing. | active days |
| Messages Sent to Windy | Number of user-sent messages to Windy across Slack and in-platform | messages |
### Feedback and engagement
Track feedback given, received, and engagement with Windy.
| Stat | Description | Unit |
| - | - | - |
| Feedback Given | Amount of feedback given to other employees | pieces of feedback |
| Feedback Received | Amount of feedback received from other employees | pieces of feedback |
| Proactive Feedback Given | Number of pieces of feedback submitted from proactive feedback chats | pieces of feedback |
| Feedback Requests Completed | Number of completed requests to give feedback | requests |
| Feedback Requests Received | Number of requests received to give feedback | requests |
| Feedback Requests Expired | Number of feedback requests not completed in time | requests |
| Total Windy Chats | Sum of Windy-initiated and user-initiated chats | chats |
| Windy-Initiated Chats | Number of chat conversations started by Windy | chats |
| User-Initiated Windy Chats | Number of Windy chat conversations started by user | chats |
| User Response Rate to Windy | Percentage of Windy-initiated chats with at least one response | % |
### 1:1s
Track engagement with 1:1 agendas, prep, and Windy's suggested topics.
| Stat | Description | Unit |
| - | - | - |
| 1:1 Agenda Edits | Number of edits made to 1:1 agendas | edits |
| 1:1 Agenda Topics Accepted | Number of Windy-suggested 1:1 agenda topics accepted | topics |
| 1:1 Agenda Topics Dismissed | Number of Windy-suggested 1:1 agenda topics dismissed | topics |
| 1:1 Prep Sessions Responded To | Number of 1:1 prep sessions the employee responded to | sessions |
### Shoutouts
| Stat | Description | Unit |
| - | - | - |
| Shoutouts Sent | Number of shoutouts sent to colleagues | shoutouts |
| Shoutouts Received | Number of shoutouts received | shoutouts |
### Private notes
| Stat | Description | Unit |
| - | - | - |
| Private Notes Created | Number of private notes the employee created | notes |
### Pulse surveys
Track Pulse survey participation and authoring.
| Stat | Description | Unit |
| - | - | - |
| Pulse Survey Responses Submitted | Number of Pulse survey sessions the employee responded to | responses |
| Pulse Surveys Created | Number of Pulse surveys the employee created | surveys |
### Performance reviews
Track performance review activity across cycles.
| Stat | Description | Unit |
| - | - | - |
| Performance Review Drafts Saved | Number of performance review answer draft saves | draft saves |
| Performance Review Answers Submitted | Number of performance review answers submitted | answers |
### AI tools
Track AI tool usage across Claude, Codex, Cursor, and Devin. These stats are available when the corresponding integration is connected.
| Stat | Description | Unit |
| - | - | - |
| AI Active Days | Number of days the employee used at least one connected AI tool | active days |
#### Claude
Requires the [Claude integration](/integrations/claude). Claude usage is reported by Anthropic on a 3-day delay.
| Stat | Description | Unit |
| - | - | - |
| Claude Conversations | Number of distinct conversations started on Claude.ai | conversations |
| Claude Chat Messages | Number of messages sent on Claude.ai | messages |
| Claude Artifacts Created | Number of artifacts created on Claude.ai | artifacts |
| Claude Code Sessions | Number of distinct Claude Code sessions | sessions |
| Claude Code Commits | Number of git commits made via Claude Code | commits |
| Claude Code Pull Requests | Number of pull requests created via Claude Code | PRs |
| Claude Code Lines Added | Lines of code added via Claude Code | lines |
| Claude Code Lines Removed | Lines of code removed via Claude Code | lines |
| Claude Code Edits Accepted | Number of Claude Code AI edits accepted | edits |
| Claude Code Edit Acceptance Rate | Ratio of accepted to suggested Claude Code AI edits | % |
| Claude Skill Usage | Number of Claude skill invocations, broken down by skill | invocations |
| Claude Connector Usage | Number of Claude MCP/connector invocations, broken down by connector | invocations |
| Claude Excel Sessions | Number of distinct Claude Office Agent sessions in Excel | sessions |
| Claude Excel Messages | Number of messages sent in Claude Office Agent for Excel | messages |
| Claude Excel Skills Used | Number of skill invocations in Claude Office Agent for Excel | invocations |
| Claude Excel Connectors Used | Number of connector invocations in Claude Office Agent for Excel | invocations |
| Claude PowerPoint Sessions | Number of distinct Claude Office Agent sessions in PowerPoint | sessions |
| Claude PowerPoint Messages | Number of messages sent in Claude Office Agent for PowerPoint | messages |
| Claude PowerPoint Skills Used | Number of skill invocations in Claude Office Agent for PowerPoint | invocations |
| Claude PowerPoint Connectors Used | Number of connector invocations in Claude Office Agent for PowerPoint | invocations |
| Claude Word Sessions | Number of distinct Claude Office Agent sessions in Word | sessions |
| Claude Word Messages | Number of messages sent in Claude Office Agent for Word | messages |
| Claude Word Skills Used | Number of skill invocations in Claude Office Agent for Word | invocations |
| Claude Word Connectors Used | Number of connector invocations in Claude Office Agent for Word | invocations |
| Claude Cowork Sessions | Number of distinct Claude Cowork sessions | sessions |
| Claude Cowork Messages | Number of messages sent in Claude Cowork | messages |
| Claude Cowork Skills Used | Number of skill invocations in Claude Cowork | invocations |
| Claude Cowork Connectors Used | Number of connector invocations in Claude Cowork | invocations |
#### Codex
Requires the [Codex integration](/integrations/codex). Each Codex stat is broken down by client surface (CLI, IDE, etc.).
| Stat | Description | Unit |
| - | - | - |
| Codex Threads | Number of Codex threads created | threads |
| Codex Turns | Number of Codex turns (messages) | turns |
| Codex Credits | Total Codex credits consumed | credits |
| Codex Input Tokens | Total Codex input tokens (cached + uncached) | tokens |
| Codex Output Tokens | Total Codex output tokens | tokens |
| Codex Total Tokens | Total Codex tokens consumed (input + output) | tokens |
#### Cursor
Requires the [Cursor integration](/integrations/cursor).
| Stat | Description | Unit |
| - | - | - |
| Cursor Messages Sent | Number of messages sent to Cursor AI | messages |
| Cursor Ask Mode Messages | Number of Cursor ask mode messages sent, broken down by model | messages |
| Cursor Plan Messages | Number of Cursor plan mode messages sent, broken down by model | messages |
| Cursor Tab Completions Accepted | Number of Cursor tab suggestions accepted | completions |
| Cursor Agent Edits Accepted | Number of Cursor AI code edits accepted | edits |
| Cursor Agent Lines Added | Lines of code added by Cursor AI | lines |
| Cursor Agent Lines Deleted | Lines of code deleted by Cursor AI | lines |
| Cursor Agent Edit Acceptance Rate | Ratio of accepted to suggested Cursor AI edits | % |
| Cursor Skill Usage | Number of Cursor skill invocations, broken down by skill | invocations |
| Cursor MCP Tool Usage | Number of Cursor MCP tool invocations, broken down by tool | invocations |
#### Devin
Requires the [Devin integration](/integrations/devin). Devin stats are imported per employee and per completed Devin billing day.
| Stat | Description | Unit |
| - | - | - |
| Devin ACUs | Total Agent Compute Units consumed | ACUs |
| Devin ACUs by Product | ACUs consumed, broken down by Devin, Cascade, Terminal, or Review | ACUs |
| Devin Sessions Created | Number of Devin sessions created | sessions |
| Average Devin ACUs per Session | Average ACUs consumed for each session created | ACUs |
| Devin Sessions with Playbook | Number of sessions created with a playbook | sessions |
| Devin Sessions with Search | Number of sessions created with search | sessions |
| Devin Sessions with Merged PRs | Number of sessions that produced a merged pull request | sessions |
| Devin Sessions by Origin | Sessions created, broken down by API, automation, code scan, desktop, Jira, Linear, Slack, Teams, or web app | sessions |
| Devin Sessions by Size | Sessions created, broken down by XS, S, M, L, or XL size | sessions |
| Devin Sessions with Merged PRs by Size | Sessions with merged pull requests, broken down by XS, S, M, L, or XL size | sessions |
| Devin PRs Created | Total pull requests authored by Devin across all states | PRs |
| Devin PRs Opened | Devin-authored pull requests currently open | PRs |
| Devin PRs Merged | Devin-authored pull requests merged | PRs |
| Devin PRs Closed | Devin-authored pull requests closed without merging | PRs |
| Devin PRs Taken Over | Pull requests Devin contributed commits to but didn't create | PRs |
| Devin PRs Taken Over and Opened | Taken-over pull requests currently open | PRs |
| Devin PRs Taken Over and Merged | Taken-over pull requests merged | PRs |
| Devin PRs Taken Over and Closed | Taken-over pull requests closed without merging | PRs |
### Code and development
Track code contributions, pull requests, and reviews from GitHub.
| Stat | Description | Unit |
| - | - | - |
| Commits | Number of commits made to a repository | commits |
| PRs Created | Number of pull requests created | PRs |
| PRs Merged | Number of pull requests merged | PRs |
| PR Comments | Number of comments left on pull requests | comments |
| PR Reviews | Number of pull request reviews submitted | reviews |
| Comments Received Per PR | Number of comments received per pull request | comments |
| Reviews Received Per PR | Number of reviews received per pull request | reviews |
| Files Changed Per PR | Number of files changed per pull request | files |
| Additions Per PR | Average number of lines of code added per pull request | additions |
| Deletions Per PR | Average number of lines of code deleted per pull request | deletions |
| PR Time to Merge | Average time to merge a pull request | hours |
| PR Time to Review | Average time to submit a review after request | hours |
| GitHub Dependabot PRs Resolved | Number of GitHub Dependabot PRs resolved | PRs |
| GitHub Releases Created | Number of GitHub releases created | releases |
| GitHub Issues Completed | Number of GitHub issues completed | issues |
| GitHub Issues Created | Number of GitHub issues created | issues |
| GitHub Issues Comments | Number of GitHub issues comments | comments |
### Project management
Track tasks, issues, and project work across Jira, Linear, Asana, ClickUp, Monday, and Attio.
#### Jira
| Stat | Description | Unit |
| - | - | - |
| Jira Issues Completed | Number of Jira issues completed | issues |
| Jira Issues Created | Number of Jira issues created | issues |
| Jira Story Points Completed | Sum of story points of completed Jira issues | points |
| Jira Issue Comments Created | Number of comments on Jira issues | comments |
| Jira Issue Stages Changed | Number of issues where stage was changed (unique per-issue per-day) | stage changes |
#### Linear
| Stat | Description | Unit |
| - | - | - |
| Linear Issues Completed | Number of Linear issues completed | issues |
| Linear Issues Created | Number of Linear issues created | issues |
| Linear Issue Points Completed | Sum of Linear issue points completed | estimates |
| Linear Issue Comments Created | Number of comments on Linear issues | comments |
| Linear Issue Stages Changed | Number of issues where stage was changed (unique per-issue per-day) | stage changes |
#### Asana
| Stat | Description | Unit |
| - | - | - |
| Asana Tasks Completed | Number of Asana tasks completed | tasks |
| Asana Tasks Created | Number of Asana tasks created | tasks |
| Asana Task Comments Created | Number of comments on Asana tasks | comments |
| Asana Task Sections Changed | Number of tasks where section was changed (unique per-task per-day) | stage changes |
#### ClickUp
| Stat | Description | Unit |
| - | - | - |
| ClickUp Issues Completed | Number of ClickUp issues completed | issues |
| ClickUp Issues Created | Number of ClickUp issues created | issues |
| ClickUp Issue Comments Created | Number of comments on ClickUp issues | comments |
| ClickUp Issue Stages Changed | Number of issues where stage was changed (unique per-issue per-day) | stage changes |
#### Monday
| Stat | Description | Unit |
| - | - | - |
| Monday Issues Completed | Number of Monday issues completed | issues |
| Monday Issues Created | Number of Monday issues created | issues |
| Monday Issue Comments Created | Number of comments on Monday issues | comments |
| Monday Issue Stages Changed | Number of issues where stage was changed (unique per-issue per-day) | stage changes |
#### Attio
| Stat | Description | Unit |
| - | - | - |
| Attio Tasks Created | Number of tasks created in Attio | tasks |
| Attio Tasks Updated | Number of tasks updated in Attio | tasks |
| Attio Comments Created | Number of comments created in Attio | comments |
| Attio Comments Resolved | Number of comments resolved in Attio | comments |
| Attio Notes Created | Number of notes created in Attio | notes |
| Attio Records Created | Number of records created in Attio | records |
| Attio Records Updated | Number of records updated in Attio | records |
| Attio Lists Created | Number of lists created in Attio | lists |
| Attio List Entries Created | Number of list entries created in Attio | list entries |
### Documentation and collaboration
Track document creation, editing, and comments across documentation tools.
#### Google Drive
| Stat | Description | Unit |
| - | - | - |
| Google Documents Created | Number of documents created in Google Drive | documents |
| Google Documents Edited | Number of documents edited in Google Drive | documents |
| Google Document Edits | Number of tracked document edits in Google Drive | edits |
| Google Document Comments | Number of comments left on documents in Google Drive | comments |
| Google Drive Activities | Total count of Google Drive activities | activities |
#### Notion
| Stat | Description | Unit |
| - | - | - |
| Notion Documents Created | Number of documents created in Notion | documents |
| Notion Documents Edited | Number of documents edited in Notion | documents |
| Notion Document Edits | Number of tracked document edits in Notion | edits |
| Notion Page Comments | Number of comments left on pages in Notion | comments |
#### Figma
| Stat | Description | Unit |
| - | - | - |
| Figma Files Created | Number of files created in Figma | files |
| Figma File Comments | Number of comments left on files in Figma | comments |
| Figma File Updates | Number of file updates in Figma attributed to the employee | updates |
| Figma Files Active | Number of distinct Figma files the employee updated | files |
#### Airtable
| Stat | Description | Unit |
| - | - | - |
| Airtable Documents Edited | Number of documents edited in Airtable | documents |
| Airtable Document Edits | Number of tracked document edits in Airtable | edits |
| Airtable Document Comments | Number of comments left on documents in Airtable | comments |
### Communication
Track Slack messages and activity.
| Stat | Description | Unit |
| - | - | - |
| Slack Messages | Total count of Slack messages sent in channels with Windmill bot | messages |
| Slack Channel Messages | Number of messages sent in Slack channels (from Slack Analytics) | messages |
| Slack Messages Sent | Number of messages sent in Slack (from Slack Analytics) | messages |
| Slack Files Added | Number of files added to Slack | files |
| Slack Reactions Added | Number of reactions added to Slack messages | reactions |
| Slack Huddles | Number of huddles in Slack | huddles |
| Slack Total Activity | Total count of activities in Slack | activities |
### Sales and CRM
Track deals, opportunities, and sales activities.
#### Salesforce
| Stat | Description | Unit |
| - | - | - |
| Salesforce Opps Closed Won | Total count of Salesforce opportunities closed as won | opportunities |
| Salesforce Opportunities Created | Total count of new opportunities created in Salesforce | opportunities |
| Salesforce Opportunities Updated | Number of opportunities updated in Salesforce | opportunities |
| Salesforce Opportunity Updates | Total number of opportunity updates in Salesforce | updates |
#### HubSpot
| Stat | Description | Unit |
| - | - | - |
| HubSpot Deals Closed Won | Total count of HubSpot deals moved to closed won | deals |
| HubSpot Deals Created | Number of deals created in HubSpot | deals |
| HubSpot Deals Updated | Number of deals updated in HubSpot | deals |
| HubSpot Deal Updates | Total number of deal updates in HubSpot | updates |
| HubSpot Activities | Total count of HubSpot activities | activities |
#### Attio
| Stat | Description | Unit |
| - | - | - |
| Attio Deals Created | Number of deals created in Attio | deals |
| Attio Deals Closed Won | Number of deals closed as won in Attio | deals |
| Attio Deals Updated | Number of deals updated in Attio | deals |
| Attio Deal Updates | Total number of deal updates in Attio | updates |
### Customer support
Track customer support activities from Zendesk.
| Stat | Description | Unit |
| - | - | - |
| Zendesk Tickets Assigned | Number of Zendesk tickets assigned | tickets |
| Zendesk Tickets Closed | Number of Zendesk tickets closed | tickets |
| Zendesk Ticket Comments | Number of comments on Zendesk tickets | comments |
| Zendesk Ticket Notifications Sent | Number of notifications sent for Zendesk tickets | notifications |
| Zendesk Chat Sessions | Number of Zendesk chat sessions | chats |
| Good Zendesk Satisfaction Scores | Number of good satisfaction scores | scores |
| Bad Zendesk Satisfaction Scores | Number of bad satisfaction scores | scores |
### Gong
Track sales call activities and coaching from Gong.
| Stat | Description | Unit |
| - | - | - |
| Gong Calls Hosted | Number of Gong calls hosted | calls |
| Gong Calls Attended | Number of Gong calls attended | calls |
| Gong Calls Requested Feedback | Number of Gong calls with feedback requested | feedback |
| Gong Calls Given Feedback | Number of Gong calls with feedback given | feedback |
| Gong Calls Received Feedback | Number of Gong calls with feedback received | feedback |
| Gong Own Calls Listened To | Number of employee's own Gong calls listened to | calls |
| Gong Others Calls Listened To | Number of other employees' Gong calls listened to | calls |
| Gong Calls Comments Given | Number of Gong calls employee has given comments on | comments |
| Gong Calls Comments Received | Number of Gong calls employee has received comments on | comments |
| Gong Calls Scorecards Filled | Number of Gong calls employee has filled out scorecards for | scorecards |
| Gong Calls Scorecards Received | Number of Gong calls employee has received scorecards for | scorecards |
## Who can view stats
* **Everyone** can see their own stats.
* **Admins and Data Analysts** can see stats for everyone in the company.
* **Managers** can see stats for themselves and their team, including direct and indirect reports. To narrow the scope, filter by **Relationship**, such as **Direct report** or **Indirect report**.
* **Delegated access** users can view stats for employees they have delegated access to.
## How stats are calculated
Stats are calculated based on data synced from your integrations:
* Stats are updated as new data arrives from your integrations
* Each stat has specific logic for what counts toward that metric
* Some stats are cumulative totals, others are averages or ratios
* Source content uses integration-specific visibility rules. Aggregate stats use the Windmill access roles described above.
For information about sync timing and data freshness, see [Data Sync and Freshness](/data/data-sync-and-freshness).
# Calendar
Source: https://help.gowindmill.com/features/1-on-1s/calendar
Connect your calendar to sync 1:1s, or start, add, remove, and restore meetings yourself.
Connect [Google Workspace](/integrations/google-workspace) or [Outlook Calendar](/integrations/outlook-calendar) so meetings from your calendar appear in Windmill. If a 1:1 is missing, you can add it yourself. You can also start a 1:1 without a calendar event.
## Which calendar events appear as 1:1s
Meetings with two participants and a title such as "1:1," the participants' names, or "Weekly check-in" usually appear in Windmill after your calendar syncs.
Not every two-person meeting is a 1:1. Interviews, working sessions, and social events remain regular calendar meetings when their purpose is clear from the title or description.
A 1:1 does not have to be between a manager and direct report. Meetings between peers or people in different departments can also appear in Windmill.
Calendar events with more than two attendees are not added as 1:1s automatically. You can add one yourself and choose who the 1:1 is with.
## Start a 1:1
Use **Start 1:1** to begin an impromptu 1:1. No calendar event is required.
Go to the [1:1s page](https://app.gowindmill.com/COMPANY/one-on-ones).
Open **Actions**, then select **Start 1:1**.
Select the person, then click **Start 1:1**.
## Add a 1:1 from your calendar
Add a calendar event yourself when it is missing from Windmill or includes more than two attendees.
Go to the [1:1s page](https://app.gowindmill.com/COMPANY/one-on-ones).
Open **Actions**, then select **Add 1:1 from calendar**.
Select a shared calendar event. If the event has additional attendees, choose the person for this 1:1.
For a recurring event, select **This event** or **This and future events**, then click **Add 1:1**.
Choosing one participant from a larger event creates one 1:1 pair. Repeat the process if the event contains another person you also meet with individually.
## Remove a 1:1
Remove a meeting when it should not appear as a 1:1 in Windmill. Its existing notes remain available in the notes archive.
Go to the [1:1s page](https://app.gowindmill.com/COMPANY/one-on-ones).
Select the person, then find the meeting you want to remove.
Open the meeting's three-dot menu and select **Remove 1:1**.
For a recurring event, select **Only this occurrence** or **All occurrences**, then confirm **Remove 1:1**.
## When a calendar event changes
Windmill keeps your 1:1 list in sync when the original calendar event changes:
* **Cancelled** appears when the calendar event is cancelled or removed.
* **No longer a 1:1** appears when the person you meet with is removed from the invitation or their Windmill account is archived.
Select the status next to the meeting to review why it changed. Depending on the event, you can:
* **Restore this 1:1:** Add the meeting back to your 1:1 list.
* **Remove this 1:1:** Remove only this occurrence.
* **Remove this and future 1:1s:** Remove this occurrence and future events in the recurring series.
# Catch Me Ups
Source: https://help.gowindmill.com/features/1-on-1s/catch-me-up
Catch Me Up gives you a concise, cited briefing on anyone you work with before a 1:1 — and adapts what it shows based on whether you're meeting a report, your manager, or a peer.
A Catch Me Up is a short, AI-generated briefing that gets you up to speed on someone before you meet with them. Windy pulls together recent activity, feedback, goals, and shared context from your connected tools and from Windmill itself, then lays it out as a scannable summary with citations showing where each item came from.
Catch Me Up appears as a panel on your [1:1s](/features/1-on-1s), so the relevant context is right next to the [shared agenda](/features/1-on-1s#shared-agenda) when you walk into the meeting.
## Anyone can get caught up on anyone
Catch Me Up is available to everyone. You can pull a Catch Me Up on anyone you have a 1:1 with, regardless of where they sit in the org chart:
* A **manager** can catch up on a direct or indirect report.
* An **individual contributor** can catch up on — and prep for — their manager.
* **Peers** on different teams can catch up on each other before a cross-functional 1:1.
A Catch Me Up uses only information you have permission to see. Feedback follows its [audience rules](/features/continuous-feedback#feedback-visibility). The report uses your relationship with the person to select the information to show.
## How the report adapts to the relationship
Windmill chooses a template based on your relationship to the person the report is about. Each template has a different focus and a different set of section headers.
### When you're meeting a report
When the person is someone who reports to you (directly or indirectly), the report focuses on their work, their feedback, and their growth so you can support and coach them.
**Sections:**
* **Recent Activity** — Key projects and tasks they've focused on recently.
* **Recent Feedback** — Substantive feedback or recognition they've received, positive or constructive.
* **Recent Pulse Responses** — One to three grounded themes from their recent [pulse](/features/pulse-surveys) responses (only appears when there's useful signal). Anonymous responses never appear.
* **Your Private Notes** — A summary of any [private notes](/features/private-notes) you've written about them (only appears when you have notes).
* **Goals and Progress** — Goals and objectives they're working toward, plus any blockers.
* **Development and Growth** — Learning, skill, and career-growth opportunities that might help them.
When a recent [performance review](/features/performance-reviews) is available, Windy weaves it into the report and notes where that context came from.
### When you're meeting your manager
When the person is your manager (directly or through a skip-level relationship), the report flips around to help *you* prepare for the conversation. It centers on your own work rather than on your manager.
**Sections:**
* **Your Recent Work** — The most important work you've been focused on, prioritizing outcomes and shipped work.
* **Wins and Progress** — Concrete wins, progress toward goals, and evidence of impact worth sharing.
* **Blockers and Risks** — Blockers, risks, and open decisions where you may need your manager's support.
* **Recent Pulse Responses** — One to three grounded themes from your own recent [pulse](/features/pulse-surveys) responses (only appears when there's useful signal).
* **Your Private Notes** — A summary of private notes you've written about your own work or manager discussions (only appears when you have notes).
* **Suggested Discussion Points** — Focused topics you could raise, grounded in your recent work.
### When you're meeting a peer
When neither of you manages the other, the report focuses on collaboration and coordination rather than evaluation.
**Sections:**
* **Shared Context** — Work, meetings, and threads that involve both of you, emphasizing dependencies and decisions.
* **Your Private Notes** — A summary of private notes you've written about them (only appears when you have notes).
* **Coordination Opportunities** — Practical follow-ups, open questions, and ways to coordinate.
Sections only appear when there's real information to fill them. If Windy doesn't find enough signal for a section, it leaves that section out rather than padding the report — so a real Catch Me Up may have fewer sections than the templates above.
## When Catch Me Ups are generated
Windy generates Catch Me Ups automatically for **manager-to-report** 1:1s in both directions: a manager's report on each direct report, and each direct report's report to prepare for their manager. These auto-generate every Sunday. If you have [1:1 notifications](/features/1-on-1s/notifications) on, Windy also regenerates the report when it messages you before the meeting.
If you haven't used Windmill in about a month, automatic reports pause until you're active again.
For **peer** 1:1s, generate the Catch Me Up **manually** from the panel. You can also regenerate any report on demand at any time with **Regenerate Catch Me Up**, which pulls in the latest activity. It's worth refreshing right before a meeting if a lot has happened.
## FAQs
Yes. Catch Me Up is available to everyone, not just managers. When you're meeting your manager, the report is framed to help you prepare — it focuses on your recent work, wins, blockers, and suggested discussion points rather than on your manager. Windy generates it for you automatically each week.
Only for peer 1:1s. Windy auto-generates Catch Me Ups every week for manager-to-report 1:1s in both directions — for the manager and for the direct report. For peers, generate the Catch Me Up manually from the panel. If you haven't used Windmill in about a month, automatic reports pause until you're active again.
No. A Catch Me Up only ever summarizes information you already have access to in Windmill. It never surfaces anything outside your existing permissions — it just gathers and frames what you can already see.
Windy only includes a section when there's real information to fill it. If there isn't enough signal for a section, it's left out rather than filled with filler. This is expected behavior.
No. Catch Me Up is dynamic and generated from the relevant data available to you. Windmill uses relationship-specific templates with preset section headers, but Windy has latitude to fill, skip, or adapt sections based on the available context.
No. [Company Knowledge](/company-settings/company-knowledge) is background context for Windy; it does not appear as its own named section in Catch Me Up. The Catch Me Up panel pulls from sources such as connected tools, Feedback, Pulses, Performance Reviews, relevant Windy interactions, and available meeting recordings or transcripts.
No. Like the rest of a 1:1, Catch Me Up content stays with the participants. Admins cannot see your Catch Me Ups just because they are Admins.
# Importing Notes
Source: https://help.gowindmill.com/features/1-on-1s/importing-notes
Bring your past 1:1 history into Windmill — paste past notes from Notion, Google Docs, Confluence, or anywhere else to populate past 1:1 agendas in bulk.
If you have 1:1 history outside Windmill — in Notion, Google Docs, Confluence, or anywhere else — you can import it so your past notes show up on the right past 1:1s in Windmill, ready to be referenced alongside new meetings.
## How it works
* Content is matched to meetings by date.
* If a meeting doesn't exist, Windmill creates one.
* Content is only imported to meetings that don't already have an agenda in Windmill. Existing agendas won't be overwritten.
## How to import
Navigate to the profile of the person you have 1:1s with.
Click **Actions** in the top right, then select **Import 1:1 Notes**.
Paste the text of your past 1:1s (not a link — the actual text).
Click **Import** to bring the history into Windmill.
Your pasted content should include dates (e.g., "Jan 8, 2026" or "1/8/26") so Windmill can match entries to the correct meetings.
## Importing from Notion
Notion's toggles and formatting can make copy/paste tricky. For best results, export your 1:1 pages as Markdown first.
Open your 1:1 page and expand all toggles using the keyboard shortcut:
* **Mac:** `Cmd + Option + T`
* **Windows:** `Ctrl + Shift + T`
Click the **•••** menu in the top-right corner and select **Export** → **Markdown & CSV**.
Open the downloaded `.md` file, select all (`Cmd + A` / `Ctrl + A`), and copy.
Paste the content into the Windmill import dialog.
## Importing from Google Docs
Open your 1:1 document and select all (`Cmd + A` / `Ctrl + A`).
Copy and paste into the Windmill import dialog.
## Other ways to get data into one-on-ones
**Recording integrations.** Connect [Zoom](/integrations/zoom), [Google Meet](/integrations/google-workspace), [Gong](/integrations/gong), [Granola](/integrations/granola), or [Roam](/integrations/roam) and Windmill will pull in transcripts (and where available, notes/AI summaries) for any of your meetings recorded on those platforms. These do **not** land in the shared 1:1 agenda — instead, the recording appears as a **linked recording** on the matching 1:1, and the content is available to Windy and feeds into [Catch Me Up](/features/1-on-1s/catch-me-up) and review context. See [Meetings and Recordings](/data/meetings-and-recordings) for the per-platform details.
**Import Granola Notes.** On any 1:1, click the **•••** menu next to the meeting time and choose **Import Granola Notes**. Paste a Granola share URL (e.g. `https://notes.granola.ai/…`) and click **Import** — the notes are copied directly into that 1:1's shared agenda. Unlike the [Granola integration](/integrations/granola), this writes into the agenda itself, and works with just a share link (no integration setup required).
# 1:1s
Source: https://help.gowindmill.com/features/1-on-1s/index
Run more effective 1:1 meetings in Windmill with Windy reminders, shared agendas, calendar syncing, notes, recordings, and AI summaries.
1:1s are most effective when both the manager and employee come prepared. Without preparation, meetings often turn into surface-level status updates on recent work instead of meaningful conversations about priorities, challenges, and growth.
Windmill does that prep work for you. Agendas are clear before the meeting starts, and Windy pulls in relevant context from Feedback, Pulses, Performance Reviews, and your connected tools. Both participants walk in informed, so the time you have together is spent on the conversation that matters.
## How 1:1s work in Windmill
Windmill automatically finds all of your upcoming 1:1s from your calendar. In order for this to work, you'll need to connect either [Google Workspace](/integrations/google-workspace) or [Outlook Calendar](/integrations/outlook-calendar) to your account.
If a 1:1 is missing, you can add it manually from the [1:1s page](https://app.gowindmill.com/COMPANY/one-on-ones) or the employee's profile. You can also create ad-hoc 1:1s without a calendar event, which is useful for impromptu conversations or when you want to track a 1:1 that isn't on your calendar.
To give 1:1s a consistent agenda structure, use [1:1 Templates](/features/1-on-1s/templates). Templates can pre-populate agendas with sections and questions for recurring topics like wins, blockers, priorities, feedback, and career growth.
## Filter your 1:1 view
Use a relationship filter when you want the 1:1s page to show only managers, reports, or peers. Filtering changes only your view. Your meetings, notes, and history stay unchanged.
Go to the [1:1s page](https://app.gowindmill.com/COMPANY/one-on-ones).
Click **Filter**, then select **Relationship**.
Select any combination of the relationship options that are available: **Manager**, **Skip-level manager**, **Direct report**, **Indirect report**, and **Peer**.
To show only managers and reports, select every available option labeled **Manager**, **Skip-level manager**, **Direct report**, or **Indirect report**. Clear **Peer** when it is available.
Windmill saves the filter in your browser and uses it when you return to the 1:1s page. To show all pairings again, clear the relationship filter.
## Shared agenda
Each 1:1 has a shared agenda, visible to both the manager and the employee. You can add discussion topics, work through them live, and capture action items — whether that's a formal agenda, a [template-driven structure](/features/1-on-1s/templates), or free-form content for the meeting.
Anything in the shared agenda is visible to both participants. For things you want to keep to yourself — observations, coaching thoughts, or reminders — use [Private Notes](/features/private-notes) instead.
Admins cannot see 1:1 content just because they are Admins. Admins can apply company templates across 1:1s, but shared 1:1 agendas and notes remain visible only to the two participants or people with explicitly enabled audit access. Private Notes are only visible to the person who created them.
After the meeting, you can always go back and edit or append agenda items, ask Windy for a summary, or revisit the history of past agendas. If the meeting was recorded on a connected platform, the transcript will attach automatically — see [Recordings](/features/1-on-1s/recordings) for details.
### Add images
Add screenshots, diagrams, or other visual context directly to the shared agenda. Type `/` and select **Image**, paste an image, or drag and drop one into the agenda.
After the image uploads, select it and drag a corner handle to resize it.
### Tag the other participant
Type `@`, then select the other participant to draw their attention to a note or action item. Windmill sends them an email after a short delay with the surrounding note and a link back to the 1:1.
You can also ask Windy to add a note and tag the other participant.
### Version history
Windmill automatically saves a version of your 1:1 notes as you and the other participant edit them, so nothing is lost if content is changed or removed. To view past versions, open the 1:1's **Actions** menu (the **•••** icon) and select **View History**.
The **Version history** panel lists each saved version with when it was saved and who contributed to it. Select a version to preview it, then click **Restore** to bring that version back into the current notes.
Version history follows the same visibility rules as the 1:1 itself — only the two participants can view or restore versions. Admins don't get access just for being Admins.
### Does Windy join 1:1s as a notetaker?
No. Windy never joins your 1:1 meeting as a notetaker, and Windmill does not add Windy as a participant to calendar events.
Instead, Windmill uses the 1:1 agenda, notes you write in Windmill, and transcripts or notes from connected recording tools when they are available. If you record the meeting with a connected platform such as Zoom, Google Meet, Roam, or Granola, the transcript or notes can attach to the 1:1 after the meeting.
## Audit access for manager/direct 1:1s
1:1 content stays private by default. When your company needs controlled visibility for compliance, employee relations, or manager support, an Admin or HR Admin can enable 1:1 auditability for manager/direct 1:1s.
Audit access is read-only. It lets authorized auditors review shared 1:1 notes and history, but it does not let them edit the agenda or join the 1:1 as a participant.
### Who can audit 1:1s
Auditability is controlled by two independent company settings:
* **Managers** can audit manager/direct 1:1s within their reporting subtree when manager audit access is enabled.
* **HR Admins** can audit all manager/direct 1:1s when HR Admin audit access is enabled.
If both settings are off, nobody outside the participants can audit 1:1 notes.
Audit access only includes the shared 1:1 notes and history. It does not include Private Notes, participant-specific prep topics, Catch Me Up reports, or recording access.
### Configure audit access
Admins and HR Admins with audit configuration access can update auditability from 1:1 settings.
Open [1:1 settings](https://app.gowindmill.com/COMPANY/config/one-on-ones/settings).
Click **Configure access** in the **Manager/direct 1:1 access** row.
Select **Managers**, **HR Admins**, or both, then click **Save changes**.
Only enable audit access when your company needs it for compliance or HR purposes.
### Review and export audit history
Authorized auditors can review eligible pairs from the [1:1 pairs page](https://app.gowindmill.com/COMPANY/config/one-on-ones/pairs). Click **Audit 1:1** on an eligible pair to open the read-only audit history.
The audit history shows shared notes by meeting, including historical 1:1s. Use **Export CSV** to download the pair's shared 1:1 history.
## Catch Me Up
Every 1:1 includes a [Catch Me Up](/features/1-on-1s/catch-me-up) panel — a concise, cited briefing on the person you're meeting. It pulls from your connected systems — GitHub, Slack, and others — alongside Feedback, Pulses, Performance Reviews, and any relevant Windy interactions, with citations showing where each item came from.
Catch Me Up is available to **everyone**, not just managers. You can catch up on a direct or indirect report, prep for a 1:1 with your own manager, or get context on a peer before a cross-functional meeting. The report adapts to your relationship with the person, and only ever summarizes information you already have access to.
Windy auto-generates Catch Me Ups every week for manager-to-report 1:1s, for both the manager and the direct report. For peers, you generate the report manually from the panel — and you can regenerate any report on demand.
See [Catch Me Ups](/features/1-on-1s/catch-me-up) for the full breakdown of how the report changes by relationship.
## Explore 1:1s
* [Calendar](/features/1-on-1s/calendar) — How Windmill identifies 1:1s from your calendar, and how to create or remove them manually
* [Catch Me Ups](/features/1-on-1s/catch-me-up) — Get a cited briefing on anyone you're meeting, framed to your relationship with them
* [Templates](/features/1-on-1s/templates) — Give your 1:1s a consistent structure with company and personal templates
* [Recordings](/features/1-on-1s/recordings) — How meeting recordings attach to your 1:1s in Windmill
* [Notifications](/features/1-on-1s/notifications) — Control when Windy sends prep notifications and optional last-minute reminders before your 1:1s
* [Importing History](/features/1-on-1s/importing-notes) — Bring existing 1:1 history from Notion, Google Docs, or other tools
* [1:1 Meetings analytics](/features/analytics/one-on-one-meetings) — Track 1:1 patterns across your organization from the Analytics section
## FAQs
1:1s are usually added from your connected calendar. If a 1:1 is missing, go to the [1:1s page](https://app.gowindmill.com/COMPANY/one-on-ones), open **Actions**, and choose **Add 1:1 from calendar**. You can select one participant when the calendar event includes more than two attendees.
Go to the [1:1s page](https://app.gowindmill.com/COMPANY/one-on-ones), open **Actions**, and select **View notes archive**. The archive is mainly for reviewing deleted 1:1s and past 1:1s with archived users. Notes in the archive are read-only.
Yes. A recurring meeting with someone in another department can still appear as a 1:1, even if neither person reports to the other in your HRIS. HRIS reporting structure affects manager-only features, not whether the meeting appears in your 1:1s.
Admins cannot see 1:1 content just because they are Admins. They can apply company templates across 1:1s, but shared 1:1 agendas and notes remain limited to the two participants or people with explicitly enabled audit access. Private Notes are not visible to Admins.
# Notifications
Source: https://help.gowindmill.com/features/1-on-1s/notifications
Configure when Windy reaches out before your 1:1s — including agenda prompts, prep reminders, and Slack DM timing — to match how you and your team work.
Windy can notify you before upcoming 1:1s with context and suggested topics, and can optionally send a last-minute reminder right before the meeting. 1:1 notifications are off by default for new users, so you can choose whether Windy should reach out before these meetings.
You can turn 1:1 notifications on during onboarding when Windy offers them. You can also manage them from [Windy features](https://app.gowindmill.com/COMPANY/config/windy/features).
## Notification toggles
All relationship-based 1:1 notifications are off by default for new users. You can enable or disable notifications by relationship type:
* **Managers** — Notifications for 1:1s with your own manager.
* **Direct Reports** — Notifications for 1:1s with people who report directly to you.
* **Indirect Reports** — Notifications for 1:1s with people further down your reporting chain.
* **Peers** — Notifications for 1:1s with people outside your reporting chain.
## Managing notifications with Windy
You can ask Windy about your 1:1 notification settings from a 1:1 chat. Windy can show which settings apply, share the settings link, or update notifications for a relationship group or all 1:1s.
Windy cannot set an override for only the person in the current chat. Use [Windy features](https://app.gowindmill.com/COMPANY/config/windy/features) or the employee's settings page to configure a person-specific override.
Turn off 1:1 notifications for my peers.
Where can I manage my 1:1 notification settings?
## Notification timing
Choose how far in advance Windy reaches out before a 1:1. This applies globally to all your 1:1s.
Available options: 10 minutes, 30 minutes, 1 hour, 2 hours, 3 hours, 6 hours, 1 day, or 2 days before the meeting.
* **Default:** 1 day
## Last-minute reminders
Last-minute reminders are optional reminders sent about 10 minutes before an upcoming 1:1. When enabled, Windy sends a quick reminder shortly before the meeting and highlights recent agenda or notes changes — so if the other participant added topics after your original prep notification went out, you'll have a final chance to review before walking in.
Last-minute reminders are only available when your notification timing is set to more than 10 minutes before the meeting. If your notification timing is set to 10 minutes, Windy already reaches out right before the meeting, so the separate reminder is disabled.
* **Default:** Off
## Employee overrides
Override notification settings for specific employees. This is useful when you want Windy to always (or never) notify you before 1:1s with a particular person, regardless of your relationship-based defaults.
* **Always On** — Windy will always notify you before 1:1s with this person, even if notifications for their relationship type are disabled.
* **Always Off** — Windy will never notify you before 1:1s with this person, even if notifications for their relationship type are enabled. This silences both the regular prep notification and any last-minute reminders for 1:1s with that person.
To set an override, select **Override employee** under **Employee overrides** in the 1:1 Notifications section of [Windy features](https://app.gowindmill.com/COMPANY/config/windy/features). You can also set an override from an employee's settings page.
# Recordings
Source: https://help.gowindmill.com/features/1-on-1s/recordings
How meeting recordings and notes from Zoom, Zoom: My Notes, Google Meet, Gong, Granola, and Roam attach to your 1:1s in Windmill.
When your 1:1 is recorded on a connected platform, Windmill automatically attaches the available transcript or notes to the matching 1:1. Open the recording to review the transcript and any available summary or action items.
## Supported sources
Windmill pulls recordings from the platforms you connect. See the canonical [source matrix in Meetings and Recordings](/data/meetings-and-recordings#supported-platforms) for what each source contributes.
* **Zoom** — Meeting transcripts and cloud-recording transcripts from your company-wide integration. See [Zoom transcripts, recordings, and My Notes](/integrations/zoom-meeting-content).
* **Zoom: My Notes** — New notes and available transcripts from your personal Zoom account
* **Google Meet** — Native recording or Gemini Notes (with transcript enabled)
* **Gong** — Transcripts and AI summaries (short summary, key points, action items) from public Gong calls
* **Granola** — Notes and transcripts from recordings you have access to in Granola
* **Roam** — Meeting recordings and transcripts
Windmill stores text from the meeting, including transcripts and available notes or summaries. Audio and video files stay on the original platform.
## Does Windy join as a notetaker?
No. Windy never joins 1:1 meetings as a notetaker, and Windmill does not add Windy as a participant to calendar events.
Windmill can still use meeting context when you connect a supported recording source. If a transcript or note from Zoom, Google Meet, Gong, Granola, or Roam is available, Windmill can attach it to the 1:1 after the meeting.
## Timing
Windmill schedules most recording syncs each hour. Zoom: My Notes sends new notes to Windmill after Zoom creates them, and Windmill checks recent notes each day. The source must finish processing the transcript first, and queue work can add more time.
When you connect a recording source, including Zoom: My Notes, Windmill syncs recordings from the previous six months.
If a recording does not appear, check that transcripts were enabled on the meeting itself. On Google Meet in particular, **"Also start a transcript"** (or **"Also start transcription"**) must be turned on for Windmill to receive anything.
## Who can see a recording
Visibility depends on the source. Recording access is based on matched participants and integration-specific rules. Zoom: My Notes content is only visible to the member who connected it. Granola visibility depends on the API key type and recording owner. Gong syncs public calls only.
## Using recordings in the 1:1 flow
Once a recording is attached, it appears in a recording tab on the 1:1. Windmill may also highlight action items above the shared agenda.
You can:
* **Open the recording** from the 1:1 page. Granola recordings open in Granola.
* **Ask Windy for a summary** or for specific action items from the conversation.
* **Search across past 1:1s** by asking Windy in Slack (for example, "What did I talk about with Jordan last time?").
Summaries and action items appear with the recording, not in the shared 1:1 agenda.
# Templates
Source: https://help.gowindmill.com/features/1-on-1s/templates
Give your 1:1s a consistent structure with personal and company-wide templates that pre-fill agenda items, talking points, and questions for each meeting.
Templates give your 1:1s a consistent structure. Instead of starting each meeting with a blank page, a template pre-populates the agenda with the sections and questions you want to cover — like wins, blockers, career growth, or anything else that matters for the relationship. Templates don't replace Suggested Topics — Windy still surfaces them automatically for your next upcoming 1:1 alongside the template-seeded agenda.
## Types of templates
* **Company templates** — Created by Admins or HR Admins and available to everyone in the organization. Useful for establishing a consistent 1:1 format across teams.
* **Personal templates** — Created by any employee for their own 1:1s. The template itself is only visible to the creator and to participants in 1:1s where it's been applied.
Windmill includes a set of starter templates to help you get going, or you can create your own from scratch.
Once a template is applied to a 1:1, the sections and questions it populates become part of the [shared agenda](/features/1-on-1s#shared-agenda) — meaning both the manager and the employee can see and edit them.
## Company templates
Company templates are created and managed by Admins and HR Admins. They're a way to establish a standard 1:1 format across the organization — for example, ensuring every manager-report 1:1 covers key topics like priorities, blockers, and growth.
Admins and HR Admins manage company templates from the [1:1 Templates admin page](https://app.gowindmill.com/COMPANY/config/one-on-ones/templates). From there, they can:
* **Create** a new company template
* **Edit** a company template's name and content
* **View Pairs** — see all 1:1 pairs currently using the template
* **Delete** or **Duplicate** an existing template
When an Admin or HR Admin edits a company template that's assigned to one or more pairs, the updated content is automatically applied to all future, unedited 1:1 agendas for those pairs.
Once a company template is published, any employee can apply it to their own 1:1s — either for a single meeting or as the default for all future 1:1s with a specific person.
### Reviewing 1:1 pairs
Admins and HR Admins with 1:1 template configuration access can review pairs from the [1:1 pairs page](https://app.gowindmill.com/COMPANY/config/one-on-ones/pairs), or by clicking **View Pairs** from a company template.
Use the filters to find the pairs you need:
* **Employee** — Filter by one person in the pair.
* **Other employee** — Filter by the other person in the pair.
* **Relationship** — Filter by **Direct report**, **Skip level**, or **Other**. Direct report and skip-level filters include both directions of the reporting relationship, while Other covers peer 1:1s.
* **Template** — Filter to pairs using a specific default template.
## Personal templates
Any employee can create and manage their own personal templates from the Templates panel on the [1:1s page](https://app.gowindmill.com/COMPANY/one-on-ones).
From the Templates panel, you can:
* **Create** a new template with a name, description, and markdown content
* **Edit** templates you created
* **Duplicate** any template (including company templates and starter templates) into your own personal copy
* **Delete** templates you no longer need
Personal templates are markdown-based, so you can format them with headings, bullet points, or any structure that works for your meetings.
## Applying a template to a single 1:1
Use this when you want to apply a template to just one meeting — for example, a mid-year check-in that needs a different structure than your usual format.
Go to the [1:1s page](https://app.gowindmill.com/COMPANY/one-on-ones) and open the pair you're meeting with.
Hover over the 1:1 you want to update and click the three-dot menu (⋮) in the section header.
Click **Apply Template** and choose a template from the picker.
You can also apply a template from inside the agenda editor by typing `/` and selecting **Apply Template** from the slash command menu.
If the 1:1 already has content in the agenda, Windmill will ask you to confirm before overwriting it. Applying a template this way only affects the current 1:1 — future 1:1s with the same person are unchanged.
## Setting a default template for all future 1:1s
Use this when you want every future 1:1 with a specific person to start with the same structure. The default is set at the pair level, so it applies to every upcoming 1:1 with that individual.
Navigate to the profile of the person you have 1:1s with.
Click **Settings** on their profile.
In the **Default Template** row, click **Select Template** and pick a template from the picker. Click **Set Default** to confirm.
All future 1:1s for this pair that haven't been edited will use this template by default. Existing 1:1 agendas are not changed.
Only the manager in a 1:1 pair can set the default template.
The default template only seeds 1:1 agendas that haven't been edited yet. Once you or the other participant has added content to a specific 1:1, that meeting's agenda won't be overwritten.
To change or remove the default, open the same settings row and either select a different template or choose **No Template**.
## Duplicating a template
If an existing template is close to what you need but you want to customize it, you can duplicate it. This creates a new personal template you can edit freely without affecting the original.
From the Templates panel, open the template you want to copy and select **Duplicate**. Give your copy a new name and description, then edit the content as needed.
# AI Adoption
Source: https://help.gowindmill.com/features/analytics/ai-adoption
Track active users, feature usage, and adoption trends across Claude, Codex, Cursor, and Devin.
AI Adoption turns usage signals from connected AI tools into adoption rates, trend charts, and per-user activity.
## Supported AI tools
AI Adoption currently reports on four AI tools:
* **[Claude](/integrations/claude)**
* **[Codex](/integrations/codex)**
* **[Cursor](/integrations/cursor)**
* **[Devin](/integrations/devin)**
The report requires at least one of these integrations. Follow the links above for each integration's requirements and supported data. If none are connected, the report directs you to the [Integrations page](https://app.gowindmill.com/COMPANY/config/integrations).
Claude usage is reported by Anthropic on a 3-day delay, so the most recent 3 days of Claude data may be incomplete. The report shows a callout at the top whenever Claude is connected.
## What you'll see
### Summary cards
Two headline numbers at the top:
* **Adoption rate** — The percentage of users in scope who used any connected AI tool during the selected date range, shown as `X of Y users used AI`.
* **Weekly active** — The number of users who used an AI tool in the most recent week shown.
### Weekly AI adoption trend
A trend chart showing **weekly unique AI users** across all connected tools. The chart overlays:
* A blue area for total **AI Active Users** per week
* A line per connected integration showing weekly active users for that tool
Click any week on the chart to open a side panel listing the users who were active during that week.
### AI Feature Usage
A scrollable list showing how many unique users used each AI capability during the selected range. Each row shows the capability name, the user count, and the percentage of scoped users.
Each user is counted **once per capability** for the entire date range, and a capability is counted as used whenever at least one positive usage event is observed. Click any row to open a side panel listing the users who used that capability.
The capabilities shown depend on which AI integrations you have connected. See the [stats reference](/data/stats) for the current capabilities and their definitions.
When Claude is the only AI integration connected, the labels drop the "Claude" prefix (so you'll see "Chat messages", "Excel", "PowerPoint", etc. instead of "Claude chat", "Claude in Excel"). With multiple AI tools connected, every label is namespaced so you can tell capabilities apart at a glance.
### Active AI Users Over Time
A line chart with three series — **Daily**, **Weekly**, and **Monthly** active users — computed as rolling counts across all connected AI tools. Hovering shows a tooltip with the per-integration breakdown for each rolling window:
* **DAU** — active on that specific day
* **WAU** — active any time in the trailing 7 days
* **MAU** — active any time in the trailing 30 days
### User AI Usage
A sortable table with one row per user in scope, showing their **AI Active Days** in the selected range and stat columns for each connected integration.
See the [Claude](/data/stats#claude), [Codex](/data/stats#codex), [Cursor](/data/stats#cursor), and [Devin](/data/stats#devin) sections of the full stats reference for the exact definition of every column.
Click any value to drill into that user's daily trend for that stat.
The User AI Usage table defaults to sorting by **AI Active Days** descending. Click any column header to re-sort.
## Scope
Use the shared [Analytics filters and date range](/features/analytics#filtering-and-date-ranges) to change the report scope. AI Adoption includes active Windmill members; archived employees and people without a member account are excluded.
## Empty states
If the report has nothing to show, you'll see one of:
* **No AI integrations connected** — None of Claude, Codex, Cursor, or Devin are connected. Connect one from the [Integrations page](https://app.gowindmill.com/COMPANY/config/integrations).
* **No users match these filters** — The employee filter excluded everyone. Loosen the filter.
* **No AI activity in this date range** — Integrations are connected but no users had any AI activity in the window. Try a wider date range.
## FAQs
No. AI Adoption currently reports on Claude, Codex, Cursor, and Devin only.
Anthropic publishes Claude usage data on a 3-day delay. The most recent data fills in as Anthropic reports it.
Any positive tracked activity in a connected Claude, Codex, Cursor, or Devin integration. See the [stats reference](/data/stats#ai-tools) for the tracked activities.
AI Adoption only includes **active members** — people who have a Windmill member account and haven't been archived. Employees in your org chart who aren't members don't appear. If they should be members, invite them from [Members](https://app.gowindmill.com/COMPANY/config/members).
Yes. Click **Export CSV** in **User AI Usage** to export that table. For a custom selection of stats, use [Explore](/features/analytics/explore).
# Explore
Source: https://help.gowindmill.com/features/analytics/explore
Build custom charts and tables from Windmill stats, then export the underlying data to CSV.
Explore is Windmill's ad-hoc analytics builder. If the [AI Adoption](/features/analytics/ai-adoption) and [Product Usage](/features/analytics/product-usage) reports are pre-built dashboards, Explore is the blank canvas. Pick the stats you care about, scope to the right people, and visualize the result.
Use Explore when you need to:
* Answer a specific question that the pre-built reports don't cover ("How many 1:1 notes did the Sales managers edit last quarter?")
* Compare a few stats side by side for one person or team
* Export raw stat data to a CSV for further analysis
## Building a query
A query in Explore has three parts: **stats**, an **employee filter**, and a **date range**. Explore uses the shared [Analytics filters and date range](/features/analytics#filtering-and-date-ranges). Once you've picked at least one stat and the filter resolves to at least one person, Explore renders a chart and a data table.
### Picking stats
Click **Select Stats** (on the empty state) or **+ Add stat** to open the stat picker. The picker is organized by category — activity, code, AI tools, 1:1s, feedback, meetings, Pulse, performance reviews, and more. You can pick as many stats as you want.
Selected stats appear as removable chips at the top of the page. Click the × on a chip to remove it, or use **Clear All** to reset.
For a full catalog of every stat Windmill tracks and how each one is defined, see the [stats reference](/data/stats).
## Chart and table view
Once you have stats and employees selected, Explore shows two things: a chart on top and a data table below.
### View modes
Use the **Trends / Users / User trends** toggle to change what the chart's x-axis represents:
* **Trends** — The x-axis is time. Each series is one selected stat, aggregated across the users in scope.
* **Users** — The x-axis is each user in scope. Each series is one selected stat.
* **User trends** — The x-axis is time. Each user gets a series that sums the selected stats for that user.
When you switch to **Users**, the chart type defaults to **Bar**. Other modes default to **Line**.
### Chart types
Choose between **Line**, **Bar**, and **Stacked bar**. Stacked bar is most useful in Trends mode when you have multiple stats and want to see their combined total per period.
### Granularity
In time-based views (Trends and User trends), use the **Daily / Weekly / Monthly** toggle to control how dates are bucketed. The default is Daily.
There's a 20-series limit on Users and User trends charts. If your filter resolves to more than 20 users in those modes, the chart hides itself and shows a callout. Narrow your filter, or switch to **Trends** mode to aggregate across all users instead.
## Tables
The data table below the chart adapts to your view:
* **Users view, or multiple users selected** — Rows are users and columns are stats. Sort by any column. Click a value to drill into that user's trend for that stat.
* **One user selected in a time-based view** — Rows are dates and columns are stats. Sort by any column or by date.
Tables always reflect the same employee filter, date range, and stats as the chart above.
## Exporting to CSV
Click **Export CSV** in the top right to download the raw underlying data. The CSV has one row per employee × stat × date, with columns:
* `ID` — Windmill employee ID
* `Name` — Employee display name
* `Job Title`
* `Stat` — Stat label
* `Date` — Date in `YYYY-MM-DD` format
* `Value` — Numeric value for that employee, stat, and date
If an employee has no value for a given stat × date, the row is written with `0`. Use this when you need to do your own analysis in a spreadsheet or BI tool.
## Sharing a view
Your full Explore configuration — stats, filters, date range, view mode, chart type, granularity — is saved in the URL. Copy the URL to share a specific view with a teammate. They'll see the same configuration as long as they have permission to view the underlying employees.
## FAQs
Every stat Windmill tracks — activity (Windmill active days, messages to Windy), 1:1s (note edits, agenda topics, prep responses, meeting time), feedback (given, received), Pulse (responses, surveys created), performance reviews (drafts, answers, completion), code activity (commits, lines, PRs), meetings (count, time), and per-integration stats from connected AI tools (Claude, Codex, Cursor, and Devin) and code tools.
Open the stat picker to see the full list grouped by category.
User-axis charts (**Users** and **User trends**) cap at 20 series for readability. If your filter resolves to more than 20 people, switch to **Trends** mode to see the aggregate across all of them, or narrow the filter.
Not yet. The view is saved in the URL though, so bookmarks work — and you can paste the URL into a doc or share it with a teammate.
Explore is a visual builder for browsing stats inside the dashboard. [MCP](/features/mcp) is for asking a connected AI assistant natural-language questions about your data ("Summarize Engineering 1:1 frequency last quarter"). They draw from the same underlying stats — use whichever fits the moment.
# Analytics
Source: https://help.gowindmill.com/features/analytics/index
Use Windmill Analytics to understand AI adoption, product usage, 1:1 patterns, organizational health, and custom stats.
Analytics provides reports for understanding AI adoption, Windmill usage, 1:1 patterns, and collaboration across your organization. You can also build custom views from the stats Windmill collects.
## Reports
Analytics is organized into a set of reports, each focused on a different question:
* **[AI Adoption](/features/analytics/ai-adoption)** — Who is using Claude, Codex, Cursor, and Devin, and how adoption changes over time.
* **[Product Usage](/features/analytics/product-usage)** — How engaged your team is with Windmill itself. Tracks feature adoption across Windy, 1:1s, Feedback, Shoutouts, Pulse, Private Notes, and Performance Reviews.
* **[Organizational Health](/features/analytics/organizational-health)** — A map of the collaboration network across your company, available to Workspace Admins and Data Analysts.
* **[1:1 Meetings](/features/analytics/one-on-one-meetings)** — How consistently 1:1s are happening: meeting coverage and recency, time spent, agenda engagement, and which managers are running steady check-ins.
* **[Explore](/features/analytics/explore)** — A flexible report builder. Pick any stats Windmill collects, slice by team or person, and chart them however you want.
You'll find Analytics in the Windmill Dashboard below **Reviews**.
## Who can see Analytics
Analytics respects the same visibility rules as the rest of Windmill:
* **Workspace Admins and Data Analysts** see Analytics for the entire organization.
* **Managers** see Analytics for themselves and anyone who reports to them (directly or indirectly).
* **Other members** see their own data, plus any additional employees they have been delegated access to.
Filters in each report are scoped to what the viewer is allowed to see — a manager won't be able to filter to employees outside their reporting line.
[Organizational Health](/features/analytics/organizational-health) is the exception: because it maps collaboration across the whole company, it's only available to **Workspace Admins** and **Data Analysts**. Managers and individual contributors don't see it.
## Filtering and date ranges
AI Adoption, Product Usage, 1:1 Meetings, and Explore use the same control panel at the top:
* **Employee filter** — Search by name or email, or filter by group, job title, manager, or start date. You can combine conditions. Leave the filter empty to include everyone in your visible scope.
* **Date range** — Pick a custom range or use **last 7 days**, **last 30 days**, **last 60 days**, or **last 180 days**. The default is the last 30 days.
Filters and date ranges are saved in the URL, so you can bookmark or share a specific view.
[Organizational Health](/features/analytics/organizational-health) shows the current organization-wide network and does not use these controls.
## How the data is computed
Analytics is powered by Windmill's stats engine, which aggregates activity from your connected integrations and from Windmill. Data freshness depends on the source and its sync schedule. See [Data Sync and Freshness](/data/data-sync-and-freshness) for details.
See the [full stats reference](/data/stats) for a category-by-category breakdown of every stat Windmill tracks, including where each one sources its data.
## Exporting data
AI Adoption and Product Usage include **Export CSV** buttons for their user-stat tables. Use [Explore](/features/analytics/explore) to select custom stats and export the underlying data for each user, stat, and date.
You can also use the [MCP server](/features/mcp) to query data programmatically.
# 1:1 Meetings
Source: https://help.gowindmill.com/features/analytics/one-on-one-meetings
Track 1:1 patterns across your organization — meeting coverage and recency, time spent, agenda engagement, and which managers are running consistent check-ins.
The 1:1 Meetings report shows how consistently 1:1s are happening across your organization and where they might be slipping. Use it to spot managers who aren't meeting with their team, employees who've gone too long without a check-in, and pairs who meet but never capture notes.
Open it from the Analytics section of the [Windmill Dashboard](https://app.gowindmill.com/COMPANY/reports) — select **1:1 Meetings** from the list of reports.
## What you'll see
* **Manager 1:1 Leaderboard** — See which managers consistently meet with their team and which don't. Ranks managers by the percentage of direct reports they've met with in the selected time period.
* **Time spent in 1:1s** — Shows each employee's meeting frequency and total time in 1:1s. Filter the table to all 1:1s or meetings with direct reports, managers, or peers.
* **Employees Without Recent 1:1s** — Spot manager-employee relationships that may need attention. Lists employees who haven't had a 1:1 with their manager within the selected threshold. This uses the same 1:1 list that appears on the [1:1s page](https://app.gowindmill.com/COMPANY/one-on-ones), including calendar-detected 1:1s and manually added 1:1s.
* **1:1 pairs** — Shows each pair's total meeting count and the percentage with notes in Windmill. Filter to all 1:1s, manager and direct-report pairs, peers, or indirect relationships.
## Controls
Use the shared [Analytics filters and date range](/features/analytics#filtering-and-date-ranges) to change the report scope. The date range applies to **Manager 1:1 Leaderboard**, **Time spent in 1:1s**, and **1:1 pairs**.
**Employees Without Recent 1:1s** uses a separate recency threshold instead of the report's date range. Choose from one to six weeks; the default is four weeks.
The report scopes users to people who have a manager or at least one direct report. Within that scope, the Time Spent and 1:1 Pairs panels can also include peer and indirect relationships.
## Who can view this report
1:1 Meetings follows the same visibility rules as the rest of [Analytics](/features/analytics):
* **Workspace Admins and Data Analysts** can see the report for the entire organization.
* **Managers** can see themselves and anyone in their reporting line, directly or indirectly. Use the Employee filter to narrow the scope.
* **Other members** can see their own data, plus any additional employees they have been delegated access to.
Admin access alone does not grant visibility into 1:1 content. By default, shared 1:1 agendas and notes are visible only to the two participants. An Admin or HR Admin can enable read-only audit access for eligible manager and direct-report 1:1s. Private Notes always stay private to their creator. Learn more about [1:1 audit access](/features/1-on-1s#audit-access-for-managerdirect-11s).
# Organizational Health
Source: https://help.gowindmill.com/features/analytics/organizational-health
Map collaboration across your organization and identify central people, connectors, communities, and isolated groups.
Org charts show who reports to whom. Organizational Health maps collaboration across your company using organizational network analysis (ONA), helping you identify central people, connectors between groups, and isolated clusters.
Use it to understand questions that reporting lines alone cannot answer, such as which people connect teams and where collaboration is fragmented.
## Who can see Organizational Health
Unlike the other Analytics reports, Organizational Health is **only available to people who can see Analytics for the entire organization** — **Workspace Admins** and **Data Analysts**.
Managers and individual contributors don't see this report at all, even though they can open the other Analytics reports for their own scope. Because the network spans the whole company, there's no partial, manager-limited view of it.
You'll find it in the Analytics section of the [Windmill Dashboard](https://app.gowindmill.com/COMPANY/reports).
## How the network is built
The network is built from collaboration signals across the work tools you've connected to Windmill. The more two people interact, the stronger the connection Windmill draws between them.
Windmill groups those signals into the following categories:
* **Meetings**
* **Messages**
* **Code reviews**
* **Tasks**
* **Documents**
These categories appear in a person's **Top score source** and **Source mix** metrics. The available signals depend on the integrations you've connected.
The report reflects the **current** state of your collaboration network. There's no date-range picker or employee filter — Windmill tunes the graph automatically to surface the strongest, most meaningful connections and keep the view readable. Relationships that don't clear that threshold aren't shown.
Windmill picks the threshold so that the visible graph *targets* a healthy average number of connections per person. In very sparse networks the actual average can fall short of that target.
Scores refresh overnight. If you've just connected a new integration, its collaboration signal shows up after the next daily refresh — not immediately.
Organizational Health surfaces collaboration *patterns and strength* — who works with whom, and how much. It doesn't show the contents of anyone's messages, emails, or documents.
## What you'll see
The report has three sections: the **Network** graph, the **Key People** lists, and the **People** table. A **Guide** button in the top right opens an in-app reference for every term used on the page.
### Network graph
An interactive map of your collaboration network:
* **Each dot is a person.**
* **Each line is a working relationship.** Thicker lines mean stronger connections.
* **Larger dots have more or stronger connections** — their size reflects total connection strength.
Click any dot to select that person; their direct connections highlight and the rest of the graph dims so you can see their immediate network. Click empty space to clear the selection. You can also use the **Search people** box above the graph to jump to someone by name.
The graph can include unarchived employees who do not have Windmill member accounts. The Key People lists and People table are limited to active Windmill members.
Use **Color by** to group people by **Team** or by **Community**, which Windmill detects from relationship patterns. Select a group in the legend to highlight it.
If you search for someone and see "Employee not in graph," it means they don't currently have relationships strong enough to appear in this view — not that there's no data on them.
### Network overview
When no one is selected, the panel beside the graph summarizes the visible network:
* **People** — How many people are in the network.
* **Relationships** — How many connections are shown. A stronger connection means more relationship signal between two people.
* **Density** — How tightly connected the visible network is overall. Higher density means people are connected to more of the others shown.
* **Components** — The number of separate groups in the network. One group means everyone shown is connected through some chain of relationships; more than one means there are clusters with no link between them.
* **Communities** — Groups whose relationships are more concentrated within the group than outside it. Detected with the Louvain algorithm.
* **Modularity** — How strongly the network separates into communities. Higher values indicate more distinct clusters.
* **Max core layer** — The highest k-core layer present in the network. Anyone at this layer sits in the most tightly interconnected subgroup — each member has at least this many connections to other members.
### Selecting a person
When you select someone, the panel switches to their profile: their name and manager, every [people metric](#people-metrics) for that person, and a **Strongest connections** list — their top relationships ranked by connection strength (the score is a relative strength signal, not a percentage).
### Key People
Three ranked lists that surface the people who play notable roles in the network:
* **Most connected** — Active members with the highest Centrality across the company.
* **Critical connectors** — Active members who link otherwise separate groups. These are often the people whose departure would fragment collaboration.
* **Cross-team linkers** — Active members whose relationships reach most broadly across org-chart groups.
Each list ranks active Windmill members from the full company network.
### People table
A sortable, per-person table of network metrics for every active Windmill member in the graph. Click any column header to sort, or use **Filter People** to find someone by name.
Click any value to open a side panel that explains the metric and shows a top-10 leaderboard for it. By default the table sorts by **Strength** (highest first).
## People metrics
These metrics describe each person's role in the network. They appear in the People table, in the side-panel profile when you select someone in the graph, and in the in-app Guide.
| Metric | What it means |
| - | - |
| **Centrality** | How central someone is in the network. Connections to well-connected people count more than connections to isolated people. Works even when the network is split into separate groups. |
| **Bridge** | Fraction of shortest paths in the organization that pass through this person. Top values are usually 5–30% even in large organizations — anything above 10% marks a major structural bridge. |
| **Connections** | The number of people someone is directly connected to. |
| **Strength** | Total connection strength across someone's relationships. Higher values mean stronger overall collaboration signal. |
| **Core** | The k-core layer they belong to. Layer *k* means they're in a subgroup where everyone has at least *k* connections to other members of that subgroup. Higher values mean more embedded. |
| **Source mix** | How evenly someone's relationship signal is spread across work sources. Higher values mean less dependence on a single source. |
| **Reciprocity** | How balanced someone's total outgoing and incoming collaboration signals are. A score of 100% means the totals are equal, though not necessarily with the same people. |
| **Cross-team ratio** | Share of someone's connection strength that reaches outside their own team. Higher values mean their collaboration spans more of the org chart; low values mean it stays inside their team. |
| **Top score source** | The collaboration category (Meetings, Messages, Code reviews, and so on) that contributes the most to this person's relationship signal. |
## FAQs
Only **Workspace Admins** and **Data Analysts** — the roles with organization-wide Analytics access. Managers and individual contributors don't see Organizational Health at all. Because the network spans the entire company, there's no manager-scoped version of it.
No. Organizational Health measures *how much and how broadly* people collaborate — it's built from activity signals across your connected work tools (messages exchanged, meetings attended together, code reviewed, shared projects). It doesn't surface the contents of any message, email, or document.
Two reasons are common. First, the graph only shows relationships strong enough to clear Windmill's readability threshold — someone with only weak or sparse collaboration signal won't appear. Second, the Key People lists and People table include **active Windmill members** only. Searching for a person and seeing "Employee not in graph" means the former.
No. Unlike AI Adoption, Product Usage, and Explore, Organizational Health has no employee filter or date-range picker. It always shows the current state of your whole collaboration network, tuned automatically to surface the strongest connections.
The graph is built from your connected integrations. If the available sources do not provide enough collaboration signal, there may not be enough data to draw a meaningful network. Connect additional collaboration tools from the [Integrations page](https://app.gowindmill.com/COMPANY/config/integrations) to enrich it.
Scores refresh overnight, so recently connected data sources will start appearing after the next daily refresh — not immediately.
**Centrality** measures how central someone is — being connected to other well-connected people raises it. **Bridge** measures how much someone links otherwise-separate groups. Someone can be a strong bridge without being highly central, or highly central without being a bridge.
Centrality is designed to give useful values even in fragmented networks where not everyone is reachable from everyone else. Each separate group gets its own set of well-formed scores, based on how well-connected people are within that group, rather than dropping to zero because the groups aren't linked to each other.
# Product Usage
Source: https://help.gowindmill.com/features/analytics/product-usage
Track overall Windmill engagement, feature adoption, feedback, and Pulse responses.
The Product Usage report shows how engaged your team is with Windmill. Use it to answer rollout questions like *Are managers running 1:1s in the platform? Are people responding to Pulses? Is Windy being used?*
## What you'll see
### Summary cards
Four headline numbers across the top:
* **Active this period** — Number of users who used any Windmill feature *or* logged in during the selected date range, with the adoption rate underneath (active / scoped).
* **Feedback this period** — Total pieces of feedback submitted, including Shoutouts.
* **Pulse survey responses** — Total Pulse responses submitted during the period.
* **Multi-feature engagement** — Percentage of active users who used **2 or more** features during the period.
"Active" includes both Windmill Dashboard logins *and* user-sent messages to Windy in Slack. An employee who only ever chats with Windy in Slack still counts as active — Windmill doesn't require people to open the web app.
### Weekly active users
An area chart showing weekly active users (WAU) across the selected date range. Click any week on the chart to open a side panel listing every employee who was active that week.
### Feature adoption
A breakdown of adoption for each of Windmill's tracked features:
* **Windy** — Chatted with Windy in Slack or in-platform, including chats they started and Windy-initiated chats they replied to
* **1:1s** — Edited shared notes, responded to prep questions, or accepted or dismissed agenda suggestions
* **Feedback** — Submitted feedback through Windmill (excluding shoutouts)
* **Shoutouts** — Sent approved recognition to a colleague
* **Private notes** — Created at least one [private note](/features/private-notes) about a colleague
* **Pulse** — Completed or created a Pulse survey
* **Performance reviews** — Participated in a review cycle (drafted or submitted answers)
Each feature shows its adoption rate, a progress bar, and the number of users. Click any feature to see which users engaged with it.
### Feature adoption over time
A multi-line chart showing the adoption percentage for each feature over the selected range. Use the **Daily / Weekly / Monthly** toggle to change the chart's granularity. The default is Weekly.
### User Stats
A sortable table with one row per user in scope. Columns include:
* **Windmill Active Days** — Distinct days the employee logged into Windmill or messaged Windy
* Per-feature activity counts: Messages to Windy, 1:1 note edits, agenda topics accepted and dismissed, prep sessions responded to, feedback given, Shoutouts sent, private notes created, Pulse responses submitted, Pulses created, performance review drafts saved, and performance review answers submitted
See the [full stats reference](/data/stats) for the exact definition of every column in this table.
Click any value to drill into that user's daily trend.
Click **Export CSV** to download the table, or **Explore** to open the same stats in the custom report builder.
## Scope
Use the shared [Analytics filters and date range](/features/analytics#filtering-and-date-ranges) to change the report scope. Product Usage includes active Windmill members; archived employees and people without a member account are excluded.
## FAQs
Any of the following in the selected date range:
* Logging into the Windmill Dashboard
* Sending a message to Windy in Slack
* Any of the feature activities (1:1 note edits, feedback submitted, Pulse responses, etc.)
Even a single qualifying event in the period counts. The summary card's "or logged in" language is shorthand for this combined definition.
The **Feedback this period** summary includes both Feedback and Shoutouts. In **Feature adoption**, **Feedback** and **Shoutouts** are tracked separately. Feedback covers submissions through Windmill. Shoutouts covers approved recognition sent to colleagues.
Pulse adoption counts employees who **completed or created** a Pulse during the period. People who received a Pulse but didn't respond don't count. If you want to track response rate for a specific Pulse, look at that Pulse's report directly.
The same scoping rules as AI Adoption apply — only **active members** appear. Archived employees and people without a Windmill member account are excluded. Invite missing employees from [Members](https://app.gowindmill.com/COMPANY/config/members).
Yes. Click **Export CSV** in **User Stats** to export that table. For a custom selection of stats, use [Explore](/features/analytics/explore).
# Comments and changes
Source: https://help.gowindmill.com/features/calibrations/comments-and-changes
Discuss manager-review questions and propose calibrated ratings.
## Add comments
Facilitators and committee members can comment on visible manager-review questions and reply to comments. All calibration participants can read the conversation.
Authors can remove their own comments. Facilitators can remove any comment and resolve or reopen a conversation. Comment actions appear in History.
## Change a rating
Only a facilitator can change or restore a rating during an active calibration. Supported types include:
* Single Select, Yes/No, Rating, and NPS.
* Whole-number Scale or numeric questions with a minimum and maximum no more than 20 apart.
Text, Multi-Select, and other numeric questions are read-only, but participants can comment on them. A facilitator can add a reason for a rating change.
## Apply or recommend changes
Pending changes do not update manager reviews before calibration submission. At submission, choose one action for all changes:
* **Apply changes immediately:** Updates the manager reviews immediately. It does not share them with reviewees.
* **Send as recommendations:** Sends changes to the assigned reviewing managers. Each manager can approve or reject each change. Answers update only after approval.
The facilitator also chooses whether to keep unresolved question comments private or share them with reviewing managers. Resolved comments and calibration-only notes stay in the calibration.
The [Submit a calibration](/features/calibrations/submit#what-managers-and-reviewees-see) page explains what managers and reviewees see after submission.
## Work with other participants
Active participants can see comments and rating changes as the calibration continues. They can also use the shared stopwatch.
Discussion and History keep the record available to all participants. See [Submit a calibration](/features/calibrations/submit) for the final checks and follow-up.
# Pre-read
Source: https://help.gowindmill.com/features/calibrations/pre-read
Review the findings in a calibration pre-read, then update and send the report.
The **pre-read** is a report that helps calibration participants prepare for the discussion. Windy compares review answers and ratings to identify cases that need attention.
## Generate the report
Windmill starts a pre-read report when you create a calibration. It uses available submitted manager, self, peer, and upward answers, visible manager questions, supplemental cycle data, and rating distributions for the group.
The report identifies topics for discussion. It does not include pending rating changes or connected integration statistics. Generating it does not change ratings.
## Report findings
The report starts with up to three discussion priorities. These are the cases with the most important differences in ratings, feedback, or language. The following sections explain the findings in more detail.
A finding is a reason to examine the review and discuss the evidence. It is not a final decision about an employee or manager.
### Differences between ratings and feedback
Windy compares the available feedback about each employee:
* **Rating and written feedback:** The manager's rating does not appear to match the written review. For example, the text describes exceptional results, but the rating is **Meets expectations**.
* **Feedback from different people:** Manager, self, peer, or upward feedback gives a different account of the employee's work. For example, peers describe a major contribution that the manager does not mention.
* **Differences between rating questions:** An employee has a large difference between ratings on different questions. The questions may measure different things, so check their meaning before you change a rating.
Open the employee's packet in [Review and compare](/features/calibrations/review-and-compare). Read the full answers and check the rating labels before you decide whether a change is needed.
### Manager rating patterns
The report compares each manager's average team rating with the calibration group average. It can also identify a calibration group that has higher or lower ratings than the whole review cycle.
Use these comparisons to discuss whether managers apply the same rating standards. For example, one manager may give mostly high ratings while other managers use a wider range.
A different average does not prove that a manager's ratings are wrong. Check the team's work, the rating definitions, and the number of reviews before you draw a conclusion.
### Language that needs review
The **Linguistic Bias Scan** identifies wording that may need discussion. It compares manager feedback with peer and upward feedback where available.
| Pattern | Example of what to examine |
| - | - |
| Leadership and results compared with teamwork | One review focuses on leadership and decisions, while another describes only how helpful the employee is. |
| Effort compared with impact | A manager describes someone as hard-working, while peers describe the results that person achieved. |
| Personality descriptions | Feedback describes a person as difficult without giving examples of behavior or its effect. |
| Future potential compared with completed work | Feedback focuses on what a person might do instead of the work they completed. |
These patterns are possible discussion points. They do not establish bias. Ask for specific examples of behavior, results, and job expectations.
### Quality of manager feedback
The **Actionability Score** measures how clearly the manager's written feedback helps the employee improve. It is separate from the employee's performance rating.
Each score includes a short explanation:
| Score | Meaning |
| - | - |
| 4–5: High | Gives specific examples of behavior, explains the effect on the business, and suggests clear next actions. |
| 3: Medium | Gives general suggestions without clear examples. |
| 1–2: Low | Uses general phrases or focuses on personality traits the employee cannot change. |
For example, “Improve communication” gives little direction. “Send a status update before each handoff so the next team can prepare” gives a specific action and reason.
The report also identifies two types of development gaps:
* **Different development priorities:** The manager's feedback focuses on different areas from those the employee identified in the self review.
* **Limited guidance for high performers:** An employee has a rating at the top of the scale but an Actionability Score of three or lower.
Use these findings to ask for clearer development actions. A high performance rating does not remove the need for useful feedback.
## Use the findings in the meeting
Start with the cases identified in the report. Check that the report uses the latest available reviews.
Read the relevant review packets. Confirm the rating labels, examples, and differences before you discuss a change.
Use [calibration comments and changes](/features/calibrations/comments-and-changes) to record feedback or proposed rating changes. The report itself does not apply them.
## Select visible questions
All manager-review questions for the selected reviewees are visible by default. Reviewees can have different question sets.
A facilitator can hide questions in **Settings** while the calibration is active. If questions are available, at least one must stay visible.
Hiding a question removes it from calibration views and archives its pending rating changes.
## Use supplemental data
The report includes [supplemental data](/features/performance-reviews/supplemental-data) when available, such as job level, time in role, or sales results. These values provide context about the employee. They are read-only within the calibration.
Connected integration statistics can be used in Grid and Table, but are not included in the pre-read. Unsubmitted review answers are also excluded.
## Update the report
New submitted answers or changes to reviewees, visible questions, supplemental data, or calibration details can make the report out of date. Changes to participant roles do not.
Only a facilitator can select **Regenerate pre-read** to update the report. Facilitators and committee members can read a completed report, copy it, or download it as a PDF.
## Send the report
A facilitator sends the report manually when it is ready. There is no scheduled send time. Windmill sends the report by email only. It does not send it in Slack or in a Windy chat.
Open the calibration's pre-read and select **Send**.
In **Send pre-read**, edit the optional **Message**. It starts with default text. The limit is 2,000 characters.
Select **Send to participants**. Windmill emails all current facilitators and committee members, including you. Reviewees never get the report.
Each email has the subject **\[Cycle name]: \[Report title]**. It contains your message, a **View calibration** link, and the full report. The report is in the email body, not in an attachment. To get a PDF, use **Download PDF** in the calibration.
You can send the report again, for example after you regenerate it. Each time, all participants get a new email.
## FAQs
No. It evaluates the manager's written development feedback on a scale of one to five. Read the explanation with the score. An employee can have a high performance rating and still need clearer development guidance.
No. The report supplies topics for the calibration discussion. Record comments or rating changes in the calibration, then use the [submission process](/features/calibrations/submit) to send the agreed feedback or changes.
The report uses the labels from your review questions. Check any unexpected score against the original answer and rating definition before you use it. The Actionability Score has its own scale of one to five.
The report uses available submitted answers. Missing feedback can limit the comparisons it can make. Regenerate the report after more answers are submitted.
# Review and compare
Source: https://help.gowindmill.com/features/calibrations/review-and-compare
Review employee packets and compare calibration data.
## Choose a view
* **People:** Read one reviewee's packet, including submitted manager, self, peer, and upward answers and available supplemental data.
* **Grid:** Compare all reviewees using two dimensions.
* **Table:** Sort the reviewee list using selected columns.
* **Insights:** Compare initial and current manager ratings and see a summary of changes.
Facilitators and committee members can use these views. Reviewees and other people without calibration membership cannot open them.
## Search and filter
Search for a reviewee or filter Grid and Table by reviewee, manager, job level, review lock, rating changes, unresolved comments, or initial and current ratings.
Filters affect only the current view. They do not change the calibration's reviewee list.
## Select comparison dimensions
Use visible manager-review questions as dimensions. Other available dimensions are read-only:
* Current self and upward review rating questions.
* Questions from past cycles.
* Connected integration statistics.
* Supplemental cycle fields.
Connected and supplemental dimensions appear only when data exists for a reviewee you can access. Grid needs two different dimensions.
Only a facilitator can change a supported current manager-review rating.
## Use Discussion and History
**Discussion** groups rating changes and comment conversations by reviewee and question. **History** records changes to participants, questions, pre-reads, comments, ratings, and submission.
Facilitators and committee members see the same records. All active participants can control the shared calibration stopwatch.
# Roles and access
Source: https://help.gowindmill.com/features/calibrations/roles-and-access
Understand access for calibration participants, reviewees, managers, and cycle admins.
## Facilitator
Facilitators lead the calibration. They can:
* Open all views, the pre-read report, Discussion, and History.
* Add comments and change supported manager-review ratings.
* Manage the name, description, participants, roles, reviewees, and visible questions.
* Generate and send the pre-read, send manager nudges, submit, and archive.
These management actions are available while the calibration is active. A completed calibration is read-only, but an eligible facilitator can duplicate it.
## Committee member
Committee members can read every reviewee's data in People, Grid, Table, Insights, the pre-read, Discussion, and History. They can add comments and replies and remove their own comments.
Committee members cannot change ratings or settings, regenerate or send the pre-read, send nudges, submit, archive, or duplicate the calibration.
Their access starts when a facilitator adds them and ends when they are removed.
## Reviewee
Reviewees do not get access to the calibration or receive its pre-read report. They cannot also be facilitators or committee members in that calibration.
Applying calibration changes does not share a manager review with the reviewee.
## Other roles
A cycle admin can list calibrations and create or duplicate one. They must also be a calibration participant to open its details or use participant actions.
Managers, skip-level managers, and HR business partners do not get automatic access. They must be added as facilitators or committee members.
After submission, the assigned reviewing manager and managers above them can read recommendations and comments shared with them. Only the assigned reviewing manager can approve or reject a recommended rating change.
## Change access
Only a facilitator can change the participants and roles of an active calibration. At least one facilitator and one reviewee must remain. A facilitator can remove themselves only if another facilitator remains.
# Set up a calibration
Source: https://help.gowindmill.com/features/calibrations/set-up-a-calibration
Create a calibration and select its participants and reviewees.
## Check that the cycle is ready
A cycle admin can create a calibration while the cycle still allows changes. The cycle needs at least one active primary manager review.
That review does not need to be started, scheduled, submitted, or locked. However, calibration packets show only submitted answers.
## Create the calibration
Open the review cycle, select **Calibrations**, then **Create calibration**.
Enter a name that identifies the group or purpose.
Select at least one facilitator and one reviewee. Committee members are optional. You are selected as the default facilitator.
Windmill starts the first pre-read report after creating the calibration.
## Select reviewees
Choose employees with an active primary manager review in the cycle. A supplemental manager review cannot be used in its place.
A person cannot be both a reviewee and a facilitator or committee member in the same calibration. A facilitator can select **Manage reviewees** to change the reviewee list while the calibration is active. This makes the current pre-read report out of date.
## Select participant roles
Choose facilitator and committee-member roles when you create the calibration. Facilitators can change these roles in **Settings** while it is active.
The calibration must always have a facilitator. Removing a participant ends their access immediately. See [calibration roles and access](/features/calibrations/roles-and-access) for what each role can do.
# Submit a calibration
Source: https://help.gowindmill.com/features/calibrations/submit
Complete a calibration and apply or recommend its changes.
## Review before submission
A facilitator selects **Review and submit** to open the **Submit calibration** steps. The first step, **Review pending changes**, lets the facilitator review pending rating changes and unresolved comments, then resolve comments or leave them open. A calibration can be submitted without changes or comments.
If changes exist, choose one option under **Rating changes** for all of them: **Apply changes immediately** or **Send as recommendations**. Under **Unresolved comments**, choose **Keep comments private** or **Share comments with managers**.
Windmill compares proposed changes with current manager answers at submission and removes changes that are no longer different.
## Submit the calibration
Only a facilitator can submit an active calibration, and the cycle must still allow changes.
* **Apply changes immediately:** Updates manager answers immediately and keeps their current lock state.
* **Send as recommendations:** Keeps answers unchanged until the assigned reviewing manager accepts each change. Managers above that reviewer can read recommendations but cannot approve or reject them.
* **Share comments with managers:** Gives the reviewing manager and managers above them access to unresolved comments.
Recommendations and shared unresolved comments unlock only the manager reviews they affect. Submission makes the calibration completed and read-only.
## What managers and reviewees see
Completed calibrations cannot be reopened or edited. Participants can still read them.
| | Apply changes immediately | Send as recommendations |
| - | - | - |
| **Email to the reviewing manager** | **A calibration updated one of your manager reviews**, with the previous and updated values | **A recommended change to your manager review is waiting on you**, with the current and recommended values |
| **Manager review answers** | Updated at submission | Unchanged until the manager approves each change |
| **What the manager does** | Nothing. Select **See updated review** in the email to read the changes. | Select **Review recommendations** in the email, then approve or reject each change |
| **What the reviewee sees** | Nothing | Nothing |
### Approve or reject recommendations
The email link opens the manager review. The review has a **Calibration** tab with a count of items that need attention.
On the manager review, select **Calibration**. The panel lists items under **Needs attention** and **Completed**.
Each **Recommended change** card shows the current and recommended rating. Select **Approve** to update the answer or **Reject** to keep it.
Shared comments appear as **Comment from calibration** cards in the same tab. The question also shows a **Needs attention** marker. Resolve each comment after you act on it.
Only the assigned reviewing manager can approve or reject a recommendation. Managers above them can read it.
A manager who gets only shared comments, without rating changes, does not get an email. Tell them to check the **Calibration** tab on their manager reviews.
### Reviewees
Reviewees do not get a notification, and they cannot see the calibration, its comments, or its changes. They see the manager review only after it is [shared](/features/performance-reviews/share-reviews). Share results after managers finish their calibration follow-up.
## Export results or start another calibration
Cycle admins can export manager-review CSV data. Applied or accepted calibration results have separate manager and calibrated rating values.
A facilitator from the original calibration or a cycle admin can duplicate it while the cycle allows changes. The new calibration copies its description, active participants, reviewees, and question settings.
The duplicate starts a new pre-read. It does not copy comments, rating changes, History, or the old report.
# Feedback
Source: https://help.gowindmill.com/features/continuous-feedback
Give feedback, request feedback, and select who can see it.
Use Feedback to record observations about a colleague's work. You can give feedback with Windy in Slack or in the Windmill Dashboard.
The Feedback page is available when it is enabled for your company. If you do not see **Feedback** in the navigation, use Windy. Contact your Windmill admin for information about availability.
## Feedback types
* **Proactive feedback:** You give feedback about a colleague without waiting for a request.
* **Requested feedback:** Another member asks you to give feedback about themselves or a person in their reporting line.
## Open the Feedback page
Open [**Feedback**](https://app.gowindmill.com/COMPANY/feedback) in the Windmill Dashboard navigation.
| Tab | Use |
| - | - |
| **To-dos** | Find requests that need your response. This is the default tab. |
| **Team feed** | Read feedback that you have permission to see. Use search and filters to find specific entries. |
| **Your feedback** | Find feedback you gave and feedback about you that you have permission to see. Use **Given** and **Received** to filter the list. |
| **Requests** | Find incoming requests and outgoing requests that are scheduled or awaiting a response. |
Home also shows feedback to-dos. Select a feedback to-do to open the **To-dos** tab.
## Leave feedback
You can give feedback about another active Windmill member. You cannot give feedback about yourself.
### Use the Feedback page
Open **Feedback** and select **Leave feedback**.
Select the member whose work you want to describe.
Describe the work and its effect. Include specific examples.
Select an allowed audience, then select **Submit feedback**. Your company controls the available audience options.
You can also select **Give feedback** from global search or a person's search actions.
### Use Windy
Start a conversation with Windy in Slack or in the Windmill Dashboard.
"@Windy, I want to give feedback about \[person's name]."
Windy helps you prepare the feedback. You can give feedback about multiple people in one conversation.
When audience selection is available, Windy asks you to select an allowed audience. If only one option is allowed, Windy uses that option. Windy then shows the feedback and its audience for your final confirmation before saving it.
## Request feedback
You can request feedback about yourself. Managers can also request feedback about active members in their reporting line, including skip-level reports.
### Use the Feedback page
Open **Feedback** and select **Request feedback**.
Leave **Request about** set to **Yourself**, or select a person in your reporting line.
In **Request from**, select one or more active members. You can select up to 100 members. You cannot select yourself or the person the request is about.
You can add a topic or instructions. This field is optional. Select **Send request**.
Windmill creates a separate request for each selected member. The request uses the default audience. The person who responds can select an allowed audience before submitting feedback.
### Use Windy
"@Windy, request feedback about me from \[person's name] about \[topic]."
"@Windy, request feedback about \[report's name] from \[person's name]."
You can request feedback without specifying a topic.
### Request delivery
With the Feedback page enabled, Windmill schedules requests instead of sending them immediately. The current schedule has a minimum delay of 30 minutes. Requests are scheduled for Monday through Friday, between 9 AM and 5 PM. Windmill uses the time zone of the person asked to give feedback.
An outgoing request can show **Request scheduled**. Move the pointer over this label to see the scheduled time. After Windy contacts the provider, the request is awaiting a response.
Windmill does not guarantee a completed response. A provider can decline the request.
## Respond to requests
Open **Feedback > To-dos**, or select a feedback to-do on Home.
Read who requested the feedback, who it is about, and any supplied instructions.
Write your response. Select an allowed audience if you need to change the selection.
Select **Submit feedback**. The request is removed from your to-dos.
To decline a request, select **Decline**. You can add a reason for the requester before selecting **Decline request**.
You can also reply to Windy's request in its Slack thread. A new top-level message does not answer the earlier request.
### Find or cancel requests with Windy
"@Windy, which feedback requests need my response?"
"@Windy, which feedback requests have I sent?"
You can ask Windy to cancel a pending request that you created. You cannot cancel a request after feedback collection starts. The Feedback page does not have a cancellation control.
## Feedback visibility
Your company controls the default audience and the options available when you give feedback. When audience selection is available, these options can include:
| Audience | Who can read the feedback |
| - | - |
| **Recipient only** | The person the feedback is about. |
| **Manager only** | That person's direct manager. |
| **Manager hierarchy** | That person's direct and indirect managers. |
| **Recipient and managers** | That person and their direct and indirect managers. |
| **Public** | Everyone in the company. |
The author also retains access to feedback they gave. Admins and HR Admins can read feedback about other people through their feedback management access. That access does not give them private feedback about themselves.
If the recipient has no manager, the recipient can read **Manager only** and **Manager hierarchy** feedback about themselves.
Audience and author identity are separate controls. Some feedback can hide the author's identity even when you can read the feedback.
Without the Feedback page enabled, feedback follows the existing company settings. Authors cannot select an audience during creation. Do not assume that all feedback has the same audience.
### Feedback in other features
Feedback can appear on employee profiles, in [Catch Me Up](/features/1-on-1s/catch-me-up), and in review writing support. These features use feedback that the viewer has permission to see.
Private writing suggestions stay private unless you add that content to a review answer. The answer then follows the [performance review visibility rules](/features/performance-reviews/visibility).
A [Shoutout](/features/shoutouts) makes its linked feedback public, regardless of the earlier audience selection. Windy asks for confirmation before creating a public Shoutout.
## Edit or delete feedback
The Feedback page does not currently provide edit or delete controls. You can ask Windy or a connected [MCP tool](/features/mcp) to edit or delete feedback that you authored.
These tools currently allow changes within one week of submission. Feedback linked to a delivered Shoutout cannot be edited or deleted.
Admins and HR Admins can configure an edit time limit in [Feedback settings](/company-settings/feedback). The current Windy and MCP edit and delete tools still use the limit of one week.
## FAQs
Feedback appears only when its audience permits you to read it. **Manager only** and **Manager hierarchy** usually exclude the recipient. The author retains access, and a recipient without a manager has access under these options.
The request form uses the default audience. The person who gives the response can select an allowed audience before submission.
The Dashboard request lists show requests that still need action. A request leaves these lists after a response, decline, or cancellation. Use **Your feedback** or **Team feed** to find submitted feedback that you have permission to see.
# MCP
Source: https://help.gowindmill.com/features/mcp
Connect Claude Web, Claude Desktop, Claude Code, Codex, Cursor, and other AI tools to Windmill through the MCP server to query team data and run actions from your AI assistant.
Windmill's MCP server lets you interact with Windmill directly from AI tools like Claude Web, Claude Desktop, Claude Code, and Codex. Ask questions about your team, manage 1:1 agendas, check pulse results, look up feedback, and more — all from within your AI assistant.
```
https://mcp.gowindmill.com/mcp
```
MCP access uses your individual Windmill account. Every action exposed through MCP respects your Windmill permissions, but MCP doesn't expose every action available in the Windmill Dashboard.
Each person connects individually in their own AI tool — follow the steps below for your tool of choice.
## Connect with Claude Web or Desktop
Use Windmill's official Claude connector for one-click installation:
[Add Windmill to Claude](https://claude.ai/directory/windmill-hr)
Follow the prompts in Claude to add the connector, then sign in with your Windmill account. The connector will be available in both Claude Web and Claude Desktop.
## Connect with Claude Code
Run this command in your terminal:
```bash theme={null}
claude mcp add --transport http windmill https://mcp.gowindmill.com/mcp
```
Or add this to your MCP configuration file:
```json theme={null}
{
"windmill": {
"type": "http",
"url": "https://mcp.gowindmill.com/mcp"
}
}
```
Then run `/mcp` in a Claude Code session, select `windmill`, and authenticate.
## Connect with Codex
Run these commands in your terminal:
```bash theme={null}
codex mcp add windmill --url https://mcp.gowindmill.com/mcp
```
Then authenticate:
```bash theme={null}
codex mcp login windmill
```
## Connect with Cursor
Add Windmill to your global Cursor MCP configuration at `~/.cursor/mcp.json`:
```json theme={null}
{
"mcpServers": {
"windmill": {
"url": "https://mcp.gowindmill.com/mcp"
}
}
}
```
Save the file, then complete the Windmill OAuth sign-in when Cursor prompts you.
## What you can do
Once connected, you can ask your AI assistant questions and give it instructions that use your Windmill data.
| Area | Read | Change | Limits |
| - | - | - | - |
| Employees and org chart | Employees, reporting lines, groups, counts, and profile information | Update supported employee information | — |
| 1:1s | Series, upcoming events, agendas, and notes | Create 1:1s; update agendas and notes; confirm or remove events; remove series | — |
| Pulse surveys | Pulses, schedules, participants, runs, and responses | Create, test, update, and send Pulses; manage owners; save responses; send Pulse nudges | — |
| Performance reviews | Cycles, participants, reviews, todos, cycle-admin progress, and manager-review context | None | Drafting or submitting reviews and sending performance-review nudges aren't available through the public MCP |
| Feedback and shoutouts | Feedback, visibility settings, shoutout settings, and available feedback requests | Create, edit, or delete your feedback; give shoutouts; create or cancel eligible feedback requests | Feedback request tools require the Feedback page to be enabled. Only the requester can cancel a pending request. |
| Workspace members | Members and member counts | Invite members | Removing members isn't available through the public MCP |
| Private notes | Your private notes | Create, update, or delete your private notes | You can access only your own private notes |
| Stats and collaborators | Available stats, employee activity, data counts, and top collaborators | None | — |
See [Ask Windy about results](/features/pulse-surveys/ask-windy-about-results) and [Responses, runs, and exports](/features/pulse-surveys/responses-runs-and-exports) for more on analyzing and exporting Pulse results.
### Feedback actions
When the Feedback page is enabled, MCP can create scheduled feedback requests and find incoming or outgoing requests. You can request feedback about yourself or a person in your reporting line. You can cancel a request you created only while it is pending.
Company settings control the audiences available when you create feedback. The request tools use the default audience. The current edit and delete tools permit changes to your own feedback within one week of submission. Feedback linked to a delivered Shoutout cannot be edited or deleted.
See [Feedback](/features/continuous-feedback) for the audience and request rules.
## Authentication and permissions
Windmill's MCP server uses OAuth for authentication. The first time your AI tool calls a Windmill tool, you'll be redirected to your browser to log in with your Windmill account.
Once authenticated, every action exposed through MCP runs through your Windmill account and respects its permissions. If you can't see data in the Windmill Dashboard, you can't access it through MCP. Having access to a Dashboard action doesn't mean MCP exposes an equivalent action.
MCP acts as the signed-in user. Windmill role-based access, org-chart scoping, connected-source permissions, and feature-specific privacy rules all apply. For example, if an Engineering manager asks an AI tool for People Team performance review results they can't see in the Windmill Dashboard, the MCP server will not return that unauthorized data. Performance review visibility remains limited to the management chain and cycle admins.
Data returned by Windmill passes through the connected AI tool's model so the tool can generate an answer. Use AI tools that meet your company's privacy and security requirements.
Once you authorize the MCP server, the connection stays authenticated indefinitely — your AI tool refreshes its credentials silently in the background. There's no scheduled re-authentication, unlike the Windmill Dashboard's seven-day login window. You'll only need to re-authenticate if you remove the MCP server, an admin revokes the connector, or your session is invalidated.
## Advanced: use the Windmill plugin
On paid Claude plans, the Windmill plugin bundles the MCP connection with additional skills for managing 1:1s, creating pulses, and collecting feedback. Most users don't need the plugin — the standard MCP connection above is enough.
**Claude Desktop**
1. In Claude or Claude Desktop, go to **Customize** → **Plugins**.
2. Under **Personal plugins**, click **+** → **Add marketplace**, then add `windmill-dev/windmill-plugin` from a repository.
3. Find the Windmill plugin under **Personal**, click it, and click **Install**.
4. Click **Manage** → **Connectors** → **Connect** and authenticate in your browser.
**Claude Code**
1. In a Claude Code session, run `/plugin marketplace add windmill-dev/windmill-plugin`.
2. Run `/plugin`, tab to **Marketplaces**, select **Windmill**, install the plugin, then run `/reload-plugins`.
3. Run `/mcp`, select `plugin:windmill:windmill`, and authenticate.
## FAQs
Each person adds the connector and authenticates with their own Windmill account.
Every action exposed through MCP uses your Windmill account and respects its permissions. Role-based access, org-chart scoping, connected-source permissions, and feature-specific privacy rules all apply. MCP doesn't expose every action available in the Windmill Dashboard.
When you ask a question, your AI tool calls Windmill's MCP server to fetch the relevant data, then uses that data to answer your question. The data passes through your AI tool's model to generate a response. Windmill's MCP server itself does not send data to any AI model — it only responds to requests from your connected tool.
Windmill's MCP server uses Streamable HTTP with OAuth authentication. Any compatible AI tool can connect using the URL `https://mcp.gowindmill.com/mcp`. The setup steps above cover Claude Web and Desktop, Claude Code, Codex, and Cursor.
Remove the Windmill MCP server from your AI tool's configuration. In Claude Code, run `claude mcp remove windmill`. In Claude Web or Desktop, remove the connector from your settings.
There's no time-based expiry on an MCP connection. The OAuth refresh token rotates automatically in the background, so your AI tool stays connected indefinitely. You'll only need to re-authenticate if you remove and re-add the server, revoke the connector, or are signed out by an admin. This differs from the Windmill Dashboard, where login sessions expire after about seven days.
Try removing and re-adding the MCP server, then authenticate again. Make sure you're logging in with the same account you use to access the Windmill Dashboard.
# Account admins and cycle admins
Source: https://help.gowindmill.com/features/performance-reviews/account-and-cycle-admins
Understand account admin and cycle admin access.
## Create a cycle
Workspace **Admins** and **HR Admins** can create review cycles. The creator becomes the first cycle admin.
These workspace roles do not automatically give full access to existing cycles. Access also needs a cycle-admin role or another relationship to that cycle.
## Manage a cycle
Cycle admins can read packets and progress across their cycle, manage stages and sharing, and create packet PDF exports. Their access applies only to that cycle. The [Cycle admins](/features/performance-reviews/cycle-administration#what-cycle-admins-can-do) page lists each action and the role it needs.
They can also create calibrations. To open calibration details and reviewee packets, they must be participants in that calibration.
## Protect your own review data
Cycle-admin access does not let you read private feedback about yourself. Your internal packet removes the manager review and hides peer and upward questions and answers. The same limits apply to packet PDFs and calibration packets. Insights also excludes answers about you.
After your manager review is shared, you can see its employee-visible questions through the shared packet.
## Add or remove admins
An active cycle admin can add another active workspace member from the same company. The cycle must keep at least one active cycle admin.
You cannot remove the creator or yourself through the cycle-admin settings. Removing another admin ends their ownership access without deleting the cycle or its review data.
# Add or remove participants
Source: https://help.gowindmill.com/features/performance-reviews/add-or-remove-participants
Change cycle participation after launch.
## Add participants after launch
Select **Actions > Add participant** to add one or more active workspace members. People who are already in the cycle show **Already in this cycle**. Set their review period, saved manager, and applicable self, upward, and manager stages. This flow does not add peer feedback work.
If the stage has not started, the new work stays scheduled. If it has started and is open, the work starts immediately.
Normal stage reminders and deadline digests apply. Adding a participant does not guarantee a separate email.
## Add someone after a stage is complete
A completed stage or past due date blocks new work. Extend the due date into the future, then add the required assignments.
New assignments appear in progress and Insights. Add the person to a calibration separately if needed.
## Remove a participant
Open **Participants**, select the person, and select **Remove from cycle**. Check the effect before confirming.
Removal archives reviews about that person, including related sessions, chats, manager-review sharing, and calibration links. Archived chats stop receiving reminders and nudges. Reviews the person writes about others remain active.
## Remove someone after submission
You can remove someone even when draft or submitted answers exist. Their reviews are archived rather than deleted. Removal also takes them out of the active participant list, Insights, sharing, and calibration lists.
Adding the person and the same assignments again restores previous answers and manager-review sharing. It does not restore calibration membership.
## Check participant coverage
Use **Participants** to compare the participant list, saved managers, stages, and progress. Use each stage's **To-dos** to find missing or incomplete work.
Check calibration lists separately. Joining a cycle does not automatically add someone to a calibration.
# AutoDraft
Source: https://help.gowindmill.com/features/performance-reviews/autodraft
Prepare a first draft from review context, selected observations, and your notes.
## AutoDraft overview
AutoDraft helps you prepare a first draft of a self, peer, upward, or manager review. Windy uses the review questions, available context, selected observations, and material you add.
An observation is a point about the work that can support an answer. You select the observations to use. You can add examples that Windmill does not have.
AutoDraft saves editable answers. It does not submit the review. Check the draft and make corrections before submission.
## Prepare a draft
Open your review in Windmill. Select **Begin AutoDraft** on the start screen or the review page. After you start a review, select **AutoDraft** at the top of the page.
If you already entered text, Windmill warns that AutoDraft will replace your answers. Select **Continue to AutoDraft** to proceed or **Keep my answers** to cancel. Earlier answers remain in answer history.
Read the context for the review period. Add written notes, record a voice note, or add a document. Include missing examples and explain points you agree or disagree with.
If you record a voice note, check the transcript and correct errors before you draft the review.
Read each text question and select the observations you agree with. Check source references where available. Add your own observations when needed. You do not need to select an observation that does not apply.
On **How it reads**, select the available voice and length options. These options help Windy use the writing style you want. Also choose how Windy uses your observations. See [Supporting observations](#supporting-observations).
Select **Draft review**. When the draft is ready, check each answer. Correct facts and add missing details. Complete ratings and other answer choices yourself before you submit.
## Supporting observations
On **How it reads**, **Supporting observations** controls how much Windy adds from the observations you selected. Your judgments, priorities, and instructions stay the same with both options.
| Option | What Windy does |
| - | - |
| **Use where needed** (default) | Uses observations to understand your notes and fill gaps. If you left a question empty or named only a topic, Windy can use observations to write the answer. It does not add other facts or examples. |
| **Add relevant supporting detail** | Also adds evidence from observations to support points you already made. Windy adds only details that clarify a point, explain why it matters, or give a useful example. It does not list all of the work or add new recommendations. |
Start with **Use where needed** when your notes already say what you want. Choose **Add relevant supporting detail** when your notes are short and you want more examples in the review.
## Available questions and sources
AutoDraft drafts answers to text questions only. Complete ratings and other answer choices yourself. AutoDraft is not shown when there are no text questions.
Sources depend on the review type and your access. Manager reviews can use submitted self, peer, and upward feedback. Other reviews use the context available for that assignment. See [Windy and review context](/features/performance-reviews/windy-and-review-context).
If Windy cannot find useful observations, add your own examples. If observations fail to load, use **Try again**. Where available, **Regenerate observations** asks Windy to prepare observations again.
## Refine the draft
Use [Windy chat](/features/performance-reviews/windy-chat) to discuss the draft or [fine-tune the review](/features/performance-reviews/fine-tune-a-review) to change specific text.
To update a submitted review, submit again after you finish your changes. Saving a new draft does not replace the submitted answers.
# Change dates and questions
Source: https://help.gowindmill.com/features/performance-reviews/change-an-active-cycle
Change cycle dates and questions before or after responses start.
## Change dates before a stage starts
A cycle admin can change a stage's start time and due date while the cycle is active. Moving the start time moves pending work and the due date by the same amount.
You can set a future due date for the whole stage or selected assignments. Changes to one stage do not move another stage.
## Change dates after a stage starts
A schedule change moves only work without an active chat. Started chats keep their existing schedule and due date.
To update active deadlines, change the stage due date or set a different due date for selected assignments. Extend a completed stage to a future date before adding or reassigning late work.
Date changes keep existing drafts and submitted answers.
## Edit questions before review work starts
Before review sessions exist, cycle admins can add, remove, copy, reorder, or change questions. This includes the question type, required setting, and answer choices.
Peer nominations do not close question editing. The limits begin when peer feedback collection creates review sessions.
## Edit questions after review work starts
You can still change wording, question order, and Text answer limits. You cannot add or remove questions, change answer choices or question types, or make an optional question required.
Accepted changes also update existing drafts, submitted answers, calibration references, and shared manager-review packets.
# Run concurrent cycles
Source: https://help.gowindmill.com/features/performance-reviews/concurrent-cycles
Manage employees, context, reminders, and assignments across concurrent cycles.
## Include someone in several cycles
An employee can have work in more than one active cycle. Each cycle keeps its own participants, stages, assignments, questions, and shared manager reviews.
Completing a review in one cycle does not complete or change work in another.
## Keep review data separate
Each cycle uses its own review period and context. Drafts, submitted answers, packets, Insights, and calibrations belong to the cycle and stage that created them.
Each cycle also saves its own participants and managers. The same person can have different assignments in different cycles.
## Manage tasks and reminders
A person's task list can include complete and incomplete work from all active cycles. Each cycle uses its own review chats and eligible work for reminders, nudges, and deadline digests.
People can receive separate tasks and messages when schedules overlap.
## Resolve conflicting dates or assignments
Windmill does not combine assignments across cycles. A cycle admin must change dates, participants, and supported manager or upward assignments in each cycle separately.
Check the cycle name, stage, reviewee, and due date before changing or nudging overlapping work.
# Configure a review cycle
Source: https://help.gowindmill.com/features/performance-reviews/configure-a-cycle
Set the cycle details, stages, questions, peer nominations, and participants.
## Set the cycle details
The first setup step, **Select cycle details**, has these settings:
* **Name and description:** Give the cycle a clear name. Add a description when participants need more context.
* **Review period:** Choose the period of work that people should review. The default is the previous six months.
* **Cycle type:** Select **Official cycle** to run reviews with your company. Windy uses the results in 1:1s, later conversations, and future review context. Select **Test cycle** to check your setup. Windy does not use test results. Learn more about [test cycles](/features/performance-reviews/test-cycles).
* **Deadline digest emails:** Choose whether Windmill sends a weekday email about work that is overdue or due soon.
## Add stages and schedules
* **Stage type:** Add self, upward, peer, or manager review stages. A cycle needs at least one stage.
* **Number of stages:** Select **Add another** to add more self, upward, or peer stages. You can add only one manager stage. Each stage can have its own name and questions.
* **Schedule:** Set a start date and time for each stage. Select **Set a deadline** to add an optional due date. Stages can overlap.
* **Time zone:** Use one time zone for everyone or each employee's local time zone.
* **Peer dates:** A peer stage has separate dates for nominations and feedback. Select **Skip peer nomination chats** to collect nominations in Windmill without a Windy chat.
Learn more about [review stages and schedules](/features/performance-reviews/review-stages-and-schedule).
## Add questions
Each stage has its own setup step for its questions.
* **Question type:** Choose Text, Single Select, Multi-Select, Yes/No, Scale, eNPS, or Rating.
* **Question details:** Add a title, description, help text, and required setting.
* **Answer settings:** Configure choices, limits, scales, labels, or text-answer guidance based on the question type.
* **Employee visibility:** On manager-review questions, choose **Visible to employee** for the questions and answers the employee can see after sharing.
* **Sharing:** On the manager review stage, choose **HR enables sharing** or **Managers share directly with their direct reports**. You cannot change this choice after you create the cycle. Use **HR enables sharing** if you plan to calibrate. Learn more about [sharing reviews](/features/performance-reviews/share-reviews).
Learn more about [questions and rating scales](/features/performance-reviews/questions-and-rating-scales).
## Set up peer nominations
If the cycle has a peer feedback stage, the **Peer nomination settings** step follows the question steps. Choose who can add nominations, whether nominations need approval, the nomination and reviewer workload limits, and who can revoke or see nominations. Learn more about [peer nomination settings](/features/performance-reviews/peer-nominations).
## Choose people and assignments
* **Reviewees:** In **Select reviewees**, select the employees who will receive reviews. You can search, filter, and select people in bulk.
* **Stage participation:** In **Review assignments**, choose which stages apply to each reviewee.
* **Review period overrides:** Set a different review period for a specific reviewee when needed.
* **Managers:** Start with each reviewee's current manager or assign a different active workspace member.
* **Upward reviewers:** Start with active direct reports or choose other active workspace members.
* **Peer reviewers:** Reviewees, managers, or cycle admins nominate peers based on the peer nomination settings.
Learn more about [selecting reviewees](/features/performance-reviews/select-cycle-participants) and [review assignments](/features/performance-reviews/participants-and-assignments).
## Review and create the cycle
The **Review & create** step shows each stage, its participants, and its schedule. Select **Copy All Assignments** to copy the stage assignments to your clipboard. Fix any missing work, missing manager, invalid date, or archived workspace member before you create the cycle.
**Create cycle** creates an active cycle. There is no separate launch step. Each stage starts at its scheduled time.
Windmill saves the reviewees, managers, and assignments when you create the cycle. Later HRIS or org chart changes do not update this saved cycle data. Some question settings also become locked after review work starts.
After creation, cycle admins can change eligible dates, people, and assignments. Learn more about [managing an active cycle](/features/performance-reviews/manage-an-active-cycle).
## Change settings after you create the cycle
Open **Configure cycle > Settings** to change these settings:
* **Cycle type:** Change between **Official cycle** and **Test cycle**.
* **Cycle admins:** The person who creates the cycle becomes its first cycle admin. Select **Edit** next to **Cycle admins** to add more. Learn more about [cycle admins](/features/performance-reviews/cycle-administration).
* **Deadline digest emails:** Turn the weekday digest on or off.
Windy sends review work when each stage opens and can remind people about incomplete work. Learn more about [notifications and deadlines](/features/performance-reviews/notifications-and-deadlines).
## Recommended setup
* **Test first:** Run a [test cycle](/features/performance-reviews/test-cycles) with a small group before your first official cycle. This lets you see the messages and review pages that people will get.
* **Set deadlines:** Add a deadline to each stage. Windy automatically reminds people with incomplete work only when a stage has a deadline. Learn more about [notifications and deadlines](/features/performance-reviews/notifications-and-deadlines).
* **Keep HR in control of sharing if you calibrate:** Use **HR enables sharing** so that managers cannot share results before calibration changes are final. Use **Managers share directly** only if you do not plan to calibrate.
* **Limit reviewer workload:** Set **Requests before approval is required** so that one person does not get too many peer review requests. Windmill suggests 10 requests for each reviewer.
## Reuse a cycle setup
Duplicate a cycle to create a new cycle with the same basic setup. The duplicate copies the cycle details, stages, questions, visibility, and sharing settings. It does not copy answers.
Set a new review period, schedule, participant list, and assignments before you create the duplicate. To restart one review inside the same cycle, use a review reset instead. Learn more about [resets and locks](/features/performance-reviews/reopen-reviews-and-locks).
# Cycle admins
Source: https://help.gowindmill.com/features/performance-reviews/cycle-administration
Assign cycle admins and understand their responsibilities and access.
## Cycle management access
Admins and HR Admins can create review cycles. The person who creates a cycle becomes its first cycle admin.
Cycle-admin access applies to one cycle. An Admin or HR Admin does not automatically get management access to every cycle. They must also be a cycle admin for the cycle they want to manage.
## Add or remove cycle admins
A cycle admin can add any active workspace member as another cycle admin. Add more than one admin when several people need to manage the cycle.
The original creator stays marked as **Creator** and cannot be removed. A cycle admin also cannot remove themselves. They can remove another cycle admin who is not the creator. Removing an admin does not change the cycle or its review data.
## What cycle admins can do
Cycle admins can change a cycle's review work and results. Give this role only to people who need it.
Two roles control access. The **Admin** and **HR Admin** roles are account roles. The **cycle admin** role applies to one cycle only.
| Action | Admin or HR Admin who is not a cycle admin | Cycle admin |
| - | :-: | :-: |
| Create a new cycle | ✓ | Only with the Admin or HR Admin role |
| Open and monitor an existing cycle | | ✓ |
| Change stages and questions | | Only with the Admin or HR Admin role |
| Change cycle settings, such as the name, cycle type, and deadline digest | | ✓ |
| Add, remove, or reassign review work, and send nudges | | ✓ |
| Add or remove other cycle admins | | ✓ |
| Read review packets across the cycle | | ✓ |
| Enable sharing, share results, or revoke access | | ✓ |
| Create a calibration | | ✓ |
| Open a calibration | | Only when added to that calibration |
| Delete the cycle | | ✓ |
An Admin or HR Admin who is not a cycle admin cannot open or manage the cycle. To manage it, a current cycle admin must add them.
## Limits on cycle admins
* **Feedback about themselves:** If a cycle admin is also a reviewee, Windmill hides the peer, upward, and manager feedback about them from their admin view. Their self review is not hidden.
* **Calibrations:** Cycle-admin access does not include calibration access. Add the person to a calibration when they need to see or manage it.
* **Deleted cycles:** When a cycle admin deletes a cycle, Windmill deletes all its reviews, progress, and calibrations. You cannot undo this.
# Cycle and stage insights
Source: https://help.gowindmill.com/features/performance-reviews/cycle-and-stage-insights
Open cycle or stage Insights, filter employees, and read participation and question results.
Use cycle Insights to move between stages. Use a stage's Insights tab when you want to focus on that stage.
## Open cycle Insights
Go to [Review Cycles](https://app.gowindmill.com/COMPANY/performance) and open the cycle.
As a cycle admin, open **Configure cycle > Insights**. Managers with assigned manager reviews can use the cycle's **Insights** tab.
Use the stage selector to choose a self, peer, upward, or manager review stage. The manager stage is selected first when one exists.
Each stage has its own questions and results. If the cycle has several stages of the same type, select the stage you want to analyze.
## Open one stage's Insights
Open the cycle and select **Configure cycle**.
Select the self, peer, upward, or manager review stage you want to analyze.
Select the stage's **Insights** tab. The results are limited to that stage, so there is no cycle stage selector.
Peer nomination stages do not have question Insights. Open the peer feedback stage to analyze submitted peer answers.
## Filter the employees
Use filters for **Group**, **Job title**, **Manager**, **Start date**, or **Tenure** to narrow the reviewees. The participation totals, charts, response details, and text summaries use the selected stage and filters.
Filters use the cycle's saved reviewee list and reporting hierarchy. A later org chart change does not move employees into a different cycle hierarchy.
Cycle admins can analyze cycle results. Managers can analyze employees below them in the hierarchy saved for the cycle. They cannot use a filter to include themselves or employees outside that hierarchy.
## Read participation totals
| Total | Meaning |
| - | - |
| **Employees reviewed** | Different employees with at least one answer in the selected stage. |
| **Reviews submitted** | Submitted reviews. Peer and upward stages count each reviewer's submission. |
| **Completion rate** | Submitted reviews divided by expected reviews for the stage and filters. |
These totals describe participation. To find individual incomplete tasks or send reminders, use [Track progress and notifications](/features/performance-reviews/track-progress-and-notifications).
## Read question results
Below the totals, each question has a result card. Select a chart group or response count to examine the available answers. Use **Generate summary** for eligible text questions, or **Generate all** to generate missing summaries together.
See [Charts and text summaries](/features/performance-reviews/insight-charts-and-themes) for chart types, response thresholds, and target curves.
## Check results as work continues
Insights is available during and after the cycle. Draft answers do not appear as submitted results. A stage without submissions shows **No responses yet**.
When filters remove all submissions, broaden the filters or choose another stage. Manager results use the latest effective submitted answers, including applied or accepted calibration changes.
# Drafts, submissions, and missed deadlines
Source: https://help.gowindmill.com/features/performance-reviews/drafts-submissions-and-deadlines
Manage saved drafts, resubmissions, resets, and overdue reviews.
## Move between Windy and Windmill
Self, peer, and upward reviews can start in Slack or on the review page. Manager reviews use the Windmill review page, which includes Windy chat.
Both use the same review record. An open review page refreshes when an answer changes through another review screen or chat.
## Save draft answers
Windmill saves edited answers as drafts. Saving an answered draft marks a self, peer, or upward review as in progress. Windy confirms a saved draft only after the save succeeds.
Before submitting, answer all required questions and keep text answers within the configured word limits.
## Change a submitted review
You can edit a submitted review while it remains open for changes. Draft edits do not replace submitted answers until you select **Resubmit review**.
A cycle-admin lock makes a manager review read-only. Cycle completion makes all reviews read-only. **Restart Review** in **Review actions** clears your saved answers.
## Submit after a deadline
Deadlines are soft while the cycle is active. An incomplete review shows **Past the due date**, but you can still submit it. Late submissions are included in the cycle.
Cycle completion, a manager-review lock, or removal of your assignment can prevent further changes.
# Edit or undo shared results
Source: https://help.gowindmill.com/features/performance-reviews/edit-shared-reviews
Edit shared reviews, update packets, or undo sharing.
## Edit a shared review
If the manager review is locked, a cycle admin unlocks it.
The assigned manager edits the review on the normal review page and submits it again.
A cycle admin locks the review again to stop further edits.
The packet can stay shared during editing. Complete changes before the cycle is completed or archived. After that, you cannot edit, unlock, revoke access, or share.
## Update the employee's packet
Draft edits do not change the packet. After the manager submits, the employee sees the latest effective submitted answers the next time they open it.
Windmill does not automatically notify the employee about an update.
## Undo sharing
To undo sharing, a cycle admin selects **Revoke Access** for a packet with the status **Sharing enabled** or **Shared**. This immediately removes employee access. Windmill keeps the review, questions, and sharing history. The employee does not get a notification.
The packet's next status depends on the sharing model:
* **Managers share directly:** Returns to enabled. The assigned manager and managers above the employee keep access, and the manager can share it again.
* **HR enables sharing:** Returns to pending. Those managers lose packet access unless they are also cycle admins.
Cycle admins keep access in both cases.
## Share the corrected packet
Share the packet again when corrections are complete. Windmill sends a new Slack notification.
Employees receive notifications when a packet is shared or shared again. They do not receive automatic notifications for edits or revoked access.
# Export review data
Source: https://help.gowindmill.com/features/performance-reviews/exports
Export review packets as PDF files, review answers as a CSV file, final ratings, and calibration results.
## Choose an export format
Cycle admins can export a cycle in two formats:
* **PDF ZIP:** Creates a ZIP file with one PDF review packet for each selected employee. Windmill emails you when the file is ready.
* **CSV:** Downloads the answers for one review stage to your browser as a spreadsheet.
Managers can select **Export** on the **My Team** review page to download CSV data for their team.
Exports are available for active, paused, and completed cycles. They are not available for archived cycles.
## Export review PDFs
From [Performance Reviews](https://app.gowindmill.com/COMPANY/performance), open the cycle. Select **Admin > Export**.
Select **PDF ZIP**, then select **Next**.
Select one or more enabled manager, self, peer, or upward stages, and the questions to include.
Windmill selects all available stages and all employee-visible questions by default. Questions hidden from employees are not selected by default.
Select all employees in the cycle, filter by manager or group, or select specific employees.
Review your selections, then select **Start export**. Windmill emails you when the file is ready.
Select **Download export** in the email.
Only the cycle admin who started the export can use the link, and they must still be a cycle admin. **The link is valid for 48 hours.**
Exports can contain confidential feedback. Check the files before you share them, and share them only with people who need access.
## PDF packet contents
Each PDF contains only the completed reviews that you selected. Draft and unsubmitted reviews are not included. For a complete record, export after all reviews and [calibration](/features/calibrations) are complete.
The PDF shows the review period, generation date, reviewer identity where visible, selected questions, and submitted answers. It marks reviews as completed but does not show submission times.
If you include yourself in an export, your packet includes your self review and any manager-review content that was shared with you. It does not include peer or upward feedback about you.
The ZIP file also contains `manifest.csv`. If the export is incomplete, use this file to find the PDF files that Windmill could not create. Start a new export for those employees or contact [support@gowindmill.com](mailto:support@gowindmill.com).
## Export a review CSV
From [Performance Reviews](https://app.gowindmill.com/COMPANY/performance), open the cycle. Select **Admin > Export**.
Select **CSV**, then select **Next**.
Select one review stage and the questions to include. To export ratings, select the stage and question that contain the rating.
Select all employees in the cycle, filter by manager or group, or select specific employees.
Review your selections, then select **Start export**. The file downloads to your browser.
The CSV has one row for each review assignment, including its status and submission time. An employee can therefore have several peer or upward rows.
## Export final ratings
Include the manager stage and rating questions in a **PDF ZIP** export. The PDF shows effective submitted answers. Where calibration changed an answer, it shows separate **Manager Rating** and **Calibrated Rating** values.
Recommended values become final only after the assigned manager accepts them.
## Export through the API
Use the [packet export API](/api-reference/performance-reviews/export-cycle-packets) with an API key belonging to a cycle admin. It returns one packet per included reviewee and can filter the cycle's saved reviewee list.
The response includes stage status, dates, completion totals, questions, and visibility settings. Review data includes reviewers, submission status, submitted answers, and answer submission times. Manager and self reviews also include a review submission time.
* **submittedOnly: false:** Includes incomplete review records with null submitted answers. Draft answer content is never included.
* **submittedOnly: true:** Omits incomplete reviews. Stage completion totals stay the same.
The API supports active, paused, and completed cycles. It rejects archived cycles.
## Export calibration results
Applied changes and accepted recommendations appear as effective manager answers in PDF and API exports.
PDFs show both the original manager value and calibrated value. The packet API returns the effective answer without a separate original manager value.
These exports do not include calibration comments, calibration discussions, review-sharing comments, or sharing history.
# Fine-tune a review
Source: https://help.gowindmill.com/features/performance-reviews/fine-tune-a-review
Improve existing answers with manual edits, quick edits, and Windy chat.
## Choose how to change an answer
You can refine an answer that you wrote manually or prepared with AutoDraft or Windy. Use the form for direct changes. Use quick edits for a text change that you want to approve first. Use Windy chat to discuss facts, examples, or several answers.
Check that the final answer gives your assessment of the work.
## Use quick edits
Quick edits suggest changes to an existing text answer on the Windmill review page. You can change the complete answer or select part of the text.
Open the answer you want to change. Select text to change only that part, or leave the text unselected to change the complete answer.
Select **Quick edit** or **Quick edit selection**. Choose a command from the menu, or select **Custom instructions** and describe the change.
Read **Suggested edit** and compare it with the original text. Select **Approve** to save the change or **Reject** to keep the original.
The menu includes these options:
* **More positive:** Adjust the tone to be more positive.
* **More direct:** Make the feedback more direct.
* **Fix spelling and grammar:** Correct language errors.
* **Clean up writing:** Improve the wording.
* **Remove AI slop:** Remove generic AI-style wording.
* **Custom instructions:** Specify your own change, then select **Apply instructions**.
Add an answer before you use quick edits. A quick edit can change up to 50,000 characters. Check the review's word limit after you approve a change.
## Make direct changes or use chat
Edit the answer field to make a direct correction. Windmill saves the change as a draft.
Use [Windy chat](/features/performance-reviews/windy-chat) when the change needs discussion. State which answer to change, what to add or remove, and which facts to keep.
## Restore or reset answers
Select **View answer history** above an answer to inspect or restore an earlier version.
Select **Review actions** at the top of the review page for these options:
* **Restart Review:** Clears your saved answers and returns you to the start screen. Earlier answers stay in answer history.
* **Reset:** Generates new context and keeps your answers. Select what to generate again: **Context report**, **Observations**, or **Resend Chat**. New context can take up to 30 minutes.
Use [AutoDraft](/features/performance-reviews/autodraft) if you want a new draft. AutoDraft warns before replacing existing answer text.
## Update the submitted review
After you change a submitted review, select **Resubmit review**. Draft changes do not update the submitted answers until then. Windmill asks for confirmation if a manager review is already shared.
A manager-review lock prevents edits. Cycle completion makes all reviews read-only. A revoked peer request or removal of an assignment can also prevent changes.
# Review cycles overview
Source: https://help.gowindmill.com/features/performance-reviews/index
Learn how to collect feedback, complete reviews, and share results in a review cycle.
A **review cycle** is a set of reviews for a group of employees. You choose the period of work to review, the people who take part, the questions, and the schedule.
A cycle can include self reviews, feedback from peers and direct reports, and manager reviews. These are called **review stages**. You choose which stages to include. Each stage starts at its scheduled time.
## How a review cycle works
### Setting up the cycle
Choose the dates, questions, and people who will take part. A **reviewee** is the person who receives feedback. A **reviewer** is the person who gives feedback. **Participants** are everyone who takes part in the cycle. The cycle's **Participants** tab lists them.
If you include manager reviews, choose when managers can share results with employees.
The [Configure a review cycle](/features/performance-reviews/configure-a-cycle) page explains the available settings. Before you run the cycle with your company, you can use a [test cycle](/features/performance-reviews/test-cycles) to check the setup with a small group.
### Collecting feedback and completing reviews
When you create the cycle, it becomes active. Each stage starts at the time you set. Stages can overlap, so people can work on different types of reviews at the same time.
An active cycle does not mean that people know about it. Windy does not contact reviewers until each stage starts. If a stage starts next month, its reviewers get nothing until then.
For peer feedback, reviewees nominate reviewers before those reviewers give feedback. Managers can use the available feedback to complete their reviews. The [Review stages and schedule](/features/performance-reviews/review-stages-and-schedule) page explains the date settings.
### Comparing ratings and sharing results
If you use manager reviews, you can add a **calibration**. In a calibration, a group compares reviews to help make ratings consistent. The [Set up a calibration](/features/calibrations/set-up-a-calibration) page explains the requirements.
After a manager submits a review, the manager can share the results with the employee when the sharing settings allow it. A cycle admin can also share results. The [Share review results](/features/performance-reviews/share-reviews) page explains the steps and what employees can see.
## Test and official cycles
Both cycle types send the same tasks and messages to the people you select. The difference is what happens to the results after the cycle.
| | Test cycle | Official cycle |
| - | - | - |
| **Use it to** | Check your setup with a small group before you run the cycle with your company | Run the review process with your company |
| **Participants get tasks and messages** | ✓ | ✓ |
| **Windy uses results in 1:1s and later conversations** | | ✓ |
| **Results appear in later calibrations and company stats** | | ✓ |
Set the **Cycle type** when you create the cycle. You can change it later in the cycle settings.
## Review stages
* **Self review:** Employees review their own work.
* **Upward feedback:** An assigned person, such as a direct report, gives feedback about the reviewee.
* **Peer feedback:** Selected peers give feedback about the reviewee.
* **Manager review:** The assigned manager reviews the employee and prepares the final review.
Every cycle needs at least one stage. You can add more than one self, upward, or peer stage. You can add only one manager stage. Each stage has its own questions, reviewers, start time, and optional deadline.
## People and roles
One person can have more than one role. For example, a manager can also be a reviewee in the same cycle.
| Action | Reviewee | Reviewer | Manager | Cycle admin | Admin or HR Admin |
| - | :-: | :-: | :-: | :-: | :-: |
| Receive feedback | ✓ | | | | |
| Write a self review | ✓ | | | | |
| Nominate peers | If allowed | | If allowed | ✓ | |
| Write assigned peer or upward feedback | | ✓ | | | |
| Write manager reviews | | | ✓ | | |
| Share results with the employee | | | If allowed | ✓ | |
| Manage settings, assignments, and progress | | | | ✓ | |
| Create a cycle | | | | | ✓ |
**If allowed** means that the cycle settings control the action. The [peer nomination settings](/features/performance-reviews/peer-nominations) control who can nominate peers. The [sharing model](/features/performance-reviews/share-reviews) controls when managers can share.
The person who creates a cycle becomes its first cycle admin. Cycle admins do not automatically get access to calibrations. The [Cycle admins](/features/performance-reviews/cycle-administration) page explains their access and responsibilities.
## Before you start
Choose the **review period** first. This is the period of work that people should review. The default is the previous six months, but you can set a different period for one reviewee. Review stages must start after the review period ends.
You can use one time zone for everyone or each person's local time zone. Windmill uses your current org chart to suggest managers and other assignments. You can change these assignments before you create the cycle.
When you create the cycle, Windmill saves the reviewees and their assigned managers. Later org chart changes do not update these saved assignments. All reviewees and reviewers must be active workspace members when you create the cycle.
## Next steps
Read these pages in order to set up and run a cycle:
1. [Configure a review cycle](/features/performance-reviews/configure-a-cycle): Set the details, stages, questions, and people.
2. [Select reviewees](/features/performance-reviews/select-cycle-participants) and [check review assignments](/features/performance-reviews/participants-and-assignments).
3. [Set up peer nominations](/features/performance-reviews/peer-nominations), if the cycle has peer feedback.
4. [Writing a review](/features/performance-reviews/writing-a-review): Learn how reviewers complete their work.
5. [Manage active-cycle changes](/features/performance-reviews/manage-an-active-cycle): Track progress and handle changes after launch.
6. [Set up a calibration](/features/calibrations/set-up-a-calibration), if you compare ratings before sharing.
7. [Share review results](/features/performance-reviews/share-reviews) with employees.
8. [Review insights](/features/performance-reviews/insights) after the cycle.
# Charts and text summaries
Source: https://help.gowindmill.com/features/performance-reviews/insight-charts-and-themes
Choose a chart, inspect its answers, compare a target curve, and generate text summaries.
Insights shows a result card for each question. The question type and available answers determine which charts and controls appear.
## Read results by question type
| Question type | Results |
| - | - |
| Text | Response count and an AI summary of common themes when enough answers are available. |
| Single Select | Counts for each answer choice. Choices with numeric rating values use a rating chart. |
| Multi-Select | Counts for each choice and the number of respondents. One person can select several choices, so choice totals can exceed the respondent count. |
| Yes/No | Counts for each answer. |
| Rating | Counts for each rating and the average rating. |
| Scale | A distribution of values and an average. |
| NPS | Counts for each score, promoter/passive/detractor groups, and the Net Promoter Score (NPS). |
| Numeric | Summary statistics and a histogram when a distribution is available. |
## Choose a chart view
Use the chart controls on a question card. Available views depend on the question:
* **Bar list:** Compare counts beside each answer label.
* **Distribution bar:** Compare the proportion of answers in each category.
* **Column chart:** Compare counts across rating values or answer groups.
* **Graph:** Examine the shape of a numeric or rating distribution.
Changing the chart changes the display. It does not change answers or ratings.
## Inspect the answers
Select an available chart group or response total to open its answer details. For text questions, select the response count to read the original answers.
The details remain within your review access and the selected stage and filters. Some numeric cards show statistics without a histogram. Those cards do not have individual-answer details.
Use the original answers to check a chart or summary before you make a review decision.
## Compare a target distribution
For supported **Column chart** and **Graph** views, use the target distribution control. Choose **Even**, **Bell**, **Top heavy**, or **Custom**, or turn the target off.
A target curve is a visual reference. It does not change answers, assign ratings, or apply calibration changes. The target preference is saved in your browser.
## Generate text summaries
In cycle or stage Insights, select the population you want to analyze. Inside a manager review, select **Peer reviews** or **Upward reviews**.
Select **Generate summary** on a text question. Cycle and stage Insights also offer **Generate all** when questions have no summary.
Inside a manager review, the first generation action starts summaries for all text questions in the selected feedback source.
Read the summary, then select the response count to check the answers. Use **Refresh summary** when the page reports that responses have changed.
### Minimum response counts
Peer and upward text summaries need at least three different reviewers. Self and manager text summaries need answers about at least two different reviewees.
The counts apply to the selected question, stage, and filters. A smaller filtered group can have charts but too few answers for a text summary.
### Changed or unavailable summaries
A summary can become out of date when submitted answers change. Refresh it to include the current answers. The existing summary can remain visible while the refresh runs.
If generation fails, use the retry action. If the page reports too few responses, wait for more submissions or broaden the cycle filters within your access.
# Review insights
Source: https://help.gowindmill.com/features/performance-reviews/insights
Choose where to analyze review results: across a cycle, within a stage, or while writing a manager review.
Use Insights to compare submitted answers, find common feedback themes, and examine rating distributions. Choose the view that matches your task.
## Choose an Insights view
| View | Open it from | Use it to |
| - | - | - |
| Cycle | **Configure cycle > Insights**, or the manager's cycle **Insights** tab | Switch between review stages and compare groups of employees. |
| Stage | Open a review stage in **Configure cycle**, then select **Insights** | Analyze the answers and completion rate for that stage. |
| Manager review | In the review's context panel, select **Peer reviews** or **Upward reviews**, then **Insights** | Analyze feedback about the employee while you write their manager review. |
| Calibration | Open a calibration and select **Insights** | Compare initial and adjusted manager ratings. |
## Analyze cycle and stage results
Cycle and stage Insights show participation totals and question results. Filter the reviewees by group, job title, manager, start date, or tenure.
Cycle admins can analyze the cycle. Managers see results within the reporting hierarchy saved for the cycle. See [Cycle and stage insights](/features/performance-reviews/cycle-and-stage-insights) for steps and access limits.
## Analyze feedback while writing
The manager-review view keeps peer and upward feedback beside the review you are writing. Switch between question charts and full responses. This view covers one employee rather than the full cycle.
See [Insights inside a manager review](/features/performance-reviews/manager-review-insights).
## Choose charts and summaries
Question type determines which charts are available. Options include bar lists, distribution bars, column charts, graphs, numeric summaries, and AI summaries of text answers.
Select a chart count or response total to examine the available answers. See [Charts and text summaries](/features/performance-reviews/insight-charts-and-themes).
## Compare calibration results
Calibration facilitators and committee members can use calibration **Insights** to compare initial and adjusted manager ratings.
Applied changes update effective manager answers immediately. Recommendations update them only after the assigned manager accepts them. Cycle Insights uses the latest effective submitted answers.
See [Compare calibration reviews](/features/calibrations/review-and-compare). To download data for further analysis, see [Export review data](/features/performance-reviews/exports).
# Manage leave and departures
Source: https://help.gowindmill.com/features/performance-reviews/leave-and-departures
Manage reviews when a participant is on leave or leaves the company.
## Manage an employee on leave
Review cycles have no leave or pause status for a participant. Existing work and progress stay active.
A cycle admin can keep the work, extend the stage or assignment deadline, or remove the employee from the cycle. Reminders and completion reports continue to use active assignments and their current dates.
## Manage a manager on leave
An admin does not automatically take over the manager's reviews. Reassign work to another active workspace member if someone else must complete it.
Reassignment changes the saved cycle manager and removes the former manager's task and editing access. It does not transfer answers. Reassigning back restores the former manager's answers. Separate reading access can still apply through the org chart or delegation.
## Manage a reviewee who leaves
Keep the participant if their reviews must remain active. Otherwise, use **Remove from cycle** to archive reviews about them.
Removal archives their self, manager, peer, and upward review work, submitted feedback, sharing, and calibration links. Reviews they write about other people remain active.
Adding the same work again restores previous answers, but not calibration membership.
## Manage a reviewer who leaves
Archiving an account does not move existing assignments automatically. Manager review writers can be changed from the stage's **To-dos**. Upward reassignment changes the review subject, so it does not replace the feedback author.
Self and peer work do not use the same reassignment action. For peer replacements, follow [nomination changes and exceptions](/features/performance-reviews/nomination-changes-and-exceptions).
The former reviewer's answers stay with their assignment and do not move to a replacement.
## Account archiving
Archiving an account does not remove the person from an active cycle or archive their saved assignments. It prevents new assignments, new review work, and performance-review emails.
Historical submitted data stays in the cycle. The employee can still appear in admin views, sharing, exports, and Insights. Use **Remove from cycle** to remove them from the active participant list.
# Manage active-cycle changes
Source: https://help.gowindmill.com/features/performance-reviews/manage-an-active-cycle
Find the correct workflow when people, assignments, dates, or review data change during a cycle.
Use the cycle admin pages to manage an active cycle. Complete these changes before the cycle is completed or archived.
## Add an employee after launch
Select **Actions > Add participant** to add one or more active workspace members. Set their review period, manager, and applicable self, upward, and manager stages.
Work starts immediately if the stage has started and is still open. Otherwise, it stays scheduled. Extend a completed stage or past due date before adding work. Normal reminders and deadline digests apply.
See [Add or remove participants](/features/performance-reviews/add-or-remove-participants).
## Remove an employee from the cycle
You can remove a participant before or after submission. This archives reviews about them, along with related chats, sessions, sharing, and calibration membership. Reviews they write about other people remain active.
Archiving an account does not remove the person from the cycle. See [Add or remove participants](/features/performance-reviews/add-or-remove-participants).
## Change an employee's manager
The cycle keeps its saved manager when the org chart changes. Open the review in the manager stage's **To-dos**, then select **Reassign** in **To-do Details** to assign an active workspace member.
The old assignment is archived. You can transfer the former manager's submitted answers to the replacement. Otherwise, the replacement starts with an empty review. Reassigning back restores the former manager's answers.
See [Reassign managers and reviewers](/features/performance-reviews/reassign-managers-and-reviewers).
## Give another manager access
Reassignment changes the review owner and saved cycle manager. It does not give two people shared editing access.
An additional manager review is a separate review. The active-cycle pages do not provide a way to add another author to the primary review. See [manager access and reassignment](/features/performance-reviews/reassign-managers-and-reviewers).
## Handle leave or a departure
Cycles have no leave status. Work and reminders continue until an admin changes dates, removes work, or reassigns it.
Manager and upward work support reassignment. Self and peer work need different handling. Archiving an account prevents new assignments and review emails, but keeps saved cycle work.
See [Manage leave and departures](/features/performance-reviews/leave-and-departures).
## Change dates or questions
Moving a stage's start time before it starts also moves its due date. After work starts, schedule changes affect only work without an active chat. You can change deadlines for the stage or selected assignments without deleting answers.
Once review sessions exist, you can change wording and other limited settings. You cannot add or remove questions, change answer choices, or make an optional question required.
See [Change dates and questions](/features/performance-reviews/change-an-active-cycle).
## Handle overdue or incomplete work
Reviewers can submit late while the cycle is active. Use **Participants** or a stage's **To-dos** to find incomplete work and send nudges.
Extend the stage deadline before adding or reassigning late work. A manager-review lock prevents edits even when the deadline is open.
See [Reopen reviews and manage locks](/features/performance-reviews/reopen-reviews-and-locks).
## Correct submitted review data
Review owners can edit and resubmit while the cycle is active. A cycle admin must first unlock a locked manager review. Owners can also reset their answers or the full review.
Resubmitting a shared manager review updates what the employee sees. Changes to question wording also update drafts, submitted answers, calibration references, and shared packets.
See [Drafts, submissions, and missed deadlines](/features/performance-reviews/drafts-submissions-and-deadlines).
## Manage overlapping cycles
Each cycle has separate assignments, questions, context, packets, and calibrations. People can receive tasks and messages from several cycles. Completing one task does not update another cycle.
Change conflicting dates and assignments in each cycle separately. See [Run concurrent cycles](/features/performance-reviews/concurrent-cycles).
# Insights inside a manager review
Source: https://help.gowindmill.com/features/performance-reviews/manager-review-insights
Analyze peer and upward feedback about one employee while you write their manager review.
Use the manager review's context panel to compare feedback about the employee. You can read question summaries and full responses without leaving the review.
## Open feedback Insights
Open your assigned manager review from the cycle's **To Do** page.
In the context panel, select **Peer reviews** or **Upward reviews**. These items appear when feedback is available.
With more than one response, the panel opens in **Insights**. Select **Responses** to read the full feedback instead.
With one response, the panel shows that response directly. It does not show the Insights and Responses switch. With no feedback, there are no results to summarize.
## Read question results
Each question has its own result card. Rating and choice questions show counts and distributions. Text questions can show an AI summary when enough responses are available.
Select a chart group or a response count to inspect the answers behind it. See [Charts and text summaries](/features/performance-reviews/insight-charts-and-themes) for the available charts and summary thresholds.
This view is limited to feedback about the employee in the open manager review. It does not have the group and employee filters used in cycle Insights.
## Read full responses
Select **Responses**, then choose **By person** or **By question** to organize the feedback. Use this view to check the original wording before you write your assessment.
The **Self review** context item shows the employee's self review separately. It does not use the peer and upward Insights switch.
## Check access and summary limits
The manager-review page uses your access to that review and its feedback. Opening a chart does not give you access to another employee's reviews.
Peer and upward text summaries need answers from at least three different reviewers. Two responses can show charts even when a text summary is not yet available.
Select **Generate summary** to start text summaries. In this view, the first generation action starts summaries for all text questions in the selected feedback source. If answers later change, use **Refresh summary** when the page marks a summary as out of date.
# Managers, skip-level managers, and HRBPs
Source: https://help.gowindmill.com/features/performance-reviews/managers-skip-level-managers-and-hrbps
Understand manager, skip-level manager, HRBP, and delegated access.
## Assigned managers
Managers can write and submit only the manager reviews assigned to them. They can read internal packets for employees below them in the reporting hierarchy saved for the cycle.
A later org chart change does not reassign the review task or update that saved hierarchy.
## Skip-level managers
Skip-level managers can read review status and internal packets for people below them in the saved reporting line. Packets can include manager, self, peer, and upward reviews.
The manager team view does not show upward rows. Upward feedback can still appear in an individual packet you can access and in the cycle-admin view.
Access through the reporting line does not let you read private review content about yourself.
## HR business partners and delegates
Human resources business partner (HRBP) access can be configured through delegation. Delegation uses the current org chart to determine the employees covered.
There is no separate HRBP role within a cycle. Delegation can give access to selected manager feedback views and shared manager-review packets for people within that reporting line.
Delegation does not grant cycle-admin access, internal packets based on the saved cycle hierarchy, a manager-review writing assignment, or calibration membership.
## Access after a manager change
Internal packet access continues to use the saved cycle reporting line. The assigned manager keeps the writing task until a cycle admin reassigns it.
Reassigning the primary review archives the old assignment, creates or restores the replacement's work, and updates the saved cycle manager.
A new manager in the current org chart can gain access to manager-facing shared packets through that reporting line. The org chart change alone does not give them the internal cycle packet or review-writing task.
# Nominate peer reviewers
Source: https://help.gowindmill.com/features/performance-reviews/nominate-peer-reviewers
Choose and create peer reviewer nominations.
## Who can nominate peers
The cycle's [peer nomination settings](/features/performance-reviews/peer-nominations) control who can nominate reviewers. With **Everyone**, you can nominate peers for yourself. The other options limit nominations to managers and cycle admins, or to cycle admins only.
Managers can create and track nominations for reviewees in their saved cycle reporting line. Cycle admins can do this for every reviewee assigned to the peer stage.
## Who can be nominated
Choose an active employee who is also an active workspace member. They can be on another team and do not need to receive a review in this cycle.
You cannot nominate yourself, your direct manager, or your direct report.
## Review suggested reviewers
Windmill suggests reviewers based on collaboration scores from the previous 90 days. You can add one suggestion, add all suggestions shown, or search for someone else.
## Create nominations
Add reviewers in the peer nominations view or through the Windy nomination chat. Each nomination is saved as soon as you add the reviewer. There is no separate list to submit.
The nomination becomes **Pending Approval** or **Approved**, based on the approval settings, your role, and the limits. Both statuses count toward nomination progress. Only approved nominations count toward the nomination limits.
You can add nominations after the nomination deadline, but not after the peer feedback deadline or when the peer stage is inactive.
# Manage nomination changes and exceptions
Source: https://help.gowindmill.com/features/performance-reviews/nomination-changes-and-exceptions
Change nominations and manage peer reviewer exceptions.
## Cancel or revoke a nomination
There are two ways to remove a peer nomination. The difference is who can do it and when.
| | Cancel | Revoke |
| - | - | - |
| **Who can do it** | The person who created the nomination | A cycle admin, or a manager when **Let managers revoke nominations** is on |
| **When** | While the nomination is pending, approved, or declined, including after the feedback chat starts | While the nomination is approved or declined, including after feedback is submitted |
| **Undo** | The creator can resubmit the nomination. Windmill checks the approval rules and limits again. | Add a new nomination. |
Neither action selects a replacement reviewer.
## Replace a reviewer
There is no single action to swap one reviewer for another.
Cancel the nomination if you created it. Otherwise, ask a cycle admin to revoke it.
Add a new nomination. You must be allowed to create nominations in this cycle.
After the new nomination is approved, the reviewer gets a feedback request when peer feedback is open and at least 15 minutes have passed since approval.
## Replace a reviewer who leaves the company
Windmill does not replace a reviewer who leaves the company. It also does not ask the reviewee to choose someone else. Archived employees and workspace members cannot receive new nominations.
To get feedback from someone else, a cycle admin revokes the approved nomination and adds an active reviewer. Managers can revoke it only when **Let managers revoke nominations** is on.
## Remove feedback that was already submitted
Revoke the nomination to remove submitted peer feedback from a review. After you revoke it:
* **Review packet and export:** The feedback no longer appears in the reviewee's review packet or in the peer feedback export.
* **Insights:** Windmill does not delete the submitted answers. They can still appear in cycle [Insights](/features/performance-reviews/insights).
* **Replacement feedback:** Windmill does not ask for new feedback. Add a new nomination if you need it.
# Notifications and deadlines
Source: https://help.gowindmill.com/features/performance-reviews/notifications-and-deadlines
Configure cycle notifications, reminders, and deadlines.
## When review work starts
Windmill starts assigned work when a stage opens.
* **Self and upward reviews:** Windy opens a conversation with each assigned reviewer.
* **Peer nominations:** Windy contacts each reviewee who can nominate peers.
* **Peer reviews:** Windy contacts each approved peer when peer feedback starts.
* **Manager reviews:** Windy groups a manager's work and links them to their cycle review list.
About 24 hours before a stage starts, cycle admins receive a **Review stage starts soon** email.
If a cycle admin adds or reassigns work after a stage starts, the new work goes out immediately. The previous reviewer's task stops being active.
## Use deadlines and reminders
Set a deadline for each stage. Windy sends automatic reminders only for stages that have a deadline.
A stage deadline is optional. It is a soft deadline, so reviewers can still submit after it while the cycle is active.
When a stage has a deadline, Windy automatically reminds each person who has incomplete work. You do not need to send these reminders yourself:
* **When:** One reminder during the day before the deadline, at least one hour after the review chat opened.
* **Who:** People with incomplete self, upward, peer nomination, peer feedback, or manager review work.
* **When reminders stop:** After the work is submitted, or when its chat or review session is no longer active.
A cycle admin can also send a manual nudge at any time, for example after the deadline passes.
## Use the deadline digest
The **Deadline digest** is off by default. A cycle admin can turn it on during setup or later in the cycle settings.
When it is on, Windmill sends one email at 9 AM in each employee's time zone on weekdays. The email includes incomplete work that is overdue or due within 48 hours. It can also include a manager review with a recommended change from calibration.
Overdue work stays in later weekday emails until it is complete or no longer active. You cannot change the digest time, schedule, or message.
## Use Slack and Windmill
Windy review conversations can run in Slack and link to the saved work in Windmill. People can draft self, upward, peer nomination, and peer feedback answers with Windy, then finish them in Windmill.
Managers complete manager reviews in Windmill. Their Windy conversation links to the manager review list.
Cycle settings do not include custom opening messages or a way to pause messages for one participant.
# Participants and assignments
Source: https://help.gowindmill.com/features/performance-reviews/participants-and-assignments
Define stage participation and the people who complete each review.
## Reviewees and reviewers
**Reviewees** are the employees who receive feedback in the cycle. **Reviewers** are the people who write feedback about them.
The employee selection sets the cycle's reviewees. The **Review assignments** step uses the current org chart to suggest who should complete each review. For each reviewee, you can add or remove a review stage or choose a different stage of the same type.
The person who receives the feedback must be a selected reviewee. The person who writes the feedback can be outside the reviewee list.
## Check the default assignments
* **Self review:** The reviewee reviews their own work.
* **Manager review:** The reviewee's current manager writes the review by default.
* **Upward feedback:** The reviewee's active direct reports write the feedback by default.
* **Peer feedback:** The reviewee nominates peers first. Approved peers receive the feedback work later.
When a cycle has several stages of the same type, Windmill uses the first one by default. The same reviewer and reviewee pair cannot have active assignments in several stages of the same review type.
## Change reviewers
You can assign a manager review to a different active workspace member. You can also add or remove active workspace members as upward reviewers. Peer nominees and upward reviewers do not need to be reviewees in the cycle.
Only active workspace members can receive review work. Feedback from a reviewer outside the reviewee list still appears in the reviewee's packet.
## Save and change assignments
Before you create the cycle, Windmill updates suggested manager assignments when the org chart changes. It keeps a manager that a cycle admin selected manually.
When you create the cycle, Windmill saves the reviewees, managers, and assignments. Later org chart changes do not update the active cycle automatically.
During an active cycle, a cycle admin can add or remove review work. They can also reassign manager and upward work. Reassignment archives the previous assignment, and the new reviewer receives new work.
When you reassign a manager review, you can transfer the previous manager's submitted answers to the new reviewer. Unsubmitted drafts and chat history do not transfer. Learn more about [reassigning managers and reviewers](/features/performance-reviews/reassign-managers-and-reviewers).
# Set up peer nominations
Source: https://help.gowindmill.com/features/performance-reviews/peer-nominations
Configure peer nominations, approvals, limits, dates, and recommendations.
## Choose who can nominate peers
Add a peer feedback stage to use peer nominations. Nominations select the people who will give feedback about each reviewee assigned to that stage.
Choose who can create nominations:
* **Everyone:** Reviewees can nominate their own peers. Managers and cycle admins can also nominate peers for the people they manage.
* **Managers and cycle admins:** Managers and cycle admins select the peers.
* **Cycle admins only:** Only cycle admins select the peers.
Reviewers must be active employees and workspace members. They do not need to be reviewees in the cycle. A reviewee cannot nominate themselves, their direct manager, or their direct report.
## Choose whether nominations need approval
Under **Nomination approval**, choose one option:
* **No approval needed:** Windmill sends peer review requests as soon as the nomination is added.
* **Approval required:** Each nomination must be approved before Windmill sends the request.
Learn more about [reviewing and approving nominations](/features/performance-reviews/review-and-approve-peer-nominations).
## Set nomination limits
* **Minimum nominations:** A suggested minimum under **Nominations per employee**. A reviewee can have fewer nominations.
* **Maximum nominations:** Additional nominations need cycle-admin approval when they exceed this limit.
* **Reviewer workload:** Under **Requests before approval is required**, set how many requests one reviewer can receive before cycle-admin approval is required.
Windmill shows nomination counts and limit warnings. Windy also tells the person adding a nomination when approval is needed.
## Control revoking and visibility
* **Let managers revoke nominations:** Cycle admins can always revoke nominations. Turn on this setting to let the employee's manager revoke them too.
* **Show manager and cycle admin nominations to employees:** Let employees see the nominations that their manager or a cycle admin added for them.
These settings apply to every peer feedback stage in the cycle.
## Control nomination chats
* **Nomination chats:** When nominations open, Windy starts a chat with each person who can nominate peers. You cannot customize the nomination prompt.
* **Reminders:** Near the deadline, Windy can remind chat recipients who have no pending or approved nominations.
* **Skip peer nomination chats:** Select this on the peer stage before nominations open to collect nominations without Windy chats. People can still add nominations in Windmill.
## Set nomination and feedback dates
* **Separate windows:** Set one set of dates for nominations and another for feedback.
* **Nomination deadline:** This is a soft deadline. People who can nominate peers can still add nominations until the peer feedback deadline.
* **Feedback requests:** An approved nomination gets a feedback request after feedback opens and at least 15 minutes have passed since approval.
* **Deadline digest:** Deadline digest emails can include incomplete nominations and pending approvals.
## Reviewer recommendations
* **How Windmill suggests peers:** Suggestions come from collaboration scores for the previous 90 days.
* **Number of suggestions:** The dashboard shows up to seven suggestions. The Windy nomination chat can suggest up to 10. You cannot change these numbers.
* **Other reviewers:** Suggestions are optional. People can search the employee directory and choose another eligible reviewer.
Learn more about [nominating peer reviewers](/features/performance-reviews/nominate-peer-reviewers).
## Change settings during the cycle
After you create the cycle, open the peer nominations stage from **Configure cycle > Overview** and select **Settings**. Select **Edit** next to a setting to change it. You can also change **Nomination chats** and the nomination schedule there.
# Manage review requests and reviewer workload
Source: https://help.gowindmill.com/features/performance-reviews/peer-review-requests-and-workload
Manage peer review request timing, responses, and workload.
## Request timing
An approved nomination can receive a feedback request once feedback is open and at least 15 minutes have passed since approval. Each nomination gets its own feedback chat.
You do not need to finalize a nomination list. If the nomination and feedback windows overlap, requests can start before the nomination deadline.
## Handle delayed or unanswered requests
Use the peer feedback stage's work table to check each request's progress. A cycle admin can select one or more incomplete requests and send a nudge.
Windmill skips completed work and work without an active chat. You can send only one manual nudge to the same employee in a 15-minute period.
## Handle declined requests
Reviewers can start an approved request without accepting it first. They can also decline it and give an optional reason.
The reviewee sees **Declined**, but cannot see the reason. The reviewer, managers with access, and cycle admins can see it.
A declined request does not get a replacement automatically. Someone allowed to create nominations must add another reviewer.
## Handle high reviewer workload
The nomination table's approval warning shows how many approved reviewers a reviewee has and how much approved work the selected reviewer has.
The **Reviewer workload** setting controls how many reviewees can nominate the same person before cycle-admin approval is needed. Exceeding the limit requires approval, but does not block the nomination.
To move work to someone else, cancel or revoke the old nomination and add a new one. See [nomination changes and exceptions](/features/performance-reviews/nomination-changes-and-exceptions) for the rules that apply to each role.
# Review visibility and anonymity
Source: https://help.gowindmill.com/features/performance-reviews/permissions-and-visibility
Understand review visibility, feedback attribution, and anonymity.
## Compare review visibility
* **Self reviews:** Employees can see their own answers.
* **Peer and upward feedback:** Managers in the saved cycle reporting line and cycle admins can read packets they have access to. The reviewee cannot read the feedback questions or answers about themselves.
* **Manager reviews:** Reviewees see answers only after sharing, and only for questions marked visible to employees.
## Reviewer names
Authors can reopen the feedback they wrote through their assigned task. Internal packets show peer and upward reviewer names to people with packet access.
A reviewee's own internal packet can retain reviewer names and submission status while hiding the feedback itself.
## Protect private feedback about yourself
Your own internal packet removes the manager review and hides peer and upward questions and answers. Admin, manager, skip-level manager, and calibration roles do not override this rule.
The same protection applies to packet PDF exports and calibration reviewee packets.
## Sharing status
* **Pending:** Only cycle admins can access the shared-review packet.
* **Enabled:** Authorized managers can access it.
* **Shared:** The employee can also access questions marked visible to employees.
Revoking access removes the employee's access. Manager access can stay enabled when the sharing model permits it.
The employee packet and PDF contain manager-review questions and answers. They do not include calibration comments, pre-read content, or answer history. A review lock prevents editing but does not change who can read the packet.
## Hide names in PDF exports
A cycle admin can configure a packet PDF export to replace reviewer names with numbered anonymous labels.
This changes only the exported PDF. Stored reviewer names and internal packet access stay the same.
# Questions and rating scales
Source: https://help.gowindmill.com/features/performance-reviews/questions-and-rating-scales
Choose review questions and configure rating scales.
## Configure a question
All review stages support the same question types. Each question has these basic settings:
* **Title:** The question that the reviewer answers.
* **Description:** Optional instructions that appear with the question.
* **Help text:** Optional plain text that appears in an information tooltip.
* **Required:** Choose whether the reviewer must answer the question before they submit the review.
* **Answer settings:** Configure the choices, limits, labels, or writing guidance for the question type.
Titles and descriptions support Markdown. Conditional questions are not available, so one answer cannot show or hide another question.
## Choose a question type
* **Text:** The reviewer writes an answer. You can set a maximum word count and tell Windy how to format a draft.
* **Single Select:** The reviewer selects one answer from a list. You can ask for a written follow-up.
* **Multi-Select:** The reviewer selects one or more answers. You can set the minimum and maximum number of choices.
* **Yes/No:** The reviewer selects yes or no. You can ask for a written follow-up.
* **Scale:** The reviewer selects a whole number from a range. Set the minimum and maximum values and an optional label for each end of the scale.
* **eNPS:** The reviewer selects a number from zero to 10. This range cannot change.
* **Rating:** The reviewer selects one of at least two numbered rating points. Give each point a label. Select **Show option descriptions** to add a description to each point. You can ask for a written explanation.
### Set custom rating values
By default, Rating points are numbered 1, 2, 3, and so on in order. If custom rating values are available in your workspace, you can give each point a specific whole number instead—for example 80, 90, and 100 for a three-point scale. In the Rating question's answer settings, edit the number next to each point's label. Each value can be up to four digits, and points are ordered by their value from lowest to highest. Insights and review packets use the value you set.
## Control what employees can see
Manager-review questions have a **Visible to employee** setting. When it is on, the employee can see the question and answer after the manager shares the review. When it is off, the question and answer stay private to managers and HR.
Other review types do not have this setting. If different groups need different questions, create separate stages of the same review type and assign each person to the correct stage.
## Use answers in results and calibration
Review packets show submitted answers. For Rating questions, the packet shows both the selected number and its label.
Insights can show averages and answer distributions for Rating, Scale, and other numeric questions. During calibration, facilitators can change supported Single Select, Yes/No, Rating, eNPS, and small whole-number Scale answers.
## Change questions after work starts
* **Before work starts:** Cycle admins can add, remove, copy, reorder, or change questions. For peer feedback, this stays possible during peer nominations and stops when peer feedback starts.
* **After work starts:** Cycle admins can change wording, descriptions, help text, answer labels, Text word limits, and question order.
* **Settings that become locked:** Cycle admins cannot add or remove questions, change a question type or its answer choices, or change an optional question to required. They can change a required question to optional.
* **After the cycle ends:** Questions cannot change after the cycle is completed or archived.
# Reassign managers and reviewers
Source: https://help.gowindmill.com/features/performance-reviews/reassign-managers-and-reviewers
Change review assignments and manager access during an active cycle.
## Change an assignment
Reassignment works for manager reviews and upward feedback. Self reviews and peer feedback do not support it.
* **Manager review:** Changes the person who writes the review.
* **Upward feedback:** Changes the manager who receives the feedback.
In a stage's **To-dos**, open the review and select **Reassign** in **To-do Details**.
Select the **New reviewer** for a manager review, or the **New manager being reviewed** for upward feedback. The new person can be any active workspace member.
For a manager review, select **Transfer submitted answers** if the new reviewer should start from the previous manager's answers. See [Transfer submitted answers](#transfer-submitted-answers).
Read the list of changes in the dialog. Select **I understand this reassignment.**, then confirm.
The stage and deadline must be open. Reassignment updates the saved cycle manager, but it does not change the org chart.
An org chart change does not update the saved cycle manager. To move an employee to a new manager during a cycle, reassign their manager review.
## Transfer submitted answers
**Transfer submitted answers** is available only for manager reviews. It is off by default. The option appears only when the previous manager submitted answers. You cannot use it when the review is locked or already shared.
| | With transfer | Without transfer |
| - | - | - |
| **Submitted answers** | Become draft answers for the new reviewer, who can edit them before they submit | Not included. The new reviewer starts with an empty review. |
| **Unsubmitted drafts and chat history** | Not included | Not included |
| **Pending calibration changes** | Move to the new review | Removed |
| **Calibration links and discussions** | Move to the new review | Move to the new review |
Without transfer, sharing is turned off for that review. If the employee could see the review, they lose access.
Upward feedback cannot be transferred. The new manager does not get the feedback about the previous manager.
## Former reviewer access
The former reviewer loses the task and editing access. Their answers are archived. If you reassign the work back to them, Windmill restores their draft or submitted answers.
Their Windy chat is archived only when it has no other active reviews. Separate access to read review data can still apply through their other roles or reporting relationships.
## Give access to an additional manager
Reassignment transfers ownership; it does not add a co-editor. The active-cycle pages do not provide a way to add a supplemental manager reviewer after launch.
A supplemental manager review, where one exists, is separate from the primary review. It does not change the primary reviewer or shared packet.
Reading a packet and owning its review are separate. See [manager access](/features/performance-reviews/managers-skip-level-managers-and-hrbps) when someone needs to read results.
# Lock and unlock reviews
Source: https://help.gowindmill.com/features/performance-reviews/reopen-reviews-and-locks
Lock manager reviews to stop edits, then unlock them when corrections are needed.
Lock a manager review when you want to stop further changes from its owner. The manager can still read the review.
## Check access and review type
A cycle admin can lock and unlock manager reviews from **Configure cycle > Sharing**. An assigned manager who is not a cycle admin must ask a cycle admin to unlock a review.
This lock applies only to manager reviews. It does not lock self, peer, or upward reviews. Complete lock and unlock actions before the cycle is completed or archived.
## Lock manager reviews
Open the cycle from [Review Cycles](https://app.gowindmill.com/COMPANY/performance). Select **Configure cycle**, then **Sharing**.
Select the employee rows for the manager reviews you want to lock. Select **Lock** in the action bar. The number beside the action shows how many selected reviews can be locked.
For one review, you can also open the employee row and select **Lock** in its details panel.
In **Lock reviews**, check the employee list. Select **Lock 1 review**, or the button with the number of reviews you selected.
The review status changes to **Locked**. The manager can no longer edit, submit, or reset the review.
## What a lock changes
A lock preserves the answers and submission status. It does not submit a draft, share a packet, or remove employee access to a shared packet.
You can lock a review before or after submission:
* **Before submission:** The review stays unsubmitted. It cannot be shared. Unlock it so the manager can finish and submit it.
* **After submission:** The submitted answers remain available. The manager cannot change or resubmit them until a cycle admin unlocks the review.
* **After sharing:** The employee keeps access to the shared packet. Use **Revoke Access** if you also need to undo sharing.
A future deadline does not override a lock. Extending a deadline does not unlock a review.
## Unlock manager reviews
Open **Configure cycle > Sharing**. Select the employee rows for the locked manager reviews, then select **Unlock**.
For one review, you can also open the employee row and select **Unlock** in its details panel.
In **Unlock reviews**, check the employee list. Select **Unlock 1 review**, or the button with the number of reviews you selected.
The manager can edit and submit the review again while the cycle is active. Unlocking does not automatically notify the manager, so tell them when the review is ready.
Unlocking preserves existing answers and submission status. After the manager submits the corrections, lock the review again if you want to stop further edits.
## Lock when sharing results
The sharing dialogs include **Also lock reviews to prevent further edits (recommended)**. Select **Enable manager sharing & lock** to let managers share the packets and stop further edits. Select **Share & Lock** to share directly with employees and stop further edits.
These actions require submitted manager reviews. See [Share review results](/features/performance-reviews/share-reviews).
If you unlock a shared review, draft edits do not change the employee's packet. After the manager submits the corrections, the employee sees the updated answers when they open the packet. Windmill does not automatically notify the employee about the update. See [Edit or undo shared results](/features/performance-reviews/edit-shared-reviews).
## Continue or restart other review work
Review owners can edit and resubmit unlocked reviews while the cycle is active. A missed deadline does not require a separate reopen action for self, peer, upward, or manager reviews.
The review owner can also select **Review actions** on the review page:
* **Restart Review:** Clears your saved answers and returns you to the start screen. Earlier answers stay in answer history.
* **Reset:** Generates new context and keeps your answers. Select what to generate again: **Context report**, **Observations**, or **Resend Chat**. New context can take up to 30 minutes.
Cycle-admin access alone does not let an admin reset someone else's review. Unlock a locked manager review before its owner resets it.
A past deadline blocks admins from adding or reassigning work. Extend the deadline into the future before either action. See [Change dates and questions](/features/performance-reviews/change-an-active-cycle).
# Review and approve nominations
Source: https://help.gowindmill.com/features/performance-reviews/review-and-approve-peer-nominations
Review, approve, reject, or add peer reviewer nominations.
## Nomination visibility
* **Reviewees:** See nominations they created. A cycle setting controls whether they also see nominations added for them by managers or cycle admins.
* **Managers:** See nominations for reviewees in their saved cycle reporting line.
* **Cycle admins:** See all nominations in the cycle.
* **Selected reviewers:** See approved nominations and nominations they declined.
## Review pending nominations
Cycle admins can open the **Nominations** tab of the peer nominations stage. When the cycle requires nomination approval, cycle admins can also open **Configure cycle > Approvals**. Managers can open **My team > Peer nominations** or use the approvals in their cycle to-do list.
Look for **Pending Approval** nominations. Other statuses are **Approved**, **Rejected**, **Cancelled**, **Revoked**, and **Declined**. Deadline digest emails can also link you to pending approvals.
## Approve or reject reviewers
Cycle admins can approve or reject any pending nomination. When manager approval is enabled, managers can decide nominations for reviewees in their saved cycle reporting line. A manager cannot decide a nomination that selects them as the reviewer.
Approval allows the reviewer to receive a feedback request. Rejection requires a reason that the reviewee can see. Rejecting a nomination does not select a replacement.
## Assign peer reviewers as an admin
Use **Add nominations** in the peer nomination stage to choose a reviewee and reviewer. Cycle admins can add nominations for any active reviewee assigned to the stage.
Nominations added by cycle admins are approved immediately, including those above a nomination limit. They do not need manager approval. Requests can start once feedback is open and at least 15 minutes have passed since approval.
## Update a nomination
Each nomination is saved when it is added. There is no final list to submit.
The person who created a nomination can edit its context while it is pending, approved, or declined. They can edit its justification only while approval is pending.
Other changes depend on your role and the nomination's status. See [nomination changes and exceptions](/features/performance-reviews/nomination-changes-and-exceptions).
# Review data and context access
Source: https://help.gowindmill.com/features/performance-reviews/review-data-access
Understand access to review sources, packets, PDFs, and external data.
## Keep source information private
Review writing support uses information the author can access. Sources can include 1:1 notes, private notes and feedback, goals, past shared reviews, Company Knowledge, and connected work records.
Authors can also add notes, observations, documents, and voice-note transcripts to their private writing session.
Sources keep their original access rules. Shared reviews contain the questions and answers, not the source records themselves.
## Read internal packets and download PDFs
Assigned and skip-level managers can read internal packets for employees below them in the saved cycle reporting line. Cycle admins can read packets across the cycle. Delegated HRBP access does not grant these internal packets.
Only a cycle admin can create and download the packet PDF ZIP export. The requester must still be a cycle admin at download time.
An authorized manager or cycle admin can download a completed manager review as a draft PDF. The reviewee cannot download that draft. After sharing, the employee can download the employee PDF with only the shared questions visible to them.
Your own internal packet and packet PDF remove manager-review content and hide peer and upward answers.
## Delegated and external access
Delegation uses the current org chart. It can grant selected manager feedback and shared-packet access for people within the delegated reporting line.
Cycle-wide packet access, organization progress, bulk sharing, and packet exports need cycle-admin access. Calibration details, pre-reads, and reviewee packets need membership in that calibration. Management actions need a facilitator.
There is no limited external review role or public review link. Packet export downloads require the authenticated cycle admin who requested the export and a valid download token.
## Access changes
Internal cycle packets use the saved management hierarchy. Selected manager feedback views and shared manager-review packets can use the current hierarchy and delegation. The saved assigned manager also has manager-facing sharing access.
Changing the org chart does not reassign the writing task. Reassigning a primary manager review changes its writer and saved cycle manager, which changes later internal packet access.
Sharing grants employee access to visible questions. Revoking sharing removes that access. Locking affects editing only.
Calibration membership gives access to that calibration and its reviewees. It does not grant cycle-wide packet access or share results.
# Create review packets and PDFs
Source: https://help.gowindmill.com/features/performance-reviews/review-packet-access
Manage review packet contents, updates, PDF downloads, and view tracking.
## Shared packet contents
Submitting a manager review creates a packet containing its questions and latest effective submitted answers. The full packet can include questions hidden from the employee.
The employee view shows only questions marked visible to employees. Optional questions can have no answer. Self, peer, and upward reviews, observations, context reports, comments, and history are not sections of this shared packet.
## Lock or update a packet
A lock prevents the manager from editing the review. A cycle admin can unlock it so the manager can edit and submit again.
An unlocked packet shows the latest effective submitted answers when an authorized viewer opens it. Sharing and locking are separate; the sharing dialogs make locking optional.
## Download a PDF
Access depends on your role and the packet's sharing status:
* **Cycle admins:** Can download after submission creates a packet with at least one answered question, even while sharing is pending.
* **Assigned managers and managers above the employee:** Can download after manager sharing is enabled.
* **Employees:** Can download after the packet is shared with them.
A human resources business partner (HRBP) does not get access from that role alone. They need cycle-admin access or access through the employee's management hierarchy. PDF access follows the same rules as the on-screen packet.
The employee PDF includes answered manager questions visible to employees. The full manager or admin PDF can include hidden questions. If it does, it has an **INTERNAL** watermark.
## Track packet views
Cycle admins can open **Configure cycle > Sharing** to track packets. Each timeline shows when sharing was enabled, who enabled it, when it was shared, who shared it, and the employee's first view of the current share.
Opening a packet or downloading its PDF records a view for that person. A manager or admin view does not count as an employee view.
After access is revoked and the packet is shared again, only employee views after the new share count. These views do not appear in cycle Insights or review exports.
# Review stages and schedule
Source: https://help.gowindmill.com/features/performance-reviews/review-stages-and-schedule
Choose review stages and set the cycle schedule.
## Choose review stages
* **Self review:** Employees review their own work.
* **Upward feedback:** An assigned person, such as a direct report, gives feedback about the reviewee.
* **Peer feedback:** Reviewees nominate peers, and approved peers give feedback.
* **Manager review:** The assigned manager reviews the employee and prepares the final review.
A cycle can have several self, upward, and peer stages. It can have only one manager stage.
## Set the review period and stage dates
The **review period** is the period of work that people should review. It is not a submission deadline. The review period must end before the review stages start.
Each stage has one start time and an optional deadline. A peer stage has two sets of dates: one for peer nominations and one for peer feedback. Peer feedback cannot start before peer nominations start.
## Overlap review stages
Review stages can overlap. For example, peer feedback can stay open after self reviews start.
Managers can start their reviews before all other feedback is submitted. Windmill warns you when the manager stage starts before another stage is due to end, but the warning does not stop you from creating the cycle.
## Choose a time zone
* **One time zone:** The stage starts at the same moment for everyone, based on the time zone you choose.
* **Each participant's local time:** The stage starts at the same local time for each person. People in different time zones start at different moments.
Stage deadlines use the same time-zone setting as the start time.
# Select reviewees
Source: https://help.gowindmill.com/features/performance-reviews/select-cycle-participants
Select and filter the employees who will take part in a review cycle.
## Select reviewees
A new cycle starts with no employees selected. The employee picker shows active workspace members who can take part in the cycle.
Search for people, select them one at a time, or select everyone in the current filter results. Use **All**, **Selected**, and **Not selected** to check your list. Every cycle needs at least one reviewee.
## Filter the employee list
* **Name or email:** Find a specific employee.
* **Group or job title:** Find employees with matching company data.
* **Manager:** Find people who report to a specific manager, people in that manager's reporting line, or people with or without a manager.
* **Relationship:** Find your direct reports, indirect reports, manager, or skip-level manager when available.
* **Start date:** Find employees who started within a date range, on or after a date, or on or before a date.
* **Tenure:** Find employees in ranges from less than three months to more than 10 years.
You cannot use **Start date** and **Tenure** at the same time. **Group** is the only group-based filter. There are no separate Department, Team, Tag, Location, leave, contractor, or worker-type filters.
## Saved participant data
Filters only change the people shown in the picker. When you use bulk selection, Windmill saves the people who match at that time. It does not add new employees who match the same filters later.
Reviewees and reviewers must be active workspace members when you create the cycle. After you select the reviewees, use **Review assignments** to choose which review stages apply to each person.
## Check the selection
The **Review & create** step shows each stage and its participants before you create the cycle. A missing manager appears as **No manager**.
Windmill stops you from creating the cycle when a manager review has no manager or when a participant is inactive or archived. Select **Copy All Assignments** to copy the stage assignments to your clipboard.
# Share review results
Source: https://help.gowindmill.com/features/performance-reviews/share-reviews
Choose a sharing model and share review results.
## Choose a sharing model
Choose the sharing model when you create the cycle, on the manager review stage. You cannot change it after you create the cycle.
| | HR enables sharing (default) | Managers share directly |
| - | - | - |
| **When managers can share** | After a cycle admin enables sharing for their reviews | As soon as they submit their reviews |
| **Who controls timing** | Cycle admins | Each manager |
| **Cycle admins can also share** | ✓ | ✓ |
| **Use it when** | You plan to calibrate, or you want all employees to get results at the same time | You do not plan to calibrate |
Use **HR enables sharing** if you plan to calibrate. With **Managers share directly**, a manager can share a review before calibration changes are final. The employee then sees ratings that can change later.
## Share a submitted review
The assigned manager submits the review. This creates the employee's packet.
With **HR enables sharing**, a cycle admin selects submitted reviews in **Configure cycle > Sharing** and chooses **Enable manager sharing**. With **Managers share directly**, this happens automatically after submission.
The assigned manager opens the packet from **Review packets to share** on the cycle's **To Do** page and selects **Share with employee**.
A cycle admin can share a pending or enabled packet directly from **Configure cycle > Sharing**, including when the assigned manager is unavailable.
Windmill sends the employee a Slack notification with a **View Review** link when the packet is shared. Enabling manager sharing does not send a notification or give the employee access.
## Check the packet before sharing
Cycle admins can inspect packets at any sharing status. The assigned manager and managers above the employee can inspect them after manager sharing is enabled.
Use **Preview as employee** to check the questions and PDF the employee will receive. Review comments can record changes that are needed. Unresolved comments trigger a warning but do not block sharing.
Only the assigned direct manager can share an enabled packet. Managers above that manager can read it but cannot share it.
## Lock the review when ready
Locking is optional when enabling or completing sharing. The sharing dialogs include **Also lock reviews to prevent further edits (recommended)**. When this option is selected, the button changes to **Enable manager sharing & lock** or **Share & Lock**.
Sharing and locking are separate. A lock alone does not give the employee access.
## Share only submitted manager reviews
A manager review must be submitted before it has a packet to share. This workflow cannot share self, peer, or upward reviews on their own.
The employee's packet contains manager questions marked visible to employees. Optional questions can appear without answers.
## Finish calibration before sharing
Calibration submission does not share results with employees. Applied changes become effective immediately. Recommended changes become effective only after the assigned manager accepts them.
Complete those actions before sharing final results. Windmill notifies affected managers about applied changes or shared recommendations. It does not send cycle admins a separate notification that packets are ready.
## Check what each recipient can see
Employees see only manager-review questions marked visible to employees. Their packet does not include self, peer, or upward reviews, calibration comments, review comments, or sharing history.
After any packet is shared, a cycle admin cannot change manager-question visibility for that cycle.
Cycle admins can see all packet questions at any sharing status. The assigned manager and managers above the employee can see them after manager sharing is enabled.
# Supplemental data
Source: https://help.gowindmill.com/features/performance-reviews/supplemental-data
Add employee data to a review cycle for use in calibration.
**Supplemental data** is employee data that you add to a review cycle separately from review answers. Examples include job level, time in role, previous ratings, and sales results.
Calibration participants can use this data to compare employees and understand their reviews. Each cycle has its own fields and employee values. Data added to one cycle does not appear in another cycle.
## Before you start
You must be a [cycle admin](/features/performance-reviews/cycle-administration) to add or change supplemental data. Use an [API key](/api-reference/overview#authentication) that belongs to an admin of the cycle.
Add supplemental data through the Windmill API. There is no upload form or CSV import in the Windmill Dashboard.
Prepare the fields you need and the values for each employee. For example, define a **Job level** field and give each employee a value such as **L3** or **L4**.
## Add fields and employee values
Use the API to set the complete list of supplemental fields for the cycle. Give each field a label and a type. Save the field IDs returned by the API.
Use the API to send values for each employee. Identify each employee by their primary email address or Windmill employee ID. Use the field IDs from the first step to identify each value.
Read the fields and values back through the API. Check that the employees, field types, and values are correct. Then open a calibration that includes those employees to check the available data.
The [Supplemental cycle data API reference](/api-reference/performance-reviews/supplemental-cycle-data) contains the endpoints, request formats, and examples.
### Supported field types
| Type | Example |
| - | - |
| Text | Notes from another system |
| Single-select | Job level: L3, L4, or L5 |
| Multi-select | Skills or areas of work |
| Boolean | Nominated for promotion: yes or no |
| Scale | Years in role on a defined scale |
| Numeric | Sales result as a percentage |
| NPS | A score from zero to 10 |
| Rating | Previous rating from one to five |
## Use the data in calibration
Supplemental data is read-only in calibration. A cycle admin must use the API to change it.
### Grid and table
In the calibration axis picker, select a field from **Supplemental data**. A field appears only when a reviewee in the calibration has a value for it.
Grid compares two different dimensions. For example, compare a manager rating with job level. Supplemental values cannot be changed in the grid.
You can also add supplemental fields as table columns. You can sort these columns, except for multi-select fields. See [Review and compare](/features/calibrations/review-and-compare) for the available views.
### Reviewee packets
The calibration packet's **Supplemental Data** tab shows the fields and the reviewee's values. A missing value appears as **No response provided**.
This is the packet inside calibration. Supplemental data is not included in the [review results shared with employees](/features/performance-reviews/share-reviews).
### Pre-read report
Windy uses available supplemental values in the calibration pre-read report. If you change the fields or values, the report becomes out of date. A facilitator can select **Regenerate** to update it.
See [Pre-read](/features/calibrations/pre-read) for instructions to update and send the report.
## Access and visibility
| Role | Access |
| - | - |
| Cycle admins | Define fields and read or change values through the API. |
| Calibration facilitators and committee members | Read values for reviewees in their calibration. |
| Managers | To open supplemental data in a calibration, they must be added as calibration participants. |
| Employees who receive reviews | Supplemental data is not included in their shared review results. |
A cycle admin must be added to a calibration separately to open its details. See [Calibration roles and access](/features/calibrations/roles-and-access).
## Updating data mid-cycle
Cycle admins can update supplemental data after calibration starts. Check the complete request before you send it:
* **Field updates replace the field list.** Include every field you want to keep. If you omit a field, the API removes that field and archives its values.
* **Keep existing field IDs.** Use an existing field's ID to update it. A label change keeps the values. Changes to the type, options, or limits archive values that the new field definition does not accept.
* **Value updates replace each listed employee's data.** Include every value you want to keep for that employee. If you omit a value, the API archives it.
* **Other employees keep their values.** An update does not change values for employees omitted from the request.
* **Update the pre-read report.** Ask a facilitator to regenerate the report after the data changes.
## FAQs
There is no CSV import for supplemental data. Use the [API reference](/api-reference/performance-reviews/supplemental-cycle-data) to prepare and send fields and employee values.
Check that at least one reviewee in the calibration has a value for the field. Also check that a later update did not omit the field or the employee's value.
No. Supplemental values are read-only in calibration. A cycle admin must update them through the API.
# Test a review cycle
Source: https://help.gowindmill.com/features/performance-reviews/test-cycles
Check a review cycle before you run it with your company.
## Purpose of a test cycle
Use a test cycle to check your questions, stages, assignments, messages, and review packets. Add a small group of participants so you can see what each person will experience.
## What is different
A test cycle works like an official cycle. It uses the same settings. The people you select get the same review tasks, Windy chats, and emails as they would in an official cycle. Tell them that the cycle is a test.
The difference is what happens to the results. Test cycle results are not used in:
* 1:1s or later Windy conversations.
* Review context for later cycles.
* Past-cycle comparisons in calibration.
* Company stats.
The test cycle's own progress pages and review packets still show its results.
To change a test cycle to an official cycle, or the opposite, open the cycle settings and change the **Cycle type**.
## Clean up the test
When you finish testing, open **Configure cycle > Settings** and select **Delete cycle**. This deletes the test cycle and all its reviews, progress, and calibrations. You cannot undo this.
# Track progress and send reminders
Source: https://help.gowindmill.com/features/performance-reviews/track-progress-and-notifications
Track review progress, find incomplete work, and send reminders.
## Track cycle and stage status
* **Overview:** See completed stages and the overall completion rate.
* **Participants:** See reviewees, saved managers, assigned stages, and progress.
* **Stage To-dos:** See the reviewee, reviewer where applicable, status, due date, and submission date.
## Find incomplete reviews
Filter **Participants** by person, stage, or status. Statuses are **Not Started**, **In Progress**, and **Completed**. A stage's **To-dos** also lets you filter by employee, reviewer where applicable, or status.
There is no separate overdue status. Compare incomplete work with its due date.
## Review completion by manager
Sort **Participants** by saved manager, then open a participant to inspect assignments. You can also inspect work in a stage's **To-dos**. There is no separate completion-by-manager chart.
Use the stage export when you need submission times for completed work.
## Use Insights during the cycle
**Insights** updates as responses are submitted. Before any responses exist, the view is empty. It shows employees reviewed, respondents, submitted reviews, completion rate, and question results.
Filter by group, job title, saved manager, start date, or tenure. Cycle admins can see the full cycle. Managers with assigned manager reviews can see only reviewees within their access.
## Send reminders
A cycle admin can select one or more incomplete reviews in a stage's **To-dos** and select **Nudge**. You can also select **Nudge** for one review in **To-do Details** or in a participant's details. Work must be pending or in progress and have an active review chat.
The same admin must wait 15 minutes before nudging the same chat again.
## Complete a stage or cycle
Submissions update progress and Insights immediately. You do not need to complete the cycle to see results.
Every stage must be completed or archived before the cycle can be completed. Incomplete assignments do not block cycle completion once their stage is completed or archived.
Complete sharing before you complete the cycle. Completion makes the cycle read-only.
# Windy and review context
Source: https://help.gowindmill.com/features/performance-reviews/windy-and-review-context
Refer to the context report, feedback, and notes while you write a review.
## Context report
You can refer to the **Context report** in the side panel while you write your answers. Use it to find examples of work, feedback, and results from the review period.
Self, peer, upward, and manager reviews can include this AI-generated report. It uses only information you can access:
* **Self reviews:** Your work, goals, feedback, recognition, 1:1s, and previously shared reviews.
* **Peer and upward reviews:** Shared work and records you can access about the person.
* **Manager reviews:** Submitted self, peer, and upward feedback, previously shared reviews, your 1:1s and private notes, and other work records you can access.
Ongoing feedback follows its [audience rules](/features/continuous-feedback#feedback-visibility).
For peer and upward reviews, the report describes the work you did with the person. It helps you remember examples. It does not rate the person or suggest what to write.
Only the person who writes the review can read the context report. The reviewee does not see it, and it is not part of the review packet or a calibration. Select **Context report options** to select **Copy as markdown** or **Download PDF**.
## Use the side panel
You can also read feedback, 1:1s, and notes in the side panel. The tabs shown depend on the review type and the information in Windmill:
* **Self reviews:** Context report, Windy chat, and 1:1s.
* **Peer reviews:** Context report, Windy chat, and your private notes about the person.
* **Upward reviews:** Context report, Windy chat, shared 1:1s, and your private notes about the person.
* **Manager reviews:** Context report, Windy chat, Self review, Peer reviews, Upward reviews, 1:1s, Private notes, Past reviews, and Calibration.
A tab appears only when the related information or feature is available. The **Context report** can be empty if no report exists.
## Use Company Knowledge
Windy can use relevant Company Knowledge, such as a career framework, expectations document, or review guide. Job title and level help Windy select material that applies to the reviewee. Windy leaves out material that does not clearly apply.
Company Knowledge provides context. It does not replace the review questions.
## Write with Windy
Self, peer, and upward review chats are available in Slack and on the review page. Manager review chat is inside Windmill.
Windy and the form use the same saved answers. Windy can read drafts and recent edits, save changes, and submit after you give explicit approval.
Private notes remain visible only to their author in the context panel. You can edit all answers before submission. Context becomes part of the submitted review only when you use it in an answer and submit or resubmit.
## Use review page controls
Select **View answer history** to inspect or restore an earlier version of an answer. Select **Review actions** to restart or reset the review.
* **Restart Review:** Clears your saved answers and returns you to the start screen. Earlier answers stay in answer history.
* **Reset:** Generates new context and keeps your answers. Select what to generate again: **Context report**, **Observations**, or **Resend Chat**. New context can take up to 30 minutes.
Managers can switch between combined peer or upward Insights and individual responses. Cycle admins use Windmill to lock manager reviews and share submitted answers with employees.
# Windy chat
Source: https://help.gowindmill.com/features/performance-reviews/windy-chat
Discuss the work with Windy to write or change review answers.
## Open the review chat
Use **Windy chat** on the review page for self, peer, upward, and manager reviews. For self, peer, and upward reviews, you can also use the review's Slack conversation.
Each peer request has a separate conversation. Check the assignment and person before you write. Manager review chat is in Windmill.
## Develop an answer with Windy
Tell Windy which question you want to work on. You can start with notes or an existing answer.
Explain the situation, the action, and the result. Add specific examples. Windy can use the available review context and relevant Company Knowledge, such as a career framework or review guide.
Tell Windy what you want the answer to say. Ask for a draft, a clearer explanation, or a change to an existing answer.
Read the answer in the review form. Correct errors and add missing details. Windy can save drafts, but submits only after you give explicit approval.
## Give specific instructions
State the question, the change, and any facts that Windy must keep. For example:
For the collaboration question, use the launch example I just described. Explain what I did and the result. Keep the answer under 150 words.
For a manager review, you can ask Windy to compare the available feedback before you draft an answer:
Compare the submitted self review with the peer feedback. Identify shared examples that can support the strengths question.
## Move between chat and the form
Windy can read saved drafts and recent edits, including changes you make in the form. Chat and the form use the same review record.
After [AutoDraft](/features/performance-reviews/autodraft), use chat to explain corrections or ask Windy to revise the draft. For a small change to existing text, use [quick edits](/features/performance-reviews/fine-tune-a-review#use-quick-edits).
Draft edits do not replace submitted answers until you submit again. See [Drafts, submissions, and missed deadlines](/features/performance-reviews/drafts-submissions-and-deadlines).
# Writing a review
Source: https://help.gowindmill.com/features/performance-reviews/writing-a-review
Choose a writing method, prepare your answers, and submit your review.
## Choose a writing method
You can write self, peer, upward, and manager reviews with the same methods. Start with the method that helps you explain the work. You can change methods as you write.
| Method | Use it to |
| - | - |
| [Writing manually](/features/performance-reviews/writing-manually) | Enter answers directly in the review form. |
| [AutoDraft](/features/performance-reviews/autodraft) | Prepare a first draft from review context, selected observations, and your notes. |
| [Windy chat](/features/performance-reviews/windy-chat) | Discuss the work with Windy and develop or change answers. |
| [Fine-tune a review](/features/performance-reviews/fine-tune-a-review) | Change existing answers with manual edits, quick edits, or Windy. |
AutoDraft and quick edits are on the Windmill review page. Self, peer, and upward review chats are also available in Slack. Manager review chat is in Windmill.
## Open your assignment
Open [Performance reviews](https://app.gowindmill.com/COMPANY/performance), select the cycle, and open **To do**. Select the review you want to write.
* **Self review:** Write about your own work.
* **Peer review:** Write about the person named in the approved request. Read the focus note above the questions, if present.
* **Upward review:** Write about the person named in the assignment. A later org chart change does not change this assignment.
* **Manager review:** Write about the employee assigned to you. You do not need to be their current org chart manager.
Each assignment has its own questions and answers. Check the person's name before you start.
## Refer to the context report while you write
You can refer to the **Context report** in the side panel while you write your answers. The report brings together information from the review period. Use it to find examples of the work and results.
Self reviews can include your work, goals, feedback, and 1:1s. Peer and upward reviews use shared work and records you can access about the person. Manager reviews can also use submitted self, peer, and upward feedback.
You can also refer to tabs such as **1:1s** when they appear. Read [Windy and review context](/features/performance-reviews/windy-and-review-context) for the tabs and information you can use with each review type.
## Check and submit your answers
Check each answer for accuracy. Complete every required question and keep text answers within the word limits. Then submit the review. Windy submits only after you give explicit approval.
Windmill saves changes as drafts. Changes to a submitted review take effect when you submit again. A completed cycle is read-only. A manager-review lock or removal of your assignment can also prevent changes.
See [Drafts, submissions, and missed deadlines](/features/performance-reviews/drafts-submissions-and-deadlines) and [Review data access](/features/performance-reviews/review-data-access).
## Know who can read your review
Your writing method does not change who can read the submitted review.
* **Self review:** You can read your own answers. Cycle admins, assigned manager reviewers, the saved cycle management hierarchy, and calibration committees with access can read submitted answers.
* **Peer and upward feedback:** Feedback includes your name. The person you review cannot read the answers. You can reopen feedback you wrote. Cycle admins and managers with access can read it.
* **Manager review:** Cycle admins can read submitted answers. The employee can read answers intended for them after the review packet is shared.
Peer packet access uses the saved cycle management hierarchy. Upward feedback access can also use the current reporting line or delegated access. See [Review data and context access](/features/performance-reviews/review-data-access) for the detailed access rules.
# Writing manually
Source: https://help.gowindmill.com/features/performance-reviews/writing-manually
Write answers directly in the review form and use context to find examples.
## Write in the review form
You can write self, peer, upward, and manager reviews directly in Windmill. You can also edit answers that AutoDraft or Windy prepared.
Open the cycle's **To do** page and select your assignment. If the start screen appears, select **Write on my own**.
Check the question, help text, answer choices, and word limit. For a peer review, also read the request's focus note, if present.
Type in the answer field or select an answer choice. Use specific examples of the work, the action, and the result. Windmill saves your changes as drafts.
Complete all required questions. Read each answer before you submit. If you changed a submitted review, select **Resubmit review** to update the submitted answers.
## Refer to the context report while you write
You can refer to the **Context report** in the side panel while you write your answers. Use it to find examples from the review period. You can also open tabs such as **1:1s** when they appear.
For a manager review, submitted self, peer, and upward feedback can help you assess the work. With several peer or upward responses, use **Insights** for a combined view or **Responses** to read each response.
Context becomes part of your submitted review only when you use it in an answer. See [Windy and review context](/features/performance-reviews/windy-and-review-context).
## Get help with an answer
Use [Windy chat](/features/performance-reviews/windy-chat) to discuss an example or ask Windy to change an answer. Use [quick edits](/features/performance-reviews/fine-tune-a-review#use-quick-edits) to change existing text.
You can move between the form and Windy. Both use the same saved answers.
# Private Notes
Source: https://help.gowindmill.com/features/private-notes
Capture private observations about yourself and your team in Windmill so Windy can resurface them during 1:1 prep, performance reviews, and team questions.
Private notes help you remember important moments, observations, and context about yourself and your team members. When you tell Windy something you don't want to forget, they'll remember it and bring it up at exactly the right time—during 1:1 prep, performance reviews, self-reviews, or when you ask questions about team members.
Think of private notes as your personal memory system. You capture insights when they happen, and Windy ensures they surface when they matter most.
## Why use private notes
**Remember what matters**
Great management requires remembering countless details across many people and situations. Private notes let you capture those details in the moment, so you never lose track of important context.
**Write reviews faster**
When it's time to write a performance review or prepare for a 1:1, Windy automatically pulls relevant notes into context. No more scrambling to remember what happened six months ago.
**Better conversations**
Whether you're preparing for a 1:1 or responding to a question about a team member, Windy brings forward the notes that matter, helping you have more informed and meaningful conversations.
## When to create private notes
### About your team members
**Document key moments**
When someone handles a difficult situation well, takes initiative, or demonstrates growth, capture it immediately.
**Track patterns over time**
Notice someone consistently stepping up to help others? Document it. See areas where someone needs support? Record that too.
**Remember context for later**
Capture information that will help you write better reviews, prepare for 1:1s, or answer questions about team development.
### About yourself
**Track your own wins**
Document your accomplishments, successful projects, and positive feedback so you have material ready for self-reviews.
**Note your growth**
Record skills you're developing, challenges you've overcome, and areas where you've improved.
**Remember lessons learned**
Capture insights from mistakes or difficult situations while they're fresh.
## How to create private notes
You can create a private note from wherever you're already working — Slack or the Windmill Dashboard. Pick whichever is fastest in the moment.
**From Slack**
* **Message Windy** — Open your direct message with Windy, mention `@Windy`, and describe the note. For example, write "private note about Sarah: …".
* **Slash command** — Run `/private-note` in any channel to open a quick-capture form. See the [Slack shortcuts reference](/integrations/slack#slack-shortcuts) for the full list.
* **Message shortcut** — Right-click any Slack message (or use the ⚡ menu) and choose **Create a private note** to save that message as a note.
**From the Windmill Dashboard**
* **Universal Search (⌘K)** — Open the command palette and pick **Create a private note**. If you run it from someone's profile, the note is automatically associated with that person.
* **Employee profile** — On any employee's page, use the **Actions** menu to add a private note about them.
### Examples for managers
**Capturing a team member's achievement**
"Hey Windy, private note about Sarah: She handled the client escalation
yesterday really well. Stayed calm under pressure, asked good clarifying
questions, and found a solution the client was happy with. This is exactly the
kind of ownership we need."
"@Windy note for myself about James: He's been going out of his way to help
onboard the new engineers. Saw him spend 2 hours yesterday walking Maya
through our deployment process even though it wasn't assigned to him. Great
team player."
"Windy, remember this about Alex: In today's design review he struggled to
explain the technical tradeoffs to the product team. Need to work with him on
communicating complex ideas to non-technical stakeholders."
**Preparing for conversations**
"@Windy private note: I need to talk to Jordan about meeting deadlines. This
is the third sprint where they've asked for extensions. Want to understand
what's blocking them and figure out how to help."
"Hey Windy, note about Maria: She mentioned in our 1:1 that she wants to move
into management eventually. Let's revisit this in 6 months and see if there
are opportunities to give her some mentorship experience."
### Examples for individual contributors
**Tracking your own accomplishments**
"@Windy note for me: Just finished the authentication refactor—reduced login
time by 40% and eliminated the race condition that was causing intermittent
failures. Took 3 weeks but the system is way more reliable now."
"Hey Windy, remember this: Lisa from product said my work on the dashboard
redesign really improved the user experience. She specifically called out how
I incorporated all the customer feedback from the research sessions."
"Windy, note for myself: Figured out why the nightly builds were failing.
Turned out to be a timezone issue in the test data. Took me two days to track
down but learned a lot about our testing infrastructure in the process."
**Documenting growth and learning**
"@Windy private note: Started leading the weekly tech talks this month. First
one was rough—I was nervous and rushed through it. By the third one I felt way
more comfortable and got great questions from the team."
"Hey Windy, remember: I was really struggling with the microservices migration
earlier this quarter. Spent time pair programming with senior engineers and
now I'm comfortable owning services end-to-end. Big growth area for me."
### Examples for cross-functional leads
**Tracking team dynamics**
"@Windy note: The partnership between design and engineering has really
improved this quarter. The weekly sync we started is helping both teams stay
aligned. Emma and Chris have been doing a great job co-leading those
sessions."
"Windy, remember this about Priya: She's been stepping up to coordinate
between product, design, and engineering on the mobile project. Not officially
her role but she's naturally filling that gap and doing it well."
## How Windy uses your notes
### During 1:1 preparation
When you're preparing for a 1:1, Windy automatically pulls in relevant notes about that person. This gives you context about recent observations, areas to celebrate, and topics to discuss.
### When generating review content
Private notes are a **writing aid only** — visible to you while you draft, never published into a review or shared with anyone else. Specifically:
* **Notes you wrote tagged to another employee** surface as writing-aid context in *your own* draft of any review you write about that person — your manager review of them (if they report to you), your peer review of them, or your upward review of them. Observations you can choose to include, edit, or ignore.
* **Notes you wrote about yourself** surface as writing-aid context in *your own* self-review draft.
* **Notes never appear in another person's packet, in calibration, or in any shared review artifact** — even if they're about the same employee being reviewed by someone else.
Nothing from a private note reaches a shared review unless you explicitly select or copy it into an answer. For the full input-to-surface mapping across all review inputs, see [Windy and review context](/features/performance-reviews/windy-and-review-context#use-the-side-panel).
### When you ask questions
If you ask Windy a question about a team member—like "What has Sarah been working on?" or "How has James been doing with the new role?"—Windy includes relevant notes in their response.
### When making decisions
If you're considering someone for a promotion, new project, or development opportunity, your notes provide valuable context for those decisions.
## Privacy and access
**Your notes are truly private**
Private notes are only visible to you. They never appear in shared spaces like 1:1 agendas or performance review documents unless you explicitly copy content from them.
**Not visible to the subject**
Notes you write about team members are not visible to those team members. They're for your reference only.
**Separate from shared information**
Anything you want to share with someone should go in the shared 1:1 space, feedback, or other collaborative features. Private notes are strictly for your own memory and preparation.
## FAQs
No. Private notes are only visible to you. They're designed to be a personal memory system and are never shared with others, including the people you write notes about.
1:1 notes are shared between both participants and appear in the 1:1
agenda/notes space. Private notes are only visible to you and don't appear in
any shared spaces. Use private notes for your own reflections and
observations, and 1:1 notes for information you want to share with the other
person.
Yes. You can always ask Windy to update or remove a private note. Just message
Windy with the details of what you want to change or delete.
Windy retains your private notes indefinitely until you delete them. This
means context from months or even years ago can surface when it's
relevant—perfect for annual reviews or long-term development conversations.
Private notes are great for documenting performance concerns or areas for
improvement that you want to remember. However, actual feedback—both positive
and constructive—should be shared directly with the person through proper
feedback channels. Use private notes to track patterns and prepare for
conversations, not as a substitute for direct communication.
Currently, private notes surface automatically in context when they're relevant. If you want to review your notes about a specific person or topic, you can ask Windy directly—for example, "What notes do I have about Sarah?" or "Show me my notes from last quarter."
# Anonymity and privacy
Source: https://help.gowindmill.com/features/pulse-surveys/anonymity-and-privacy
See what an anonymous pulse hides, what it still shows, and how minimum group sizes protect respondents.
An anonymous pulse removes names from answers, for every viewer. Owners, Admins, managers, Windy, and MCP all see the answers without names. To check a pulse's setting, open **Settings** and look at **Response anonymity**.
## What anonymity hides
* Names on answers in the **Responses** tab, **Insights**, and the CSV export. Each shows **Anonymous**.
* Answers on the employee profile **Pulse** tab. Anonymous responses never appear there.
* Filters on the **Responses** tab, except **Run**.
* Names in AI summaries. Windy summarizes anonymous responses without names.
## What anonymity doesn't hide
Participation is always named. Owners can see who responded and who didn't, in the **Insights** response cards, the **Runs** tab, and the **Participants** tab. Windy and MCP can report participation too.
Answers are still visible to everyone that [response sharing](/features/pulse-surveys/response-sharing) allows, without names.
Anonymity removes names, not details. A very specific comment can still point to one person. Keep this in mind when you share results.
## Minimum group sizes
| Rule | Minimum |
| - | - |
| Choose **Anonymous** when you create a pulse | 3 participants |
| Show any results in **Insights** | 3 responses |
| Filter or compare a group | 3 responses in that group |
Below the minimum, Insights shows "Not enough responses yet". Groups below the minimum can't be selected and show "Requires at least 3 responses". Windy and MCP apply the same minimums.
## Features that are off for anonymous pulses
* **Live response streaming** isn't available. See [Live response streaming](/features/pulse-surveys/live-response-streaming).
* The **Nudge** button doesn't appear. [Automatic reminders](/features/pulse-surveys/reminders) still go out.
* Manager email reports aren't sent. See [Pulse notifications](/features/pulse-surveys/notifications).
## Anonymity is set at creation
You choose **Named** or **Anonymous** when you create a pulse. You can't change it later in **Settings**, and **Duplicate pulse** keeps the same setting.
To run the pulse with the other setting, create a new pulse and choose the setting you want. Then pause the old pulse so it doesn't send again.
## Withdrawing a response
Participants can select **Withdraw response** to remove their answers from the pulse and from Slack. Their answers stay saved as a private draft. Reports that were already emailed may still include the response.
## FAQs
Windy and MCP can show who responded. They can't show who gave which answer.
No. Create a new pulse, choose **Anonymous**, and pause the original. Tell participants which pulse to answer.
At least 3 participants to create the pulse, and at least 3 responses before a result or a group shows.
# Ask Windy about results
Source: https://help.gowindmill.com/features/pulse-surveys/ask-windy-about-results
Summarize pulse results, filter by answers, and plan next steps with Windy or your own AI tool.
Windy can read pulse results with you. Ask for takeaways, compare groups, or filter by how people answered. Windy uses your access, so it sees only the responses you can see.
## Ask Windy on the pulse page
Go to [Pulse](https://app.gowindmill.com/COMPANY/pulse) and open the pulse you want to review.
The Windy panel opens on the right, with the pulse already in context.
Suggestions include "What are the high level takeaways?", "Generate an outline for a slide deck?", and "What followup questions should I ask?"
## Ask Windy in Slack or chat
You can also ask Windy about a pulse in Slack or in Windmill chat. Name the pulse so Windy can find it.
"@Windy summarize the latest run of the Q3 engagement pulse, broken down by group."
"@Windy list who hasn't responded to the weekly blockers pulse yet."
### Filter by answers
Windy can filter results by how people answered, which the **Insights** tab can't do.
"@Windy summarize what people who answered No to 'Do you have the tools you need?' said about blockers."
## Use your own AI tool with MCP
Connect Claude, Codex, Cursor, or another AI tool through the [Windmill MCP server](/features/mcp). Your tool can then read pulses, runs, participation, insights, and responses.
MCP acts as you. If you can't see a pulse or a response in Windmill, your AI tool can't see it either. Data that Windmill returns passes through your AI tool's model, so use a tool that meets your company's privacy rules.
## Turn results into an action plan
The [Pulse action plan skill](/best-practices/skills/pulse-action-plan) gives Windy steps for a follow-up report. The report covers response rate, strengths and concerns, themes, and 3 to 5 actions with owners. Add the skill once, then ask:
"@Windy use the Pulse action plan skill to review our quarterly engagement pulse."
## Anonymous pulses
Windy and MCP follow the same anonymity rules as the Windmill Dashboard:
* They can show who responded, because participation is always named.
* They can't show who gave an answer. Anonymous answers never include a name.
* Results for groups with fewer than 3 responses stay hidden.
See [Anonymity and privacy](/features/pulse-surveys/anonymity-and-privacy).
## FAQs
Yes. Select **Download Responses** on the **Responses** tab to get a CSV, or connect Claude through [MCP](/features/mcp) to query results directly. See [Responses, runs, and exports](/features/pulse-surveys/responses-runs-and-exports).
# Change expiration
Source: https://help.gowindmill.com/features/pulse-surveys/change-expiration
Extend or shorten how long participants have to respond, for future runs or for runs you already sent.
The expiration sets how long participants have to respond to each run. The countdown starts at the run's scheduled send time. When the expiration passes, the run closes.
## Who can change expiration
Owners with edit access can change the expiration after launch. You can change it on an active, paused, or completed pulse. You cannot change it on an archived pulse.
## Change the expiration
Open the pulse and select the **Settings** tab. Select edit on **Expiration**.
In **Edit expiration**, choose a duration in **Expire after**. The shortest option is 1 hour. You can also choose **No expiration**.
To change runs you already sent, select **Choose existing runs to update**, then select **Next**. In **Select runs**, select the runs to update. Switch between **Current runs** and **All runs** to include closed runs. You can also choose specific responses in a run.
Select **Review changes**. **Review expiration change** shows the old and new default expiration, and the runs and responses you selected.
Select **Update expiration**.
## What changes
* **Future runs:** The new duration becomes the default expiration for all later runs.
* **Existing runs:** If you do not select runs, existing responses keep their current expiration.
* **Selected runs:** The new expiration applies to the runs and responses you selected. The new deadline cannot be in the past. If it is, choose a longer duration or **No expiration**.
### Reopen a closed run
If you extend a run that already closed, the run opens again with the new deadline.
If the pulse is a completed one-time pulse, it becomes active again. A paused pulse stays paused.
### Participant notice
Respondents who have not submitted get a Slack message about the new deadline. Windy sends it 5 minutes after your last change, so several quick edits send only one message.
## Other places that set expiration
**Send again** and **Edit schedule** also set the default expiration for later runs. To change runs you already sent, use **Edit expiration**. See [Send again, pause, and resume](/features/pulse-surveys/send-again-pause-and-resume) and [Expiration and deadlines](/features/pulse-surveys/expiration-and-deadlines).
## FAQs
Yes. In **Edit expiration**, select **Choose existing runs to update** and select the open run. Participants who have not submitted get a Slack message about the new deadline.
There is no close button. Choose a shorter expiration for the open run. The new deadline must be in the future.
# Choose participants
Source: https://help.gowindmill.com/features/pulse-surveys/choose-participants
Select who receives a pulse, narrow the audience, and learn who can send to whom.
Choose participants in the **Select participants** step when you create a pulse. Only workspace members can be participants. You must select at least one person.
## Audience options
Select one option. The options that you see depend on your role and your team.
| Option | Who it includes |
| - | - |
| **My team** | You and everyone who reports up to you. Shows only if you have direct reports. |
| **Everyone** | All members in the company. Admins and HR Admins only. |
| **My direct reports** | Only the people who report directly to you. Shows only if you have direct reports. |
| **Groups** | Members of the saved groups that you select. Admins and HR Admins only. |
| **Other Teams** | Another manager's team, including that manager. |
| **Specific people** | The people that you select by name. |
Before you continue, check the number of people who will be enrolled. To remove people, use **Exclude specific people**.
## Narrow the audience
For all options except **Specific people**, you can narrow the audience:
* **People to include:** Select **All**, **Managers only**, or **Individual contributors only**.
* **Exclude specific people:** Select people to remove from the audience.
## Who can send to whom
Anyone can create a pulse. Admins and HR Admins can send a pulse to any members.
Other people can send a pulse to:
* **Specific people** that they select by name.
* **Teams in their reporting line**, such as **My team**, **My direct reports**, or an **Other Teams** manager whose team they can see. This includes teams they can see through delegated access.
If you select an audience that you cannot use, Windmill shows this message: "Only admins and HR admins can use this participant filter. Select specific employees or a team in your visible or delegated reporting structure."
## New members and org changes
Windmill finds the people who match your audience each time a run starts. For example, if you choose **Everyone**, new hires who join as members receive the next run.
## Change participants later
Open the pulse's **Participants** tab and select **Edit Participants**. After launch, the change applies to the next run. See [Edit a live pulse](/features/pulse-surveys/edit-a-live-pulse).
When you send a run with **Send now**, you can also clear people for that run only. See [Launch a pulse](/features/pulse-surveys/launch-a-pulse).
## FAQs
Yes. Any member can create a pulse. A manager can send it to their own team, their direct reports, or specific people. Only Admins and HR Admins can send to **Everyone** or to **Groups**.
Yes. Windmill finds the participants each time a run starts. New members get the next run.
No. Only workspace members can be participants. Invite them from [Members](https://app.gowindmill.com/COMPANY/config/members) first.
# Create a pulse
Source: https://help.gowindmill.com/features/pulse-surveys/create-a-pulse
Start a pulse from a prompt or from scratch, then set its questions, participants, and anonymity.
Create a pulse to prepare your questions and participants. Windmill saves the pulse as a draft. Nothing is sent until you launch it.
## Start a new pulse
Open [Pulse surveys](https://app.gowindmill.com/COMPANY/pulse) and select **New pulse**.
In the **Create pulse** dialog, enter a prompt in **What do you want to learn from your team?** Include any background that helps Windy write good questions.
To start from an example, select one of the **Ideas**, such as **Engagement survey** or **Weekly blockers**. The idea fills the prompt, and you can edit it.
Select **Continue** to let Windy generate questions from your prompt. Or select **Create from scratch** to start with one blank **Text** question and no generated content.
The **Pulse setup** page opens. It has 3 steps.
## Step 1: Questions
If you entered a prompt, Windy generates questions and suggests a name and description. You can edit all of them.
* **Icon:** Select the icon to change it.
* **Name:** Enter a name of up to 100 characters. The name shows in Slack and in your results.
* **Description:** Add a short introduction of up to 500 characters. Respondents see it at the top of the survey.
* **Questions:** Add, edit, reorder, or delete questions. See [Questions and question types](/features/pulse-surveys/questions-and-question-types).
Select **Preview** to see the survey as respondents will see it. The preview updates while you edit.
**Next** is available when the pulse has a name, at least one question, a label for each question, and complete answer choices.
## Step 2: Select participants
Choose who receives the pulse, such as your team, specific people, or a group. You must select at least one person. See [Choose participants](/features/pulse-surveys/choose-participants).
## Step 3: Pulse anonymity
Choose **Named (recommended)** or **Anonymous**. You cannot change this setting after you create the pulse. **Anonymous** is not available if you have fewer than 3 participants.
Then choose the **Completion location**: **Anywhere** or **Platform only**. See [Named and anonymous pulses](/features/pulse-surveys/named-and-anonymous-pulses).
Select **Create pulse**.
## What Windmill saves
The pulse opens with the status **Draft**. Windmill does not send it to anyone yet. The new pulse starts with these settings:
* **Owner:** You are the owner and the requester.
* **Expiration:** No expiration. You choose one when you launch.
* **Reminder:** Windy reminds participants one day after a run starts if they have not responded.
* **Response sharing:** Private to owners.
* **Notifications:** Windy sends you updates in Slack while a run is active. Owners get an email report after a run ends. See [Notifications](/features/pulse-surveys/notifications).
You can change the questions, participants, and settings from the pulse's tabs before you launch.
If you close **Pulse setup** before you select **Create pulse**, Windmill discards your changes.
## Next steps
* [Test a pulse](/features/pulse-surveys/test-a-pulse) to see what participants will get.
* [Launch the pulse](/features/pulse-surveys/launch-a-pulse) now or on a schedule.
# Drafts, submissions, and withdrawals
Source: https://help.gowindmill.com/features/pulse-surveys/drafts-submissions-and-withdrawals
Learn how pulse drafts save, what happens when you submit, and how to change or withdraw a response.
Your pulse answers stay private until you submit them. After you submit, you can still edit your response or withdraw it.
## Drafts save automatically
Windmill saves your answers as you type on the web form. In Slack, Windy saves your answers at natural breaks in the chat. You do not need a save button.
Drafts are private. Pulse owners and other viewers do not see your answers until you submit.
Drafts sync between Slack and the web form. You can start with Windy in Slack and finish on the web form, or the other way around. The web form shows only the answers that Windy has saved. Windy keeps the changes you make on the web form.
## Submit your response
On the web form, select **Submit**. If a required question has no answer, you see **Please answer all required questions.** The form moves you to the first question that needs an answer.
After you submit, you see **Response submitted**. Your response is now shared with the people who can view it.
In Slack, Windy submits for you when every question is answered or skipped and every required question has an answer. Learn more in [Respond to a pulse](/features/pulse-surveys/respond-to-a-pulse).
## Edit after you submit
A submitted response shows the **Response submitted** banner with the time you submitted. You can still change your answers.
Your changes stay private until you submit again. People who can view your response see your last submitted version until then. In Slack, Windy submits your edits again when every required question has an answer.
## Withdraw your response
Withdraw your response to remove it from the pulse.
Open the pulse from **Pulse > Responses** or from the link in Slack.
Select **Withdraw response** in the **Response submitted** banner.
In **Withdraw your response?**, select **Withdraw response**.
Your answers stay saved as a draft, so you can edit and submit again later. Windmill removes your response from the pulse and from Slack.
Reports that were already emailed may still include your response. Windmill cannot recall them.
You can also ask Windy in Slack to withdraw your response.
## See your past responses
Go to [Pulse](https://app.gowindmill.com/COMPANY/pulse) and open the **Responses** tab. It lists the pulses you have responded to. Open one to see or change your answers.
## FAQs
Yes. Open the pulse, change your answers, and submit again. Your changes stay private until you do.
They stay saved as a private draft. Your response is removed from the pulse and from Slack, but reports already emailed may still include it.
# Duplicate and delete a pulse
Source: https://help.gowindmill.com/features/pulse-surveys/duplicate-and-delete
Rename, copy, or delete a pulse from the Pulse actions menu.
Use the **Pulse actions** menu to rename, duplicate, or delete a pulse. The menu is the three-dot button at the top of the pulse page. It also shows on each row in **Manage pulses**.
Only owners with edit access see this menu.
## Rename a pulse
Select **Pulse actions**, then **Rename pulse**. Enter the new name and select **Save**. The new name shows in Slack and in your results.
## Duplicate a pulse
Select **Pulse actions**, then **Duplicate pulse**.
In **Duplicate pulse**, enter a **Pulse name**. Select **Duplicate**.
Windmill opens the **Settings** tab of the new pulse. Review the settings before you launch it.
### What the copy includes
The copy includes the questions, description, prompt, icon, participants, and anonymity setting. It also copies response sharing, completion location, expiration, reminder timing, requester, notifications, email reports, and live response streaming. The other owners of the original pulse become owners of the copy.
The copy does not include the schedule, runs, or responses. It starts as a **Draft**, so nothing is sent until you launch it.
### When to duplicate
* **Test again after launch:** **Test pulse** is available only before launch. Duplicate the pulse to get a new draft, then send yourself a test. See [Test a pulse](/features/pulse-surveys/test-a-pulse).
* **Run the pulse for a different group:** Duplicate the pulse, then change its participants.
* **Start over with new questions or settings:** Keep the original results, and launch a new pulse with your changes.
A copy always has the same anonymity setting as the original. To use a different setting, create a new pulse. See [Named and anonymous pulses](/features/pulse-surveys/named-and-anonymous-pulses).
## Delete a pulse
Select **Pulse actions**, then **Delete pulse**.
Type the pulse name exactly, including capitalization and spaces.
Select **Delete pulse**.
Deleting a pulse removes it from Pulse lists and stops future runs. You cannot undo this in Windmill. If you want to keep the results, [export the responses](/features/pulse-surveys/responses-runs-and-exports) first.
To stop future runs but keep the pulse, [pause it](/features/pulse-surveys/send-again-pause-and-resume) instead.
## FAQs
Select **Pulse actions**, then **Delete pulse**. The pulse no longer shows in your Pulse lists.
Not from the pulse page. **Test pulse** is available only before launch. Duplicate the pulse and send a test from the copy.
# Edit a live pulse
Source: https://help.gowindmill.com/features/pulse-surveys/edit-a-live-pulse
Change questions, participants, and settings after you launch a pulse.
Owners with edit access can change a pulse after launch. Most changes apply to the next run. Runs that were already sent keep their questions.
## Edit questions
Open the pulse and select the **Questions** tab. Select **Edit**.
Add, remove, reorder, or change questions in the full-page editor. Select **Preview** to see the survey as participants see it. See [Questions and question types](/features/pulse-surveys/questions-and-question-types).
Select **Save changes**.
Question changes apply to the next run. Each run keeps a copy of the questions it was sent with, so earlier responses and results do not change.
### Legacy pulses
Older pulses can show **Legacy pulse** on the **Questions** tab. These pulses were created before structured questions. Select **Edit**, then save, to create an editable question set from the pulse's topics.
## Edit participants
Open the **Participants** tab and select **Edit Participants**. Change the participant selection, then select **Confirm**. See [Choose participants](/features/pulse-surveys/choose-participants).
Participant changes apply to the next run. To send the pulse to new people now, use [Send again](/features/pulse-surveys/send-again-pause-and-resume).
For a one-time pulse, you cannot remove people who already received the pulse.
## Settings you can change
Open the **Settings** tab and select edit on a section. You can change these settings after launch:
* **Name**
* **Schedule** — see [Send again, pause, and resume](/features/pulse-surveys/send-again-pause-and-resume)
* **Expiration** — see [Change expiration](/features/pulse-surveys/change-expiration)
* **Prompt**
* **Requester** — see [Owners and requester](/features/pulse-surveys/owners-and-requester)
* **Owners**
* **Response sharing** — see [Response sharing](/features/pulse-surveys/response-sharing)
* **Completion location**
* **Notifications** — see [Notifications](/features/pulse-surveys/notifications)
* **Live response streaming**, for named pulses — see [Live response streaming](/features/pulse-surveys/live-response-streaming)
## What you cannot change
* **Response anonymity:** You set this when you create the pulse. It never changes. See [Named and anonymous pulses](/features/pulse-surveys/named-and-anonymous-pulses).
* **Completed pulses:** You cannot edit questions, participants, or most settings. You can still change owners and the expiration.
* **Archived pulses:** A deleted pulse cannot be edited.
* **Sent one-time pulses:** After a one-time pulse is sent, you cannot edit its questions or most settings. The pulse shows **This pulse has already been sent and cannot be edited**. You can still edit participants, owners, and the expiration.
To run a pulse again with a different setup, [duplicate it](/features/pulse-surveys/duplicate-and-delete).
## FAQs
No. Anonymity is fixed when you create the pulse. Create a new pulse and choose **Anonymous** in the **Pulse anonymity** step. Then pause or delete the first pulse.
No. Each run keeps the questions it was sent with. Your edits apply to the next run.
# Expiration and deadlines
Source: https://help.gowindmill.com/features/pulse-surveys/expiration-and-deadlines
Set how long participants have to respond, and learn what happens when a run closes.
The **expiration** sets how long participants have to respond to each run. Windy uses it to time reminders. When it passes, the run closes and Windmill prepares results for the owners.
## Choose an expiration
You can choose 1 hour, 2 hours, 3 hours, 6 hours, 12 hours, 1 day, 2 days, 3 days, 4 days, 5 days, 1 week, or 2 weeks.
**No expiration** is available only in **Settings**, when you edit the **Schedule** or the **Expiration**. With no expiration, runs stay open and Windy does not send a deadline reminder.
### Defaults
* **New pulse:** No expiration until you launch it.
* **Send now:** 3 days. Send now requires an expiration.
* **Schedule for later:** 1 day. Choose an expiration before you select **Schedule pulse**.
* **Calendar event, before the event:** There is no expiration setting. Responses close at the **Report delivery time** before the meeting. See [Schedule types](/features/pulse-surveys/scheduling-types).
## How deadlines work for each run
Each participant's deadline starts when their run is sent. For example, with a 3-day expiration, a run sent on Monday at 9 AM closes on Thursday at 9 AM.
With **Local employee time**, people in different time zones get the run at different moments. So their deadlines are also different.
Participants see the deadline as a due date on the web form and in their to-dos.
## When a run closes
* **Reminders stop.** Windy does not send more reminders for that run.
* **Status changes.** People who did not submit show as **Overdue** in the run's participant list. Their to-do shows as past due.
* **Results go to owners.** Windmill prepares a summary and sends it to owners and any other report recipients. See [Notifications](/features/pulse-surveys/notifications).
* **Later runs continue.** For a scheduled pulse, the next run starts at its scheduled time.
### Late answers
Windmill does not block answers after a run closes. Windy still accepts answers in Slack, and people can still submit on the web form. Past-due to-dos stay in the list for 14 days after the deadline.
Reports sent when the run closed do not include answers that arrive later.
### One-time pulses
A one-time pulse changes to **Completed** after its run expires. A completed pulse can no longer be edited. If the pulse has no expiration, it does not complete on its own.
## Close a run early
There is no button to close a run early. You can:
* [Change the expiration](/features/pulse-surveys/change-expiration) for the current runs.
* [Pause the pulse](/features/pulse-surveys/send-again-pause-and-resume) to stop future runs. Pausing does not close runs that are already open.
## FAQs
Yes. Windmill does not reject late answers. Windy accepts them in Slack, and the web form still works. Reports sent before the answer arrived do not include it.
Yes. Go to **Settings** > **Expiration** and select **Edit expiration**. Then choose the runs to update. See [Change expiration](/features/pulse-surveys/change-expiration).
# Filter and compare results
Source: https://help.gowindmill.com/features/pulse-surveys/filter-and-compare-results
Narrow pulse insights to a group, or compare groups side by side by job title, group, or reporting line.
Filters and comparisons help you find differences between teams. Both are on the **Insights** tab, next to **Search questions**.
## Filter results
Use the filters to narrow every chart to one population:
| Filter | Shows responses from |
| - | - |
| **Job title** | People with the selected job titles. |
| **Groups** | People in the selected [groups](/org-chart/groups). |
| **Reports under** | People in the reporting line of any selected employee. |
You can combine filters. For example, choose a group and a job title to see engineers in one office.
Filters use each person's current job title, groups, and manager. They don't use the values from the time the person answered. People with no value appear under **No job title**, **No employee group**, or **No manager**.
## Compare groups
The button shows **None** when no comparison is active.
Choose **Job title**, **Groups**, or **Reports under**.
Search the options, then select the groups you want to show side by side.
Each question then shows one result per group. For Single Select and Multi-Select questions, a **Heatmap** shows the groups side by side.
## Anonymous pulses
Anonymous pulses protect small groups:
* Each run needs at least 3 responses before its results show. Until then, you see "Not enough responses yet".
* Groups with fewer than 3 responses can't be selected. Their options show "Requires at least 3 responses".
* If a selected group falls below the minimum, you see "Insights unavailable". Remove that group or choose different ones.
Filters on the **Responses** tab aren't available for anonymous pulses, except **Run**. See [Anonymity and privacy](/features/pulse-surveys/anonymity-and-privacy).
## Filter by answers with Windy
The **Insights** tab filters by people, not by answers. To filter by answers, ask Windy. For example:
"@Windy how did people who rated workload 1 or 2 in the latest engagement pulse answer the manager support question?"
Windy uses the same access rules and anonymous minimums as Insights. See [Ask Windy about results](/features/pulse-surveys/ask-windy-about-results).
## FAQs
Yes, if each group has at least 3 responses. Use **Groups** for departments and **Reports under** for a manager's team. Smaller groups stay hidden to protect anonymity.
Departments work as filters when they exist as groups in Windmill. If your departments aren't set up as groups, use **Reports under** or **Job title** instead.
# Pulse overview
Source: https://help.gowindmill.com/features/pulse-surveys/index
Learn how to create a pulse, collect responses from your team, and review the results.
A **pulse** is a set of questions that you send to a group of people. You can send it one time or in more than one **run**. A run is one send of the pulse, with its own participants and deadline.
You choose the questions, the participants, and whether responses are named or anonymous. Windy sends each run to participants. People can respond in a web form in Windmill or in a chat with Windy.
## How a pulse works
### Creating the pulse
Describe what you want to learn, and Windy suggests questions. You can also start from a blank question. Then choose the participants and the anonymity setting. See [Create a pulse](/features/pulse-surveys/create-a-pulse) and [Questions and question types](/features/pulse-surveys/questions-and-question-types).
### Testing and launching
A new pulse is a draft. Nothing is sent until you launch it. Send yourself a [test pulse](/features/pulse-surveys/test-a-pulse) first, then [launch the pulse](/features/pulse-surveys/launch-a-pulse) now or on a schedule.
### Collecting responses
Participants [respond to the pulse](/features/pulse-surveys/respond-to-a-pulse) before the run expires. Windy sends [reminders](/features/pulse-surveys/reminders) to people who have not responded. Owners can [manage the pulse](/features/pulse-surveys/manage-a-pulse) while it runs.
### Reviewing results
Use [Insights](/features/pulse-surveys/insights) to see response rates and results for each question. You can also [export responses](/features/pulse-surveys/responses-runs-and-exports) or [ask Windy about the results](/features/pulse-surveys/ask-windy-about-results).
## Named and anonymous pulses
* **Named:** Each response shows the name of the person who wrote it. You can follow up with that person.
* **Anonymous:** Responses do not show who wrote them. An anonymous pulse needs at least 3 participants.
You choose this setting when you create the pulse. You cannot change it later. See [Named and anonymous pulses](/features/pulse-surveys/named-and-anonymous-pulses).
## People and roles
* **Owners** can edit the pulse, launch it, nudge participants, and see all responses. The person who creates the pulse becomes its first owner.
* **Co-owners** are owners that another owner adds. They have the same access as the creator.
* **Participants** receive each run and respond to the questions.
* **Managers** can see their reports' responses when the pulse's response sharing allows it.
* **Admins and HR Admins** can send a pulse to **Everyone** or to **Groups**. Other people can send to their own team or to specific people.
Anyone in your workspace can create a pulse. Admins and HR Admins do not get automatic access to pulses that other people own. See [Pulse permissions](/features/pulse-surveys/pulse-permissions) and [Owners and requester](/features/pulse-surveys/owners-and-requester).
## Common uses
* **Engagement surveys:** Learn how motivated, supported, and connected people feel.
* **Weekly blockers:** Find what stops people from doing their best work.
* **Event feedback:** Get feedback about an all hands meeting or an offsite.
* **Tools and workplace needs:** Learn which tools, resources, or office changes would help.
* **Process improvements:** Find repetitive tasks and pain points that you can improve.
* **AI usage:** Learn how people use AI tools in their work.
The **Ideas** in the create dialog give you a starting prompt for each of these uses.
## Before you start
* **Participants:** Only workspace members can be participants.
* **Anonymity:** Decide if you need anonymous responses before you create the pulse.
* **Schedule:** Decide if you will send the pulse one time or on a schedule. You choose this when you launch.
* **Sharing:** Decide who else must see the responses. You can add co-owners and change [response sharing](/features/pulse-surveys/response-sharing) after you launch.
Open [Pulse surveys](https://app.gowindmill.com/COMPANY/pulse) to create your first pulse.
# Pulse insights
Source: https://help.gowindmill.com/features/pulse-surveys/insights
Read participation and question results for one run, or follow trends across runs.
The **Insights** tab turns pulse answers into charts. Use it to check participation, compare answers, and follow changes from run to run.
Insights appear after the first run is sent. Test runs are not included. They include only responses you are allowed to see. See [Response sharing](/features/pulse-surveys/response-sharing).
## Choose a view
* **By run:** Results for one run. Use **Choose a run** to pick the date.
* **Over time:** Results across all runs, shown as trends. This view is available once the pulse has more than one run.
Use **Search questions** to find a question quickly.
## Check participation
In **By run**, two cards appear at the top:
* **Response count:** How many people responded, out of everyone the run was sent to.
* **Response rate:** The percentage who responded.
Each card shows the change from the previous run. Select a card to see who responded.
In **Over time**, a **Responses** chart shows the response count for each run.
## Read results by question type
| Question type | Results |
| - | - |
| **Scale** | Distribution of answers and the **Average**. |
| **Rating** | Count for each rating and the **Average**. |
| **eNPS** | The eNPS score, with **Detractors** (0–6), **Passives** (7–8), and **Promoters** (9–10). |
| **Yes/No** | Count for each answer and the percentage who said **Yes**. |
| **Single Select** | Count for each option and total **Responses**. |
| **Multi-Select** | Count for each choice and the number of respondents. One person can pick several choices, so choice counts can add up to more than the respondent count. |
| **Text** | Number of **Responses**. |
Text questions show "Text insights are coming soon". To read text answers, select the response count, or open the [Responses tab](/features/pulse-surveys/responses-runs-and-exports).
A question added or removed between runs shows **Not asked in this run** for runs that didn't include it.
### Chart types
Use the chart controls on a question to switch views. Available charts depend on the question type:
* **Bar list:** Counts beside each answer label.
* **Distribution bar:** The share of answers in each category.
* **Column chart:** Counts across rating or scale values.
* **Graph:** The shape of the distribution.
* **Heatmap:** Counts for each option in a grid. Available for Single Select and Multi-Select questions.
Changing the chart changes only the display.
### Open the answers behind a chart
Select a bar, a count, or a value to open the answers behind it. The panel shows each answer with the person's name. On anonymous pulses, answers show as **Anonymous**.
## Filter and compare groups
Filter results by **Job title**, **Groups**, or **Reports under**, or use **Compare** to show groups side by side. See [Filter and compare results](/features/pulse-surveys/filter-and-compare-results).
## FAQs
Anonymous pulses need at least 3 responses before results can show. See [Anonymity and privacy](/features/pulse-surveys/anonymity-and-privacy).
The pulse has only one run so far. **Over time** becomes available after the second run.
# Launch a pulse
Source: https://help.gowindmill.com/features/pulse-surveys/launch-a-pulse
Send a pulse now or schedule it to run later.
A new pulse is a draft. Nothing goes to participants until you launch it. Only pulse owners can launch a pulse.
Before you launch, you can send yourself a test. See [Test a pulse](/features/pulse-surveys/test-a-pulse).
## Start the launch
Open the pulse from [Pulse surveys](https://app.gowindmill.com/COMPANY/pulse). A draft pulse opens on the **Launch** tab.
Select **Launch Pulse**. The **Launch pulse** dialog opens.
* **Send now:** Send one run right away and start collecting responses.
* **Schedule for later:** Set a schedule so the pulse runs automatically.
## Send now
The **Send pulse now** setup has three steps:
1. **Choose participants:** Everyone in the pulse's participant list is selected. Clear the check box for anyone you want to leave out of this run. Use **Select all** and **Clear all** for bulk changes.
2. **Choose expiration:** Choose how long participants have to respond. The default is 3 days. Send now requires an expiration.
3. **Review:** Check the expiration and the number of participants. Then select **Send now**.
If a person got a run of this pulse less than 6 hours ago, their row shows **Ran less than 6 hours ago.** You can still select them, but they will get a second request.
The expiration you choose also becomes the pulse's default expiration. Learn more about [expiration and deadlines](/features/pulse-surveys/expiration-and-deadlines).
## Schedule for later
The schedule setup has three steps:
1. **Choose schedule type:** Choose **Recurring schedule**, **Calendar event schedule**, **One-time schedule**, or **New hire anniversary**.
2. **Configure schedule:** Set the dates, times, time zone, and expiration. The default expiration is 1 day.
3. **Review:** Check the next runs and the participants. Then select **Schedule pulse**.
Windy sends each run at its scheduled time. Learn more about each option in [Schedule types](/features/pulse-surveys/scheduling-types).
## What participants receive
When a run starts, Windy sends each participant a direct message in Slack. The pulse also appears in their to-dos in Windmill, where they can open the web form.
Windmill does not send pulse invitations by email. Email is used only for result reports after a run. Learn more about [responding to a pulse](/features/pulse-surveys/respond-to-a-pulse).
## After launch
The pulse page changes to show results. The tabs are **Responses**, **Insights**, **Questions**, **Runs**, **Participants**, and **Settings**.
To run the pulse again, pause it, or change it, see [Manage a pulse](/features/pulse-surveys/manage-a-pulse).
# Live response streaming
Source: https://help.gowindmill.com/features/pulse-surveys/live-response-streaming
Post each pulse response to a Slack channel as soon as someone submits it.
Live response streaming posts each submitted response to a Slack channel. Your team can follow answers as they arrive, without opening Windmill.
Streaming is available only for named pulses. The **Live response streaming** section doesn't appear on anonymous pulses.
## Set up streaming
Windy can post only in channels it is a member of. If Windy isn't in the channel, responses won't post.
Only owners with edit access can change streaming.
Turn on **Live response streaming enabled**, then choose a **Slack channel**.
Leave **Group responses in a thread** on to keep responses together, or turn it off. See the next section.
Everyone in the channel will see each person's name and full answers. Choose a channel with the right audience.
## What Windy posts
When the first response of a run arrives, Windy posts an announcement with a link to the pulse. The announcement shows a running count, such as "3/10 responded (30%)".
Each response shows the person's name and their answers.
If someone edits and submits again, Windy updates their message. If someone withdraws their response, Windy deletes the message and updates the count.
### Threaded or separate messages
| **Group responses in a thread** | Result |
| - | - |
| On (default) | Responses post as replies under the announcement. The channel stays tidy. |
| Off | Each response posts as a new message in the channel. Responses are easier to notice. |
## Streaming and other notifications
Streaming posts individual responses while a run is open. To post a summary or send email when a run closes, see [Pulse notifications](/features/pulse-surveys/notifications).
## FAQs
No. Streaming would show who gave each answer, so it's turned off for anonymous pulses. See [Anonymity and privacy](/features/pulse-surveys/anonymity-and-privacy).
Yes. Ask Windy to stream responses to a channel when you create or update a named pulse. Windy must still be a member of that channel.
# Manage a pulse
Source: https://help.gowindmill.com/features/pulse-surveys/manage-a-pulse
Check a pulse's status and find the correct workflow to send, pause, edit, or clean up a pulse.
Open a pulse from [Pulse surveys](https://app.gowindmill.com/COMPANY/pulse) to manage it. Only owners with edit access can make changes. Other people see **Read only access** and can only view responses.
## Pulse statuses
| Status | Meaning |
| - | - |
| **Draft** | You created the pulse, but did not launch it. Nothing was sent. |
| **Scheduled** | The pulse has a schedule and will send again. |
| **Running** | A run was sent and its expiration has not passed. |
| **Sent** | All runs expired and nothing is scheduled. The pulse stays open. You can edit it and send it again. |
| **Paused** | Windy paused the pulse at your request. It does not send or remind until you unpause it. |
| **Completed** | A pulse with a one-time schedule whose run expired. The pulse is closed. You can only view its responses. |
| **Archived** | You deleted the pulse. It no longer shows in Pulse lists. |
**Sent** and **Completed** both mean that no run is open. The difference is what you can do next. A pulse that you send with **Send now** changes to **Sent**, so you can send it again later. A pulse with a one-time schedule changes to **Completed**, and it does not send again.
## Pulse tabs
Before launch, the pulse has **Launch**, **Questions**, **Participants**, and **Settings** tabs.
After launch, the pulse has **Responses**, **Insights**, **Questions**, **Runs**, **Participants**, and **Settings** tabs. The **Windy chat** panel beside the tabs lets you ask Windy about the pulse.
## Status banners
A banner at the top of the pulse shows its state and the actions you can take.
| Banner | Actions |
| - | - |
| **Want to preview first?** | **Test pulse** (before launch only) |
| **Running** | **Send again**, and **Pause future runs** if the pulse is on a schedule |
| **Pulse on a Schedule** | **Edit schedule**, **Pause pulse**, **Send now** |
| **Manual pulse** | **Send again** |
| ***Pulse name* is paused** | **Unpause pulse** |
| ***Pulse name* is completed** | **View responses** |
## Send, pause, or resume a pulse
Send a new run at any time, or stop the schedule without closing open runs. There is no button to close a run. A run closes when its expiration passes.
See [Send again, pause, and resume](/features/pulse-surveys/send-again-pause-and-resume).
## Edit a pulse after launch
You can change questions, participants, and most settings. Question changes apply to the next run. You cannot change anonymity.
See [Edit a live pulse](/features/pulse-surveys/edit-a-live-pulse).
## Extend or shorten a deadline
Change the default expiration for future runs. You can also select open or closed runs to update.
See [Change expiration](/features/pulse-surveys/change-expiration).
## Remind people who have not responded
Windy sends [automatic reminders](/features/pulse-surveys/reminders). You can also send a manual nudge on a named pulse.
See [Nudge participants](/features/pulse-surveys/nudge-participants).
## Share access to the pulse
Add co-owners, change who the pulse comes from, or share results with other people.
See [Owners and requester](/features/pulse-surveys/owners-and-requester) and [Response sharing](/features/pulse-surveys/response-sharing).
## Reuse or remove a pulse
Duplicate a pulse to run it again with a new setup or to test it again. Delete a pulse to remove it from Pulse lists and stop future runs.
See [Duplicate and delete a pulse](/features/pulse-surveys/duplicate-and-delete).
# Named and anonymous pulses
Source: https://help.gowindmill.com/features/pulse-surveys/named-and-anonymous-pulses
Choose if pulse responses show who wrote them, and choose where people can respond.
Choose the anonymity setting in the **Pulse anonymity** step when you create a pulse. This setting controls if each response shows the name of the person who wrote it.
## Choose named or anonymous
* **Named (recommended):** Each response includes the author's name. You know who said what and can follow up with that person.
* **Anonymous:** Responses are fully de-identified. Use this for sensitive topics where honest answers are more important than names.
An anonymous pulse needs at least 3 participants. If you select fewer than 3 people, **Anonymous** is not available. Go back to **Select participants** and add more people.
## Anonymity is fixed
You cannot change the anonymity setting after you create the pulse. To use a different setting, create a new pulse and choose the setting that you need.
**Duplicate pulse** keeps the same anonymity setting as the original pulse. So a duplicate does not change a named pulse to anonymous.
To check the setting, open the pulse's **Settings** tab and find **Response anonymity**. It shows **Responses are named** or **Responses are anonymous**.
## What changes for anonymous pulses
* **Nudges:** Owners cannot nudge participants manually. Windy still sends automatic [reminders](/features/pulse-surveys/reminders).
* **Live response streaming:** This option is not available. See [Live response streaming](/features/pulse-surveys/live-response-streaming).
* **Results:** Windmill hides a result until it has at least 3 responses. This also applies to each group when you compare results.
* **Participation:** Owners can still see who responded. They cannot see which answers belong to which person.
Before people start, the survey tells them who can see the results and that their individual responses stay anonymous. See [Anonymity and privacy](/features/pulse-surveys/anonymity-and-privacy) for the full rules.
## Choose a completion location
In the same step, choose where people can respond:
* **Anywhere:** People can respond in Windmill or in their chat with Windy.
* **Platform only:** People can respond only in Windmill.
You can change the completion location later in the pulse's **Settings** tab. The change applies to the next run.
## FAQs
No. Create a new pulse and choose **Anonymous**. Then pause the first pulse so that it does not send more runs. See [Send again, pause, and resume](/features/pulse-surveys/send-again-pause-and-resume).
You need at least 3 participants to create an anonymous pulse. Windmill shows a result, or a group in a comparison, only when it has at least 3 responses.
Not manually. Windy still sends the automatic reminders to people who have not responded.
# Pulse notifications
Source: https://help.gowindmill.com/features/pulse-surveys/notifications
Get Slack updates while a pulse runs, and send results by email or to Slack channels when a run closes.
Notifications tell you and others how a pulse is going. They are separate from the [reminders](/features/pulse-surveys/reminders) that participants get.
To set them up, open the pulse, select **Settings**, and edit **Notifications**. Only owners with edit access can change them.
## Slack updates while running
Turn on **Slack DMs** under **While running** to have Windy send the pulse creator progress updates. This setting is on by default for new pulses.
For each run, Windy messages the creator in Slack:
* When the first response arrives
* About one day after the run starts
* Once a day when new responses arrived in the last 24 hours
* After the run's deadline passes
Updates go only to the creator, not to other owners. Test runs don't send updates.
## Email results after completion
Turn on **Email** under **After completion** to send results when a run closes. A run closes when its expiration passes. Runs with **No expiration** never close, so they don't send completion emails.
### Recipients
| Recipient | What they get |
| - | - |
| **Owners** | The full report, with up to 50 responses in the email. |
| **Email addresses** | The AI summary and a link to the report, sent to the addresses you enter. Individual responses are not included. |
| **Participants** | A report on all responses. Available only with **Visible to all participants** sharing. |
| **Managers** | A report on their direct reports' responses only. Available only with **Visible to managers** sharing. Not sent for anonymous pulses. |
**Email addresses** get the AI summary of all responses, even if they have no access to the pulse in Windmill. Check who you add before you turn this on.
### Email format
* **Link only:** A link to the report.
* **Summary only:** An AI summary of the results.
* **Responses only:** The individual responses.
* **Summary & responses:** The summary and the responses.
The AI summary covers themes and key findings, then suggested action items. On anonymous pulses, the summary does not name the people who responded.
## Post results to Slack channels
Turn on **Slack channels** under **After completion** and choose one or more channels. When a run closes, Windy posts "Pulse completed" with a link to the report. With **Visible to all participants** sharing, the post also includes a short preview.
Everyone in the channel sees the post. The link opens the report only for people who have access to the pulse.
## Stream each response to Slack
To post each response to a Slack channel as it comes in, use [live response streaming](/features/pulse-surveys/live-response-streaming). It is set up separately from notifications.
## FAQs
Yes, on named pulses. Set sharing to **Visible to managers**, then choose **Managers** as email recipients. Each manager gets a report on their direct reports. See [Response sharing](/features/pulse-surveys/response-sharing).
No. Reports that were already emailed still include the response. The response is removed from the pulse and from Slack.
# Nudge participants
Source: https://help.gowindmill.com/features/pulse-surveys/nudge-participants
Send a manual reminder to people who have not responded to a pulse run.
A nudge is a manual reminder. Windy sends it to the person in their pulse chat. Use it when you want a response before the run expires.
Windy also sends [automatic reminders](/features/pulse-surveys/reminders). Nudges do not replace or stop them.
## Who can nudge
* Only owners with edit access can send nudges.
* The pulse must be active. You cannot nudge on a paused, completed, or archived pulse.
* You can nudge only people who got the run and have not responded.
* You can nudge each person once every 15 minutes.
## Send a nudge
Open the pulse and select the **Runs** tab. Select a run to open its details. To open the run on its own page, select the **View Run** icon.
The run lists each participant. People who have not responded show **No response**.
Select **Nudge** next to the person. The button changes to **Sent**.
After you nudge someone, the run shows when they were last nudged. If you try again too soon, **Nudge** shows **Just nudged, you can nudge again in** and the number of minutes.
## Anonymous pulses
The **Nudge** button does not show on anonymous pulses. Automatic reminders still go out to people who have not responded. See [Named and anonymous pulses](/features/pulse-surveys/named-and-anonymous-pulses).
## Ask Windy to nudge
You can ask Windy to nudge people for you. Windy finds the run and the people who have not responded, then sends the nudges.
"@Windy nudge everyone who hasn't responded to the Q3 engagement pulse."
The same rules apply. Windy nudges only people who have not responded, and skips anyone you nudged in the last 15 minutes.
## FAQs
The **Nudge** button does not show on anonymous pulses. Automatic reminders still go out before the deadline.
No. Windy writes the reminder message.
# Owners and requester
Source: https://help.gowindmill.com/features/pulse-surveys/owners-and-requester
Add pulse owners, choose who the pulse comes from, and give other people access to results.
Owners manage a pulse and see all of its responses. The requester is the person Windy names when it asks participants to respond.
## Pulse owners
The person who creates a pulse becomes its first owner. Owners that another owner adds show as **Co-Owner**.
Owners with edit access can:
* Edit questions, participants, and settings.
* Launch, send, pause, and nudge.
* Change the expiration.
* Rename, duplicate, and delete the pulse.
* See all responses, whatever the response sharing setting.
Admins and HR Admins do not get automatic access to pulses that other people own. To give them access, add them as owners.
## Add or remove owners
Open the pulse and select the **Settings** tab. Select edit on **Owners**.
In **Edit owners**, select **Add Owner**. Select an employee, then select **Add owner**.
Select **Remove** next to the owner. You cannot remove the creator or yourself from this list.
Select **Done**.
Owners that you add in **Settings** get edit access. A pulse must always have at least one owner with edit access.
### Read-only owners
You can ask Windy to add a read-only owner. Read-only owners can view the pulse and all responses, but cannot change it. They see **Read only access** at the top of the pulse.
"@Windy add Jordan Lee as a read-only owner of the Q3 engagement pulse."
## Choose the requester
The requester tells participants where the request comes from. Open **Settings** and select edit on **Requester**. In **Who should this chat come from?**, choose one option, then select **Save**.
* **Specific employee:** Windy names this person. You can choose only pulse owners.
* **Their manager:** Windy names each participant's manager.
* **Anonymous:** Windy asks without naming anyone.
## Give someone access to results
| Option | Who gets access | What they can do |
| - | - | - |
| Add them as an owner | One person | See all responses. Edit if they have edit access. |
| [Response sharing](/features/pulse-surveys/response-sharing) | Managers, or all participants | See the responses the setting allows. |
| [Email report](/features/pulse-surveys/notifications) | Owners, participants, managers, or email addresses | Get results by email after each run completes. |
Response sharing and email reports follow the pulse's anonymity. On an anonymous pulse, nobody sees who wrote a response. See [Anonymity and privacy](/features/pulse-surveys/anonymity-and-privacy).
## FAQs
No. Delegated access gives visibility only. To let someone edit the pulse, add them as an owner.
Add them as owners, or add their email addresses to the email report in **Notifications**.
# Pulse permissions
Source: https://help.gowindmill.com/features/pulse-surveys/pulse-permissions
See who can create, send, edit, and read a pulse, and what each role can see.
Your access to a pulse comes from your relationship to that pulse, not from your company role. Owners manage a pulse. Sharing settings decide who else can read responses.
## Compare access by role
| Role | Create | Send to | Edit the pulse | Read responses |
| - | - | - | - | - |
| **Any member** | Yes | Specific people, or teams in their visible or delegated reporting line | Only as an owner | Their own, plus any that sharing allows |
| **Admin** or **HR Admin** | Yes | Anyone, including **Everyone** and **Groups** | Only as an owner | Same as any member |
| **Owner** | — | — | Yes | All responses |
| **Read-only owner** | — | — | No | All responses |
| **Participant** | — | — | No | Their own, or everyone's in the same run with **Visible to all participants** |
| **Manager** | — | — | No | Their reporting line's, with **Visible to managers** |
## Who can send to whom
Anyone can select **New pulse**. Admins and HR Admins can choose any participants.
Other members can choose specific people, or a team in their visible or delegated reporting line. If they pick another audience, they see: "Only admins and HR admins can use this participant filter. Select specific employees or a team in your visible or delegated reporting structure." See [Choose participants](/features/pulse-surveys/choose-participants).
## Owners
The person who creates a pulse becomes its first owner. Owners can edit the pulse and always see all responses.
* **Edit owners** can change questions, participants, schedule, settings, and sharing. They can launch, pause, nudge, rename, duplicate, and delete. Owners added in **Settings > Owners** with **Add owner** show as **Co-Owner**.
* **Read-only owners** see all responses but can't change anything. You can add them only through Windy or MCP.
A pulse must keep at least one edit owner. See [Owners and requester](/features/pulse-surveys/owners-and-requester).
People who aren't edit owners see **Read only access** on the pulse: "You can only view responses to this pulse."
## Admins and HR Admins
Admin roles don't give access to other people's pulses. An Admin can read a pulse only as an owner, a participant, a manager with **Visible to managers** sharing, or someone the pulse is shared with. To give an Admin full access, add them as an owner.
## Delegated access
[Access delegation](/permissions-and-access) adds reporting lines to a person's view. With **Visible to managers** sharing, a delegate can read responses from those reporting lines. Delegated access never lets someone edit a pulse.
## Drafts
A pulse that hasn't launched is a draft. Only its owners can see it. Participants can't see it until it's sent.
## FAQs
Yes. Any member can create a pulse for their own team, a team in their reporting line, or specific people.
No. Only edit owners can change a pulse. Ask an owner to add you with **Add owner**.
# Questions and question types
Source: https://help.gowindmill.com/features/pulse-surveys/questions-and-question-types
Add pulse questions, choose a question type, and set answer choices and required questions.
Each pulse has a list of questions. You choose a type for each question. The type controls how people answer and how Windmill shows the results in [Insights](/features/pulse-surveys/insights).
## Question types
Select the **Add question** button, then select a type.
| Type | How people answer | Settings |
| - | - | - |
| **Text** | Write a free-text answer. | Optional maximum number of words. Select **Add max word count** to set it. |
| **Single Select** | Choose one option. | At least 2 options. Optional option descriptions with **Show option descriptions**. Optional text follow-up with **Allow explanation**. |
| **Multi-Select** | Choose one or more options. | At least 2 options. |
| **Yes/No** | Choose **Yes** or **No**. | No answer is selected in advance. Under **Require explanation**, turn on **After Yes** or **After No** to ask for a text follow-up. |
| **Scale** | Choose a number in a range. | The default range is 1 to 5, in whole numbers. Set the low and high values and a label for each end. The range can span up to 99. |
| **eNPS** | Choose a number from 0 to 10. | The scale and end labels are fixed: **Not at all likely** and **Extremely likely**. |
| **Rating** | Choose one labeled point. | At least 2 points. The default is 5 points. Each point needs a label. Optional text follow-up with **Allow explanation**. |
eNPS (employee Net Promoter Score) results group answers as detractors (0 to 6), passives (7 to 8), and promoters (9 to 10).
### Custom rating values
By default, Rating points are numbered 1, 2, 3, and so on in order. If custom rating values are available in your workspace, you can give each point a specific whole number instead—for example 80, 90, and 100 for a three-point scale. In the Rating question's answer settings, edit the number next to each point's label. Each value can be up to four digits, and points are ordered by their value from lowest to highest. [Insights](/features/pulse-surveys/insights) use the value you set.
## Question fields
Each question has these fields:
* **Question:** The question label. It can have up to 150 characters. Every question needs a label.
* **Description:** Optional detail about the question, up to 500 characters. Select **Add description** to add it.
* **Help text:** Optional text that respondents see when they hover over the info icon, up to 300 characters. Select **Add help text** to add it.
* **Answer choices:** Single Select and Multi-Select option labels can have up to 100 characters.
* **Required:** Turn this on if people must answer the question before they submit. It is off by default.
When people respond in a chat with Windy, Windy submits the response after they answer all required questions. See [Respond to a pulse](/features/pulse-surveys/respond-to-a-pulse).
## Organize questions
* **Reorder:** Select **Reorder** to move questions up or down. Select **Exit reorder mode** when you finish.
* **Duplicate:** Select **Duplicate question** on a question card to copy it.
* **Delete:** Select **Delete question** on a question card to remove it.
* **Change type:** Select the type label on a question card and select a different type.
Select **Preview** to see the survey as respondents will see it.
## Edit questions later
After you create the pulse, open its **Questions** tab and select **Edit**. Select **Save changes** when you finish. After launch, your changes apply to the next run. See [Edit a live pulse](/features/pulse-surveys/edit-a-live-pulse).
### Legacy pulses
Pulses created before question types were available show a **Legacy pulse** message on the **Questions** tab. These pulses use topics instead of questions. Select **Edit** to create a question set from the topics. When you save, the pulse uses the new questions.
# Reminders
Source: https://help.gowindmill.com/features/pulse-surveys/reminders
Learn when Windy reminds participants who have not responded to a pulse.
Windy reminds participants who have not submitted a response. You do not need to set anything up. Each run sends up to two automatic reminders to each person, unless you extend the deadline.
## First reminder
Windy sends the first reminder 1 day after it sends the pulse. It goes only to people who have not submitted a response.
If the deadline reminder goes out first, Windy skips the first reminder. This can happen with short expirations.
## Deadline reminder
Windy sends one reminder near the deadline. It becomes due when 25% of the response time remains. For short runs, it becomes due 15 minutes before the deadline. Windy does not send it in the last 10 minutes.
For example:
| Expiration | Deadline reminder becomes due |
| - | - |
| 1 week | About 42 hours before the deadline |
| 3 days | About 18 hours before the deadline |
| 1 day | About 6 hours before the deadline |
| 1 hour | 15 minutes before the deadline |
A run with **No expiration** gets only the first reminder.
If you extend the deadline, participants get a message about the new deadline. Windy can send another deadline reminder before the new deadline, but not within 48 hours of the last one.
## When reminders are delivered
Windy sends reminders during the participant's working hours, between 9 AM and 6 PM in their time zone. Windy also waits until the participant is active in Slack.
* The first reminder waits for a weekday.
* The deadline reminder can go out on any day.
If the reminder window closes before these conditions are met, the participant might not get that reminder.
## Which pulses get reminders
* **Anonymous pulses:** Yes. Automatic reminders work the same way.
* **Paused pulses:** No. Windy sends reminders only while the pulse is active.
* **Test runs:** No.
## Change reminders
You cannot change the reminder text. To change the delay before the first reminder, ask Windy. There is no setting for it in the pulse page.
To follow up yourself, send a manual nudge. See [Nudge participants](/features/pulse-surveys/nudge-participants).
## FAQs
The first reminder goes out 1 day after the pulse is sent. The deadline reminder becomes due about 42 hours before the deadline. Both go only to people who have not submitted.
Yes. Automatic reminders work on anonymous pulses. Windy knows who has not responded, but owners still cannot see who said what.
No. Windy writes a short reminder for each person. You cannot change its text.
# Respond to a pulse
Source: https://help.gowindmill.com/features/pulse-surveys/respond-to-a-pulse
Find your pulse surveys and answer them in Slack with Windy or on the web form.
When someone sends you a pulse, you can answer in a Slack chat with Windy or on the web form in Windmill. Your answers stay in sync, so you can start in one place and finish in the other.
## Find your pulses
* **Slack:** Windy sends you a direct message when the pulse starts.
* **Home:** The **Pulse** section lists pulse surveys waiting for your response.
* **Pulse > To-dos:** Lists every pulse you have not submitted, with who sent it and when it is due. Select **Open** to go to the web form.
Past-due pulses stay in **To-dos** for 14 days after the deadline. After you submit, the pulse moves to **Pulse > Responses**.
## Answer in Slack
Windy opens the chat with a short message, then asks the first question in the thread. Reply in the thread to answer.
* **Questions:** Windy asks each question word for word, in order. Windy might ask up to two follow-up questions to understand your answer.
* **Choices:** For choice, scale, and rating questions, reply with your choice or number.
* **Skips:** You can skip an optional question. Say "skip" or that you would rather not answer.
* **Saving:** Windy saves your answers as private drafts while you talk.
* **Submitting:** When every question is answered or skipped, and every required question has an answer, Windy submits your response. Windy does not ask for separate permission.
If you decline a required question, Windy stops the chat. Your answers stay private as drafts, and Windy sends you a link to the web form. You can finish there when you are ready.
To keep your answers private instead of submitting, tell Windy. Windy does not submit because of a reminder or a deadline.
## Answer on the web form
Open the pulse from Home, from **Pulse > To-dos**, or from the link Windy sends you. The page shows when it was sent and when it is due.
A banner at the top shows who can view your response. For an anonymous pulse, it says your individual responses stay anonymous.
Windmill saves your answers as you go. Required questions must have an answer before you can submit.
You see **Response submitted**. Select **View response** to open it again.
If you own the pulse, the banner says **You manage this pulse.** Select **Manage pulse** to open the pulse page.
## Pulses you must complete in Windmill
An owner can set a pulse to **Platform only**. For these pulses, Windy still sends you a Slack message with a link, but you must answer on the web form.
Windy cannot save or submit answers for a Platform only pulse. You can still ask Windy to explain a question or to help you think through your answer. Then add your answer on the web form.
## Next steps
* To edit, resubmit, or withdraw a response, see [Drafts, submissions, and withdrawals](/features/pulse-surveys/drafts-submissions-and-withdrawals).
* To learn who can see your answers, see [Anonymity and privacy](/features/pulse-surveys/anonymity-and-privacy).
## FAQs
Yes. Open the pulse from **Pulse > To-dos** or from the **Pulse** section on Home. Your Slack answers and web form answers stay in sync.
Yes. Windmill does not block late answers. But reports sent at the deadline do not include them.
# Response sharing
Source: https://help.gowindmill.com/features/pulse-surveys/response-sharing
Choose who can read individual pulse responses: owners only, managers, or all participants.
Response sharing controls who, other than owners, can read individual responses to a pulse. Owners always see every response, and each participant can always see their own.
Response sharing is separate from [anonymity](/features/pulse-surveys/named-and-anonymous-pulses). Anonymity controls whether names appear. Sharing controls who can open the responses.
## Choose a sharing mode
| Mode | Who can read responses | Good for |
| - | - | - |
| **Private to owners** | Owners only. Participants see only their own response. | Company-wide pulses that HR keeps private. |
| **Visible to managers** | Owners, plus each manager for the people in their reporting line. | Company-wide pulses where managers follow up with their teams. |
| **Visible to all participants** | Owners, plus everyone who took part in the same run. | Team pulses such as retros and standups. |
## Change response sharing
Only pulse owners with edit access can change sharing.
Select the edit button on the **Response sharing** section.
The new mode applies right away.
You can change sharing after launch. The change applies to all existing responses, not only future runs. You can't change it after a pulse is completed or archived, or after a one-time pulse is sent.
Switching from **Private to owners** to a wider mode immediately shows past responses to the new audience. Check that participants expect this before you save.
## What managers see
With **Visible to managers**, each manager can open the pulse and read responses from people in their reporting line. This includes direct and indirect reports, and any reporting lines delegated to the manager. Insights for that manager use the same set of responses.
Managers don't get a separate dashboard. They use the pulse's **Responses** and **Insights** tabs.
If you [email results](/features/pulse-surveys/notifications) to **Managers**, each direct manager of a participant gets a report on their direct reports only. The manager's own answer isn't included.
### Anonymous pulses and managers
On an anonymous pulse with **Visible to managers**:
* Managers see answers from their reporting line labeled **Anonymous**.
* Insights and filters stay hidden until at least 3 people have responded. See [Anonymity and privacy](/features/pulse-surveys/anonymity-and-privacy).
* Manager email reports aren't sent.
Small teams often have fewer than 3 responses. In that case, managers see only the "Not enough responses yet" message.
## FAQs
You have three options. [Add them as an owner](/features/pulse-surveys/owners-and-requester), choose a wider sharing mode, or [email them the results](/features/pulse-surveys/notifications).
No. Admin roles don't give access to other people's pulses. An Admin sees responses only as an owner, a manager with manager sharing, or a participant. See [Pulse permissions](/features/pulse-surveys/pulse-permissions).
# Responses, runs, and exports
Source: https://help.gowindmill.com/features/pulse-surveys/responses-runs-and-exports
Read individual pulse responses, check delivery for each run, and download responses as a CSV.
Use the **Responses**, **Runs**, and **Participants** tabs on a pulse to see who answered and what they said. Each tab shows only the responses you are allowed to see. See [Response sharing](/features/pulse-surveys/response-sharing).
## Read individual responses
The **Responses** tab lists each submitted response, grouped by run. Each response shows the person's name and answers. On anonymous pulses, the name shows as **Anonymous**.
Select **Filter** to narrow the list:
* **Run**
* **Name**, **Email**, **Group**, **Job title**, or **Manager**
* **Relationship** to you
* **Start date** or **Tenure**
Anonymous pulses offer only the **Run** filter, so filters can't reveal who wrote an answer.
Select **Refresh** to load new responses.
## Download responses as a CSV
Select **Download Responses** on the **Responses** tab. The file has one row for each participant you can see, including people who have not responded, with these columns:
* **Scheduled At**
* **Windy Chat Sent**
* **Responded At**
* **Employee Name** and **Employee Email** (both "Anonymous" on anonymous pulses)
* **Response**
If you filter by **Run**, the CSV includes only that run. Other filters don't change the export.
## Check each run
The **Runs** tab lists every run of the pulse:
| Column | Shows |
| - | - |
| **Sent** | When the run was sent. Test runs show a **Test** chip. |
| **Expires** | When the run closes. |
| **Chats** | How many people Windy messaged. |
| **Responses** | How many people submitted. |
| **Response rate** | Responses as a share of chats. |
A run can also show chips for chats that are pending or that failed to send. A failed chat usually means the person has no mapped Slack account.
### Check runs across all pulses
The **Runs** tab on the **Pulse surveys** page lists runs from all pulses you can see. Select a run to see each participant's status:
* **Scheduled** or **Sending**
* **Awaiting response**
* **Submitted**
* **Overdue**
* **Delivery failed**
## Check participation by person
The **Participants** tab lists each person in the pulse, with their **Manager**, **Responses** (responses out of chats received), and **Response rate** across runs.
## Find one person's responses
Open an employee's profile and select the **Pulse** tab to see their responses across named pulses. You see only responses you're allowed to see. Anonymous responses never appear here.
# Schedule types
Source: https://help.gowindmill.com/features/pulse-surveys/scheduling-types
Choose when a scheduled pulse runs: on a repeating pattern, around meetings, once, or after each hire date.
When you select **Schedule for later**, you choose one of four schedule types. To send a single run right away, use **Send now** instead. See [Launch a pulse](/features/pulse-surveys/launch-a-pulse).
## Recurring schedule
Use a recurring schedule for regular check-ins, such as a weekly team pulse.
Set a **Start date** and a **Time**. Then choose from **Quick presets**. The preset names use the weekday of your start date. For a start date of Monday, Oct 5, 2026, the presets are:
| Preset | Sends |
| - | - |
| **Weekly on Monday** | Every Monday |
| **Every other Monday** | Every 2 weeks on Monday |
| **Every weekday (Monday to Friday)** | Monday to Friday, every week |
| **Monthly on the first Monday** | The first Monday of each month |
| **On the last Monday of the month** | The last Monday of each month |
| **Custom** | The interval and days that you choose |
### Custom schedules
With **Custom**, set an **Interval** in **Weeks** or **Months**:
* **Weeks:** Choose one or more days in **Repeat on**.
* **Months:** Choose a **Monthly pattern**. Use **On day of month** for a date, such as the 15th. Use **On the Nth weekday** for a pattern, such as the second Tuesday.
A monthly custom schedule also has an **Ends** setting: **Never**, **On** a date, or **After** a number of occurrences.
There is no yearly option.
## Calendar event schedule
Use a calendar event schedule to run a pulse before or after a recurring meeting, such as an all-hands.
Select one or more recurring events from your calendar. Windy sends the pulse only to participants who are also attendees of the event. When the event changes on the calendar, the pulse schedule updates.
Choose the **Timing**:
* **Before the event:** Set a **Lead Time** of 1 hour, 2 hours, 6 hours, or 1 to 4 business days. The default is 1 business day. Then set a **Report delivery time** from 30 minutes to 24 hours before the meeting. The default is 2 hours. Responses close at the report delivery time, which must allow at least 30 minutes to respond.
* **After the event:** Set a **Lag Time** of **Immediate**, 15 minutes, 30 minutes, 1 hour, or 2 hours. Then choose an **Expiration**.
## One-time schedule
Use a one-time schedule to send a single run at a later date. Set a **Date**, **Time**, **Timezone**, and **Expiration**.
A one-time pulse changes to Completed after its run expires. Learn more about [expiration and deadlines](/features/pulse-surveys/expiration-and-deadlines).
## New hire anniversary
Use a new hire anniversary schedule for onboarding check-ins. Each participant gets the pulse separately, based on their hire date.
* **Days after hire date:** The default is 30 days.
* **Send time:** The hour to send. The default is 9:00 AM.
* **Timezone:** The time zone for the send time.
If the date falls on a Saturday or Sunday, the pulse goes out the next Monday. This schedule uses the hire dates in Windmill, so make sure they are correct.
If the participants are **Everyone**, future hires join automatically. They get the pulse the set number of days after their start date.
## Time zones
Recurring, one-time, and new hire anniversary schedules have a **Timezone** setting:
* **Local employee time:** Each participant gets the pulse at the set time in their own time zone. This is the default for recurring and new hire anniversary schedules.
* **My timezone:** Everyone gets the pulse at the same moment, based on your time zone. This is the default for one-time schedules.
# Send again, pause, and resume
Source: https://help.gowindmill.com/features/pulse-surveys/send-again-pause-and-resume
Send a new run of a pulse, stop its schedule, and start the schedule again.
Use the banner at the top of the pulse to send a new run or stop future runs. Only owners with edit access see these actions.
## Send a pulse again
Send a new run when you want responses now, without waiting for the schedule.
Select **Send again** on the **Running** or **Manual pulse** banner. On the **Pulse on a Schedule** banner, select **Send now**.
All current participants are selected. Clear anyone you do not want to include. People who got a run less than 6 hours ago show **Ran less than 6 hours ago.** Clear them if you do not want to send them a second run so soon.
Select how long participants have to respond. An expiration is required.
Check the **Review** step, then select **Send now**.
The expiration you choose also becomes the pulse's default expiration for later runs. See [Change expiration](/features/pulse-surveys/change-expiration).
## Pause future runs
Pausing stops the schedule. It does not close or change runs that are already open. Participants can still respond until those runs expire.
Select **Pause future runs** on the **Running** banner, or **Pause pulse** on the **Pulse on a Schedule** banner.
In **Pause pulse**, select **Pause pulse**.
This action removes the schedule. The pulse becomes a manual pulse and sends only when you select **Send again**. Open runs still get automatic reminders, and you can still nudge.
## Resume a schedule
To start sending on a schedule again, open **Settings** and select edit on **Schedule**. In **Edit schedule**, choose a schedule type and settings, then select **Confirm**. See [Scheduling types](/features/pulse-surveys/scheduling-types).
## Paused status
If you ask Windy to pause a pulse, the pulse gets the **Paused** status. The banner shows ***Pulse name* is paused**. This is different from the pause actions on the banners:
* The pulse keeps its schedule, but does not send new runs.
* Open runs stay open, and participants can still respond.
* Windy does not send automatic reminders for open runs, and you cannot nudge.
Select **Unpause pulse** to make the pulse active again. It then runs on its saved schedule, and reminders start again.
## Edit the schedule
Select **Edit schedule** on the **Pulse on a Schedule** banner, or edit **Schedule** in **Settings**. You can change the schedule type, timing, and the expiration for future runs.
You cannot edit the schedule of a completed or archived pulse, or of a one-time pulse that was already sent.
## Close a run
There is no button to close a run. A run closes when its expiration passes. A one-time pulse with an expiration completes on its own after its run closes.
To close a run sooner, choose a shorter expiration for that run. See [Change expiration](/features/pulse-surveys/change-expiration).
## FAQs
Pause the pulse to stop future runs. Open runs stay open until they expire, so shorten their expiration if you want them to close sooner. To remove the pulse from Pulse lists, [delete it](/features/pulse-surveys/duplicate-and-delete).
No. Pausing stops only future runs. Participants can still respond to an open run until it expires.
# Test a pulse
Source: https://help.gowindmill.com/features/pulse-surveys/test-a-pulse
Send a pulse only to yourself to check the experience before you launch it.
Send yourself a test pulse to see what participants will get. Use it to check the questions, the order, and the Windy chat before anyone else receives the pulse.
## Send a test pulse
Open [Pulse surveys](https://app.gowindmill.com/COMPANY/pulse), select **Manage pulses**, and open the pulse.
At the top of the pulse page, find **Want to preview first?** and select **Test pulse**. Only owners see this option.
In the **Test pulse** dialog, select **Send test**. Windy reaches out to you shortly.
Answer the questions in your chat with Windy or in Windmill. Check each question, the required questions, and the text that Windy shows.
## What a test does
* **Only you receive it.** Windmill does not send the test to the participants that you selected.
* **It is marked as a test.** After launch, test runs show a **Test** label in the pulse's **Runs** tab.
* **It does not launch the pulse.** The pulse stays a draft until you select **Launch Pulse**.
If you find a problem, edit the questions or settings and send another test. See [Questions and question types](/features/pulse-surveys/questions-and-question-types).
## Test before you launch
**Test pulse** is available only while the pulse is a draft. After you send, schedule, or pause the pulse, the test option is no longer shown.
To test a pulse that is already launched, duplicate it. The duplicate is a new draft, so you can test it:
Open the pulse, select **Pulse actions**, then **Duplicate pulse**. Enter a name and select **Duplicate**.
The duplicate opens as a draft. Select **Test pulse** at the top of its page.
When you finish, you can delete the test duplicate. See [Duplicate and delete](/features/pulse-surveys/duplicate-and-delete).
## Next steps
When the test looks right, [launch the pulse](/features/pulse-surveys/launch-a-pulse).
# Shoutouts
Source: https://help.gowindmill.com/features/shoutouts
Recognize team members publicly in Slack with Windmill Shoutouts.
Shoutouts let your team recognize positive contributions in a public Slack channel. A person can create a Shoutout directly in Slack. Windy can also offer to convert positive feedback to a Shoutout after the author gives explicit consent.
## Set up Shoutouts
You must be an Admin or HR Admin. Your company must have an active Slack integration.
Go to [**Settings > Shoutouts**](https://app.gowindmill.com/COMPANY/config/shoutouts/settings).
Turn on Shoutouts for your company.
Select the public Slack channel where Windmill will post Shoutouts.
## Create a Shoutout in Slack
You can create a Shoutout from a Slack message or with a slash command.
Right-click a Slack message and select **Create a shoutout**. You can also enter `/shoutout` in Slack.
Describe the work that you want to recognize.
Select one or more people to recognize.
Submit the form. Windmill saves the Shoutout and shares it with your team.
For more information about Slack shortcuts, see [Slack shortcuts](/integrations/slack#slack-shortcuts).
## Convert positive feedback to a Shoutout
Windy can offer to convert feedback when all the following conditions apply:
* The feedback contains only praise or positive recognition.
* The feedback does not contain constructive or sensitive information.
* The feedback is suitable for a public channel.
If the feedback qualifies, Windy asks the author for permission to share it. Creating a Shoutout makes its linked feedback public, regardless of the earlier audience selection. Windy includes this audience in the final confirmation.
Feedback linked to a delivered Shoutout cannot be edited or deleted through Windy or MCP. See [Feedback](/features/continuous-feedback#edit-or-delete-feedback).
Describe a specific action and its effect. This makes the Shoutout useful to the person and to the team.
## Delivery time
A Shoutout can take several hours to appear in the selected Slack channel. Windmill processes and queues the message before it posts the Shoutout.
# Skills
Source: https://help.gowindmill.com/features/skills
Save and reuse instructions in Windmill so Windy has the context for a task.
Skills let you save instructions that you use often. You can then add a skill to a message instead of entering the same instructions again.
A selected skill is attached to the message that you send. It is not a permanent setting for the conversation. Select the skill again in a later message when you need to make sure that the instructions apply.
Skills can be private or shared with people and groups. Admins and HR Admins can also share skills with all managers or the full company. Windmill provides **Global** skills for common tasks such as writing review feedback, preparing for 1:1s, and summarizing team updates.
## Using a skill in the Windmill Dashboard
You can find and select skills from the Dashboard chat input:
* Select the slash button to see up to five suggested skills.
* Type `/` and part of a skill name to search the quick-access menu.
* Select **Browse skills** to open the full skill picker.
When you select a skill, a reference chip appears in the chat input. Send your message to give Windy the saved instructions. You can add multiple skills to one message.
### Browsing skills
The **Browse Skills** dialog shows the skills that you can use. This list includes your skills, skills that people shared with you, skills with company access, and Global skills.
Search by name, or filter the list by **All**, **Shared with me**, or **Created by me**. Select **Manage Skills** to open the Skills settings page.
## Creating a skill
You can create a skill in **Settings > Skills**. You can also ask Windy to create a skill for you.
Open [Settings > Skills](https://app.gowindmill.com/COMPANY/config/skills) in the Windmill Dashboard.
Select **Create Skill** to open a blank skill page.
Add a clear name. In the skill instructions, tell Windy what to do and how to format the result.
For example: *Organize each project update under Progress, Risks, Decisions, and Next steps. Keep the update under 200 words.*
Publish the skill when it is ready. The new skill is private until you share it.
You can ask Windy to turn a rough idea into clear skill instructions before you create the skill.
## Sharing a skill
A new skill is private. Open the skill and select **Share** to give other people access.
You can share a skill with:
* **Individuals** - specific people at your company
* **Groups** - employee groups such as Engineering or People Ops
* **My team** - your direct and indirect reports, if you manage people
Only the skill owner can add, change, or remove **My team** access. Other people with edit access cannot change this setting.
For each person, group, or team, select an access level:
* **Can view** - the recipient can use and duplicate the skill
* **Can edit** - the recipient has write access to the skill. They can edit or delete it and share it with individuals or groups
Select **Save** to apply the changes. If a person gets access through more than one source, the highest access level applies.
Group and team access is dynamic. A person gets access automatically when they join a shared group or start reporting to the skill owner.
### Sharing with managers or the company
Admins and HR Admins can configure **General access** if they have edit access to the skill. General access has two audiences:
* **Managers** - all managers at your company
* **Company** - all members at your company
Each audience can have **Can view** or **Can edit** access. **Can edit** gives write access to every person in that audience.
A person who cannot configure General access can see the current setting, but cannot change it.
## Using and managing skills with Windy
You can ask Windy to find, create, update, share, delete, or restore a skill. This option is available in Dashboard chat and Slack.
Slack does not have the Dashboard skill picker or skill reference chips. In Slack, tell Windy which skill you want to use.
"Use the Project update skill to summarize this work."
## Duplicating a skill
If a skill is close to what you need, you can make your own copy. Open the skill, open its actions menu, and select **Duplicate**.
The copy is private to you and fully editable. The original skill does not change. You can duplicate any skill that you can view, including Global skills.
## Managing your skills in Settings
In **Settings > Skills**, you can:
* Edit, share, rename, or delete a skill if you have **Can edit** access
* Duplicate any skill that you can view
* Search for a skill by name
* Filter by **Created by**, **Your access**, or **General access**
The **Your access** filter includes **Can view** and **Can edit**. The **General access** filter includes **Company**, **Managers**, and **Global**.
### Deleting and restoring skills
Deleting a skill archives it and removes it from the gallery and chat picker. Open the skill, select **Delete skill** from its actions menu, and confirm the deletion.
After the deletion, select **Undo** in the notification to restore the skill immediately. You can also ask Windy to restore an archived skill. **Settings > Skills** does not have a restore control.
The skill name stays visible in past messages. Windy cannot load the archived instructions from those messages unless you restore the skill.
## FAQs
Only you can see a new skill. Use **Share** to give access to individuals, groups, your team, managers, or the company. The available options depend on your role and your access to the skill.
An Admin or HR Admin who has edit access to the skill can set **General access > Company**. They can give the company **Can view** or **Can edit** access.
The highest access level applies. If any access source gives you **Can edit**, you can edit the skill.
Yes. You can ask Windy to update a skill in Dashboard chat or Slack. To edit the fields directly, open **Settings > Skills**.
The skill stays available to the people who have access. A person with **Can edit** access can continue to update it.
Yes. Select **Undo** in the deletion notification, or ask Windy to restore the skill. You cannot restore it from **Settings > Skills**.
Yes. You can add multiple skills to one message.
# Building Your Org Chart
Source: https://help.gowindmill.com/getting-started/building-your-org-chart
Set up your team structure in Windmill by importing your org chart from your HRIS or building it manually, then keeping managers, reports, and groups in sync.
Your org chart stores the employee roster and reporting structure. It defines manager scope for supported team workflows.
## How org chart data flows
**If you have an HRIS connected** Your org chart automatically pulls from your connected HR system. Windmill syncs employee names, emails, and reporting structures directly from your HRIS. Any updates you make in your HRIS will reflect in Windmill within 24 hours.
**If you don't have an HRIS** You'll need to build your org chart manually in Windmill. Our team can assist with this initial setup. Reach out via your shared Slack channel or email [support@gowindmill.com](mailto:support@gowindmill.com).
The org chart is one part of access control. Roles, delegation, source permissions, and feature-specific privacy rules also apply. See [Permissions and Access](/permissions-and-access).
## Viewing your team
As an Admin, navigate to **Settings > Org Chart** to see all employees in your system. This list is pulled from your connected integrations (Google, Slack, HRIS).
HR Admins can also open **Settings > Org Chart**. An employee can appear in the org chart without having member access.
## Managing your org chart
You can edit manually managed employee information, update managers, and make bulk manager changes in **Settings > Org Chart**.
You can choose which org chart fields sync from your HRIS and which you edit in Windmill. Learn how to [manage which fields sync to each employee](/org-chart/employee-field-sources).
For complete org chart management instructions, see [Managing Your Org Chart](/org-chart/managing-your-org-chart).
Use [Groups](/org-chart/groups) when you need employee segments that do not change the reporting structure.
## Next steps
Once your org chart is set up and key team members are invited, you're ready to [put Windmill to work](/getting-started/putting-windmill-to-work) by activating your first features.
# Initial Setup
Source: https://help.gowindmill.com/getting-started/initial-setup
Create your Windmill account, configure authentication, invite your team, and connect your first integrations like Slack, Google Workspace, and your HRIS.
This guide walks you through setting up your Windmill account and connecting the essential systems you'll need to get started.
## Account creation
Currently, the Windmill team sends account invitations directly. If you're interested in Windmill, [schedule time with our team](https://gowindmill.com/start) to get started.
Once you receive your invite (check your spam folder if you don't see it), accept the invitation to access your account. You'll be guided through the initial setup process by Windy, our AI assistant in Slack.
## Authentication
To log in to Windmill, visit [https://app.gowindmill.com/auth](https://app.gowindmill.com/auth).
Windmill supports the following authentication methods:
**Google** Recommended for companies using Google Workspace. No additional setup required. Click the Google sign-in button and authenticate with your company Google account.
**Microsoft** Recommended for companies using Microsoft 365. No additional setup required. Click the Microsoft sign-in button and authenticate with your company Microsoft account.
**Rippling** If you use Rippling for HR and SSO, you can authenticate through Rippling. A Windmill Admin must set up the Rippling connection first before users can authenticate with this method.
**SAML SSO** If your company uses an identity provider like Okta or Microsoft Entra ID, you can configure SAML SSO for your Windmill account. See [SSO and SCIM](/security/sso-and-scim) for setup instructions.
We recommend all users in your account use the same authentication method.
While not strictly required, this leads to the best experience and simplifies
troubleshooting.
**Important notes about authentication:**
* Every user must be explicitly invited or provisioned as a Windmill member to use Windmill, including Windy in Slack and the Windmill Dashboard
* The email you use to invite members must match the email they use to authenticate
* Only invited or provisioned members can access Windmill
Login sessions last about seven days. After that, you'll be prompted to log
in again regardless of how active you are. Active sessions refresh
automatically in the background, so you won't see interruptions during
normal use. MCP connections behave differently — see
[MCP authentication](/features/mcp#authentication-and-permissions).
## Connect Slack
After you accept your invite, Windy guides you through the Slack integration. Your team can interact with Windy in Slack direct messages, so this integration is important.
**Choose which channels Windmill can use as context.** Automatic public-channel access gives Windmill context about team collaboration. Adding the app to a channel does not enable Windy conversations in that channel.
You can configure this setting in **Settings > Integrations > Slack**. You can also [add one Slack channel as context](/windy/adding-windy-to-channels#add-the-app-to-one-channel).
There is no separate Slack-only access for Windy. Anyone who uses Windy in
Slack or the Windmill Dashboard must be a Windmill member.
## Connect with us on Slack
Every Windmill customer gets a dedicated shared Slack channel with our team, set up through Slack Connect. It's the fastest way to reach us for support, share feedback, and ask questions—our SLA is under 24 hours, but we typically respond in under 10 minutes.
This is separate from the Windy integration above. You don't need to have connected Slack to create it—Windmill sets up the channel using our own support bot, and any member of your account can do it.
**During onboarding**, this is one of the final steps. On the **Connect with us on Slack** step:
Windmill creates a dedicated channel for your company and emails a Slack Connect invitation to your email.
Open the invite and accept it to join the shared channel. You're now connected to the Windmill team.
If you'd rather set it up later, choose **Skip for now** and create the channel from your home page anytime.
**After onboarding**, you can create the channel from your home page:
Go to your [home page](https://app.gowindmill.com/COMPANY/home) in the Windmill Dashboard.
This opens a dialog with the same setup option.
Windmill creates the channel and emails a Slack Connect invitation to your email. Accept the invite to join.
The **Connect with us on Slack** card stays available on your home page until you create your support channel. Once a channel exists, the card changes to **Join support channel** and shows the invited email.
## Connect your HRIS
Your HRIS (HR Information System) is the foundation of Windmill. We use it to build your org chart and understand your team's reporting structure.
**What Windmill collects from your HRIS:**
* Employee first name, last name, and email
* Manager and reporting structure
* Job titles and departments
**We do NOT collect:**
* Payroll information
* Addresses, Social Security Numbers, or other sensitive PII
* Employment contracts or benefits information
To connect your HRIS, go to **Settings > Integrations > Add Integrations** and select your HR system. View our full list of [available HR integrations](/integrations/integrations).
If you don't have an HRIS to connect, you'll need to [build your org chart
manually](/org-chart/managing-your-org-chart). This ensures the right people
have access to the right information within Windmill.
## Add more integrations
The more systems you connect to Windmill, the smarter Windy becomes. Consider connecting:
* [**Google Workspace**](/integrations/google-workspace) or [**Outlook Calendar**](/integrations/outlook-calendar) - For calendar activity and automatic 1:1 detection
* [**GitHub**](/integrations/github) - For engineering contributions (requires username mapping)
* [**Jira**](/integrations/jira) - For project management activities (requires username mapping)
* [**Linear**](/integrations/linear) - For issue tracking
* [**Figma**](/integrations/figma) - For design contributions (requires username mapping)
* [**Salesforce**](/integrations/salesforce) - For sales activities and customer interactions
You can add integrations anytime by going to **Settings > Integrations > Add Integrations**. See our full [Integrations overview](/integrations/integrations) for detailed setup instructions for each integration.
## Next steps
Once you've connected your HRIS and Slack, you're ready to [build your org chart](/getting-started/building-your-org-chart) and start inviting members to Windmill.
# Pricing
Source: https://help.gowindmill.com/getting-started/pricing
How Windmill pricing works, what's included in each plan, how seats are counted, and how to estimate the cost of rolling Windmill out to your organization.
Windmill is priced by the number of provisioned seats a company has in Windmill.
## Seats and pricing
| Seats | Price |
| - | - |
| Free tier seats | **Free** |
| Each additional seat | **\$10 USD per seat / month** |
The standard plan includes 10 free seats. Some plans include a different number of free seats.
## What counts as a seat?
* A provisioned seat is an unarchived Windmill member account.
* Inviting an employee counts as a seat, even if they haven't logged in.
* Login frequency and product activity do not affect whether an account counts as a seat.
* Archiving a member removes the seat from future recurring invoices. It does not generate a mid-cycle refund.
## How billing works
### Recurring invoices
* We bill your default payment method once per month, at the beginning of the billing period (via Stripe).
* The recurring invoice is based on the provisioned seat count at the start of the billing period.
### Nightly billing sync
* Windmill syncs your provisioned seat count to Stripe each night.
* Seats added mid-cycle generate a separate charge after the next nightly billing sync, prorated for the remaining days in the billing period.
* Seats archived mid-cycle reduce the seat count for the next recurring invoice without refunding the current billing period.
## Proration rules
| Scenario | What happens |
| - | - |
| **Seat count increases mid-cycle** | After the next nightly billing sync, we charge for the additional seats, prorated for the rest of the billing period. |
| **Seat count decreases mid-cycle** | We reduce the seat count for the next recurring invoice. There is no mid-cycle refund. |
## Example invoices
The example below uses the standard plan with 10 free seats. If your plan includes a different number, substitute that number to estimate your invoices.
| Date | Event | Provisioned seats | Charge |
| - | - | - | - |
| **Jan 1** | Billing cycle starts | 10 | \$0 (within free tier) |
| **Jan 10** | Add 5 users | 15 | Prorated charge for 5 seats × 22 days |
| **Feb 1** | Recurring invoice | 15 | 5 paid seats × \$10 = **\$50** |
| **Feb 15** | Archive 8 users | 7 | No refund; reduced count applies to the March invoice |
| **Mar 1** | Recurring invoice | 7 | \$0 (within free tier) |
## FAQs
No. Your plan's free seats remain free regardless of the total number of provisioned seats.
Any provisioned, unarchived Windmill member account counts as a seat, even if the member has never logged in.
No. Login frequency and product activity do not affect billing. Billing is based on provisioned, unarchived member accounts, not monthly active usage or total company headcount.
1. Count your provisioned, unarchived member accounts.
2. Subtract the free seats included in your plan.
3. Multiply the remaining seats by \$10.
**Example using the standard plan:**\
90 seats − 10 free seats = 80 paid seats\
80 × \$10 = **\$800/month**
# Putting Windmill to Work
Source: https://help.gowindmill.com/getting-started/putting-windmill-to-work
Choose and activate the right Windmill features for your team — 1:1s, pulse surveys, feedback, shoutouts, performance reviews — and sequence rollout.
Now that you've connected your systems and set up your org chart, it's time to leverage Windmill's features.
## Available features
Windmill offers several features to support different aspects of team management:
[**1:1s**](/features/1-on-1s) Structured agendas and note-taking for manager-employee meetings. Keep track of discussion topics, action items, and progress over time.
**Best for:** Managers who want to make their 1:1s more structured and track conversations over time.
[**Pulse Surveys**](/features/pulse-surveys) Regular check-ins to measure team sentiment, engagement, and wellbeing. Windy collects responses conversationally in Slack, making it easy for team members to share how they're feeling.
**Best for:** HR teams and managers tracking team morale and identifying potential issues early.
[**Feedback**](/features/continuous-feedback) Ongoing feedback from team members. Members can give or request feedback with Windy. When the Feedback page is enabled, they can also use the Dashboard forms and respond to feedback to-dos. Check [Feedback settings](/company-settings/feedback) before you introduce it.
**Best for:** Teams moving away from annual reviews toward continuous performance feedback.
[**Shoutouts**](/features/shoutouts) Public recognition for team members who exemplify your company values. Team members can give each other shoutouts, and they're displayed prominently in Slack and Windmill.
**Best for:** Companies building a culture of recognition and appreciation.
[**Company Knowledge**](/company-settings/company-knowledge) Build a library of documents—policies, rubrics, playbooks, and more—that Windy draws on for grounded, company-specific responses across Slack and the dashboard.
**Best for:** Companies that want Windy's answers and review support grounded in their own reference material.
## What to start with
We recommend starting with **1:1s** and **Pulse Surveys**. Here's why:
**1:1s** help managers build stronger relationships with their direct reports through structured conversations. They create a foundation for ongoing feedback and provide a clear record of discussion topics and action items over time.
**Pulse Surveys** give you a baseline understanding of team sentiment and engagement. Starting these early helps you track trends over time and identify areas that need attention before they become bigger issues.
After you are comfortable with these two features, you can introduce **Feedback** to build an ongoing feedback process.
## Testing before rolling out
Before rolling out to your entire team, consider:
1. **Testing with a small group** - Start with your direct reports or a single department
2. **Testing Windy** - Add the Windmill app to selected Slack channels for context, and test conversations in a Windy direct message or the Windmill Dashboard
3. **Gathering feedback** - Ask your test group about their experience before expanding
This approach helps you refine your configuration and build confidence before a company-wide rollout.
## Next steps
Once you've activated and tested it with a small group, you're ready to [roll out Windmill to your entire team](/getting-started/rolling-out-to-your-team).
# Rolling Out to Your Team
Source: https://help.gowindmill.com/getting-started/rolling-out-to-your-team
Best practices for introducing Windmill and Windy to your organization, including communication templates, onboarding sequences, and adoption milestones.
Once you've connected your systems, configured your org chart, and tested your first pulse, you're ready to roll out Windmill to your entire team.
## Pre-rollout checklist
Before inviting your full team, make sure you've completed:
* ✅ Connected your chat system (Slack)
* ✅ If you intend to use automatic 1:1 detection, connect [Google Workspace](/integrations/google-workspace) or [Outlook Calendar](/integrations/outlook-calendar)
* ✅ Connected your HRIS or manually built your org chart
* ✅ Invited key managers and admins to the platform
If you've checked all these boxes, you're ready to roll out.
## Communicating with your team
**Send a proactive announcement** Tell your team about Windy before you send your first Pulse or add the Windmill app to Slack channels.
Your announcement should explain:
* What Windmill is and why you're using it
* How Windy will interact with them in direct-message threads
* What they can expect (1:1s, Pulse Surveys, etc.)
* How it benefits them (improved 1:1s, better feedback, more recognition)
* Where to get help if they have questions
**Sample announcement:**
> Hey team! We're rolling out Windmill, a new tool to help us stay connected and support each other's growth.
>
> You will start to receive direct messages from Windy, our AI assistant, in Slack. Windy will contact you to help with 1:1 preparation, Pulse surveys, or performance reviews. Reply in the applicable direct-message thread.
>
> This helps us move away from lengthy performance reviews and toward continuous feedback and recognition. If you have questions, drop them in #ask-hr or reach out to me directly.
Include a link to this help center or specific articles, such as [Meet Windy](/windy/meet-windy) or [Feedback](/features/continuous-feedback). This lets team members learn more on their own.
## Add Slack channels as context
You can control which Slack channels Windmill uses as context. Adding the app to a channel does not enable Windy conversations in that channel. Team members must use a Windy direct message or the Windmill Dashboard to chat with Windy.
For setup instructions, see [Add Slack channels as context](/windy/adding-windy-to-channels).
## Training and support
Windmill offers team and manager training sessions to help your organization get the most out of the platform.
**Available training:**
* Team member training (how to interact with Windy, what to expect)
* Manager training (how to use 1:1s, configure surveys, interpret reviews)
* Admin training (deep dive into settings, integrations, and advanced features)
To schedule training, reach out via your shared Slack channel or email [support@gowindmill.com](mailto:support@gowindmill.com).
## Setting expectations
Help your team understand:
**How to interact with Windy** Windy contacts team members in Slack direct messages. Team members must reply in the applicable direct-message thread. For more information, see [Talking to Windy](/windy/talking-to-windy).
**When to expect outreach** Message frequency depends on the features and schedules that your company enables. Pulse surveys, 1:1 notifications, and performance reviews can each cause separate messages.
**How to give feedback** Members can start a conversation with Windy in Slack or in the Windmill Dashboard. When the Feedback page is enabled, they can also select **Feedback > Leave feedback**. Explain the allowed audiences before they submit feedback.
**Privacy and permissions** Windmill shows information that each member has permission to access. Feedback access depends on its audience, author access, and administrative access. Explain the [Feedback visibility rules](/features/continuous-feedback#feedback-visibility). For other access rules, see [Permissions and Access](/permissions-and-access).
## Phased rollout
Many organizations prefer to introduce Windmill gradually rather than launching all features at once. This approach lets you build familiarity, gather feedback, and refine your processes before expanding.
### Introduce features at different times
You can introduce Performance Reviews, 1:1s, Pulses, and Feedback at different times. Members can give feedback with Windy. The Feedback page must be enabled for your company. Check [Feedback settings](/company-settings/feedback) before you introduce the Dashboard process.
### Suggested rollout phases
**Phase 1: Performance Reviews**
Start with Performance Reviews to establish Windmill as your review platform. This gives everyone a clear, structured introduction to Windy and the platform.
**Phase 2: 1:1s**
Once reviews are complete, enable 1:1s to help managers and direct reports have more productive conversations. This builds on the review foundation with ongoing touchpoints.
**Phase 3: Pulses**
Add Pulse Surveys to gather regular sentiment data across your organization. By this point, your team is comfortable with Windy's outreach style.
**Phase 4: Feedback**
Introduce Feedback to your full team. Members can give and request feedback with Windy or the enabled Feedback page. Explain the audience options and show how to respond or decline under **Feedback > To-dos**. Use [Introduce Feedback to Your Team](/giving-and-receiving-feedback-on-windmill).
### Example rollout timeline
| Week | Action |
| - | - |
| 1-2 | Pilot Performance Reviews with one department |
| 3-4 | Expand reviews to full organization |
| 5-6 | Enable 1:1s for managers |
| 7-8 | Roll out Pulses company-wide |
| 9+ | Introduce Feedback to your full team |
Adjust timing based on your organization's size, review cycles, and comfort level. Some teams move faster; others prefer more time between phases.
## Monitoring the rollout
After rolling out, keep an eye on:
* **Windy's interaction patterns** - Are team members responding? Do messages feel appropriately timed?
* **Feedback quality** - Is the feedback Windy collects useful and actionable?
* **Team sentiment** - How do people feel about Windy? Are they comfortable interacting with Windy?
* **Manager usage** - Are managers using the reports and insights?
Make adjustments as needed based on what you observe.
## Example language - Performance review rollout
Hi Team,
I’m excited to announce that starting this month, we’ll be using **Windmill** for our company-wide **Performance Review**!
Windmill will help us run a simpler and more meaningful review cycle that highlights your impact, encourages continuous feedback, and supports your growth. Windmill uses AI to help gather context (i.e., goals, projects, feedback) and gives everyone structured guidance directly in Slack throughout the process. While Windmill uses AI to surface helpful information, AI is not evaluating anyone’s performance. Managers are still responsible for writing feedback and finalizing reviews.
Our **Performance Review timeline** is below:
* 🗓 FILL OUT WITH YOUR SCHEDULE
You’ll receive a Slack notification from Windy, Windmill’s AI agent, with instructions when it’s your turn to complete each step.
Thank you in advance for taking time to reflect thoughtfully, and for helping us make this cycle a success!
## Example language - What is Windmill and why we're using it
**Windmill** is our new performance and feedback platform that integrates with our daily tools (Slack, Google Workspace, GitHub, Linear, Notion, etc.) and makes reviews easier and more reflective of real work.
**Why we chose it:**
* **Reviews grounded in real work**: Windy uses feedback collected in Windmill and activity context from your connected tools. This helps reviewers use recent evidence instead of memory alone.
* **Faster and more consistent**: Instead of employees and managers spending hours writing from scratch, Windy surfaces a complete picture of employee performance, pulling in real examples, highlights, and feedback over the review period for you to review, revise, or approve.
* **Higher quality feedback:** Windy is trained to prompt for specificity and balance. When responses are vague, Windy follows up with nudges focused on specific examples and outcomes rather than personalities, ensuring reviews are actionable, fair, and grounded in reality.
**Windmill runs performance reviews directly in Slack — no separate platform, logins, or long forms.**
When a review cycle begins, Windy (the AI Slack assistant) sends you a message to begin your review. The review is completed in Slack, conversationally, then automatically uploaded into the Windmill platform where you can make any tweaks or edits.
More information can be found on the Windmill helpdesk section titled [Performance Reviews in Windmill](https://help.gowindmill.com/features/performance-reviews).
## Getting help
If you or your team have questions:
* All Windmill customers have access to our team via a shared Slack channel. Learn how to [connect with us on Slack](/getting-started/initial-setup#connect-with-us-on-slack)
* Email [support@gowindmill.com](mailto:support@gowindmill.com) for additional help
* Browse this help center for guides and FAQs
Our SLA is under 24 hours, but we typically respond in under 10 minutes.
Rolling out a new tool takes time. Be patient with your team as they get used to Windy, and gather feedback regularly to improve the experience.
# Using the Windmill Platform
Source: https://help.gowindmill.com/getting-started/using-the-windmill-dashboard
Navigate the Windmill platform — adjust settings, manage integrations, view stats, and understand how data syncs between Slack, your HRIS, and connected tools.
## Accessing the Platform
Log in to Windmill at [app.gowindmill.com/auth](https://app.gowindmill.com/auth).
You can authenticate using:
* Google
* Microsoft
* Rippling (if your admin has set up the connection)
* SAML SSO (if your admin has configured an identity provider — see [SSO and SCIM](/security/sso-and-scim))
Use the same authentication method across your entire organization for the best experience.
## Feedback in the Dashboard
When the Feedback page is enabled for your company, open [**Feedback**](https://app.gowindmill.com/COMPANY/feedback) from the navigation. You can leave feedback, request feedback, and read feedback that you have permission to see.
Use **To-dos** to respond to incoming requests or decline them. Use **Requests** to find scheduled outgoing requests and requests awaiting a response. See [Feedback](/features/continuous-feedback) for complete instructions.
## Platform preferences
### Dark mode
You can use Windmill in dark mode if you prefer. Just hit the toggle on the bottom left-hand side of the nav.
### Time zone
Windmill uses your time zone for things like meeting times, 1:1s, reminders, and notifications.
To update it, open your account menu in the bottom left-hand side of the nav and select **Timezone**. You can use:
* **Browser** — Uses the time zone from your browser. This is the default.
* **Synced from Slack** — Uses the time zone from your Slack profile, if Slack is connected.
* **Manual** — Lets you choose a fixed time zone for Windmill.
Click **Save** when you're done.
### How often data updates
Windmill is always updating in the background to give you a real-time view of team performance. Different systems sync data on different schedules:
**Real-time:**
* Responses to Windy in Slack
* New feedback submissions
**Hourly:**
* Meeting transcripts
* Most productivity tool activity (GitHub, Jira, Linear, etc.)
**Daily:**
* HRIS data (org chart, employee roster)
* Some CRM activity
Responses to Windy should populate in the platform within an hour after they're sent.
For more details about specific integrations and sync timing, see our [Connected Data](/data/connected-data) guide.
## Settings
Access platform settings by clicking **Settings** in the navigation. From here, Admins can:
* Manage integrations to your business tools
* View and edit your org chart
Some settings are limited by access level. Admins and HR Admins can edit the org chart, and Integration Managers can manage integrations alongside them. For more about access levels, see [Permissions and Access](/permissions-and-access).
## Getting help
### Email support
Reach out to [support@gowindmill.com](mailto:support@gowindmill.com) for any questions or issues.
### Ask Windy
Windy has full access to our help desk and can answer any of your questions.
### Help center
Browse this help center for guides, tutorials, and answers to common questions.
Our support SLA is under 24 hours, but we typically respond in under 10 minutes.
## FAQs
Yes. When you log in to Windmill, the homepage surfaces a task list of upcoming and pending items for you, including:
* Upcoming 1:1s with direct reports
* Pending performance review tasks (self reviews, manager reviews, peer reviews, upward reviews, and calibrations)
* Feedback requests that need your response, when the Feedback page is enabled
* Other outstanding to-dos surfaced by Windy
Each item opens the relevant work. A feedback to-do opens **Feedback > To-dos**. You can also ask Windy in Slack for a personalized list of pending performance review todos — see [Talking to Windy](/windy/talking-to-windy).
Yes, you can export reports and data from Windmill. Reach out to your Windmill team or [support@gowindmill.com](mailto:support@gowindmill.com) for assistance with data exports.
Currently, dashboard layouts are standardized. If you have specific customization needs, reach out to [support@gowindmill.com](mailto:support@gowindmill.com) to discuss options.
The Windmill platform works best on modern browsers:
* Chrome (recommended)
* Firefox
* Safari
* Edge
We recommend using the latest version of your browser for the best experience.
The Windmill Dashboard is optimized for desktop use. For mobile access, interact with Windy through Slack—most Windmill functionality is available via Windy conversations.
To delete your Windmill account or remove your organization's data, reach out to [support@gowindmill.com](mailto:support@gowindmill.com). We'll process your request and confirm when it's complete.
# Introduce Feedback to Your Team
Source: https://help.gowindmill.com/giving-and-receiving-feedback-on-windmill
Use this guide to explain Feedback and Shoutouts to your team.
Tell your team how Feedback works before they start to use it. Set clear expectations about the types of feedback, how to give feedback with Windy, and who can see a response.
For complete product guidance, see the [Feedback overview](/features/continuous-feedback).
## Explain the Feedback types
Use these terms in your team communication:
* **Proactive feedback:** A member gives feedback about a colleague through Windy or the enabled Feedback page.
* **Requested feedback:** A member requests feedback about themselves. A manager can also request feedback about a person in their reporting line. Requests are scheduled when the Feedback page is enabled. A completed response is not guaranteed.
## Set expectations
Tell your team the following information:
* Members can give feedback with Windy in Slack or in the Windmill Dashboard. When **Feedback** is enabled, they can also use **Leave feedback** on that page.
* Company settings control the allowed audiences. Members can select an allowed audience when they give feedback through the enabled Feedback experience.
* Members can find requests that need a response under **Feedback > To-dos** or on Home. They can respond or decline.
* A completed response is not guaranteed.
* Windy needs confirmation before creating a public Shoutout. A Shoutout makes linked feedback public, regardless of the earlier audience selection.
Before you introduce Feedback, check the [company Feedback settings](/company-settings/feedback). Explain the [visibility rules](/features/continuous-feedback#feedback-visibility), including author and admin access.
## Explain Shoutouts
Shoutouts let team members recognize positive work in a public Slack channel. A member can create a Shoutout with a Slack shortcut or the `/shoutout` command. Windy can also offer to convert positive feedback to a Shoutout. Windy shares the feedback only after the author gives explicit consent.
See [Shoutouts](/features/shoutouts) for setup and use instructions.
## Share support information
Tell team members to contact your Windmill admin if they have a question. They can also contact Windmill at [support@gowindmill.com](mailto:support@gowindmill.com).
# Welcome
Source: https://help.gowindmill.com/index
Welcome to the Windmill help site — guides, references, and best practices for getting the most out of Windmill, Windy, and your team's performance workflows.
We're here to help! Windmill is nothing without our customers, so we try to put customers at the forefront of everything we do.
All Windmill customers have access to our team via Slack. However, if you have additional questions and need help, you can always email [support@gowindmill.com](mailto:support@gowindmill.com).
To share product feedback, tell Windy, post in your shared customer Slack channel with Windmill if your company has one, or email [support@gowindmill.com](mailto:support@gowindmill.com).
For all inquiries, Windmill has an SLA of under 24 hours (we aim for under 10 minutes).
We hope you enjoy your experience with Windmill. Have fun chatting with Windy!
## Getting started
Set up Windmill and get your team onboarded in just a few steps.
Create your account, connect authentication, and integrate your first
systems.
Set up your team structure and invite members to Windmill.
Choose and activate the right features for your team.
Best practices for introducing Windmill and Windy to your organization.
## Features
Explore Windmill's core features to support your team.
Prepare for and run effective 1:1 meetings.
Ask your team custom questions on a recurring or one-time basis.
Track AI tool adoption, Windmill engagement, and custom stat views.
Real-time feedback collection from team members at the right moments.
Publicly recognize and celebrate positive team contributions.
## Windy
Learn how to interact with Windy, your AI assistant in Slack.
Get introduced to Windy and learn what Windy can do for your team.
How to interact with Windy in Slack and what to expect.
## Integrations
Connect your business tools to give Windmill more context about your team.
Browse all available integrations and learn how to connect them.
Connect Slack so Windy can interact with your team.
Track engineering contributions and collaboration.
Connect Google for meeting data and calendar activities.
## Service status and incident updates
You can monitor Windmill's service status and view past incidents at [windmill.betteruptime.com](https://windmill.betteruptime.com/).
To be notified when an incident is created, updated, or resolved:
1. Visit [windmill.betteruptime.com](https://windmill.betteruptime.com/).
2. Click **Get updates** in the top right.
3. Choose your preferred notification method: email, RSS, JSON, webhook, or Slack.
# ADP
Source: https://help.gowindmill.com/integrations/adp-workforce-now
Connect ADP Workforce Now to Windmill to sync employees, managers, departments, and org structure so your team data stays accurate without manual updates.
## Benefits of connecting ADP to Windmill
Connecting ADP to Windmill keeps your org structure accurate without manual updates. When ADP is the source of truth, Windmill automatically:
* Imports new hires
* Archives employees who leave
* Updates manager → direct report relationships
* Ensures teams and reporting lines are always current
This means review cycles, 1:1s, and feedback stay aligned to how your organization actually works — no spreadsheets or duplicate entry.
## Connected data
Windmill syncs the following fields from ADP:
| Field | Description |
| - | - |
| Employee Name | Full legal name |
| Work Email | Used as the employee’s identity + login |
| Job Title | Current title as listed in ADP |
| Manager Relationship | Org structure used for reviews and 1:1s |
| Department | For grouping and cycle assignment |
| Status (Active / Terminated) | Automatically archives former employees |
| Start Date | Used to support new-hire ramp review patterns |
| Gender | Synced if provided by ADP |
Windmill can also sync personal email, work location, and time-off records when ADP provides them and the connection has the required authorization.
**Windmill does not store salary, compensation, payroll, benefits, home address, Social Security Numbers, dates of birth, phone numbers, pronouns, or employment contracts.** See [Personally Identifiable Information](/security/pii) for the canonical list.
## Permissions
To connect ADP, the user enabling the integration must have:
* ADP admin access
* Permission to connect third-party applications via **ADP Marketplace**
* Permission to view employee directory and reporting structure
The connection uses a secure OAuth authorization flow.\
**No passwords are shared** and Windmill never writes back to ADP.
## Managing employee + manager updates
If you need to:
* Update a manager
* Move someone to another team
* Change a title
* Archive a departing employee
> **Make the change in ADP.**\
> These changes will sync automatically to Windmill.
Editing one of these fields directly in Windmill creates a manual override, and ADP stops updating that field. Learn how to [manage which fields sync to each employee](/org-chart/employee-field-sources).
## FAQs
Automatically every **24 hours**. You can also trigger a manual sync inside Windmill.
No. The integration is **read-only** and does not modify payroll data.
Yes — your ADP admin can enable this if it's not already available.
Only if they are listed in ADP as active workers with a manager assigned.
***
# Airtable
Source: https://help.gowindmill.com/integrations/airtable
Connect Airtable to Windmill so Windy can read your bases and surface project, customer, and operational context inside 1:1s and feedback flows.
## Benefits of connecting Airtable to Windmill
Integrating Airtable with Windmill allows project and task updates to flow directly into performance conversations — without manual effort.
* Automatically captures accomplishments and progress from Airtable
* Eliminates the need to reconstruct history during reviews and 1:1s
* Grounds performance conversations in real work, not memory or bias
* Helps managers show up prepared and employees get fair recognition
Windmill turns ongoing Airtable activity into usable context for feedback, coaching, and review writing.
## Connected data
When connected, Windmill can securely read the following Airtable information:
| Data Type | How Windmill Uses It |
| - | - |
| Record updates (project/task activity) | Builds timelines of contributions for 1:1s and reviews |
| Comments / discussion threads | Adds qualitative context and nuance to achievements and challenges |
| Status fields (e.g., In Progress, Done) | Helps summarize progress and measurable outcomes |
| Assigned collaborator / owner | Associates work with the correct employee profile |
> You choose which bases to authorize. Windmill syncs supported data from tables in those bases.
## Permissions
Windmill requests **read-only** access to Airtable.
| Permission | Purpose |
| - | - |
| Read access to selected bases | To gather relevant work context and updates |
| Read collaborator metadata | To match work to the correct employee in Windmill |
| **No write access** | Windmill never edits or changes Airtable records |
| **No access to unselected bases** | You maintain complete control over shared data |
## FAQs
No. The integration is read-only.
Yes. You select the bases during Airtable authorization. Windmill syncs supported data from tables in those bases. You can change or revoke access in Airtable.
Airtable webhooks send supported record changes shortly after they happen. Windmill also runs daily maintenance to refresh webhooks, collaborator access, and deleted-table records.
Yes. All data is encrypted in transit and at rest. Windmill is built to meet SOC 2 and enterprise security standards.
Their historical contributions remain available, but Windmill automatically stops associating new activity.
***
# Asana
Source: https://help.gowindmill.com/integrations/asana
Connect Asana to Windmill to bring tasks, projects, and progress into 1:1 prep and performance reviews, with attribution to the right team members.
## Benefits of connecting Asana to Windmill
Connecting Asana to Windmill allows your team’s project and task activity to automatically flow into performance reviews and 1:1s — without anyone needing to manually summarize progress.
* Captures accomplishments as they happen, not months later
* Reduces review prep time for managers and employees
* Makes feedback conversations grounded and fair
* Ensures ongoing work doesn’t get overlooked or forgotten
* Improves performance review accuracy through ongoing context
Windmill turns real work happening in Asana into meaningful insight for better coaching and evaluations.
## Connected data
When Asana is connected, Windmill securely reads the following information:
| Data Type | How Windmill Uses It |
| - | - |
| Task updates & completion events | Shows progress and contributions over time |
| Project assignments & ownership | Attributes work to the correct employee during reviews |
| Due dates & status changes | Highlights follow-through, prioritization, and delivery patterns |
| Task comments & collaboration threads | Adds narrative context and coaching opportunities |
## Permissions
Windmill requests **read-only** access to Asana.
| Permission | Purpose |
| - | - |
| Read access to the selected workspace | To sync all active projects that the connected account can read |
| Read collaborator / assignee metadata | To associate work with the correct employee |
| Webhook management | To create and remove subscriptions for task-change events |
## FAQs
Windmill never changes tasks, projects, or comments. It creates and removes webhook subscriptions so Asana can send changes.
During setup, you select an Asana workspace. Windmill syncs all active projects in that workspace that the connected account can read.
Webhooks can send some changes shortly after they happen. An hourly incremental sync checks for new or changed data.
Yes. All data is encrypted in transit and at rest. Windmill is built to meet SOC 2 and enterprise-grade security requirements.
Windmill preserves historical contributions, but stops associating new work with the employee once they are marked inactive.
***
# Attio
Source: https://help.gowindmill.com/integrations/attio
Connect Attio to Windmill to sync CRM records, deals, and customer activity so Windy can surface revenue context in 1:1s and performance reviews.
## Benefits of connecting Attio to Windmill
Connecting Attio to Windmill brings relationship and deal activity into performance conversations — ensuring customer-facing work gets the recognition it deserves, without manual reporting.
* Automatically captures contributions to customer relationships, deals, and accounts
* Eliminates manual note aggregation for performance reviews or promotion cycles
* Ensures employees get credit for the work that happens in calls, emails, and CRM updates
* Helps managers coach more effectively using real customer context
* Makes performance reviews more objective and grounded in measurable interactions
Windmill turns Attio activity into trackable context so feedback and evaluations reflect real customer-impacting work.
## Connected data
When connected, Windmill securely reads the following information from Attio:
| Data Type | How Windmill Uses It |
| - | - |
| Account + contact ownership | Shows who is responsible for which customers and relationships |
| Meeting metadata and descriptions | Highlights engagement, follow-through, and responsiveness trends |
| Pipeline stages + deal status changes | Surfaces momentum, progress, and conversion patterns |
| Tasks, notes, and thread comments tied to deals | Adds qualitative context for coaching and review narratives |
> Windmill stores Attio note and thread-comment text. The integration does not sync email message bodies.
Learn more about [how Windmill syncs deals from Attio](/data/deals).
## Permissions
Windmill requests **read-only** access to relevant Attio objects.
| Permission | Purpose |
| - | - |
| Read access to the Deals object and related records | To reflect customer-impacting work in reviews and coaching |
| Read access to meetings, tasks, notes, and comments | To surface progress and follow-through patterns |
| **No write access** | Windmill never edits or updates any data in Attio |
| Webhook management | To create a webhook that sends Attio changes to Windmill |
| Authorized workspace access | Windmill syncs deals that the connected account can read |
> Windmill only collects context necessary for performance and coaching — not full CRM data exports.
Synced Attio data is visible to Windmill members who are also users of the connected Attio system. Windmill does not copy record-level Attio permissions.
## FAQs
No. The integration is strictly read-only.
Windmill does not sync email message bodies. It stores Attio note text and thread-comment text, which can include customer context.
Webhooks can send some changes shortly after they happen. An hourly incremental sync checks for new or changed data.
Yes. Data is encrypted in transit and at rest. Windmill meets SOC 2-level security standards and follows least-privilege access principles.
Their historical activity remains attributed for context, but Windmill stops associating new activity once they are marked inactive.
***
# BambooHR
Source: https://help.gowindmill.com/integrations/bamboohr
Connect BambooHR to Windmill to sync employees, managers, departments, and employment data so your org chart and access controls stay accurate automatically.
## Benefits of connecting BambooHR to Windmill
Connecting BambooHR to Windmill ensures your employee data stays accurate and up to date — without manual spreadsheet uploads or duplicate entry across systems.
* Automatically syncs employees, roles, departments, and reporting structure
* Ensures performance conversations always reference the correct manager + team context
* Reduces administrative overhead for HR, managers, and system admins
* Makes onboarding, manager changes, and role transitions seamless inside Windmill
* Establishes BambooHR as the single source of truth for your people data
Windmill uses BambooHR data to power performance reviews, 1:1s, and team health insights with accurate org context.
## Connected data
When BambooHR is connected, Windmill securely syncs the following data fields:
| Data | How Windmill Uses It |
| - | - |
| Employee Name, Email, Status | Creates and maintains employee profiles in Windmill |
| Job Title & Department | Groups employees by teams for reviews, reporting, and insights |
| Manager Relationships | Ensures the right manager sees and completes the right reviews |
| Hire Dates | Supports tenure-aware prompts and performance cycle logic |
| Employment Status (active / terminated) | Automatically archives employees in Windmill when they leave |
| Gender | Synced if provided by BambooHR |
Windmill can also sync personal email, work location, and time-off records when BambooHR provides them and the connection has the required authorization.
**Windmill does not store compensation, payroll, benefits, home address, Social Security Numbers, dates of birth, phone numbers, pronouns, or employment contracts as employee-profile fields.** See [Personally Identifiable Information](/security/pii) for the canonical list.
> BambooHR remains the **source of truth**. Windmill reflects what is stored there.
## Permissions
Windmill requests **read-only** access to your BambooHR directory and org chart.
| Permission | Purpose |
| - | - |
| Read employee directory | To create and maintain accurate employee profiles |
| Read org chart / manager fields | To ensure reviews, 1:1s, and workflows route correctly |
| Read job and department metadata | To group employees logically for review cycles and reporting |
| **No write access** | Windmill never modifies employee data inside BambooHR |
> Windmill stores the fields listed on this page when BambooHR provides them and the connection authorizes them.
## Source of truth
If you want to **update an employee’s manager**, **change a title**, or **archive an employee**,\
you’ll need to make that change **in BambooHR**.
Editing a synced field directly in Windmill creates a manual override, and BambooHR stops updating that field. Learn how to [manage which fields sync to each employee](/org-chart/employee-field-sources).
## Sync timing
Changes from BambooHR can take up to a day to appear in Windmill.
***
# ChartHop
Source: https://help.gowindmill.com/integrations/charthop
Connect ChartHop to Windmill to sync your org chart, employees, managers, and departments so team structure and access stay accurate without manual updates.
## Benefits of connecting ChartHop to Windmill
Connecting ChartHop to Windmill keeps your reporting structure, roles, and employee records in sync — without manual updates. When ChartHop is the source of truth, Windmill automatically:
* Imports new hires as they join the organization
* Updates manager → direct report relationships
* Reflects org structure changes during scheduled syncs
* Archives employees when they leave the company
This ensures performance reviews, 1:1s, and feedback are always tied to the **current team**, even as your org grows or shifts.
## Connected data
Windmill syncs the following fields from ChartHop:
| Field | Description |
| - | - |
| Employee Name | Full legal name |
| Work Email | Used as the identity + login field |
| Job Title | Displays on profiles and dashboards |
| Manager Relationship | Used to build team views and 1:1s |
| Department / Org Unit | Used for grouping and review cycles |
| Employment Status | Used to automatically archive terminated users |
| Start Date | Supports new-hire ramp and review timing logic |
| Gender | Synced if provided by ChartHop |
Windmill can also sync personal email, work location, and time-off records when ChartHop provides them and the connection has the required authorization.
**Windmill does not store compensation, salary history, payroll, benefits, home address, Social Security Numbers, dates of birth, phone numbers, pronouns, or employment contracts as employee-profile fields.** See [Personally Identifiable Information](/security/pii) for the canonical list.
## Permissions
To enable the integration, the connecting user must have:
* Admin or Workspace Owner permissions in ChartHop
* Access to view employee organizational data and reporting structure
The integration uses a secure OAuth connection initiated from within Windmill.\
**Windmill never writes back to ChartHop.**
## Managing employee and manager updates
If you need to:
* Change someone’s manager
* Reassign teams or departments
* Update job titles
* Remove an employee who has left
> **Make these changes in ChartHop — not in Windmill.**
ChartHop is treated as the **system of record**.\
Editing a synced field directly in Windmill creates a manual override, and ChartHop stops updating that field. Learn how to [manage which fields sync to each employee](/org-chart/employee-field-sources).
## FAQs
Every **24 hours**, with an option to trigger a manual sync in Windmill.
Yes. ChartHop must already reflect your org structure accurately.
Windmill does not store compensation, payroll, benefits, or the other excluded fields in [Personally Identifiable Information](/security/pii) as employee-profile fields. Windmill can sync the employee, org structure, work location, personal email, and time-off fields listed on this page when ChartHop provides them and the connection authorizes them.
***
# Claude
Source: https://help.gowindmill.com/integrations/claude
Connect Claude Enterprise analytics to Windmill to sync team AI usage into stats, performance reviews, and 1:1s without accessing conversations, prompts, code, or files.
Claude's analytics API is only available on the **Claude Enterprise plan**. You must be on Claude Enterprise to connect this integration.
## Benefits of connecting Claude to Windmill
Connecting Claude to Windmill brings AI usage data directly into stats, performance reviews, and 1:1s — giving managers and engineers visibility into how Claude is being adopted across the team.
* Tracks how your team uses Claude across chat, Claude Code, and Claude's Office Agent for Excel and PowerPoint
* Surfaces adoption patterns across conversations, coding sessions, skills, and connectors without self-reporting
* Helps managers understand AI tool usage and coach their teams on effective workflows
* Provides concrete data for performance conversations about productivity and tool adoption
* Syncs automatically — no manual tracking or surveys required
Windmill turns Claude's enterprise analytics into actionable stats that flow into your existing performance workflow.
## How to connect Claude
Go to [claude.ai/analytics/api-keys](https://claude.ai/analytics/api-keys) and generate an API key. You must be a **Primary Owner** of your Claude organization to access this page.
In Windmill, navigate to [Settings > Integrations](https://app.gowindmill.com/COMPANY/config/integrations), find **Claude**, and click **Connect**.
Paste the API key from Claude into the input field and click **Connect Claude**. Windmill will validate the key and begin syncing analytics within the hour.
Claude is an account-level integration — an admin connects it once and it covers your entire Claude organization. Individual users don't need to connect separately.
## Connected data
When connected, Windmill syncs **per-user analytics** from Claude's Enterprise Analytics API. This is usage data — Windmill does not access any conversations, prompts, code, or file content.
### Claude Chat
| Stat | Description | Unit |
| - | - | - |
| Conversations | Distinct conversations started in Claude | conversations |
| Chat Messages | Messages sent in Claude chat | messages |
| Artifacts Created | Artifacts created during Claude conversations | artifacts |
### Claude Code
| Stat | Description | Unit |
| - | - | - |
| Sessions | Distinct Claude Code sessions | sessions |
| Commits | Commits made through Claude Code | commits |
| Pull Requests | Pull requests created through Claude Code | PRs |
| Lines Added | Lines of code added through Claude Code | lines |
| Lines Removed | Lines of code removed through Claude Code | lines |
| Edits Accepted | Number of AI-generated code edits accepted | edits |
| Edit Acceptance Rate | Ratio of accepted to suggested AI edits | % |
### Skills and connectors
| Stat | Description | Unit |
| - | - | - |
| Skill Usage | Claude skill invocations across all products | invocations |
| Connector Usage | Claude MCP/connector invocations across all products | invocations |
### Claude Office Agent — Excel
| Stat | Description | Unit |
| - | - | - |
| Excel Sessions | Distinct Claude for Excel sessions | sessions |
| Excel Messages | Messages sent in Claude for Excel | messages |
| Excel Skills Used | Skill invocations in Claude for Excel | invocations |
| Excel Connectors Used | Connector invocations in Claude for Excel | invocations |
### Claude Office Agent — PowerPoint
| Stat | Description | Unit |
| - | - | - |
| PowerPoint Sessions | Distinct Claude for PowerPoint sessions | sessions |
| PowerPoint Messages | Messages sent in Claude for PowerPoint | messages |
| PowerPoint Skills Used | Skill invocations in Claude for PowerPoint | invocations |
| PowerPoint Connectors Used | Connector invocations in Claude for PowerPoint | invocations |
All stats are tracked per employee, per day.
## Visibility and access
Claude stats in Windmill follow the **manager hierarchy** visibility model:
* **Employees** can see their own Claude stats
* **Managers** can see Claude stats for their direct reports and anyone in their reporting chain
* **Admins** can see Claude stats for everyone in the organization
* **Peers** cannot see each other's Claude stats
This means Claude analytics are treated like other sensitive performance data in Windmill — visible to the people who need it for coaching and evaluation, but not exposed broadly.
## Permissions
Windmill requests **read-only** access to Claude's Enterprise Analytics API.
| Permission | Purpose |
| - | - |
| Read user analytics | To sync usage stats per team member into Windmill |
| **No access to conversations or prompts** | Windmill never reads, stores, or accesses any conversation content from Claude |
| **No access to code or files** | Windmill does not read any code, files, or artifacts — only aggregate usage counts |
| Read-only access | Windmill never modifies anything in Claude |
## User matching
Windmill matches Claude users to employees using their **email address**. If a Claude user's email matches an employee's email in Windmill, their stats are automatically attributed to that employee.
If you notice stats that aren't being attributed correctly, check that the email addresses in Claude match the employee emails in Windmill.
## FAQs
Yes. Claude's analytics API is only available on the Enterprise plan. The integration won't work with Claude's free, Pro, or Team plans.
No. Windmill only reads usage analytics from Claude's API — session counts, message counts, and acceptance rates. Windmill never accesses conversation content, prompts, code, files, or artifacts.
Windmill syncs with Claude once per hour. New usage data typically appears within a few hours of the activity happening in Claude, as there is a short delay in Claude's analytics processing.
Yes. Every employee can see their own Claude stats in Windmill.
No. Peers cannot see each other's Claude usage data. Managers can see stats in their reporting scope. Admins and Data Analysts can view company-wide analytics.
No. Claude is an account-level integration. An admin connects it once using an API key from Claude's analytics settings, and it covers your entire Claude organization.
Their historical Claude stats remain for context, but Windmill stops attributing new activity once they are an Archived user.
This usually happens when your email in Claude doesn't match your email in Windmill. Make sure the email addresses match, or ask an admin to check the user mapping.
# ClickUp
Source: https://help.gowindmill.com/integrations/clickup
Connect ClickUp to Windmill to bring tasks, projects, and progress into 1:1 prep and performance reviews with proper attribution per team member.
## Benefits of connecting ClickUp to Windmill
Connecting ClickUp to Windmill brings your project management activity directly into performance reviews and 1:1s — giving your team visibility into real work without manual updates.
* Task progress automatically flows into performance conversations
* Captures accomplishments as they happen, not months later
* Reduces review prep time for managers and employees
* Ensures completed work gets recognized and credited appropriately
* Provides grounded context for coaching and feedback
Windmill turns your ClickUp workspaces into structured insights for better performance management.
## Connected data
When ClickUp is connected, Windmill securely reads the following information:
| Data Type | How Windmill Uses It |
| - | - |
| Tasks and subtasks | Shows work progress and contributions over time |
| Task status and completion | Tracks delivery patterns and follow-through |
| Comments and activity | Provides context for collaboration and problem-solving |
| Assignees and ownership | Attributes work to the correct employee |
| Due dates and time tracking | Highlights prioritization and delivery patterns |
| Workspace and folder structure | Captures project organization and team assignments |
## Permissions
Windmill requests **read-only** access to ClickUp.
| Permission | Purpose |
| - | - |
| Read access to workspaces, folders, and tasks | To collect task data and associate it with employees |
| Read access to comments and activity | To capture collaboration context |
| Read collaborator and assignee metadata | To associate work with the correct employee |
| **No write access** | Windmill never creates or modifies tasks, lists, or comments in ClickUp |
Windmill currently syncs tasks only. Other ClickUp features like Docs, Whiteboards, and Goals are not yet supported. If your organization uses these features and would like support, contact [support@gowindmill.com](mailto:support@gowindmill.com).
## FAQs
No. Windmill is 100% read-only — no updates, edits, or writes are made to your ClickUp workspaces or tasks.
Windmill syncs all ClickUp workspaces that the connected account authorizes. To limit the scope, limit the connected account's access in ClickUp.
Approximately once per hour. New tasks, comments, and status updates appear after an incremental sync.
Windmill preserves historical contributions tied to that person's work in ClickUp. Once they're marked inactive in Windmill, new tasks won't be associated with them.
# Codex
Source: https://help.gowindmill.com/integrations/codex
Connect Codex analytics to Windmill to sync per-user coding agent usage, token consumption, and client-surface breakdowns into team stats and reviews.
Codex's analytics API requires an OpenAI **Admin key**, which is only available for eligible managed ChatGPT workspaces, such as **ChatGPT Enterprise**, **Edu**, or **Healthcare**. You must be on one of these plans to connect this integration.
## Benefits of connecting Codex to Windmill
Connecting Codex to Windmill brings AI coding agent usage directly into stats, performance reviews, and 1:1s — giving managers and engineers visibility into how Codex is being adopted across the team.
* Tracks how engineers are using Codex for autonomous coding tasks across different client surfaces
* Surfaces adoption patterns including thread volume, turn depth, and token consumption without self-reporting
* Helps managers understand AI tool usage and coach their teams on effective workflows
* Provides concrete data for performance conversations about productivity and tool adoption
* Syncs automatically — no manual tracking or surveys required
Windmill turns Codex's enterprise analytics into actionable stats that flow into your existing performance workflow.
## How to connect Codex
Go to the [OpenAI Admin Console](https://admin.openai.com) and sign in with an account that is an **Owner** or **Admin** of your ChatGPT workspace. Select your tenant if asked, then select the ChatGPT workspace.
Being a global admin or an API Platform organization owner doesn't give you access on its own. You need the Owner or Admin role in the ChatGPT workspace itself.
Go to **Credentials > Admin keys** and click **Create new admin key**. Give it a descriptive name, like "Windmill".
Give the key read access to Codex analytics only:
* **Workspace owners:** choose **Custom**, then set **Codex analytics API** to **Read**.
* **Workspace admins:** set **Codex analytics API** to **Read** under **Permissions**.
This grants the `codex.enterprise.analytics.read` scope. Leave every other permission set to **None**.
Pick an expiration, click **Submit**, and copy the secret. OpenAI only shows it once, so keep it somewhere safe until you paste it into Windmill.
Go to the [ChatGPT Admin console](https://chatgpt.com/admin) and copy your **Workspace ID**. This identifies which ChatGPT workspace Windmill should pull analytics from. It must be the same workspace you created the Admin key in.
In Windmill, navigate to [Settings > Integrations](https://app.gowindmill.com/COMPANY/config/integrations), find **Codex**, and click **Connect**.
Paste your Admin key and Workspace ID into the input fields and click **Connect**. Windmill will validate the credentials and begin syncing analytics within the hour.
Don't create the key in the API Platform ([platform.openai.com](https://platform.openai.com)). API Platform keys, including API Platform organization Admin keys, can't read ChatGPT workspace data. The key must come from the [OpenAI Admin Console](https://admin.openai.com).
Codex is an account-level integration — an admin connects it once and it covers your entire ChatGPT workspace. Individual users don't need to connect separately.
## Connected data
When connected, Windmill syncs **per-user analytics** from Codex's Enterprise Analytics API. This is usage data — Windmill does not access any code, prompts, conversations, or file content.
All stats are broken down by **client surface** (e.g., Codex in ChatGPT, Codex in an IDE, or other clients) so you can see where your team is using Codex.
| Stat | Description | Unit |
| - | - | - |
| Threads | Number of Codex threads created | threads |
| Turns | Number of Codex turns (messages) within threads | turns |
| Credits | Total Codex credits consumed | credits |
| Input Tokens | Total input tokens (cached + uncached) sent to Codex | tokens |
| Output Tokens | Total output tokens generated by Codex | tokens |
| Total Tokens | Total tokens consumed across input and output | tokens |
All stats are tracked per employee, per day, per client surface.
## Visibility and access
Codex stats in Windmill follow the **manager hierarchy** visibility model:
* **Employees** can see their own Codex stats
* **Managers** can see Codex stats for their direct reports and anyone in their reporting chain
* **Admins** can see Codex stats for everyone in the organization
* **Peers** cannot see each other's Codex stats
This means Codex analytics are treated like other sensitive performance data in Windmill — visible to the people who need it for coaching and evaluation, but not exposed broadly.
## Permissions
Windmill requests **read-only** access to Codex's Enterprise Analytics API.
| Permission | Purpose |
| - | - |
| Read user analytics | To sync usage stats per team member into Windmill |
| **No access to code or files** | Windmill never reads, stores, or accesses any code from Codex |
| **No access to prompts or conversations** | Windmill does not read thread content — only aggregate usage counts |
| Read-only access | Windmill never modifies anything in Codex or your OpenAI account |
## User matching
Windmill matches Codex users to employees using their **email address**. If a Codex user's email matches an employee's email in Windmill, their stats are automatically attributed to that employee.
If you notice stats that aren't being attributed correctly, check that the email addresses in your ChatGPT workspace match the employee emails in Windmill.
## FAQs
Yes. Codex's analytics API needs an OpenAI Admin key, and Admin keys are only available for eligible managed ChatGPT workspaces, such as ChatGPT Enterprise, Edu, or Healthcare. The integration won't work with ChatGPT's free, Plus, or Team plans.
No. Windmill only reads usage analytics from Codex's API — thread counts, turn counts, credit consumption, and token usage. Windmill never accesses code, files, prompts, or conversation content.
Windmill syncs with Codex once per hour. New usage data will appear within an hour of the activity happening in Codex.
Yes. Every employee can see their own Codex stats in Windmill.
No. Peers cannot see each other's Codex usage data. Managers can see stats in their reporting scope. Admins and Data Analysts can view company-wide analytics.
No. Codex is an account-level integration. An admin connects it once using an Admin key and Workspace ID, and it covers your entire ChatGPT workspace.
Codex stats are broken down by the client surface where the activity happened — for example, Codex in ChatGPT versus Codex in an IDE integration. This helps you understand where your team is using Codex most.
Their historical Codex stats remain for context, but Windmill stops attributing new activity once they are an Archived user.
If you only see **ChatGPT Access Tokens** under **Credentials**, your workspace doesn't have Admin keys. Admin keys are only available for eligible managed workspaces, such as ChatGPT Enterprise, Edu, or Healthcare, and availability can vary by plan and rollout. ChatGPT Access Tokens won't work with Windmill.
Also check that you selected the right tenant and workspace, and that you're an Owner or Admin of that workspace.
The **Codex analytics API** permission only appears when Codex is available in the selected workspace. Check that Codex is turned on for your workspace. If it still doesn't appear, contact OpenAI Support. Don't pick a different permission in its place.
In the [OpenAI Admin Console](https://admin.openai.com), go to **Credentials > Admin keys** and check the key's status and expiration. A key stops working if it expires or is revoked.
A key also stops working if the person who created it loses their Owner or Admin role or their account is deactivated. This happens even if the key was set to never expire. Create a new key and reconnect Codex in Windmill.
This usually happens when your email in your ChatGPT workspace doesn't match your email in Windmill. Make sure the email addresses match, or ask an admin to check the user mapping.
# Cursor
Source: https://help.gowindmill.com/integrations/cursor
Connect Cursor Enterprise analytics to Windmill to sync AI coding usage by employee, including agent edits, tab completions, chat activity, skills, and MCP tool usage.
Cursor's analytics API is only available on the **Cursor Enterprise plan**. You must be on Cursor Enterprise to connect this integration.
## Benefits of connecting Cursor to Windmill
Connecting Cursor to Windmill brings AI coding tool usage directly into stats, performance reviews, and 1:1s — giving managers and engineers visibility into how AI is being adopted across the team.
* Tracks how engineers are using AI-assisted coding features like agent edits, tab completions, and chat
* Surfaces adoption patterns across models, skills, and MCP tools without self-reporting
* Helps managers understand AI tool usage and coach their teams on effective workflows
* Provides concrete data for performance conversations about productivity and tool adoption
* Syncs automatically — no manual tracking or surveys required
Windmill turns Cursor's team analytics into actionable stats that flow into your existing performance workflow.
## How to connect Cursor
Go to the [Cursor Dashboard > API Keys](https://cursor.com/dashboard/api) page. Click the **Team** tab, then click **New API Key**. Keep the scope set to **Admin** and create the key. You'll need to be a Cursor team admin to access this page.
Make sure you're on the **Team** tab before you create the key. Cursor selects the **User** tab by default, and a user key can only read your own data, so Windmill can't use it to sync team analytics.
In Windmill, navigate to [Settings > Integrations](https://app.gowindmill.com/COMPANY/config/integrations), find **Cursor**, and click **Connect**.
Paste the API key from Cursor into the input field and click **Connect**. Windmill will validate the key and begin syncing analytics within the hour.
Cursor is an account-level integration — an admin connects it once and it covers your entire Cursor team. Individual users don't need to connect separately.
## Connected data
When connected, Windmill syncs **team-level analytics** from Cursor's API. This is aggregate usage data — Windmill does not access any code, files, or conversation content.
| Stat | Description | Unit |
| - | - | - |
| Agent Edits Accepted | Number of AI-generated code edits accepted | edits |
| Agent Lines Added | Lines of code added by Cursor's AI agent | lines |
| Agent Lines Deleted | Lines of code deleted by Cursor's AI agent | lines |
| Agent Edit Acceptance Rate | Ratio of accepted to suggested AI edits | % |
| Tab Completions Accepted | Number of Cursor tab suggestions accepted | completions |
| Messages Sent | Messages sent to Cursor AI, broken down by model | messages |
| Plan Mode Messages | Messages sent in Cursor's plan mode, broken down by model | messages |
| Ask Mode Messages | Messages sent in Cursor's ask mode, broken down by model | messages |
| Skill Usage | Cursor skill invocations, broken down by skill | invocations |
| MCP Tool Usage | Cursor MCP tool invocations, broken down by tool | invocations |
All stats are tracked per employee, per day.
## Visibility and access
Cursor stats in Windmill follow the **manager hierarchy** visibility model:
* **Employees** can see their own Cursor stats
* **Managers** can see Cursor stats for their direct reports and anyone in their reporting chain
* **Admins** can see Cursor stats for everyone in the organization
* **Peers** cannot see each other's Cursor stats
This means Cursor analytics are treated like other sensitive performance data in Windmill — visible to the people who need it for coaching and evaluation, but not exposed broadly.
## Permissions
Windmill requests **read-only** access to Cursor's analytics API.
| Permission | Purpose |
| - | - |
| Read team analytics | To sync usage stats per team member into Windmill |
| **No access to code or files** | Windmill never reads, stores, or accesses any code from Cursor |
| **No access to conversations** | Windmill does not read chat content — only aggregate usage counts |
| Read-only access | Windmill never modifies anything in Cursor |
## User matching
Windmill matches Cursor users to employees using their **email address**. If a Cursor user's email matches an employee's email in Windmill, their stats are automatically attributed to that employee.
If you notice stats that aren't being attributed correctly, check that the email addresses in Cursor match the employee emails in Windmill.
## FAQs
Yes. Cursor's analytics API is only available on the Enterprise plan. The integration will not work with Cursor's free, Pro, or Business plans.
No. Windmill only reads aggregate analytics data from Cursor's API — usage counts, model breakdowns, and acceptance rates. Windmill never accesses code, files, repositories, or chat content.
Windmill syncs with Cursor once per hour. New usage data will appear within an hour of the activity happening in Cursor.
Yes. Every employee can see their own Cursor stats in Windmill.
No. Peers cannot see each other's Cursor usage data. Managers can see stats in their reporting scope. Admins and Data Analysts can view company-wide analytics.
No. Cursor is an account-level integration. An admin connects it once using an API key from the Cursor dashboard, and it covers your entire Cursor team.
Their historical Cursor stats remain for context, but Windmill stops attributing new activity once they are an Archived user.
This usually happens for one of two reasons:
* **The key was created on the User tab.** On the [Cursor API Keys](https://cursor.com/dashboard/api) page, click the **Team** tab and create a new key with the **Admin** scope.
* **Your team isn't on Cursor Enterprise.** Cursor's analytics API is only available on the Enterprise plan.
This usually happens when your email in Cursor doesn't match your email in Windmill. Make sure the email addresses match, or ask an admin to check the user mapping.
# Devin
Source: https://help.gowindmill.com/integrations/devin
Connect Devin analytics to Windmill to sync per-user ACU consumption, session activity, and pull request outcomes into stats, performance reviews, and 1:1s.
Connect Devin to bring team AI usage into Windmill without giving Windmill access to session content, prompts, code, or repositories. The integration supports Devin Teams and Enterprise accounts.
## Benefits of connecting Devin to Windmill
* Track Agent Compute Unit (ACU) consumption, sessions, and pull request outcomes by employee
* Understand how your team uses Devin across products, session origins, and task sizes
* Bring AI adoption data into stats, performance reviews, and 1:1s
* Sync analytics automatically without asking employees to connect individually
## How to connect Devin
Devin Teams and Enterprise accounts use different service-user roles. Follow the instructions for your plan.
### Teams setup
In Devin, go to **Settings → Service users** and click **Create service user**. Name the service user **Windmill Analytics** and assign the **Admin** role.
The Admin role is required because Windmill must read the complete member roster to match Devin users to employees. The Teams **Member** role doesn't include this access.
Open the new service user and click **Generate API key**. Copy the `cog_`-prefixed key immediately. Devin only displays it once.
See Devin's [Teams quick start](https://docs.devin.ai/api-reference/getting-started/teams-quickstart) for more information about service users and API keys.
Go to [Settings > Integrations](https://app.gowindmill.com/COMPANY/config/integrations), find **Devin**, and click **Connect**.
Paste the API key into **API key**. Leave **API base URL** at the default `https://api.devin.ai`, then click **Connect**.
Windmill detects your Devin organization automatically. You don't need to enter an organization ID or select a plan.
### Enterprise setup
In Devin, go to **Enterprise settings → Roles** and create a custom role named **Windmill Analytics** with these permissions:
| Permission | Purpose |
| - | - |
| `ViewAccountMembership` | Read direct and identity provider (IDP)-managed users for employee matching |
| `ViewAccountMetrics` | Read per-user session and pull request metrics |
| `ViewAccountConsumption` | Read per-user daily ACU consumption |
Go to **Enterprise settings → Service users** and click **Create service user**. Name it **Windmill Analytics** and assign the custom role.
Open the new service user and click **Generate API key**. Copy the `cog_`-prefixed key immediately. Devin only displays it once.
See Devin's [Enterprise quick start](https://docs.devin.ai/api-reference/getting-started/enterprise-quickstart) for more information about Enterprise service users and roles.
Most Enterprise accounts use Devin's standard API and should leave **API base URL** at `https://api.devin.ai`.
If your company has a dedicated Devin deployment, ask your Devin administrator or Cognition support for its API domain. Enter the HTTPS origin, such as `https://api.your-company.devinenterprise.com`, without a path, query, credentials, or trailing content.
Go to [Settings > Integrations](https://app.gowindmill.com/COMPANY/config/integrations), find **Devin**, and click **Connect**. Enter the API key and, only for a dedicated deployment, the API base URL. Then click **Connect**.
Windmill detects Enterprise scope automatically. You don't need to enter an organization ID or select a plan.
Devin is an account-level integration. An admin connects it once for the company, and individual employees don't need to connect it themselves.
## Connected data
Windmill syncs Devin's direct and IDP-managed user rosters for employee matching. For matched users, Windmill imports daily ACU consumption, session metrics, and pull request metrics.
### ACU consumption
| Stat | Description | Unit |
| - | - | - |
| ACUs | Total Agent Compute Units consumed | ACUs |
| ACUs by Product | ACUs consumed in Devin, Cascade, Terminal, and Review | ACUs |
### Sessions
| Stat | Description | Unit |
| - | - | - |
| Sessions Created | Devin sessions created | sessions |
| Average ACUs per Session | Average ACUs consumed for each session created | ACUs |
| Sessions with Playbook | Sessions created with a playbook | sessions |
| Sessions with Search | Sessions created with search | sessions |
| Sessions with Merged PRs | Sessions that produced a merged pull request | sessions |
| Sessions Created by Origin | Sessions broken down by API, automation, code scan, desktop, Jira, Linear, Slack, Teams, or web app | sessions |
| Sessions Created by Size | Sessions broken down by XS, S, M, L, or XL size | sessions |
| Sessions with Merged PRs by Size | Sessions with merged pull requests broken down by XS, S, M, L, or XL size | sessions |
### Pull requests
| Stat | Description | Unit |
| - | - | - |
| PRs Created | Total pull requests authored by Devin across all states | PRs |
| PRs Opened | Devin-authored pull requests currently open | PRs |
| PRs Merged | Devin-authored pull requests merged | PRs |
| PRs Closed | Devin-authored pull requests closed without merging | PRs |
| PRs Taken Over | Pull requests Devin contributed commits to but didn't create | PRs |
| PRs Taken Over and Opened | Taken-over pull requests currently open | PRs |
| PRs Taken Over and Merged | Taken-over pull requests merged | PRs |
| PRs Taken Over and Closed | Taken-over pull requests closed without merging | PRs |
All stats are tracked per employee and per completed Devin billing day. Windmill checks for new data hourly, and the latest completed day appears after Devin makes it available.
### Data Windmill doesn't access
Windmill uses Devin's read-only analytics and membership endpoints. It doesn't read or store:
* Session prompts, messages, or other conversation content
* Source code, files, or repository contents
* Playbook or knowledge content
* Audit logs, secrets, or account settings
Windmill never creates or modifies sessions, users, repositories, or other data in Devin.
## Visibility and access
Devin stats in Windmill follow the **manager hierarchy** visibility model:
* **Employees** can see their own Devin stats
* **Managers** can see Devin stats for their direct reports and anyone in their reporting chain
* **Admins** can see Devin stats for everyone in the organization
* **Peers** can't see each other's Devin stats
## Permissions
Windmill calls only read-only Devin endpoints, even when a Teams service user has the Admin role.
For Teams, the **Admin** role is required to read the complete roster and analytics. For Enterprise, the custom role only needs account metadata, membership, metrics, and consumption permissions.
Windmill validates the key and confirms that it belongs to a service user when you connect. Devin checks roster and analytics permissions during the first sync.
## User matching
Windmill matches Devin users to employees by **email address**. It reads both directly assigned users and users whose membership comes from an identity provider group.
If a user isn't matched, confirm that their Devin email address matches their employee email in Windmill.
## Troubleshooting
Confirm that you pasted the complete `cog_`-prefixed service-user key. Personal tokens and legacy `apk_` keys aren't supported.
If the key was revoked, generate a replacement key and reauthenticate the integration. Don't revoke the current key until Windmill accepts its replacement.
Devin displays a service-user API key only once. Generate a new key, copy it immediately, and paste it into Windmill. Revoke the unseen key if it remains active.
A 403 error that mentions `org.membership.view` or `ViewOrgMembership` means the service user can't read the roster. Change the **Windmill Analytics** service user from **Member** to **Admin**, then run the sync again.
Add `ViewAccountMembership` to the service user's custom role. Windmill needs this permission to read both directly assigned and IDP-managed users.
On Teams, confirm that the service user has the **Admin** role. On Enterprise, add `ViewAccountMetrics` to its custom role. Then run the sync again.
On Teams, confirm that the service user has the **Admin** role. On Enterprise, add `ViewAccountConsumption` to its custom role. Then run the sync again.
Only Enterprise dedicated deployments should use **API base URL**. Confirm the exact domain with your Devin administrator or Cognition support.
Enter an HTTPS origin such as `https://api.your-company.devinenterprise.com`. Don't include a path, query, fragment, or credentials. Standard Cognition-hosted accounts should use the default `https://api.devin.ai`.
If Devin returns a 429 rate-limit response, Windmill waits and retries automatically. Data will appear after a later retry succeeds. If the issue continues, contact [Windmill support](mailto:support@gowindmill.com).
## FAQs
No. Windmill identifies your organization or Enterprise account from the service-user key. There is no organization ID or plan selector in the connection flow.
No. Devin is an account-level integration. An admin connects it once for the company.
Windmill checks Devin hourly and imports newly completed Devin billing days. The current, incomplete day isn't imported until it closes.
No. Employees can see their own stats, managers can see stats within their reporting hierarchy, and admins can see stats for the company. Peers can't see each other's usage.
Their historical Devin stats remain for context, but Windmill stops attributing new activity once they are an Archived user.
# Figma
Source: https://help.gowindmill.com/integrations/figma
Connect Figma to Windmill so design activity and file contributions appear in 1:1 prep and performance reviews with credit going to the right people.
## Benefits of connecting Figma to Windmill
Connecting Figma to Windmill allows design work and collaboration to be reflected directly in performance reviews and 1:1s — without designers having to document or defend their contributions.
* Captures design progress, iterations, and shipped work automatically
* Ensures designers receive recognition for the thinking, not just the final output
* Reduces the need to reconstruct or explain work during review cycles
* Surfaces collaboration patterns and feedback history to support coaching
* Makes performance reviews more fair, accurate, and grounded in real work
Windmill transforms Figma activity into meaningful context for reflection, growth, and evaluation.
## Connected data
When connected, Windmill securely reads selected activity from Figma:
| Data Type | How Windmill Uses It |
| - | - |
| File and project creation / updates | Shows progress and contribution over time |
| Version history & design iteration checkpoints | Highlights improvement, iteration, and problem-solving |
| Comments and feedback threads | Adds qualitative collaboration insights to 1:1s and reviews |
| File ownership and collaborator lists | Attributes work to the correct designers and contributors |
## Permissions
Windmill requests **read-only** access to selected Figma files and projects.
| Permission | Purpose |
| - | - |
| Read file metadata and version history | To show design progress and collaboration patterns |
| Read comments and feedback thread metadata | To provide context for reviews and coaching |
| Read collaborator / owner information | To attribute work to the correct team members |
| **No write access** | Windmill never edits or changes Figma files |
| Team-level access | Windmill will only have access to the team page ID shared upon install |
Synced Figma data is available to all members of the Windmill workspace. Figma source permissions do not limit visibility in Windmill.
## How do I add my Team ID?
To use Figma with Windmill, you need to add the team IDs you want to sync. Go to Figma to find your team IDs. Here is where your team ID lives in Figma:
For more assistance, here is a Loom taking you through the flow.
## Username mapping
Figma uses specific usernames that don't always map to employee email addresses. If you see Figma activities that aren't associated with a team member or are associated with the wrong team member, Windmill Admins can fix this.
To update username mapping:
Go to [**Settings > Integration Mappings**](https://app.gowindmill.com/COMPANY/config/mappings).
Use the employee and user views to find a missing or incorrect mapping.
Select the mapping, assign the correct employee and Figma user, and save the change.
## FAQs
No. The integration is 100% read-only.
No. Windmill stores metadata, version history signals, and comment context — not full asset binaries.
Approximately once per hour. Design progress and collaboration updates appear after an incremental sync.
Yes. All data is encrypted in transit and at rest. Windmill follows SOC 2 and least-privilege access standards.
Their historical contributions remain visible for context, but Windmill stops associating new activity once they are inactive.
# Front
Source: https://help.gowindmill.com/integrations/front
Connect Front to Windmill so customer conversations, response activity, and inbox workload appear in 1:1 prep and performance review context.
## Benefits of connecting Front to Windmill
Connecting Front to Windmill brings customer-facing work into performance conversations — so support, success, and ops teams get recognized for the real work they do every day.
* Automatically captures meaningful customer interactions without manual reporting
* Ensures employees get credit for responsiveness, problem-solving, and tone
* Reduces time spent preparing for reviews, calibrations, and promotions
* Provides managers with context for coaching and development conversations
* Makes performance reviews more fair and grounded in actual customer impact
Windmill turns ongoing support and communication work into structured insight for growth, feedback, and recognition.
## Connected data
When connected, Windmill receives supported conversation activity from Front webhooks:
| Data Type | How Windmill Uses It |
| - | - |
| Outbound message body, text, timestamps, and participants | Provides customer context for the conversation |
| Conversation assignment + ownership | Attributes work to the correct agent or team member |
| Tags, status changes, and resolution outcomes | Helps surface patterns in problem-solving and support quality |
| Conversation subject and recipient details | Adds narrative coaching and account context |
> For supported events, Windmill stores the Front webhook payload with the activity. This payload can include the message body and text, subject, headers, author and recipient details, conversation details, tags, and status information.
## Permissions
Windmill requests read-only access to the authorized Front account.
| Permission | Purpose |
| - | - |
| Read conversation and message data | To reflect workload, responsiveness, and customer context |
| Read assignment + user ownership | To associate work with the correct employee in Windmill |
| Read tag + status metadata | To surface coaching and performance trends |
| **No write access** | Windmill never sends messages or modifies conversations in Front |
Synced Front data is available to all members of the Windmill workspace. Front source permissions do not limit visibility in Windmill.
## FAQs
No. The integration is strictly read-only.
Front sends supported conversation activity through webhooks. Windmill also runs a daily sync to update Front users and their employee mappings.
Yes. All data is encrypted in transit and at rest. Windmill meets SOC 2 security controls and uses least-privilege scoped API access.
Their historical contributions remain accessible for context, but Windmill stops associating new activity once they are deactivated.
***
# GitHub
Source: https://help.gowindmill.com/integrations/github
Connect GitHub to Windmill to surface pull requests, reviews, commits, and engineering contributions inside 1:1 prep and performance reviews.
When working with engineering teams, one of the most important activities is committing code to repositories. Windmill's GitHub integration helps surface the work happening in your codebase by understanding how code changes, who's contributing, and how teams collaborate.
## Why connect GitHub
Connecting GitHub to Windmill brings your engineering work directly into performance conversations—without needing to self-promote or write summaries.
* Your contributions are captured as they happen (commits, PRs, code reviews)
* Surfaces patterns in collaboration, code ownership, and problem-solving
* Helps managers coach using actual context from your work
* Ensures reviews recognize both shipped code and behind-the-scenes contributions like code review
Windmill turns GitHub activity into fair, accurate insight for 1:1s, feedback, and performance reviews.
## What Windmill accesses
**Windmill stores git diffs—including the actual code changes.** We analyze file diffs in PRs to understand the work you're contributing, contextualize PR comments and code reviews, and surface collaboration patterns. While those diffs could theoretically be used to reconstruct your codebase, we don't store complete source files or attempt to reassemble your code. We focus on understanding how your code evolves and how teams collaborate.
### Code changes and commits
Windmill reads commit metadata and diffs to understand:
* **Who is making changes** – Attribution based on git author configuration
* **What changed** – The scope and nature of contributions (lines added/removed, files modified)
* **Collaboration patterns** – Who's working on the same code or projects
We store the actual code changes in diffs to analyze your contributions and provide context for code reviews. While this gives us access to your code, we don't maintain complete source files—we care about how your codebase evolves, not the final state.
### Pull requests and code reviews
Pull requests are a key signal for understanding engineering work and collaboration. Windmill tracks:
* **Who opened, merged, or contributed to PRs**
* **Code review activity** – Who's reviewing, approving, and commenting on code
* **Review cycle time** – How long PRs spend in review
* **Collaboration and feedback** – The back-and-forth between engineers during code review
Code review is often a strong signal of performance—whether you're doing thorough reviews or submitting PRs that require less iteration.
### Issues and project work
Windmill reads issue metadata to show:
* Issues created, owned, or completed
* Follow-through on project contributions
* Attribution to the right individuals and teams
## How Windmill uses GitHub data
When connected, Windmill securely reads the following activity signals from GitHub:
| Data Type | How Windmill Uses It |
| - | - |
| Pull requests (opened, merged, reviewed) | Surfaces in 1:1s and performance reviews to highlight shipped work and ownership |
| Code review comments and approvals | Shows collaboration, mentoring, and teamwork; appears in stats and organizational insights |
| Issues created, owned, or completed | Tracks project contributions and follow-through |
| Commit metadata and diffs | Analyzes actual code changes to understand contribution patterns and contextualize PR activity |
| Repository and project associations | Maps work to the right individuals and teams |
## Permissions
Windmill requests **read-only** access through GitHub's standard OAuth flow.
| Permission | Purpose |
| - | - |
| `repo:read` (or scoped metadata access) | Read PRs, issues, commits, and diffs |
| Read collaborator/contributor metadata | Map contributions to individuals in Windmill |
| **No write access** | Windmill never modifies repos, pushes commits, or comments |
| **Scoped to selected repos or organizations** | You choose what's included—you can change this anytime |
You need to be a GitHub Owner or Manager to connect the integration.
## Attribution
Windmill attributes work based on git author configuration and GitHub activity.
### Commits
Commits are attributed based on the **git author** configured locally (not your GitHub username). To ensure correct attribution, set your git config:
```bash theme={null}
git config user.name "John Doe"
git config user.email "john.doe@example.com"
```
Use your work email to ensure commits are mapped to your Windmill profile.
### Coding agents
If you use coding agents, attribution depends on how the agent commits code:
**Attributed to a bot user:**
* Devin
* Claude Code (via GitHub Actions)
**Attributed to you (the requesting user):**
* OpenAI Codex
* Cursor
* Claude Code (locally)
If you notice incorrect attribution in your stats, check your git
configuration and coding agent settings.
## Username mapping
GitHub usernames don't always match work email addresses, which can cause attribution issues. If your GitHub activity isn't showing up—or is attributed to the wrong person—an admin can fix this.
Admins can map GitHub usernames to employees at [Settings > Integrations > Mapping](https://app.gowindmill.com/COMPANY/config/mappings). You'll see both GitHub usernames and local machine names used in commits.
To check for unmapped users, go to **External Users** and filter by GitHub.
## FAQs
Windmill stores **git diffs**, which include the actual code you wrote—the
lines added, removed, and modified. We analyze file diffs to understand the
work you're contributing, contextualize PR comments and code reviews, and
measure impact. While diffs could theoretically reconstruct your codebase,
we don't store complete source files or attempt to reassemble your code. We
focus on understanding how your codebase evolves over time.
Windmill stores git diffs, which include the actual code changes you
make—not just metadata. We analyze these diffs to understand **who
contributed what**, **how code evolves**, and **how teams collaborate**.
While diffs could theoretically be used to reconstruct your codebase, we
don't store complete source files or attempt to reassemble your code.
No. GitHub is a very powerful integration for engineers—it surfaces
contributions, code reviews, and collaboration patterns that help in
performance conversations. However, you don't have to connect GitHub to use
Windmill. The platform works with or without it.
No. You choose which repos or teams to sync. You can change or revoke access
at any time from your GitHub settings.
No. The integration is strictly read-only. Windmill never pushes commits,
modifies repos, or comments on PRs.
Webhooks can send some activity shortly after it happens. An hourly
incremental sync checks for new or changed data.
Yes. All data is encrypted in transit and at rest. Windmill maintains SOC 2
compliance and uses scoped OAuth tokens. You control which repos are synced.
Their historical contributions remain visible for context, but Windmill
stops associating new activity once they're marked as an Archived user.
This usually happens when your GitHub username doesn't match your work
email. Check the **Settings > Integrations > GitHub > Mapping** tab to map
your GitHub username to your employee profile. Admins can fix this at
[Settings > Integrations >
Mapping](https://app.gowindmill.com/COMPANY/config/mappings).
Signing commits proves you created them and keeps your work secure. For
Windmill, signing commits ensures your contributions are properly attributed
to you in stats and performance reviews.
Currently, Windmill only supports GitHub. We're planning to add GitLab and
other repositories in the future.
# Gong
Source: https://help.gowindmill.com/integrations/gong
Connect Gong to Windmill so call recordings, transcripts, and meeting insights appear in 1:1s and performance review context for sales teams.
## Benefits of connecting Gong to Windmill
Integrating Gong with Windmill brings real customer conversations into performance reviews and 1:1s — so coaching and evaluation are based on actual interactions, not fuzzy recollections.
* Automatically surfaces call activity and deal involvement without manual notes
* Gives managers context to coach on messaging, objection handling, and presence
* Ensures reps get credit for the work they do that isn’t always visible in CRM data
* Makes performance reviews more objective and grounded in real customer conversations
* Helps sales, CS, and support teams grow through shared context — not extra reporting
Windmill transforms sales and customer interaction signals from Gong into meaningful, ongoing performance insight.
## Connected data
When connected, Windmill securely reads the following from Gong:
| Data Type | How Windmill Uses It |
| - | - |
| Call & meeting metadata (participants, time, length) | Shows activity levels, participation, and customer-facing involvement |
| Meeting transcripts | Attach to matching 1:1s, feed review context, searchable by Windy |
| AI conversation summary (when enabled in Gong) | Short summary, key points, and action items surfaced on 1:1s and in Windy responses |
| Public comments | Public-call comments are included; private comments are not synced |
**Windmill does not store raw audio or video.** Only the transcript and AI summary text are synced — the original recording stays on Gong.
## Visibility & Access
Windmill only syncs **public calls and comments** from Gong — private recordings are never imported.
* **If you have a Gong account:** You can view synced Gong data in Windmill
* **If you don't have a Gong account:** Gong data won't be visible to you in Windmill
This mirrors Gong's own access model — if you can see it in Gong, you can see it in Windmill.
## Permissions
Windmill requests **read-only**, scoped access through Gong’s API.
| Permission | Purpose |
| - | - |
| Read call & meeting metadata | To reflect customer-facing work and conversation volume |
| Read transcript and AI summary (when available) | To provide context for 1:1s and review discussions |
| **No write access** | Windmill never modifies calls, tags, or coaching notes in Gong |
## FAQs
No. Windmill stores transcripts and summaries.
We currently store transcripts, but don't offer any coaching built on top of transcripts.
No. The integration is read-only.
Hourly. New calls and insights typically appear in Windmill within an hour after they're processed in Gong.
Yes. All data is encrypted in transit and at rest. Windmill complies with SOC 2 controls and stores only the minimum required performance-context data.
Historical contributions remain for review context, but Windmill stops attributing new activity once they're deactivated.
Only users with a Gong account can view Gong data in Windmill. We only sync public calls and comments — private recordings are never imported.
***
# Google Workspace
Source: https://help.gowindmill.com/integrations/google-workspace
Connect Google Workspace to Windmill to sync calendar events, Google Meet recordings, and Google Docs activity into 1:1s and feedback flows.
## Benefits
Connecting Google Workspace to Windmill automatically surfaces work from Docs, Drive, Calendar, and Meet—so Windmill has context for your team's work.
* Captures real project work and collaboration happening across your team
* Reduces time spent preparing for performance reviews and 1:1s
* Makes evaluations more fair and consistent
## Overview
The Google Workspace integration has a core integration that syncs employees with three additional Google products:
* **Employee Sync** - Syncs employees and employee groups from your Google Workspace directory
* **Google Calendar** - Syncs everyone's Google Calendar events so Windmill can detect 1:1s automatically
* **Google Drive** - Syncs files from Google Drive
* **Google Meet** - Pulls in recordings from Google Meet meetings
## Data access and privacy
### Permission inheritance
Windmill inherits all existing permissions from Google Workspace. This means users can only see documents, calendar events, and meetings they already have access to in Google—nothing more.
This applies regardless of your role in Windmill. Even if you're a Windmill admin, you can't see content in Windmill that you wouldn't be able to see in Google Workspace. This ensures your data stays secure and private within your existing access controls.
### How Windy uses Google data
Windy uses Google Workspace data to inform conversations and provide relevant suggestions. For example, Windy can suggest who can provide Feedback, recommend participants for self-reviews, or identify relevant people for 1:1s.
## Installation
You'll need Google Workspace Admin access to connect Google Workspace to
Windmill.
Google Workspace is a workspace-level admin integration, not a per-user OAuth connection. Windmill requires Domain-wide Delegation instead of per-user OAuth for pilot users because Windmill needs admin access to sync employee directory and group metadata and, when enabled, access Calendar, Drive, and Meet data across the workspace while preserving Google Workspace permissions. Pilot rollout is controlled with sync restrictions, not per-user OAuth.
Navigate to **Security → API Controls → Domain-wide Delegation** in your
Google Admin Console. We'll provide you with a direct link.
Under **API Clients**, click **Add New** and enter the Client ID we provide.
Copy and paste the scopes from the [OAuth Scopes](#oauth-scopes) section
below. Use the **Copy Scopes** button to copy them all at once, then click
**Authorize**.
Return to Windmill and enter your Google Workspace super admin email, then
click **Connect your Workspace**.
## OAuth scopes
These are the Google OAuth Scopes available for Windmill. During setup, you can choose which Google products to enable (Google Meet, Google Drive, and Google Calendar), and Windmill will only request the scopes needed for those products. See [Selecting which products to enable](#selecting-which-products-to-enable) for more details.
| OAuth Scope | Description |
| - | - |
| `https://www.googleapis.com/auth/admin.directory.group.member.readonly` | Lets Windy view group members in the directory |
| `https://www.googleapis.com/auth/admin.directory.group.readonly` | Lets Windy view groups in the directory |
| `https://www.googleapis.com/auth/admin.directory.user.readonly` | Lets Windy view details about users in the directory |
| `https://www.googleapis.com/auth/admin.directory.domain.readonly` | Lets Windy view domains in the directory |
| `https://www.googleapis.com/auth/meetings.space.readonly` | Lets Windy view meeting spaces and related information in Google Meet |
| `https://www.googleapis.com/auth/drive.activity.readonly` | Lets Windy view recent activity in the user's Google Drive |
| `https://www.googleapis.com/auth/drive.readonly` | Lets Windy view files and folders in the user's Google Drive |
| `https://www.googleapis.com/auth/calendar.readonly` | Lets Windy view the user's calendars |
| `https://www.googleapis.com/auth/calendar.events.readonly` | Lets Windy view events on the user's calendars |
| `https://www.googleapis.com/auth/calendar.settings.readonly` | Lets Windy view calendar settings for the user |
| `https://www.googleapis.com/auth/calendar.events.owned` | Lets Windy update events on calendars the user owns—used to add 1:1 note links to calendar events (Optional). This feature can be controlled manually in Windmill. |
| `https://www.googleapis.com/auth/calendar.acls.readonly` | Lets Windy view sharing settings on the user's calendars |
## Configuring your connection
### Selecting which products to enable
When connecting Google Workspace to Windmill, you can choose which Google products to integrate: **Google Meet**, **Google Drive**, and **Google Calendar**. You can select all of them, just a subset, or none during the connection setup.
This gives you granular control over what data Windmill can access from your Google Workspace.
### Limiting Drive access
You can restrict which shared drives Windmill can access to prevent syncing sensitive documents.
To configure this:
1. Go to your [Google Workspace integration settings](https://app.gowindmill.com/COMPANY/config/integrations)
2. Click on your **Google Workspace** integration
3. Click **Settings**
4. Select which specific shared drives you want to make available to Windmill
5. Remove access to any drives containing sensitive information
This additional security control lets you fine-tune access at the drive level.
### Restricting data sync
You can limit which Google Workspace members have their calendar, meetings, activities, and documents synced into Windmill. This is useful for organizations that only want to sync data for specific teams or active Windmill users.
People and group metadata always syncs for all members, regardless of any restrictions you set. Restrictions only apply to calendar events, meetings, activities, and documents.
Syncing group metadata does not automatically link every Google group as a Windmill group. To use a group for surveys, reviews, or sharing, select it through **Company settings > Groups > Create group > Synced > Continue**. See [Syncing groups from integrations](/org-chart/groups#syncing-groups-from-integrations).
There are two restriction types, and they can be used individually or together:
* **Restrict to Google Groups** — Only sync data for members of specific Google groups. For example, you could restrict syncing to your `engineering@company.com` and `sales@company.com` groups.
* **Restrict to Windmill Members** — Only sync data for employees who have an active Windmill member account.
When both restrictions are enabled, users must satisfy both conditions to have their data synced.
For a pilot rollout, invite only the pilot users to Windmill, then restrict Google Workspace sync to the pilot Google Group. If needed, also enable **Restrict to Windmill Members** so only active Windmill members have their Google Workspace activity synced.
To configure data sync restrictions:
Go to your [Google Workspace integration settings](https://app.gowindmill.com/COMPANY/config/integrations) and click on your **Google Workspace** integration. Then click **Settings**.
Under **Restrict to Google Groups**, enter a group email address and click **Add Group**. Repeat for each group you want to include. Only members of these groups will have their data synced.
Toggle **Restrict to Windmill Members** to only sync data for employees with an active Windmill member account.
Click **Save** to apply your changes. The synced user count at the top of the section updates to reflect your restrictions.
## FAQs
The super admin email is required to access Google's administrative APIs that only super admins can use:
* **Employee Directory** - We need admin access to sync all employees in your workspace
* **Groups** - Only admins can retrieve group memberships and organizational structure
* **Domain-wide Access** - Admin privileges let us sync data for all users, not just individuals
Without super admin access, we can't retrieve your company's employee list or team structures from Google Workspace.
Google Workspace is a workspace-level admin integration, not a per-user OAuth connection. Windmill needs admin access to sync the employee directory and groups, and Domain-wide Delegation supports workspace-wide access for the Google products you enable. For pilot rollouts, limit access with data sync restrictions instead of per-user OAuth.
Yes. Restrict Google Workspace data sync to specific Google Groups, to active Windmill members, or both. For platform access, users still need to be invited or provisioned into Windmill, so a common pilot setup is to invite only pilot users and restrict Google Workspace sync to the pilot Google Group.
No. Windmill inherits all existing permissions from Google Workspace. Even if you're a Windmill admin, you can only see documents, calendar events, and meetings that you already have access to in Google Workspace.
Your data stays secure within your existing Google Workspace access controls. There's never a possibility where you'd be able to see something in Windmill that you wouldn't be able to see in Google Workspace.
You have full control over which Google products to integrate. During the connection setup, you can choose to enable **Google Meet**, **Google Drive**, and **Google Calendar** individually—select all of them, just a subset, or none.
This lets you customize your integration based on what data you want Windmill to access. See [Selecting which products to enable](#selecting-which-products-to-enable) for more details.
You can restrict data syncing to specific Google groups, to active Windmill members, or both. Go to your Google Workspace integration settings, click **Settings**, and configure restrictions under **Data Sync Restrictions**. See [Restricting data sync](#restricting-data-sync) for step-by-step instructions.
You can restrict which shared drives Windmill can access:
1. Go to your [Google Workspace integration settings](https://app.gowindmill.com/COMPANY/config/integrations)
2. Click on your **Google Workspace** integration
3. Click **Settings**
4. Select which specific shared drives you want to make available
5. Remove access to any drives containing sensitive information
This gives you drive-level control to protect sensitive documents. See [Limiting Drive access](#limiting-drive-access) for more details.
Windy can read the actual contents of text documents including Docs, Slides, Sheets, PDFs and other text files. Video and audio files are not currently supported.
No. Windmill does not integrate with Gmail or access email content. The Google Workspace integration focuses on Google Drive, Google Calendar, and Google Meet to surface collaboration, planning, and meeting participation.
# Granola
Source: https://help.gowindmill.com/integrations/granola
Connect Granola to Windmill so meeting notes and transcripts captured in Granola flow into 1:1s and Windy's context for the right participants.
## Benefits of connecting Granola to Windmill
Connecting Granola to Windmill brings your meeting notes and transcripts into Windy's context — so nothing from your conversations gets lost.
* Granola recordings appear linked to their matching 1:1 in Windmill
* Windy has access to every Granola meeting visible to your connection — notes you own, notes shared with you, and anything in folders you can see
* Richer [Catch Me Up](/features/1-on-1s/catch-me-up) reports that can cite real meeting content
* Meeting context surfaces in suggested topics and performance reviews
* Discussions and decisions get captured as they happen, not months later
Granola content is used as **context** for Windy — it is not automatically imported into your 1:1 notes. See [Where Granola content shows up](#where-granola-content-shows-up-in-windmill) for the full picture.
## How to connect Granola
In Granola, go to **Settings → Connectors → API keys**. Click **Create new key**, then choose the note access scopes for the key. The **Personal notes** scope is all the Windmill sync needs. See [API Key Types](#api-key-types) below for details on each option.
In Windmill, navigate to [Settings > Integrations](https://app.gowindmill.com/COMPANY/config/integrations), find **Granola**, and click **Connect**. Select the key type that matches the key you generated in Granola. If a workspace admin created the key for the whole workspace, select **Workspace API key**.
Paste the API key from Granola into the input field and click **Connect Granola**. Recordings you have access to in Granola will begin syncing within the hour.
When you first connect Granola, the initial full sync uses the previous six months. Source retention and permissions can limit the recordings that Windmill receives. Newer recordings continue syncing every hour.
## API key types
Granola API keys created by workspace members carry one or more access scopes — **Personal notes** and **Public notes**. Workspace admins can also create workspace API keys that belong to the workspace rather than a user. The key you choose affects who can see the synced recordings in Windmill. The scopes on a key only control which notes sync from Granola. They never change who can see the data in Windmill.
### Personal API key
* Any workspace member on a Granola Business plan can create API keys. On Enterprise plans, a workspace admin must first enable the scopes under **Settings → Workspace → General → "API access for members"**.
* Accesses notes you own or that are shared with you — including notes in private folders shared with you. Create the key with the **Personal notes** scope. Adding **Public notes** also syncs every public note in your workspace into your private view.
* In Windmill, all data synced through a Personal API key is **private to the user who created the connection** — no one else can see it
We recommend that each Granola user creates their own Personal connection. This is the best way to ensure everyone has access to the recordings available to them in Granola.
### Workspace API key
* Created by workspace admins on Business and Enterprise plans. The key belongs to the workspace, survives the creator leaving, and does not expire.
* Reads the workspace's public notes plus any spaces that have been granted Granola API access (**Allow Granola API access** is on by default for new spaces) — cannot access private notes
* In Windmill, each recording synced through a Workspace key is visible **only to the recording's owner** (if they're a Windmill member). It is not visible to anyone else, even if the note was shared with them in Granola.
Granola's API doesn't expose who a note has been shared with, so Windmill can't reliably tell which other users should have access. To avoid leaking recordings to people who shouldn't see them, Windmill restricts visibility to the recording's owner only.
If you want everyone to see the recordings they have access to in Granola, have each user connect with their own [Personal API key](#personal-api-key) instead.
## Connected data
When Granola is connected, Windmill securely reads the following information:
| Data Type | How Windmill Uses It |
| - | - |
| Meeting notes and summaries | Available to Windy as context; may be cited in Catch Me Up and suggested topics |
| Transcripts | Powers Windy's analytics and insights on your work |
| Recording metadata | Matches recordings to 1:1s via calendar event ID |
Granola data syncs into Windmill's **Recording** data model, making it available to Windy and linkable from 1:1s and performance reviews.
## Where Granola content shows up in Windmill
Granola content flows into Windmill in three distinct places. It helps to keep these separate — they behave differently.
### Linked recordings on 1:1s
When a Granola recording matches a 1:1, Windmill shows the recording as a **link** on that 1:1. Clicking it opens the notes and transcript.
Windmill matches recordings to 1:1s using two methods:
1. **Calendar event matching** — Windmill links recordings based on the underlying calendar event ID. This is the primary method and works when both Granola and Windmill are connected to the same calendar.
2. **Smart fallback** — If a calendar event ID isn't available, Windmill uses the meeting time and attendees to identify the correct 1:1.
The link appears for whoever connected Granola and has access to the recording. If both the manager and their direct report want to see the recording on the 1:1, both need to connect Granola **and** the recording needs to be shared in Granola (see [Sharing recordings across users](#sharing-recordings-across-users)).
### Catch Me Up reports
Catch Me Up reports get you up to speed ahead of a 1:1. Learn more in [1:1s → Catch Me Up](/features/1-on-1s/catch-me-up).
If you've connected Granola, Granola notes **can** surface as a source in Catch Me Up — but it's not guaranteed:
* Catch Me Up is dynamic. Content is pulled from available sources each time the report is generated.
* A Granola recording will only be considered if it existed when the report was generated. Recordings from meetings that happened *after* the last generation won't appear until the report regenerates.
* You can click **Regenerate** on the Catch Me Up panel to re-run it with the latest data.
* Only your own Granola connection is used. The other person's Granola auth has no effect on what appears in your Catch Me Up.
### Granola will not automatically populate the shared 1:1 notes space
Granola notes are **not** copied or imported into the shared 1:1 notes section. The 1:1 notes space is for what you and your counterpart write together in Windmill — it stays separate from the Granola recording linked above.
If you want to pull Granola content into your 1:1 notes, you can copy and paste it manually.
To land Granola content **inside** the shared 1:1 agenda, use **Import Granola Notes** (per-1:1, takes a share link) or **Import 1:1 Notes** (on an employee profile, paste past text). Both are separate from this integration — see [Importing notes to 1:1s](/features/1-on-1s/importing-notes).
### Windy
Windy has access to **every Granola meeting visible to your connection** — notes you own, notes shared with you, and anything in folders you can see. You can ask Windy about past meetings, decisions, or context, and Windy can cite Granola recordings in its responses.
This applies to all Granola recordings, including non-meeting recordings (dictation, brainstorming, solo notes). Those still sync and are available to Windy — they just won't be matched to a specific 1:1.
Windmill syncs with Granola **once per hour**. New recordings may take up to an hour to appear.
## Sharing recordings across users
Granola recordings are **private to the person who recorded them** by default.
For a recording to be visible to both people in Windmill:
1. The recording must be **shared in Granola** — either moved into a shared folder, or recorded directly into one.
2. Both people must **connect Granola to Windmill** with their own Personal API key.
Without both of these, the recording will only show up for the person whose Granola connection has access to it.
If a 1:1 should be visible to both participants in Windmill, agree upfront on which Granola folder you'll record into — and make sure you've both connected Granola.
## Permissions
Windmill requests **read-only** access to Granola.
| Permission | Purpose |
| - | - |
| Read recording data | To sync meeting notes, transcripts, and metadata into Windmill |
| Read-only access | Windmill never creates, modifies, or deletes anything in Granola |
| One-way sync | Data flows from Granola to Windmill only — nothing is written back |
| Access scoped by key | Visibility in Windmill depends on the key's type and access scopes |
## FAQs
No. Windmill is 100% read-only. It never creates, modifies, or deletes recordings, notes, or any other data in Granola.
Windmill syncs with Granola once per hour. New recordings can appear after the next hourly sync. When you first connect, the initial full sync uses the previous six months.
**Personal API keys** are created by workspace members. With the **Personal notes** scope, they sync notes you own, notes shared with you, and private folders shared with you. All synced data is private to you in Windmill. Any member on a Business plan can create one; on Enterprise plans, a workspace admin must first enable API access for members.
**Workspace API keys** are created by workspace admins on Business and Enterprise plans. They belong to the workspace, don't expire, and sync the workspace's public notes plus any spaces with Granola API access enabled — never private notes. In Windmill, each recording is visible only to its owner in Granola.
See [API Key Types](#api-key-types) for full details.
Yes — and we recommend it. Each person should create their own connection using a Personal API key. This is the only way to ensure everyone has access to the recordings available to them in Granola.
Visibility depends on which API key type was used to connect. With a Personal API key, only you can see the recordings synced through your connection. With a Workspace key, each recording is only visible to its owner in Granola — even if the note was shared with you. If you're missing recordings you have access to in Granola, try creating your own Personal connection.
On Granola Enterprise plans, a workspace admin must first enable API access for members. Ask your admin to go to **Settings → Workspace → General**, select **Manage** under "API access for members," and enable the **Personal notes** scope. That scope is all the Windmill sync needs. After the admin enables it, create your key under **Settings → Connectors → API keys**.
The Windmill sync needs note-read access — the **Personal notes** scope is sufficient. **Public notes** is optional and adds workspace-public notes to your private view. A key with no note-read scope fails to connect with the generic "Invalid Granola API key" error.
Granola content isn't copied into the shared 1:1 notes section — that space is for what you and your counterpart write together. Granola recordings show up as a **link** on the 1:1 instead. If you want the Granola content in your notes, copy and paste it in.
It can, but it's not guaranteed. Catch Me Up only considers Granola recordings that existed when the report was generated, and only pulls them in when relevant. If a recent meeting isn't showing up, the person generating the report can click **Regenerate** on the Catch Me Up panel. Only that person's own Granola connection feeds their Catch Me Up — your personal Granola auth doesn't change what appears there.
Yes — Windy has access to every Granola meeting visible to your connection, including notes you own, notes shared with you, and anything in folders you can see. You can ask Windy about past meetings and it can cite Granola as a source.
Yes, but two things need to be true: the recording has to be shared in Granola (moved to or recorded in a shared folder), and both people need to connect Granola to Windmill with their own Personal API key. Without both, the recording will only appear for the person whose Granola connection has access to it.
They still sync into Windmill and are available to Windy. They just won't be matched to a specific 1:1.
# Gusto
Source: https://help.gowindmill.com/integrations/gusto
Connect Gusto to Windmill to sync employees, managers, departments, and employment data so your org chart and access controls stay accurate automatically.
## Benefits of connecting Gusto to Windmill
Connecting Gusto to Windmill keeps your employee roster and reporting structure accurate without manual updates. When Gusto is the source of truth, Windmill automatically:
* Imports new hires during scheduled syncs
* Updates manager → direct report relationships
* Reflects promotions, title changes, and department moves
* Archives employees when they leave the company
This ensures performance reviews, 1:1s, and feedback always reflect the **current team**, without HR needing to update two systems.
## Connected data
Windmill syncs the following fields from Gusto:
| Field | Description |
| - | - |
| Employee Name | Full legal name as stored in Gusto |
| Work Email | Used as the identity + login field |
| Job Title | Displays across Windmill profiles and review cycles |
| Manager Relationship | Drives org charts, 1:1s, and review assignment |
| Department / Team | Used to group employees for reviews and reporting |
| Employment Status (Active / Terminated) | Used to automatically archive employees |
| Start Date | Supports new-hire ramp reviews and onboarding flows |
| Gender | Synced if provided by Gusto |
Windmill can also sync personal email, work location, and time-off records when Gusto provides them and the connection has the required authorization.
**Windmill does not store salary, compensation, payroll, benefits, home address, Social Security Numbers, dates of birth, phone numbers, pronouns, or employment contracts as employee-profile fields.** See [Personally Identifiable Information](/security/pii) for the canonical list.
## Permissions
The user enabling the integration must have:
* **Admin** permissions in Gusto
* Ability to access **People → Team** directory data
The integration uses Gusto’s secure OAuth connection.\
No passwords or payroll permissions are shared.
**Windmill has read-only access. It does not write back to Gusto.**
## Managing employee + manager updates
If you need to:
* Change a manager
* Update someone’s department or title
* Archive a terminated employee
> **Make the change in Gusto.**
Gusto is the **source of truth** for employee records.\
Editing a synced field directly in Windmill creates a manual override, and Gusto stops updating that field. Learn how to [manage which fields sync to each employee](/org-chart/employee-field-sources).
## FAQs
Once every **24 hours**, with the option to run a manual sync from Windmill.
No. Windmill does not access or modify payroll data.
Only if they appear in Gusto as active workers with a manager assigned.
Yes — Windmill supports multi-entity Gusto setups. Contact Support to configure.
***
# HiBob
Source: https://help.gowindmill.com/integrations/hibob
Connect HiBob to Windmill to sync employees, managers, departments, and employment data so your org chart and access controls stay accurate automatically.
## Benefits of connecting HiBob to Windmill
Connecting HiBob to Windmill keeps your employee directory and reporting structure always in sync — without manual updates. When HiBob is the system of record, Windmill automatically:
* Imports new hires during scheduled syncs
* Updates manager → direct report relationships
* Reflects title, department, and org changes
* Archives employees when they leave the company
This ensures reviews, 1:1s, and feedback always match your actual org — no spreadsheets, no double entry.
## Connected data
Windmill syncs the following fields from HiBob:
| Field | Description |
| - | - |
| Employee Name | Full legal name |
| Work Email | Used for login + account identity |
| Job Title | Displayed in profiles and review cycles |
| Manager Relationship | Drives org structure and 1:1 pairings |
| Department / Org Unit | Used for grouping and cycle assignment |
| Employment Status (Active / Terminated) | Automatically archives former employees |
| Start Date | Supports new-hire ramp reviews and onboarding timing |
| Gender | Synced if provided by HiBob |
Windmill can also sync personal email, work location, and time-off records when HiBob provides them and the connection has the required authorization.
**Windmill does not store compensation, performance score, home address, Social Security Numbers, dates of birth, phone numbers, pronouns, payroll, benefits, or employment contracts as employee-profile fields.** See [Personally Identifiable Information](/security/pii) for the canonical list.
## Permissions
To enable the integration, the connecting user must have:
* **HiBob Admin** access
* Permission to read the **People Directory** and **Org Structure**
The connection uses a secure OAuth authorization flow.\
**Windmill never writes back to HiBob.**\
All data access is **read-only**.
## Managing employee + manager updates
If you need to:
* Change someone’s manager
* Move an employee to a new department
* Update a title
* Archive someone who has left
> **Make these updates in HiBob.**
Windmill treats HiBob as the **source of truth**.\
Editing a synced field directly in Windmill creates a manual override, and HiBob stops updating that field. Learn how to [manage which fields sync to each employee](/org-chart/employee-field-sources).
## FAQs
Automatically **every 24 hours**, with the option to trigger a manual sync in Windmill.
No — the integration is strictly **read-only**.
Yes — Windmill respects HiBob's organizational structure.
Only if they appear in HiBob as active workers with a manager assigned.
***
# HubSpot
Source: https://help.gowindmill.com/integrations/hubspot
Connect HubSpot to Windmill to sync deals, contacts, and pipeline activity so revenue context appears in 1:1 prep and performance review summaries.
## Benefits of connecting HubSpot to Windmill
Connecting HubSpot to Windmill ensures customer-facing work — from pipeline progress to relationship-building — is reflected automatically in performance conversations.
* Captures deal movement and account work without requiring reps to “self-report”
* Gives managers coaching context grounded in real customer activity
* Ensures employees get credit for behind-the-scenes relationship work
* Reduces time spent preparing for reviews, calibrations, and promotions
* Makes performance evaluations more objective and tied to measurable outcomes
Windmill turns ongoing sales and success activity from HubSpot into structured context for growth, recognition, and fair evaluation.
## Connected data
When connected, Windmill securely reads *high-signal* activity from HubSpot:
| Data Type | How Windmill Uses It |
| - | - |
| Deals, stages, and pipeline progression | Displays momentum and conversion patterns over time |
| Account and contact ownership | Attributes customer work to the correct employee |
| Meeting + call activity metadata | Shows engagement, responsiveness, and consistency |
| Notes and logged interactions | Adds qualitative coaching context to 1:1s and reviews |
| Email subjects and message bodies | Provides follow-through and communication context |
> Windmill only syncs the fields required to provide accurate performance context — *not your full CRM export.*
Learn more about [how Windmill syncs deals from HubSpot](/data/deals).
## Permissions
Windmill requests **read-only**, scoped access via HubSpot OAuth.
| Permission | Purpose |
| - | - |
| Read deal + pipeline metadata | To reflect progress, contribution, and momentum in performance discussions |
| Read account/contact ownership info | To map customer work to the correct employee profiles |
| Read activity/event metadata (meetings, calls, emails) | To show effort, engagement, and follow-through patterns |
| **No write access** | Windmill never modifies deals, notes, contacts, or records in HubSpot |
| Access to deals visible to the account | Windmill syncs deals that the connected HubSpot account can read |
> Windmill follows a **least-privilege access model** — it requests only what’s necessary for coaching & performance insight.
## FAQs
Yes. Windmill stores the subject and text or HTML body of email activity associated with synced deals.
No. The integration is strictly read-only.
No. Windmill does not provide a pipeline or deal selector. Windmill syncs deals that the connected HubSpot account can read. Use an account with limited access if you must limit the scope.
Webhooks can send some changes shortly after they happen. An hourly incremental sync checks for new or changed data.
Yes. All data is encrypted in transit and at rest. Windmill meets SOC 2 security standards and tracks only necessary activity-level context.
Their historical contributions remain for context, but Windmill stops attributing new activity once they're deactivated.
***
# Integrations
Source: https://help.gowindmill.com/integrations/integrations
Overview of every integration available in Windmill — HRIS, Slack, calendar, CRM, code, project management, meetings, and AI tools — and what each one syncs.
## Overview
Integrations connect Windmill to the systems that your team uses. [Open Integrations](https://app.gowindmill.com/COMPANY/config/integrations) to connect and manage them.
For automatic schedules, initial syncs, full syncs, and troubleshooting, see [Data Sync and Freshness](/data/data-sync-and-freshness).
## Historical data
Historical data availability varies by integration. When an integration supports a full sync, the initial full sync uses the previous six months by default. You can also open the connected account, select **Syncs**, and run a **Full sync** for a selected date range. Source retention and permissions can limit the available history.
## Who can add integrations
Admins, HR Admins, and Integration Managers can create and manage company integrations in Windmill. Some integrations also require admin permissions in the connected third-party system.
Personal integrations can be created and managed by any member, as long as they have the necessary permissions in the connected system.
## Productivity integrations
* [Airtable](./airtable)
* [Asana](./asana)
* [Attio](./attio)
* [Claude](./claude)
* [ClickUp](./clickup)
* [Codex](./codex)
* [Cursor](./cursor)
* [Devin](./devin)
* [Figma](./figma)
* [Front](./front)
* [GitHub](./github)
* [Gong](./gong)
* [Google Workspace](./google-workspace)
* [Granola](./granola)
* [HubSpot](./hubspot)
* [Jira](./jira)
* [Linear](./linear)
* [Monday](./monday)
* [Notion](./notion)
* [Pipedrive](./pipedrive)
* [Outlook Calendar](./outlook-calendar)
* [Roam](./roam)
* [Salesforce](./salesforce)
* [Slack](./slack)
* [Slack Business Analytics](./slack-analytics)
* [Zendesk](./zendesk)
* [Zoom](./zoom)
* [Zoom: My Notes](./zoom-my-notes)
## HR integrations
* [ADP Workforce Now](./adp-workforce-now)
* [BambooHR](./bamboohr)
* [ChartHop](./charthop)
* [Gusto](./gusto)
* [HiBob](./hibob)
* [Justworks](./justworks)
* [Oracle Cloud HCM](./oracle-hcm)
* [Paylocity](./paylocity)
* [Rippling](./rippling)
* [TriNet](./trinet)
* [UKG Pro](./ukg-pro)
* [Workday](./workday)
## Integration mapping
Admins can open [**Settings > Integration Mappings**](https://app.gowindmill.com/COMPANY/config/mappings). This page shows the integration users that map to each employee. Use the employee and user views to correct a missing or incorrect mapping. Slack mappings help Windy contact the correct Slack account.
# Jira
Source: https://help.gowindmill.com/integrations/jira
Connect Jira to Windmill to bring issues, sprints, and engineering progress into 1:1 prep and performance reviews with proper per-person attribution.
## Benefits of connecting Jira to Windmill
Connecting Jira to Windmill ensures engineering work is accurately reflected in 1:1s and performance reviews — without engineers needing to write self-promotional summaries or dig through old tickets.
* Captures real progress, ownership, and work patterns automatically
* Reduces review prep time for engineers and managers
* Highlights meaningful contributions beyond lines of code (debugging, triage, architecture, support)
* Brings visibility to collaboration, problem-solving, and delivery reliability
* Makes performance reviews more fair, objective, and grounded in actual work
Windmill turns ongoing Jira activity into structured performance and coaching context.
## Connected data
When Jira is connected, Windmill reads **work activity and issue content**, not source code:
| Data Type | How Windmill Uses It |
| - | - |
| Issues created, owned, or completed | Shows ownership, execution, and delivery follow-through |
| Status changes (e.g., To Do → In Progress → Done) | Highlights workflow efficiency and predictability |
| Sprint membership + velocity signals | Helps contextualize workload and throughput over time |
| Comment bodies, collaboration, and handoffs | Surfaces teamwork, communication, and problem-solving patterns |
| Story points, tags, and issue types | Helps differentiate project work vs. bugs vs. support load |
| Issue descriptions | Provides the full task context |
> Windmill stores Jira issue descriptions and comment bodies.
## Permissions
Windmill requests read access through Jira's API. Windmill syncs all Jira projects that the connected account can access. If Jira data is missing in Windmill, confirm that the connected account can read that project or issue.
| Permission | Purpose |
| - | - |
| Read issues + status metadata | To reflect progress and ownership in performance discussions |
| Read comments + collaboration metadata | To show teamwork and communication patterns |
| Read project + sprint association | To understand workload and project context |
| **No write access** | Windmill never modifies issues, comments, or workflow states |
| Webhook management | To create and remove a webhook for Jira changes |
| Access to projects visible to the account | To sync all accessible Jira projects and issues |
> Windmill uses the access of the connected Jira account. Use an account with access only to the projects that you want Windmill to sync.
## Username mapping
Jira uses specific usernames that don't always map to employee email addresses. If you see Jira activities that aren't associated with a team member or are associated with the wrong team member, Windmill Admins can fix this.
To update username mapping:
Go to [**Settings > Integration Mappings**](https://app.gowindmill.com/COMPANY/config/mappings).
Use the employee and user views to find a missing or incorrect mapping.
Select the mapping, assign the correct employee and Jira user, and save the change.
## FAQs
Windmill does not change Jira issues, comments, projects, or workflows. It creates and removes a webhook so Jira can send changes to Windmill.
Windmill syncs all projects that the connected Jira account can access. To limit the scope, use a Jira account that can access only the required projects.
Yes. Windmill stores issue descriptions and comment bodies from the Jira projects that the connected account can access.
Webhooks can send some changes shortly after they happen. An hourly incremental sync checks for new or changed data.
Yes. Windmill uses encrypted data transfer, secure storage, scoped OAuth access, and meets SOC 2 compliance standards.
Their historical contributions remain available for context, but Windmill stops associating new activity once the user is deactivated.
# Justworks
Source: https://help.gowindmill.com/integrations/justworks
Connect Justworks to Windmill to sync employees, managers, departments, and employment data so your org chart and access controls stay accurate automatically.
## Benefits of connecting Justworks to Windmill
Connecting Justworks to Windmill keeps your employee roster and reporting structure aligned automatically. When Justworks is the system of record, Windmill will:
* Import new hires during scheduled syncs
* Update manager → direct report relationships
* Reflect title and department updates
* Archive employees when they leave the company
This ensures performance reviews, 1:1s, and feedback always reflect the **current org**, without duplicate data entry or manual cleanup.
## Connected data
Windmill syncs the following fields from Justworks:
| Field | Description |
| - | - |
| Employee Name | Full legal name |
| Work Email | Used as the identity + login field |
| Job Title | Displayed across profiles and review cycles |
| Manager Relationship | Drives org charts and review assignments |
| Department / Team | Used for grouping, permissions, and reporting |
| Employment Status (Active / Terminated) | Automatically archives former employees |
| Start Date | Supports onboarding and new-hire review workflows |
| Gender | Synced if provided by Justworks |
Windmill can also sync personal email, work location, and time-off records when Justworks provides them and the connection has the required authorization.
**Windmill does not store compensation, payroll, benefits, home address, Social Security Numbers, dates of birth, phone numbers, pronouns, or employment contracts as employee-profile fields.** See [Personally Identifiable Information](/security/pii) for the canonical list.
## Permissions
To connect the integration, the user must have:
* **Justworks Admin** permissions
* Access to view the **People → Team** directory
The integration uses a secure OAuth token handshake.\
**Windmill is read-only** and does not modify or write data back to Justworks.
## Managing employee + manager updates
If you need to:
* Change someone’s manager
* Update a department
* Promote or change a title
* Remove or offboard an employee
> **Make these changes in Justworks — not Windmill.**
Justworks is treated as the **source of truth**.\
Editing a synced field directly in Windmill creates a manual override, and Justworks stops updating that field. Learn how to [manage which fields sync to each employee](/org-chart/employee-field-sources).
## FAQs
Automatically **every 24 hours**, with an option to manually refresh in Windmill.
No — Windmill never interacts with payroll or benefits data.
Only if they are listed as active workers with a manager assigned in Justworks.
Windmill will reflect the updated title and org placement automatically.
***
# Linear
Source: https://help.gowindmill.com/integrations/linear
Connect Linear to Windmill to bring issues, projects, and engineering progress into 1:1 prep and performance reviews with per-person attribution.
## Benefits of connecting Linear to Windmill
Connecting Linear to Windmill brings engineering and product work directly into 1:1s and performance reviews — so contributions are recognized continuously, not reconstructed from memory.
* Captures real work as it happens (issues, PR links, progress updates)
* Reduces review prep time for engineers and managers
* Highlights collaboration, ownership, and problem-solving patterns
* Ensures quieter but meaningful contributions don’t get overlooked
* Makes performance evaluations more fair, accurate, and grounded in actual output
Windmill turns ongoing Linear activity into structured insight for coaching, recognition, and growth.
## Connected data
When connected, Windmill securely reads **metadata** about work in Linear:
| Data Type | How Windmill Uses It |
| - | - |
| Issues created, assigned, and completed | Shows ownership, contribution, and delivery consistency |
| Status changes & cycle progress | Highlights workflow patterns and execution reliability |
| Linked PRs / commits metadata | Provides context without ingesting code |
| Comments, discussions, and handoffs | Surfaces teamwork, communication, and problem-solving |
| Projects, roadmaps, and labels | Helps contextualize type and scope of work |
| Issue descriptions | Provides the full task context |
> Windmill ingests **activity signals**, not full private code or sensitive content.
## Permissions
Windmill requests **read-only**, scoped access through Linear’s API.
| Permission | Purpose |
| - | - |
| Read issues and project metadata | To reflect progress and ownership in reviews and coaching |
| Read comment bodies and change history | To understand collaboration and decision-making patterns |
| Read user + team assignment information | To map work to the correct employee profile in Windmill |
| **No write access** | Windmill never modifies issues, comments, or workflows |
| Access to teams visible to the account | To sync all issues that the connected account can read |
> Windmill follows **least-privilege access** — only syncing data needed for performance context.
## FAQs
No. The integration is strictly read-only.
Yes. Windmill stores issue descriptions and comment bodies for Linear issues that the connected account can read.
Webhooks can send some changes shortly after they happen. An hourly incremental sync checks for new or changed data.
Yes. All data is encrypted in transit and at rest. Windmill is SOC 2 compliant and uses scoped OAuth tokens.
Historical contributions remain visible for context, but Windmill stops associating new work once they are deactivated or removed.
***
# About Merge
Source: https://help.gowindmill.com/integrations/merge
How Windmill uses Merge to power HRIS integrations — BambooHR, Gusto, Rippling, Workday, and more — and what data flows through the Merge unified API.
## What is Merge?
[Merge](https://www.merge.dev/) is a unified API platform that powers Windmill's connections to HR and payroll systems. Instead of building and maintaining separate integrations for each HRIS platform, Windmill uses Merge's single API to connect to multiple systems reliably and securely.
## Why Windmill uses Merge
**Reliability and maintenance**: Merge handles the complexity of connecting to different HRIS platforms, managing API changes, and ensuring consistent data syncing. This means your Windmill integration stays up-to-date without interruption.
**Security and compliance**: Merge provides enterprise-grade security with SOC 2 Type II compliance, ensuring your employee data is protected throughout the sync process.
**Faster setup**: Merge's standardized authentication flow makes it easier to connect your HRIS to Windmill, with clear setup instructions and support for multiple authentication methods.
## How it works
When you connect your HRIS to Windmill:
1. **Authentication**: You authenticate with your HRIS provider through Merge's secure OAuth flow or by providing API credentials
2. **Authorization**: You grant Windmill read-only access to your employee directory and org structure
3. **Syncing**: Merge pulls employee, organization, and available time-off data from your HRIS and delivers it to Windmill on a regular schedule
4. **Updates**: As employees join, leave, or change roles in your HRIS, Windmill automatically reflects those changes
**All integrations are read-only** — Windmill never writes data back to your HRIS.
## Security and Privacy
**Data protection**: Merge encrypts data in transit and at rest, following industry best practices for data security.
**Data collected**: Windmill can store name, work and personal email, job title, department, manager and reporting structure, start date, employment status, gender, work location, and time-off records. The available fields depend on the HR system and the permissions that you grant. Windmill does not store compensation, payroll, benefits, home address, Social Security Numbers, dates of birth, phone numbers, or employment contracts as employee-profile fields. See [Personally Identifiable Information](/security/pii) for the canonical list.
**Compliance**: Merge maintains SOC 2 Type II compliance and adheres to GDPR and other privacy regulations.
**Read-only access**: Your HRIS remains the system of record. Windmill cannot modify employee data, payroll, or benefits through the integration.
## Learn more
For more technical details about Merge's platform, security, and API capabilities, visit [merge.dev](https://www.merge.dev/).
***
# Monday
Source: https://help.gowindmill.com/integrations/monday
Connect monday.com to Windmill to bring boards, items, and project progress into 1:1 prep and performance reviews with per-person attribution.
## Benefits of connecting Monday to Windmill
Connecting Monday to Windmill brings your project management activity directly into performance reviews and 1:1s — giving your team credit for real work without manual updates.
* Task progress automatically flows into performance conversations
* Board activity becomes visible across reviews and check-ins
* Reduces time spent gathering accomplishments at review time
* Ensures work gets recognized as it happens
* Provides grounded context for coaching and feedback
Windmill turns your Monday boards into structured insights for better performance management.
## Setup
Monday requires a two-step setup process that's different from other integrations. You'll need to install the Windmill app to your Monday account before connecting.
Navigate to [Integrations](https://app.gowindmill.com/COMPANY/config/integrations) in Windmill and select **Monday**. Click **Install Windmill** to add the app to your Monday account.
During installation, you'll choose which workspaces to connect:
* **All workspaces** — Windmill can access all current and future workspaces
* **Specific workspaces** — Select individual workspaces to sync
After installing the app, click **Connect Monday** to authorize Windmill to sync your board data.
That's it. Windmill will begin syncing tasks from all boards in your connected workspaces.
## Connected data
Windmill syncs tasks and related activity from all boards in your connected Monday workspaces.
| Data Type | How Windmill Uses It |
| - | - |
| Tasks (items) from all boards | Shows work progress and contributions over time |
| Task status and completion | Tracks delivery patterns and follow-through |
| Comments and updates | Provides context for collaboration and problem-solving |
| Assignees and ownership | Attributes work to the correct employee |
| Board structure and columns | Captures priority, size, and custom metadata |
| Subtask relationships | Preserves task hierarchies and dependencies |
### Sync frequency
Windmill syncs Monday data **every hour**. Tasks, comments, and status changes appear in Windmill shortly after the hourly sync runs.
## Permissions
Windmill requests **read-only** access to Monday.
| Permission | Purpose |
| - | - |
| Read access to boards, workspaces, and users | To collect task data and associate it with employees |
| Read access to updates (comments) | To capture collaboration context |
| Webhook permissions | To enable future real-time sync capabilities |
| **No write access** | Windmill never creates or modifies tasks, boards, or comments in Monday |
Windmill currently does not support Monday documents. If your organization uses Monday documents and would like support, contact [support@gowindmill.com](mailto:support@gowindmill.com).
## FAQs
No. Windmill is read-only — no updates, edits, or writes are made to your Monday boards or tasks.
You select all workspaces or specific workspaces when you install the Windmill app in Monday. Windmill syncs all accessible boards in the selected workspaces. Windmill does not provide an individual-board selector.
Monday data syncs every hour. New tasks, comments, and status changes will appear in Windmill after the next hourly sync runs.
Windmill preserves historical contributions tied to that person's work in Monday. Once they're marked inactive in Windmill, new tasks won't be associated with them.
Monday's integration architecture requires installing the Windmill app to your Monday account before connecting. This is different from other integrations but ensures proper workspace-level access and permissions.
Yes. All data is encrypted in transit and at rest. Windmill is built to meet SOC 2 and enterprise-grade security requirements. See our [Security and Compliance](/security/security-compliance) page for more details.
# Notion
Source: https://help.gowindmill.com/integrations/notion
Connect Notion to Windmill so pages, edits, and documents flow into 1:1 prep and Windy's context for the people working in your Notion workspace.
## Benefits of connecting Notion to Windmill
Connecting Notion to Windmill ensures planning, documentation, and project work becomes visible in performance conversations — without employees needing to summarize or translate their work manually.
* Automatically captures contributions to docs, specs, research, and project planning
* Recognizes the invisible but critical thinking work that often gets missed in reviews
* Reduces the time managers and employees spend preparing for review cycles
* Helps managers coach using real examples of communication, clarity, and collaboration
* Makes performance reviews more fair and grounded in the full scope of someone's work
Windmill turns ongoing Notion activity into meaningful context for reflection, coaching, and evaluation.
## Connection types
When connecting Notion to Windmill, you'll choose between two connection types. The setup flow is the same for both — the difference is **who can see the synced data**.
### Account
An account connection is set up on behalf of your organization. Any data synced from this integration is **globally available to all Windmill members** in your company. This is ideal when your team uses shared Notion workspaces and you want everyone to benefit from the synced context.
Only Admins, HR Admins, and Integration Managers can create account connections.
### Personal
A personal connection is tied to an individual. Any data synced from this integration is **only visible to you** — no one else in your Windmill organization can see it. This is a good option if you want to connect personal Notion pages or private notes without sharing them across your team.
Any Windmill member can create a personal connection, as long as their Notion workspace allows them to add or use the Windmill connection.
### Choosing a connection type
| | Account | Personal |
| - | - | - |
| **Who can create it** | Admins only | Any member |
| **Data visibility** | All Windmill members | Only you |
| **Best for** | Shared workspaces, team docs, project pages | Private notes, personal pages |
## Notion Enterprise workspace settings
Some Notion Enterprise workspaces restrict which integrations members can add. Notion calls integrations **connections** in its settings. If a member sees an error while creating a personal Notion connection in Windmill, the fix is usually in Notion's Enterprise connection settings.
Start setup from Windmill, not from Notion. Installing Windmill from Notion
alone may add the connection to the workspace, but each Windmill member still
needs to finish the **Personal** setup flow in Windmill.
For personal Windmill setup, check the **Manage** tab in Notion's connection
settings. The **Workspace** tab is for Notion's workspace-wide security and
compliance connections.
### Approving Windmill for members
A Notion workspace owner can approve Windmill for members without making every member a workspace owner.
In Notion, go to **Settings → Connections**.
Open the **Member** tab and check **Restrict members from adding connections**.
If this is set to **No restrictions**, members should be able to connect Windmill from Windmill. If this is set to **Only from approved list**, Windmill needs to be approved first.
If **Windmill** does not appear in the approved connection dropdown, a Notion workspace owner needs to install Windmill once first.
The owner should go to [**Settings → Integrations**](https://app.gowindmill.com/COMPANY/config/integrations) in Windmill, select **Notion**, and complete either an **Account** connection or their own **Personal** connection.
Back in Notion, go to **Settings → Connections → Member** and add **Windmill** to the approved connections list. Installing Windmill is not always enough on its own; members can still be blocked until Windmill is approved here.
Members can now return to Windmill, choose **Notion**, select **Personal**, and approve access to the pages they want to share.
### Managing page access in Enterprise workspaces
Notion Enterprise workspace owners can also control who is allowed to connect or disconnect integrations from specific pages. If Windmill is approved but a member still cannot select or share pages, check page access settings in Notion.
In Notion, go to **Settings → Connections → Member**.
Click the **•••** menu next to **Windmill**, then select **Manage page access**.
Under **Select pages**, choose the pages Windmill can access. Under **Who can manage page access**, choose whether members can manage page access themselves or only workspace owners can.
If members should be able to manage their own personal page selections, set page access management to the default member-access option. If your Notion owner keeps this restricted to workspace owners, the owner will need to manage Windmill page access for members.
For more detail, see Notion's help docs for [Enterprise connection settings](https://www.notion.com/help/enterprise-connection-settings) and [adding and managing connections](https://www.notion.com/help/add-and-manage-connections-with-the-api).
## Setting up the Notion integration
Navigate to [**Integrations**](https://app.gowindmill.com/COMPANY/config/integrations) in your Windmill settings.
Find **Notion** in the list of available integrations and click **Connect**.
Select **Account** to connect on behalf of your organization, or **Personal** to connect your own account.
You'll be redirected to Notion to approve access for Windmill.
**Windmill will request permission to:**
* View pages you select
* View comments within pages you select
* View workspace users and their emails
Click **Select pages** to move forward.
Select the pages you'd like Windmill to access. Windmill will only ever see the pages you select here, plus any subpages nested inside them — nothing else in your workspace.
**From here, you can:**
* Browse your **Teamspaces** and **Private** sections
* **Select all** or **Deselect all** pages at once
* Use the search bar to quickly find specific pages
* Expand folders to include or exclude subpages
Selecting a parent page also shares the subpages nested inside it, including ones you add later. New top-level pages aren't added automatically — you can share those at any time (see [Managing visibility and access](#managing-visibility-and-access)).
The picker only shows pages where you have **Full access** in Notion. If a page is missing, see [Pages you can share](#pages-you-can-share).
After you've made your selections, click **Allow access** to complete setup.
## How Page Access Works
Windmill's access to your Notion workspace is a **point-in-time selection**. When you connect, you choose which pages to share — and from then on, Windmill can only see those pages and the subpages nested inside them. Nothing else in your workspace is visible.
This has a few important implications:
* **New pages aren't shared automatically.** A page you create later won't sync on its own. The one exception is subpages: a page created inside a page you already shared inherits that access automatically.
* **A teamspace doesn't grow your access.** Selecting pages from a teamspace shares the pages that exist at that moment — not the teamspace itself. New top-level pages added to it later won't sync until you share them.
* **Unselected pages stay private.** Any page you didn't select stays invisible to Windmill, even if you have access to it yourself in Notion.
* **You stay in control.** You can add or remove shared pages at any time — see [Managing visibility and access](#managing-visibility-and-access) below.
To share a whole branch of your workspace, select its **top-level page** in the picker — every subpage inside it is included, now and as you add more. Just remember this works for pages, not teamspaces.
## Pages you can share
You can only share a Notion page with Windmill if you have **Full access** to that page in Notion. This rule applies to both **Account** and **Personal** connections.
**Can edit** is not the same as **Full access**. You can edit the content of a page with **Can edit**, but you cannot add connections such as Windmill to it.
If you do not have **Full access** to a page:
* The page does not show in the Notion page picker when you connect or update access.
* You cannot add **Windmill** from the page's **•••** menu in Notion.
To check your permission, open the page in Notion and click **Share**. Find your name in the list to see your access level.
## Managing Visibility and Access
Because access is set when you connect, you'll need to update it whenever you want Windmill to see more (or fewer) pages. There are two ways to do this.
### From Windmill
Go to [**Settings → Integrations → Notion → Manage access**](https://app.gowindmill.com/COMPANY/config/integrations). From here, you can:
* Reconnect to Notion if access expires
* Reopen the Notion page picker to see which pages are currently selected and add or remove shared pages
* Disconnect the integration entirely
### From Notion
You can also share a single page with Windmill directly inside Notion:
1. Open the page and click the **•••** menu in the top-right corner.
2. Click **Add connections**, then select **Windmill**.
To stop sharing a page, open the same **•••** menu, hover over **Windmill** under connections, and click **Disconnect**.
If a member with a personal connection is archived, their personal Notion connection is automatically removed.
## Meeting notes and transcripts
If your Notion pages include AI-generated meeting notes, Windmill pulls in the **summary** of the meeting on demand when Windy references that page — but not the raw transcript.
* Windy can see the meeting title, date, summary, and any notes written on the page
* The full transcript itself is not synced or stored in Windmill
* Meeting notes pulled from Notion are **not linked to 1:1s** in Windmill
If your team relies on transcripts being available in Windmill (for example, to give context to 1:1s or performance reviews), connect a dedicated meeting source such as Zoom, Google Meet, Granola, or Gong instead of relying on Notion.
## Best practices
* Share only pages relevant to your team's use of Windmill (e.g., meeting notes, team goals, or planning docs).
* Share a **parent page** to automatically include the subpages within it. New top-level pages — including ones added to a teamspace later — must be shared manually.
* Use an **account** connection for shared team workspaces so all members benefit from the context.
* Use a **personal** connection for private notes or pages you don't want visible to others.
* Revisit your integration settings if your Notion workspace structure changes.
* Keep sensitive or unrelated pages unselected to maintain privacy and data security.
## FAQs
Notion webhooks send supported page, database, and comment changes to Windmill. A daily maintenance sync refreshes users and deleted-page records. When you first connect Notion, the initial full sync uses the previous six months.
Yes. An admin can set up an account connection for shared workspaces, and individual members can also create their own personal connections for private pages. The two work independently.
An account connection syncs data that's visible to all Windmill members in your organization. A personal connection syncs data that's only visible to you. The setup process is the same for both — the difference is who can see the synced data.
Only Admins, HR Admins, and Integration Managers can create account connections. Any Windmill member can create a personal connection, as long as their Notion workspace allows them to add or use the Windmill connection.
Ask a Notion workspace owner to approve Windmill in **Settings → Connections → Member**. If Windmill is not available in the approved connection dropdown yet, the workspace owner needs to install Windmill once from Windmill first. After Windmill is installed and approved, members can connect their own personal Notion accounts from Windmill.
No. On Notion Enterprise, a workspace owner can keep member restrictions enabled and add **Windmill** to the approved connections list. Members can then create personal Windmill connections without being promoted to workspace owner.
Check two Notion settings. First, confirm **Windmill** appears under **Settings → Connections → Member → Approved connections**. Second, open the **•••** menu next to **Windmill** and check **Manage page access**. If page access management is restricted to workspace owners, members may not be able to select or update pages themselves.
When a member is archived in Windmill, their personal Notion connection is automatically removed and the associated data is no longer accessible.
Only if the new page lives inside a page you already shared — subpages inherit their parent's access. A new top-level page stays invisible to Windmill until you share it, even if it's in a teamspace you've already pulled pages from. Windmill's access reflects the pages you selected when you connected, not your whole workspace.
You must have **Full access** to a page in Notion to share it with Windmill. **Can edit**, **Can comment**, and **Can view** are not sufficient. Pages without **Full access** do not show in the picker. This applies to both **Account** and **Personal** connections. Ask the page owner for **Full access**, or ask a person with **Full access** to share the page. See [Pages you can share](#pages-you-can-share).
Two ways. In Windmill, go to **Settings → Integrations → Notion → Manage access** and reopen the page picker. Or, in Notion, open the page, click the **•••** menu, choose **Add connections**, and select **Windmill**.
In Windmill, go to **Settings → Integrations → Notion → Manage access** and reopen the Notion page picker. The picker shows which pages are currently selected, and you can add or remove pages from there.
Deselect it in **Manage access** in Windmill, or open the page's **•••** menu in Notion, hover over **Windmill**, and click **Disconnect**. Windmill stops seeing that page right away.
# Oracle Cloud HCM
Source: https://help.gowindmill.com/integrations/oracle-hcm
Connect Oracle Cloud HCM to Windmill to sync employees, managers, departments, and employment data so your org chart and access controls stay accurate automatically.
## Benefits of connecting Oracle Cloud HCM to Windmill
Connecting Oracle Cloud HCM to Windmill keeps your employee directory and reporting structure always in sync — without manual updates. When Oracle Cloud HCM is the system of record, Windmill automatically:
* Imports new hires during scheduled syncs
* Updates manager → direct report relationships
* Reflects title, department, and org changes
* Archives employees when they leave the company
This ensures reviews, 1:1s, and feedback always match your actual org — no spreadsheets, no double entry.
## Connected data
Windmill syncs the following fields from Oracle Cloud HCM:
| Field | Description |
| - | - |
| Employee Name | Full legal name |
| Work Email | Used for login + account identity |
| Job Title | Displayed in profiles and review cycles |
| Manager Relationship | Drives org structure and 1:1 pairings |
| Department / Org Unit | Used for grouping and cycle assignment |
| Employment Status (Active / Terminated) | Automatically archives former employees |
| Start Date | Supports new-hire ramp reviews and onboarding timing |
| Gender | Synced if provided by Oracle Cloud HCM |
Windmill can also sync personal email, work location, and time-off records when Oracle Cloud HCM provides them and the connection has the required authorization.
**Windmill does not store compensation, performance score, payroll, benefits, home address, Social Security Numbers, dates of birth, phone numbers, pronouns, or employment contracts as employee-profile fields.** See [Personally Identifiable Information](/security/pii) for the canonical list.
## Permissions
To enable the integration, the connecting user must have:
* **Oracle Cloud HCM Admin** access or API permissions
* Permission to read the **People Directory** and **Org Structure**
The connection uses a secure OAuth authorization flow through Merge.\
**Windmill never writes back to Oracle Cloud HCM.**\
All data access is **read-only**.
## Managing employee + manager updates
If you need to:
* Change someone's manager
* Move an employee to a new department
* Update a title
* Archive someone who has left
> **Make these updates in Oracle Cloud HCM.**
Windmill treats Oracle Cloud HCM as the **source of truth**.\
Editing a synced field directly in Windmill creates a manual override, and Oracle Cloud HCM stops updating that field. Learn how to [manage which fields sync to each employee](/org-chart/employee-field-sources).
## FAQs
Automatically **every 24 hours**, with the option to trigger a manual sync in Windmill.
No — the integration is strictly **read-only**.
Yes — Windmill respects your Oracle Cloud HCM organizational structure.
Only if they appear in Oracle Cloud HCM as active workers with a manager assigned.
***
# Outlook Calendar
Source: https://help.gowindmill.com/integrations/outlook-calendar
Connect Outlook Calendar to Windmill so meetings — including 1:1s — are detected automatically and Windy can prep agendas and surface meeting context.
## Benefits of connecting Outlook Calendar to Windmill
Connecting Outlook Calendar to Windmill brings meeting context into performance conversations — so feedback, coaching, and recognition reflect how your team actually spends their time.
* Surfaces meeting participation, collaboration patterns, and cross-team engagement
* Helps managers see where leadership, mentorship, and support are happening
* Powers 1:1s with calendar data so Windmill can track and organize recurring meetings
* Reduces manual effort when preparing for performance reviews and check-ins
* Ensures contributions like facilitation, stakeholder management, and coordination get recognized
## Connected data
When connected, Windmill securely reads **calendar event metadata** from Microsoft Outlook:
| Data Type | How Windmill Uses It |
| - | - |
| Event titles and descriptions | Provides context for what meetings are about |
| Attendees and organizers | Maps collaboration patterns and cross-team involvement |
| Meeting times and duration | Shows how time is spent across projects, teams, and stakeholders |
| Recurring meeting patterns | Identifies 1:1s, team syncs, and ongoing commitments |
| User profiles and group membership | Matches calendar activity to employee profiles and teams in Windmill |
Windmill does **not** access email content, attachments, or message bodies. The integration is limited to calendar data and organizational directory information.
## Permissions
Windmill requests **read-only** access via Microsoft Graph API. All permissions require admin consent and are application-level scopes.
Windmill cannot currently see custom roles or permissions on Outlook calendars due to limitations in the Outlook API.
| Permission | Description |
| - | - |
| `Calendars.Read` | Read calendar events for all users |
| `User.ReadBasic.All` | Read basic profile info for all users |
| `User.Read.All` | Read full profile details for all users |
| `Group.Read.All` | Read all groups in the directory |
| `GroupMember.Read.All` | Read group memberships |
| `People.Read.All` | Read relevant people relationships for all users |
| **No write access** | Windmill never modifies calendar events or settings |
## Installation
You'll need Microsoft 365 admin access to connect Outlook Calendar to Windmill.
Go to your [integrations settings](https://app.gowindmill.com/COMPANY/config/integrations) and click **Add integration**.
Find Outlook Calendar in the list and click **Connect**.
Sign in with your Microsoft 365 admin account and grant the requested permissions.
Once authenticated, you'll be redirected back to Windmill. Calendar data will begin syncing shortly.
## FAQs
No. Windmill only accesses calendar data. It does not read, store, or process any email content, attachments, or message bodies.
No. The integration is strictly read-only. Windmill never creates, modifies, or deletes calendar events.
Approximately once per hour. Calendar activity appears after an incremental sync.
Yes. All data is encrypted in transit and at rest. Windmill is SOC 2 compliant and uses scoped, revocable OAuth tokens with Microsoft Graph API.
Their past calendar data remains available for context in historical reviews, but Windmill stops syncing once the employee is archived.
Yes. Microsoft SSO handles authentication only — it doesn't grant Windmill access to calendar data. You'll need to connect the Outlook Calendar integration separately to sync meeting activity.
# Paylocity
Source: https://help.gowindmill.com/integrations/paylocity
Connect Paylocity to Windmill to sync employees, managers, departments, and employment data so your org chart and access controls stay accurate automatically.
## Benefits of connecting Paylocity to Windmill
Connecting Paylocity to Windmill keeps your employee roster and reporting structure accurate without manual updates. When Paylocity is the system of record, Windmill automatically:
* Imports new hires when they join
* Updates manager → direct report relationships
* Reflects title, department, and team changes
* Archives employees when they leave the company
This ensures performance reviews, 1:1s, and feedback always match your **current team**, without HR needing to maintain two separate systems.
## Connected data
Windmill syncs the following fields from Paylocity:
| Field | Description |
| - | - |
| Employee Name | Full legal name |
| Work Email | Used for identity + login |
| Job Title | Displayed in profiles and review cycles |
| Manager Relationship | Defines org structure and review workflows |
| Department / Team | Used for grouping and reporting in Windmill |
| Employment Status (Active / Terminated) | Automatically archives former employees |
| Start Date | Supports onboarding experiences and new-hire review timing |
| Gender | Synced if provided by Paylocity |
Windmill can also sync personal email, work location, and time-off records when Paylocity provides them and the connection has the required authorization.
**Windmill does not store compensation, payroll, benefits, home address, Social Security Numbers, dates of birth, phone numbers, pronouns, or employment contracts as employee-profile fields.** See [Personally Identifiable Information](/security/pii) for the canonical list.
## Permissions
To enable the connection, the connecting user must have:
* **Paylocity Admin** permissions
* Access to the **Employee Directory** and **Org Chart** data
The integration is authorized through a secure token connection.\
Windmill has **read-only** access and **does not write data back** to Paylocity.
## Managing employee + manager updates
If you need to:
* Change someone’s manager
* Update a title or department
* Offboard an employee
> **Make these changes in Paylocity — not in Windmill.**
Paylocity is the **source of truth**.\
Editing a synced field directly in Windmill creates a manual override, and Paylocity stops updating that field. Learn how to [manage which fields sync to each employee](/org-chart/employee-field-sources).
## FAQs
Every **24 hours**, with an option to trigger a manual sync in Windmill.
No. Windmill does **not** access or modify payroll or benefits data.
Only if they appear in Paylocity as active employees with a manager assigned.
Yes — Windmill respects the department + location structure already configured in Paylocity.
***
# Pipedrive
Source: https://help.gowindmill.com/integrations/pipedrive
Connect Pipedrive to Windmill to sync deals, contacts, and pipeline activity so revenue context appears in 1:1 prep and performance review summaries.
## Benefits of Connecting Pipedrive to Windmill
Connecting Pipedrive to Windmill brings deal activity and customer relationship work into performance conversations — ensuring sales contributions are recognized without manual reporting.
* Automatically captures deal progress, contact engagement, and activity completion
* Eliminates manual note aggregation for performance reviews and promotion cycles
* Ensures reps get credit for the relationship-building work that happens day to day
* Helps managers coach more effectively using real pipeline and customer context
* Makes performance evaluations more objective and grounded in measurable outcomes
Windmill turns ongoing Pipedrive activity into structured insight for coaching, development, and recognition.
## Connected Data
When connected, Windmill securely reads *high-signal* deal and activity data from Pipedrive:
| Data Type | How Windmill Uses It |
| - | - |
| Deals, stages, and pipeline progression | Shows momentum, conversion patterns, and deal strategy |
| Activities (calls, meetings, tasks) | Highlights engagement, follow-through, and consistency |
| Contact and organization ownership | Attributes customer work to the correct employee |
| Notes tied to deals | Adds qualitative coaching context to 1:1s and reviews |
| Deal field changes and history | Surfaces how deals progress and who drives key updates |
> Windmill syncs **only the fields required** to provide performance context — *not your entire CRM dataset.*
Learn more about [how Windmill syncs deals from Pipedrive](/data/deals).
## Permissions
Windmill requests **read-only**, scoped access via Pipedrive OAuth.
| Permission | Purpose |
| - | - |
| Deals (read only) | To reflect pipeline progress and deal momentum in performance reviews |
| Activities (read only) | To show effort, engagement, and follow-through patterns |
| Contacts (read only) | To map customer relationships to the correct employee profiles |
| Read user data | To attribute work to the right team members |
| See recent account activity | To get new and changed data during scheduled syncs |
| **No write access** | Windmill never modifies deals, notes, contacts, or records in Pipedrive |
> Windmill follows a **least-privilege access model** — we request only what's necessary for coaching and performance insight.
## FAQs
No. The integration is strictly read-only.
Continuously. Updates appear in Windmill shortly after they occur in Pipedrive.
Yes. All data is encrypted in transit and at rest. Windmill meets SOC 2 security standards and uses scoped OAuth tokens.
Their historical contributions remain for context, but Windmill stops attributing new activity once they're archived.
***
# Rippling
Source: https://help.gowindmill.com/integrations/rippling
Connect Rippling to Windmill to sync employees, managers, departments, and employment data so your org chart and access controls stay accurate automatically.
You must have Rippling IAM in order to proceed with the Windmill integration.
Rippling is different from other integrations. Unlike other integrations that
only sync data, Rippling controls who can access Windmill.
Rippling requires exclusive control over user provisioning. Connecting Rippling will automatically disable SCIM if it was previously enabled, and SCIM cannot be enabled while Rippling is connected. See [SSO and SCIM](/security/sso-and-scim) for details.
## Connect Rippling to Windmill
Connecting Rippling to Windmill syncs your employee data and org chart automatically—so your team structure stays up to date without manual work. Once connected, you'll manage all access to Windmill directly in Rippling.
## Before you begin
You'll need:
* **Rippling Admin access** to authorize the connection
* **Windmill Admin access** to set up the integration
## Set up the connection
It's recommended to install Windmill by starting in Rippling. Go to Rippling and follow the steps below.
1. Go to the [Rippling app store](https://app.rippling.com/app-shop/app/windmill) to view the Windmill app.
2. Click **Install** to install the Windmill app.
3. Choose "Yes, I'll install this integration"
4. Click **Connect your account** to connect your Windmill account to Rippling.
5. Click **Authorize** to authorize the connection.
6. Click **Continue to authorize** to continue the setup.
7. Click **Save** to save the connection.
### Configure provisioning rules
Rippling will ask you to set provisioning rules for who gets Windmill access. **For initial setup, we strongly recommend starting with manual individual assignment.** Make sure to add yourself to the list of users who will get access to Windmill.
Do not select "Everyone except contractors" during initial setup unless you
want to immediately provision your entire organization in Windmill. Selecting
this option will grant Windmill access to everyone who matches the rule.
Rippling provisioning grants Windmill access but **does not send invitation emails or Slack messages by default**. Turn on [onboarding notifications](/security/sending-invites-with-automatic-provisioning) in **Settings > Security** to notify provisioned users automatically, or communicate access details through your own channels.
Follow these steps:
1. **Account provisioning**: Choose **"Provision accounts for new members only"** to avoid provisioning existing employees during setup.
2. **Who gets access**: Select **"I will manually select"** from the options. This gives you control over exactly who receives access.
3. **When to provision**: Choose **"On their start date"** (recommended for automated provisioning of new hires).
4. Click **Continue** to proceed.
5. **Assign yourself first**: On the next screen, click **"Go to integration"** (not "Finish setup" yet).
**Critical: Don't forget to assign yourself!** If you skip this step, you'll
lose access to Windmill and need to have another admin restore your access
through Rippling.
6. In Rippling, you'll see the Windmill app page. Click **"Edit access"** → **"Assign individual"**.
7. Search for and select **yourself** (and any other admins you want to include in initial setup).
8. Click **Save** to confirm the assignment.
Within a day, your Windmill account will be provisioned and your org chart will start syncing. Note that Rippling provisioning does not send an invitation email or Slack message by default—simply log in to Windmill directly once provisioning completes.
## Recommended setup flow
Follow this phased approach to safely roll out Windmill with Rippling:
### Phase 1: Initial setup (admins only)
Start by assigning Windmill access only to yourself or a small group of admins. This allows you to:
* Verify the org chart syncs correctly from Rippling
* Test the platform without inviting your entire organization
* Configure Windmill settings before broader rollout
**You don't need to provision everyone to sync your full org chart.** Rippling will sync all employee data regardless of who has Windmill access.
### Phase 2: Pilot rollout (optional)
When you're ready to test with a broader group:
1. In Rippling, go to your **home page**.
2. Find and click on **Windmill** in your apps list.
3. Click **"Edit access"** to modify provisioning rules.
4. Either:
* **Assign individuals (Recommended)**: Click **"Assign individual"** and select specific people for your pilot
* **Create a pilot group**: In Rippling, create a group called "Windmill Pilot", add members to it, then assign that group to Windmill
### Phase 3: Full rollout
When you're ready for organization-wide access:
1. In Rippling, go to **Windmill** → **"Edit access"**.
2. Remove individual assignments or pilot groups.
3. Select **"Set up rules"** and choose a rule like **"Everyone except contractors"**.
4. Click **Save**.
Within a day, all employees matching your rule will be provisioned in Windmill. Turn on [onboarding notifications](/security/sending-invites-with-automatic-provisioning) so Windmill notifies them automatically, or let your team know separately how to log in.
## How provisioning works with Rippling
Once Rippling is connected, **all team access is managed in Rippling**—not in Windmill. Here's how it works:
Assigning Windmill access in Rippling provisions the user in Windmill on the
next sync. **Rippling provisioning does not send invitation emails or Slack
messages by default**—turn on [onboarding notifications](/security/sending-invites-with-automatic-provisioning)
or notify provisioned users through your own channels so they know they have
access.
**Important details about syncing:**
* **Changes can take up to a day**: Changes you make in Rippling (adding or removing access) can take up to a day to take effect in Windmill
* **Notifications are off by default**: Rippling provisioning does not send invitation emails or Slack messages unless you turn on [onboarding notifications](/security/sending-invites-with-automatic-provisioning). With notifications off, communicate access details to provisioned users yourself
* **No manual invites**: Once Rippling is connected, you cannot manually invite people through Windmill. All provisioning must happen in Rippling
Learn more about [user provisioning and
deprovisioning](https://www.rippling.com/glossary/user-provisioning-and-deprovisioning)
in Rippling's help documentation.
### Adding team members
When you assign Windmill access to an employee in Rippling (based on your provisioning rules), they're provisioned in Windmill within a day and don't need to be manually invited. Windmill does not send them an invitation email or Slack message by default—turn on [onboarding notifications](/security/sending-invites-with-automatic-provisioning) or notify them directly that they have access.
### Removing team members
When you remove Windmill access from an employee in Rippling, they'll lose access to Windmill within a day. If they're marked as inactive or terminated in Rippling, they're automatically removed from Windmill during the next sync.
### Managing who has access
To control who can use Windmill, you'll modify access assignments in Rippling:
1. In Rippling, go to your **home page**.
2. Find and click on **Windmill** in your apps list.
3. Review the **Access assignment** section to see who currently has access.
4. Click **"Edit access"** to modify provisioning.
**Ways to assign access:**
* **Individual assignment**: Click **"Assign individual"** and search for specific employees. Best for small teams or pilot groups.
* **Group assignment**: Click **"Assign group"** and select an existing Rippling group (like "Engineering Team" or "Windmill Pilot"). Best for organized rollouts.
* **Rule-based assignment**: Click **"Set up rules"** to create automatic provisioning rules (like "Everyone except contractors"). Best for full organization rollouts.
You can mix assignment types. For example, you can have a rule for all
full-time employees and also individually assign specific contractors.
**Switching from individual to rule-based provisioning:**
If you started with individual assignments and want to expand to your full organization:
1. Go to Windmill in Rippling → **"Edit access"**.
2. You can either:
* Keep existing individual assignments and add a rule (both will apply)
* Remove individual assignments and set up rules instead
3. Click **"Set up rules"** and choose your desired rule (e.g., "Everyone except contractors").
4. Click **Save**.
New users matching your rule are provisioned within a day. Unless [onboarding notifications](/security/sending-invites-with-automatic-provisioning) are on, Rippling provisioning does not send invitation emails or Slack messages, so communicate access details through your own channels.
## What gets synced from Rippling
Changes from Rippling can take up to a day to appear in Windmill. Windmill syncs the following data from Rippling:
### Employee information
* Name and work email
* Job title and employment status
* Job level
* Start date and hire date
* Manager relationships (for org chart)
* Team and department assignments
* Gender (if provided by Rippling)
Windmill can also sync personal email, work location, and time-off records when Rippling provides them and the connection has the required authorization.
**Windmill does not store compensation, payroll, benefits, home address, Social Security Numbers, dates of birth, phone numbers, pronouns, or employment contracts as employee-profile fields.** See [Personally Identifiable Information](/security/pii) for the canonical list.
### Org chart
Your org chart in Windmill updates automatically based on manager relationships and team structures in Rippling. This keeps reporting lines accurate without manual updates.
### Team structure
To use an available Rippling group in Windmill, open **Company settings > Groups > Create group > Synced > Continue** and select it. Its name and membership stay managed in Rippling. You can also create a Smart group from employee fields such as Department. See [Groups](/org-chart/groups) for setup and sharing.
## Troubleshooting
### I accidentally provisioned my entire organization
If you selected a broad provisioning rule (like "Everyone except contractors") during setup and unintentionally provisioned your whole organization, here's how to fix it:
**Stop further provisioning:**
1. In Rippling, go to your **home page**.
2. Find and click on **Windmill** in your apps list.
3. Click **"Edit access"**.
4. Remove the broad provisioning rule by clicking the **X** next to it.
5. Switch to **"Assign individual"** or **"Assign group"** to add only the people you want.
6. Click **Save**.
Within a day, people who were removed from access will lose access to Windmill.
With [onboarding notifications](/security/sending-invites-with-automatic-provisioning) off (the default), broadly provisioned users won't have been notified by Windmill. Removing access in Rippling before they're informed is generally enough to undo the accidental rollout. With onboarding notifications on, some users may have already received an onboarding email or a Slack welcome message.
### I lost access to Windmill after connecting Rippling
This happens when your Rippling provisioning rules don't include your account. Here's how to fix it:
1. In Rippling, go to your **home page**.
2. Find and click on **Windmill** in your integrations.
3. Check the **Access assignment** section to see who has access.
4. Click **Edit access** to modify your provisioning rules.
5. Either:
* Adjust the rules to include yourself (e.g., "All employees" instead of "Everyone except admins")
* Click **Assign individual** and manually add yourself to the access list
Once you're added, you'll regain access to Windmill within a day.
### An employee isn't showing up in Windmill
Check that the employee:
* Has a work email in Rippling (required for sync)
* Meets your provisioning rules (e.g., not marked as a contractor if contractors are excluded)
* Has an **ACTIVE** employment status in Rippling
* Has been assigned Windmill access in Rippling's access assignment settings
If everything looks correct, wait up to a day for them to appear in Windmill.
### The org chart isn't updating
Make sure:
* Manager relationships are set correctly in Rippling
* Employees have work emails (required for matching)
* The sync has completed
If you recently made changes in Rippling, wait up to a day for those updates to appear in Windmill.
# Roam
Source: https://help.gowindmill.com/integrations/roam
Connect Roam to Windmill so meeting recordings and transcripts can appear in 1:1s, performance reviews, and Windy.
## Benefits of connecting Roam to Windmill
Connecting Roam to Windmill gives your 1:1s and performance reviews context from recorded meetings. Windmill syncs:
* **Meeting metadata** — the meeting title, time, and participants
* **Meeting transcripts** — text from a recorded Roam meeting
* **Roam users** — user records that Windmill maps to employees
When a meeting matches a 1:1, its recording can appear on that 1:1 page. The transcript can also provide context for performance reviews and Windy.
## Connected data
Windmill syncs the following from Roam:
| Data | Description |
| - | - |
| Meeting metadata | Meeting titles, times, and participants |
| Meeting transcripts | Transcript text from recorded Roam meetings |
| Roam users | Names and account details used for employee mapping |
**What is *not* synced:**
* **Audio or video** — Windmill stores transcripts only; raw recordings stay in Roam.
* **Chats or direct messages** — the integration does not sync Roam chat content.
* **Presence or room activity** — the integration does not sync presence, rituals, lounge activity, or shared-room sessions.
## Permissions
To enable the integration, the connecting user must be:
* A **Roam Workspace Admin**, and
* Have access to the **Organization Admin Dashboard**
The integration is read-only and uses a secure OAuth token. Windmill never accesses or stores call audio or video — only the transcript text.
## How this improves performance reviews
Windmill can use meeting transcripts as source context in 1:1s and performance reviews. The transcript can show decisions, project updates, questions, and support that occurred in the meeting.
## Managing org changes
Make Roam user and workspace-membership changes in Roam. Windmill updates its Roam user records during scheduled syncs.
## FAQs
**Hourly.** New meeting recordings and transcripts appear after an incremental sync. You can also run an **Incremental sync** from the connected account's **Syncs** tab.
No. Windmill does not sync chats, direct messages, presence, rituals, lounge activity, or shared-room sessions from Roam.
Only if they appear as active members in your Roam workspace.
***
# Salesforce
Source: https://help.gowindmill.com/integrations/salesforce
Connect Salesforce to Windmill to sync accounts, opportunities, and pipeline activity so revenue context appears in 1:1 prep and performance reviews.
## Benefits of connecting Salesforce to Windmill
Connecting Salesforce to Windmill brings sales and customer-impacting work directly into performance reviews and 1:1s — without requiring reps or managers to manually summarize activity.
* Automatically captures deal progress, account work, and follow-through
* Ensures employees get credit for the relationship-building and momentum they drive
* Reduces prep time for performance reviews and calibration cycles
* Helps managers coach more effectively using real customer context
* Makes evaluations more fair, consistent, and grounded in measurable outcomes
Windmill transforms ongoing Salesforce activity into structured insight for coaching, development, and recognition.
## Connected data
When Salesforce is connected, Windmill securely reads **high-signal revenue and customer interaction data**:
| Data type | How Windmill uses it |
| - | - |
| Opportunities and their readable fields | Shows pipeline movement, deal strategy, and momentum |
| Related accounts | Provides customer context and connects work to the correct employee |
| Contacts and opportunity contact roles | Links relationship-building activity to opportunities |
| Tasks and events | Shows follow-through, engagement, and activity patterns |
| Notes | Adds context for coaching and feedback |
| Users, roles, and groups | Maps team structure and opportunity ownership |
| Opportunity field history | Tracks changes to fields that use Salesforce field history tracking |
> Windmill reads all Opportunity fields that the integration user can access. This includes custom Opportunity fields. For related records, Windmill reads only the supported fields. Windmill does not sync your full CRM dataset.
Learn more about [how Windmill syncs opportunities from Salesforce](/data/deals).
## Permissions
Windmill requests only two OAuth scopes from Salesforce:
| Scope | Purpose |
| - | - |
| `api` | Allows Windmill to read Salesforce data via the REST API |
| `refresh_token` | Keeps the integration connected without requiring repeated sign-ins |
Windmill uses these scopes to **read** opportunities, accounts, contacts, and activity metadata — it never writes, edits, or deletes any data in Salesforce.
> Windmill follows **least-privilege access** and stores only what is necessary for coaching and evaluation.
## Connect with a Salesforce integration user
Use a dedicated Salesforce integration user to control the data that Windmill can read. Salesforce calls this user an **integration user**. Some teams use the term **ISU**.
In Salesforce, create a dedicated integration user. Assign the **Salesforce Integration** user license and the **Minimum Access - API Only Integrations** profile. See [Give Integration Users API Only Access](https://help.salesforce.com/s/articleView?id=platform.integration_user.htm\&type=5).
Assign the **Salesforce API Integration** permission set license to the user.
Create a permission set for Windmill. Grant **Read** access to the Salesforce objects that Windmill syncs.
In the same permission set, grant **Read Access** to the fields that Windmill needs. The table below gives examples. Object access alone is not sufficient.
Assign the permission set to the integration user.
Go to [**Settings** > **Integrations**](https://app.gowindmill.com/COMPANY/config/integrations) in Windmill. Select **Salesforce** and enter your Salesforce Instance URL. Then, sign in as the integration user.
### Field-level access
Grant **Read Access** to the required fields on each supported object. The following examples are not a complete permission list:
| Object | Fields |
| - | - |
| Opportunity | `AccountId`, `Name`, `Amount`, `OwnerId` |
| Account | `Name`, `Website`, `Description`, `OwnerId` |
| Contact | `Email`, `FirstName`, `LastName`, `Phone`, `MobilePhone`, `Title`, `AccountId` |
| Lead | `Name` |
| Task | `WhoId`, `Subject`, `Description`, `Status`, `Priority`, `OwnerId`, `ActivityDate`, `TaskSubtype`, `CallType`, `CallDisposition`, `CallDurationInSeconds`, `IsClosed` |
| Event | `WhoId`, `Subject`, `Description`, `Location`, `OwnerId`, `StartDateTime`, `EndDateTime`, `DurationInMinutes`, `EventSubtype`, `IsAllDayEvent` |
| Note | `Title`, `Body`, `OwnerId`, `ParentId` |
The integration user also needs record access to each record that you want Windmill to sync. Salesforce sharing rules and role hierarchy settings control this access.
Windmill does not sync Salesforce custom objects.
## Track field changes
The current value of a readable Opportunity field syncs without field history tracking. Enable field history tracking when you also want Windmill to show how a field changed.
In Salesforce, go to **Object Manager** and select **Opportunity**.
Go to **Fields & Relationships** and select **Set History Tracking**.
Select **Enable Opportunity History**, select the standard and custom fields that you want to track, and save the changes.
Field history tracking applies only from the time that you enable it. It does not create earlier change records.
## Prerequisites
A Salesforce administrator must prepare the integration user. You also need your Salesforce Instance URL.
## FAQs
No. Windmill syncs metadata (e.g., that a follow-up occurred), not message bodies.
No. Windmill does not provide a pipeline, team, or object selector. The integration syncs supported data for opportunities that the integration user can read. Use Salesforce record access and field permissions to limit the data.
Yes, if they are on the standard **Opportunity** object and the integration user has **Read Access** to them. Windmill does not sync custom fields from other objects.
No. Windmill does not sync Salesforce custom objects.
No. The integration is strictly read-only.
Opportunities and related data sync hourly. Users and groups sync daily. Updates appear after a successful sync.
Yes. All data is encrypted in transit and at rest. Windmill maintains SOC 2-level security standards and uses scoped OAuth tokens.
# Slack
Source: https://help.gowindmill.com/integrations/slack
Connect Slack to Windmill so Windy can DM your team, run 1:1 prep, deliver pulse surveys, collect feedback, and post shoutouts directly inside Slack.
## Benefits of connecting Slack to Windmill
Slack is where most day-to-day work happens — decisions, questions, collaboration, problem-solving.\
Connecting Slack to Windmill allows that context to be remembered and used to support performance conversations without requiring anyone to write summaries or “manage up.”
* Captures work as it happens — not at review time
* Ensures employees get credit for contributions that are usually invisible
* Helps managers remember accomplishments and follow-through across the year
* Reduces time spent preparing for reviews, calibrations, and promotions
* Makes feedback and evaluation more fair, grounded, and accurate
Windmill transforms ongoing Slack collaboration into structured insight for 1:1s, coaching, and performance reviews. In addition, Slack is where your team interacts with Windy, Windmill's AI assistant. Connecting Slack is essential to using Windmill.
## Setup
As part of onboarding, you connect the Windmill Slack app. Slack lists the app as **Windmill**. Its bot appears as **Windy** in messages, direct messages, and channel member lists. This connection is the foundation of Windy communication in Slack.
Connecting Slack does not automatically give Windmill access to channel messages. Add the app to a channel when you want Windmill to use that channel as context.
You can chat with Windy in your direct-message conversation with the Windy app. Windy does not answer messages or mentions in public, private, or Slack Connect channels.
## Add channels as context
We recommend automatic access to public channels. This option gives Windmill more context without channel-by-channel setup.
Go to **Settings** in the Windmill Dashboard.
Select **Integrations**, and then select **Slack**.
Select **Open settings** for the Slack integration.
Select **Autojoin public channels**, and then select **Save settings**.
The app does not rejoin a channel after someone removes it from that channel. Slack Connect channels require the separate **Include Slack Connect channels** setting.
For manual public-channel and private-channel setup, see [Add Slack channels as context](/windy/adding-windy-to-channels).
## Channel join behavior
When you add the app to a Slack channel, it does not send a notification to channel members.
Slack adds a message to the channel history that says Windy joined the channel. This message does not cause a notification, mention, or alert.
After the app joins a channel, Windmill can sync messages and Slack canvases from that channel and use them as context. The synced data includes messages in threads and outside of threads, Slack canvases, users, and channels. Windmill does not currently store reactions as synced channel data.
Channel membership gives Windmill access to context. It does not enable
Windy conversations in the channel.
## Message access and privacy
Windmill mirrors Slack's permissions. **You can only see messages in Windmill that you can already see in Slack.**
* **Public channels:** If Windy is in a public channel, anyone on your team who can see that channel in Slack can see its messages in Windmill.
* **Private channels:** Even when Windy is added to a private channel, **only the human members of that private channel can see its raw messages in Windmill**. Adding Windy never exposes private channel content to people outside the channel — including managers, admins, or anyone else who isn't a member.
* **DMs and group DMs:** You can chat with Windy in your own Slack DM. Windy is not added to DMs or group DMs between other people, so that DM content is never read or stored.
Adding Windy to a private channel does **not** make that channel's messages visible to people who aren't already members. Private stays private. Windmill enforces the same membership rules Slack does.
For workspace-wide engagement signals that don't involve message content, see [Slack Business Analytics](/integrations/slack-analytics) — it pulls aggregate activity counts only (never message content, channel names, or DM participants).
## Slack shortcuts
Slack shortcuts let you quickly send information to Windmill without leaving Slack. You can create shoutouts, add private notes, and add items to your 1:1 agendas—all directly from Slack.
### Available shortcuts
| Shortcut | What it does |
| - | - |
| **Create a shoutout** | Publicly recognize a teammate for their work |
| **Create a private note** | Save a personal note about an employee (only visible to you) |
| **Add to 1:1 agenda** | Add a discussion topic to an upcoming 1:1 meeting |
### How to use shortcuts
There are three ways to access Slack shortcuts:
#### From a message (recommended)
This is the fastest way to capture context from a conversation.
Hover over the message and click the three dots (**...**) menu, or right-click the message directly.
Choose **Create a shoutout**, **Create a private note**, or **Add to 1:1 agenda** from the menu.
A modal opens with the message text pre-filled. Edit the content if needed, select the relevant employees, and submit.
When you use a shortcut from a message, Windmill automatically pre-fills the content and suggests relevant employees based on the conversation.
#### From the global search bar
Use the global search bar when you want to create something from scratch.
Press **Cmd+K** (Mac) or **Ctrl+K** (Windows) to open Slack's global search bar.
Type "shoutout", "private note", or "1:1 agenda" to find the shortcut you need, then select it.
Enter your content and select the relevant employees.
#### Using slash commands
Type these commands directly in Slack:
| Command | What it does |
| - | - |
| `/shoutout` | Create a shoutout |
| `/private-note` | Create a private note |
| `/1-1-agenda` | Add an item to a 1:1 agenda |
You can also include your message directly after the command. For example: `/shoutout Shoutout to Mark for leading the product launch!`
### Create a shoutout
Shoutouts let you publicly recognize teammates for their contributions. When you create a shoutout from Slack, it's saved in Windmill and visible to others.
An Admin or HR Admin must enable shoutouts for your company and configure a shoutouts channel in Slack before you can use this shortcut. See [Shoutouts](/features/shoutouts) for setup instructions.
Right-click a message and select **Create a shoutout**, or use the `/shoutout` command.
Add or edit the recognition message. Be specific about what the person did well.
Choose the teammates you want to recognize. You can select multiple people.
Your shoutout is saved and shared in Windmill.
### Create a private note
Private notes are personal records about employees—only you can see them. They're useful for tracking observations, feedback, or context you want to remember for reviews or 1:1s.
Right-click a message and select **Create a private note**, or use the `/private-note` command.
The message content is pre-filled as a quote. Add any additional context.
Choose who this note is about. You can select multiple employees, including yourself.
Your note is saved privately in Windmill.
Private notes are only visible to you. The employees you tag won't be notified or see the note.
### Add to 1:1 agenda
Capture discussion topics as they come up and add them directly to your upcoming 1:1 meetings.
Right-click a message and select **Add to 1:1 agenda**, or use the `/1-1-agenda` command.
Edit or add context to the topic you want to discuss.
Choose which 1:1 partners should receive this agenda item. Only employees with upcoming 1:1 meetings with you will appear.
The item is added to your 1:1 agenda page with a link back to the original Slack message.
You can only add agenda items for employees you have a scheduled 1:1 with. If someone doesn't appear in the list, check that you have an upcoming 1:1 meeting with them.
### Enabling shortcuts
Slack shortcuts require additional permissions. If you don't see the shortcuts in your Slack workspace, an admin needs to re-authenticate the Slack integration.
Navigate to the [Integrations page](https://app.gowindmill.com/COMPANY/config/integrations) in Windmill.
Click on **Slack** in the list of integrations.
Click **Re-authenticate** to grant the additional permissions needed for shortcuts.
## Permissions
You need the ability to connect Slack to third-party applications and install Slack apps.
## Slack OAuth scopes
When you install Windy, Slack will ask you to approve a set of OAuth scopes. The table below lists every scope Windy requests and why it's required.
| Scope | Why Windy needs it |
| - | - |
| `app_mentions:read` | Respond when a user pings `@Windy` in a DM. |
| `canvases:read` | Sync Slack canvases from channels where Windy has been added. |
| `channels:history` | Build context from public channels — the core of 1:1s, coaching, and reviews. |
| `channels:join` | Add Windy to public channels via autojoin or the Windmill Dashboard. |
| `channels:manage` | Power the "Leave channel" action in the Windmill Dashboard. Windy never renames, archives, or modifies channels. |
| `channels:read` | Resolve channel references and let admins pick channels in the UI. |
| `chat:write` | Send direct messages and configured feature posts. This scope does not let Windy answer channel messages or mentions. |
| `chat:write.public` | Deliver ephemeral messages and pulse notifications reliably, even when Windy isn't in the channel. Windy never posts unless pulse notifications are enabled. |
| `commands` | Run the `/shoutout`, `/private-note`, and `/1-1-agenda` slash commands. See [Slack shortcuts](#slack-shortcuts). |
| `files:read` | Include shared files as context alongside messages. |
| `files:write` | Upload files Windy generates, such as shortcut attachments. |
| `groups:history` | Build context from private channels Windy is invited to. Content stays visible only to that channel's human members. |
| `groups:read` | Resolve private-channel references and metadata. |
| `groups:write` | Manage settings on private channels Windy created. |
| `im:history` | Follow up on its own DM conversations. Windy is never added to DMs between other users. |
| `links:read` / `links:write` | Show rich previews when Windmill links are pasted into Slack. |
| `lists:read` | Use Slack Lists referenced in channels as context. |
| `reactions:read` | Read reaction metadata if needed for Slack interactions. Windmill does not currently store reactions as synced channel data. |
| `reactions:write` | Add reactions to messages. |
| `team:read` | Display the connected workspace in Windmill's integrations UI. |
| `users.profile:read` | Match Slack users to Windmill employees and display profile data. |
| `users:read` | Map Slack users to Windmill employees. |
| `users:read.email` | Link a Slack account to a Windmill employee record by email. |
| `usergroups:read` | Resolve `@usergroup` mentions in messages. |
## FAQs
**No, Windy does not send notifications when added to a channel.**
When you add Windy to a Slack channel, channel members will NOT receive any notifications, pings, or alerts.
A message will appear in the channel that says "Windy has joined this channel", but this is just a visible message in the channel history — it doesn't trigger any notifications to channel members. People will only see this message if they're actively viewing the channel.
In Slack, type `/remove @Windy` in the channel you want to remove Windy from.
Admins can also remove Windy through the Windmill Dashboard:
1. Go to **Settings > Integrations > Slack**
2. Click **Open settings**
3. Find the channel in **Slack Channels with Access**
4. Click the **Leave** icon in the channel's row
**No.** Windmill mirrors Slack's permissions exactly. Raw messages from a private channel are **never** visible to anyone who isn't a member of that channel — even if Windy has been added to it.
Adding Windy to a private channel does not change who can see the content. If you can't read the channel in Slack, you can't read it in Windmill.
The only Slack data Windmill exposes outside of channel membership is **aggregate activity counts** from [Slack Business Analytics](/integrations/slack-analytics), such as "Alex sent 42 messages on Monday." Slack Business Analytics never exposes message content, channel names, or DM participants.
**Slack Business Analytics** is only for Slack Business+ and Enterprise Grid plans. This integration provides additional stats about your company's Slack usage but doesn't give Windmill access to messages or channels.
**Slack** (the standard integration) works with any Slack plan. This integration doesn't give Windmill access to messages until you add Windy to specific channels.
Windmill stores the following data:
* Messages (both in threads and outside of threads)
* Slack canvases in channels where Windy has been added
* Users
* Channels
Windmill only has access to channels where Windy has been added. Slack canvases follow the same channel membership rules as messages. We don't currently store reactions as synced channel data. Slack scopes may permit additional content in the future, but Windmill only syncs the data listed above today.
Open your direct-message conversation with the Windy app. Add the Windmill Slack app to public or private channels only when you want Windmill to read channel context.
No. In Slack, Windy only responds in your direct-message conversation with the Windy app. Windy does not respond to messages or `@Windy` mentions in public, private, or Slack Connect channels. Adding the Windmill Slack app to a channel gives Windmill access to permitted channel content as context. It does not create a Windy conversation in that channel.
A Slack Connect channel can contain a Windy app from each organization. The circle-avatar Windy belongs to your workspace. The square-avatar Windy belongs to the external organization.
Do not use either channel mention to start a Windy chat. Windy does not respond in Slack Connect channels. Open a direct message with your workspace's Windy to start a conversation.
# Slack Business Analytics
Source: https://help.gowindmill.com/integrations/slack-analytics
Pull workspace-wide Slack activity stats into Windmill to understand collaboration patterns, channel engagement, and team communication health across the org.
Slack Business Analytics gives Windmill a daily, per-person view of how your team is collaborating in Slack — even in channels Windy hasn't been added to. This is the most complete picture of Slack activity Windmill can see, and it's the foundation for collaboration insights, calibration signals, and engagement trends across the whole company.
## Why connect Slack Business Analytics
The standard [Slack integration](/integrations/slack) only sees channels where Windy has been added. Slack Business Analytics closes that gap by pulling workspace-wide activity counts directly from Slack's admin API.
* **See activity across every channel** — including private channels and DMs Windy will never join
* **Ground reviews and calibrations in real data** — surface quiet contributors and spot collaboration patterns
* **Track engagement trends over time** — daily counts per person, not one-time snapshots
* **No message content is accessed** — only aggregate counts
Slack Business Analytics only pulls **aggregate activity counts**. Windmill never sees message content, channel names, or who you're talking to through this integration.
## Install Slack Business Analytics
**Required to install:**
* A Slack **Business+** or **Enterprise Grid** plan (Slack's Admin Analytics API isn't available on lower tiers)
* A **Slack Workspace Owner or Admin** account (needed to grant the `admin.analytics:read` scope)
* Windmill admin access to connect integrations
Go directly to the [Slack Business Analytics integration page](https://app.gowindmill.com/COMPANY/config/integrations/sources/slack-analytics/account) in Windmill.
Click **Connect** to start the authorization flow.
You'll be redirected to Slack to approve the connection. Sign in as a Workspace Owner or Admin and click **Allow**.
Once approved, you'll return to Windmill. Stats begin syncing within 24 hours (Slack publishes analytics on a \~24-hour delay).
## What stats get pulled in
Windmill pulls **per-person, daily activity counts** from Slack's Admin Analytics API. Each metric is attributed to an individual Slack member and refreshed daily.
| Stat | What it counts |
| - | - |
| **Messages sent** | Total messages a person posted that day across every channel and DM (public, private, group DM, 1:1 DM) |
| **Channel messages sent** | Messages posted in channels only — excludes DMs and group DMs |
| **Files added** | Files a person uploaded or shared that day |
| **Reactions added** | Emoji reactions a person added to other people's messages that day |
| **Slack calls** | 1:1 and group Slack calls a person participated in that day |
| **Slack huddles** | Huddles a person joined that day |
| **Total calls** | Slack calls + huddles combined |
| **Total activity** | Sum of messages, files, reactions, calls, and huddles — a single engagement score |
Slack publishes analytics with a \~24-hour lag, so "today's" stats appear tomorrow. This is a Slack API limitation, not a Windmill one.
## FAQs
These are two separate integrations that do different things. Most companies connect both.
**Slack** (the standard integration)
* Works on any Slack plan
* Installs Windy, Windmill's AI assistant, into your workspace
* Only sees messages in channels where Windy has been explicitly added
* Powers shoutouts, private notes, 1:1 agenda shortcuts, and Windy conversations
* Uses message content (in opted-in channels) for performance context
**Slack Business Analytics** (this integration)
* Requires Slack Business+ or Enterprise Grid
* Pulls workspace-wide daily activity counts from Slack's admin API
* Never reads message content or channel names — only aggregate numbers
* Covers every channel and DM, including ones Windy isn't in
* Powers engagement stats, trends, and collaboration signals
Think of Slack as "deep context in the channels you choose" and Slack Business Analytics as "broad numbers across the whole workspace."
No. Slack Business Analytics only returns aggregate counts (e.g., "Alex sent 42 messages on Monday"). Windmill never sees message content, channel names, DM participants, or file contents through this integration.
Slack's `admin.analytics:read` scope — which powers this integration — can only be granted by a Workspace Owner or Admin. This is enforced by Slack, not Windmill.
Slack publishes analytics with a \~24-hour delay, so the most recent day of data will always be missing until Slack releases it. Backfills catch up automatically once data becomes available.
Yes. Slack Business Analytics doesn't replace the standard Slack integration — it adds to it. Windy (the AI assistant, shoutouts, 1:1 shortcuts) only works through the [standard Slack integration](/integrations/slack).
Go to the [Slack Business Analytics integration page](https://app.gowindmill.com/COMPANY/config/integrations/sources/slack-analytics/account) and click **Disconnect**. Historical stats already pulled into Windmill are retained; no new data will be pulled going forward.
# TriNet
Source: https://help.gowindmill.com/integrations/trinet
Connect TriNet to Windmill to sync employees, managers, departments, and employment data so your org chart and access controls stay accurate automatically.
## Benefits of connecting TriNet to Windmill
Connecting TriNet to Windmill keeps your employee directory and reporting structure always in sync — without manual updates. When TriNet is the system of record, Windmill automatically:
* Imports new hires during scheduled syncs
* Updates manager → direct report relationships
* Reflects title, department, and org changes
* Archives employees when they leave the company
This ensures reviews, 1:1s, and feedback always match your actual org — no spreadsheets, no double entry.
## Connected data
Windmill syncs the following fields from TriNet:
| Field | Description |
| - | - |
| Employee Name | Full legal name |
| Work Email | Used for login + account identity |
| Job Title | Displayed in profiles and review cycles |
| Manager Relationship | Drives org structure and 1:1 pairings |
| Department / Org Unit | Used for grouping and cycle assignment |
| Employment Status (Active / Terminated) | Automatically archives former employees |
| Start Date | Supports new-hire ramp reviews and onboarding timing |
| Gender | Synced if provided by TriNet |
Windmill can also sync personal email, work location, and time-off records when TriNet provides them and the connection has the required authorization.
**Windmill does not store compensation, performance score, payroll, benefits, home address, Social Security Numbers, dates of birth, phone numbers, pronouns, or employment contracts as employee-profile fields.** See [Personally Identifiable Information](/security/pii) for the canonical list.
## Permissions
To enable the integration, the connecting user must have:
* **TriNet Admin** access or API permissions
* Permission to read the **People Directory** and **Org Structure**
The connection uses a secure OAuth authorization flow through Merge.\
**Windmill never writes back to TriNet.**\
All data access is **read-only**.
## Managing employee + manager updates
If you need to:
* Change someone's manager
* Move an employee to a new department
* Update a title
* Archive someone who has left
> **Make these updates in TriNet.**
Windmill treats TriNet as the **source of truth**.\
Editing a synced field directly in Windmill creates a manual override, and TriNet stops updating that field. Learn how to [manage which fields sync to each employee](/org-chart/employee-field-sources).
## FAQs
Automatically **every 24 hours**, with the option to trigger a manual sync in Windmill.
No — the integration is strictly **read-only**.
Yes — Windmill respects TriNet's organizational structure.
Only if they appear in TriNet as active workers with a manager assigned.
***
# UKG Pro
Source: https://help.gowindmill.com/integrations/ukg-pro
Connect UKG Pro to Windmill to sync employees, managers, departments, and employment data so your org chart and access controls stay accurate automatically.
## Benefits of Connecting UKG Pro to Windmill
Connecting UKG Pro to Windmill keeps your employee directory and reporting structure accurate without manual updates. When UKG Pro is the system of record, Windmill automatically:
* Imports new hires as they join
* Updates manager → direct report relationships
* Reflects promotions, reorgs, and title changes
* Archives employees when they leave the company
This ensures review cycles, 1:1s, and feedback always align to your **current org** — no spreadsheets, no double entry.
## Connected Data
Windmill syncs the following employee fields from UKG Pro:
| Field | Description |
| - | - |
| Employee Name | Full legal name |
| Work Email | Used as the account identity in Windmill |
| Job Title | Displayed in profiles and review cycles |
| Manager Relationship | Drives org structure, reviews, and 1:1 pairings |
| Department / Org Unit | Used for grouping and cycle assignment |
| Employment Status (Active / Terminated) | Automatically archives former employees |
| Start Date | Supports new-hire ramp reviews and onboarding timing |
| Time Off | Tracks Days Off for team availability insights |
Windmill can also sync personal email and work location when UKG Pro provides them and the connection has the required authorization.
**Windmill does not store compensation, pay statements, benefits data, home address, or the excluded fields in [Personally Identifiable Information](/security/pii) as employee-profile fields.**
## How to Connect UKG Pro to Windmill
Windmill connects to UKG Pro through [Merge](/integrations/merge), using a dedicated service account in your UKG Pro instance. The full walkthrough with screenshots is available in Merge's guide: [UKG Pro — How do I link my account?](https://help.merge.dev/articles/5696209-ukg-pro-how-do-i-link-my-account?lang=en)
You'll need an **Administrator** role in UKG Pro (or delegated administrator
access) to complete these steps.
Log in to UKG Pro and use the search bar in the top right to navigate to **Service Account Administration**. Copy the **Customer API Key** displayed under the header and paste it into the linking window in Windmill.
On the **Service Account Administration** page, click **+ add** in the top right. Create a username and email for the service account — save the username, you'll need it in a moment.
In the **Web Service** section, enable the permissions listed in [Recommended Permissions](#recommended-permissions) below. Click **Save** and store the generated password securely, then enter the service account username and password into the linking window.
Search for **Web Services** in UKG Pro and copy one of the displayed service URLs (for example, `http://servicet.ultipro.com/services/BIDataService`). Enter this URL into the linking window to complete the connection.
## Recommended Permissions
When creating the service account, UKG Pro lets you choose which Web Service permissions to grant. Enable the following:
| Permission | Purpose |
| - | - |
| View Employee Person Details | **Required** — names, emails, and core profile data |
| Employee Employment Information | Employment status, hire dates, and job details |
| Personnel Integration | Person and employment records used to build your org structure |
| Employee Job History Details | Keeps titles and role changes current |
| PTO Plan Integration | Time off data |
| Company Configuration Integration | Company-level configuration such as org levels and job codes |
Leave the remaining permissions **disabled** — Windmill does not use them:
* Employee Pay Statement
* Employee Compensation Details
* Payroll Integration
* Employee User Defined Fields
**Windmill is read-only and never writes back to UKG Pro.**
If some employee fields come back empty after connecting, the service account
is likely missing the permission for that data type. Grant the corresponding
Web Service permission and resync — see [Common issues with UKG
Pro](https://help.merge.dev/articles/6698965-common-issues-with-ukg-pro) for
details.
## Managing Employee + Manager Updates
If you need to:
* Change someone's manager
* Update a title or department
* Move an employee to a new team
* Archive someone who has left
> **Make these updates in UKG Pro.**
Windmill treats UKG Pro as the **source of truth**.\
Editing a synced field directly in Windmill creates a manual override, and UKG Pro stops updating that field. Learn how to [manage which fields sync to each employee](/org-chart/employee-field-sources).
## FAQs
Automatically every **24 hours**, with the option to trigger a manual sync in Windmill.
Merge is the unified API platform that powers Windmill's UKG Pro integration, providing secure and reliable connectivity to your HRIS (Human Resources Information System). [Learn more about Merge](/integrations/merge).
No — the integration is strictly **read-only** and doesn't touch payroll, pay statements, or benefits data. We recommend leaving the payroll and compensation permissions disabled on the service account.
Ask your UKG Pro administrator to complete the connection, or have them delegate administrator access to you. Creating the service account and API key requires an **Administrator** role.
Only if they appear in UKG Pro as active workers with a manager assigned.
***
# Workday
Source: https://help.gowindmill.com/integrations/workday
Connect Workday to Windmill to sync employees, managers, departments, and employment data so your org chart and access controls stay accurate automatically.
## Benefits of connecting Workday to Windmill
Connecting Workday to Windmill keeps your employee directory and reporting structure accurate without manual updates. When Workday is the system of record, Windmill automatically:
* Imports new hires as they join
* Updates manager → direct report relationships
* Reflects promotions, reorgs, and title changes
* Archives employees when they leave the company
This ensures review cycles, 1:1s, and feedback always align to your **current org**, even as teams shift and roles evolve.
## Connected data
Windmill syncs the following employee fields from Workday:
| Field | Description |
| - | - |
| Employee Name | Full legal name |
| Work Email | Used as the account identity in Windmill |
| Job Title | Displayed in profiles and review flows |
| Job Level | Employee level or grade |
| Manager Relationship | Drives team structure and permissions |
| Department / Cost Center / Org Unit | Used for grouping and review assignments |
| Employment Status | Automatically archives former employees |
| Start Date | Supports new-hire reviews and onboarding timelines |
| Gender | Synced if provided by Workday |
Profile pictures sync from [Slack](/integrations/slack), not Workday.
Windmill can also sync personal email, work location, and time-off records when Workday provides them and the connection has the required authorization.
**Windmill does not store compensation, pay rate, benefits, home address, Social Security Numbers, dates of birth, phone numbers, pronouns, marital status, ethnicity, or employment contracts as employee-profile fields.** See [Personally Identifiable Information](/security/pii) for the canonical list of fields Windmill collects.
## How to connect Workday to Windmill
Workday offers two authentication methods. Choose the one that best fits your organization:
* **[ISU (Integration System User)](#isu-connection)**: Granular permission control, more restrictive access
* **[OAuth](#oauth-connection)**: Simpler setup, broader access to employee data
## ISU connection
**Best for**: Organizations that need fine-grained permission control over employee data access.
### Setup process
Follow this guide to connect using Basic Authentication (ISU): [Connect Workday using Basic Auth (Integration System User)](https://help.merge.dev/articles/5699428-workday-how-do-i-link-my-account-with-an-integration-system-user)
### 3 critical steps for successful connection
If you're having trouble connecting, verify these minimum requirements:
1. **The account you're using is an Integration System User**
2. **That user is in an Integration System Security Group**
3. **The security group has permissions** — at minimum: **Worker Data: Public Worker Reports**
### ISU permissions
Your Workday admin will need to grant the following permissions to the Integration System User:
| Permission | Notes |
| - | - |
| Worker Data: Public Worker Reports | Minimum needed permission to connect |
| Manage: Organization Integration | |
| Worker Data: Organization Information | |
| Person Data: Name | |
| Person Data: Personal Data | |
| Person Data: Home Contact Information | |
| Person Data: Work Contact Information | |
| Person Data: Private Work Email Integration | |
| Person Data: Public Work Email Address Integration | |
| Worker Data: All Positions | |
| Worker Data: Current Staffing Information | |
| Worker Data: Employment Data | |
| Worker Data: Workers | |
**Windmill is read-only and does not write back to Workday.**
## OAuth connection
**Best for**: Organizations prioritizing ease of setup over granular permissions.
### Setup process
Follow this guide to connect using OAuth: [Connect Workday using OAuth](https://help.merge.dev/articles/9891389-workday-how-do-i-link-using-oauth)
### What OAuth enables
OAuth provides broader access with four main permissions that return all employee-related data, including sensitive fields like pay\_rate. This is an "all-or-nothing" access model that simplifies setup but provides less granular control than ISU.
**Windmill is read-only and does not write back to Workday.**
## Managing updates
If you need to:
* Change a manager
* Update someone’s title or team
* Move a person to a new organization
* Terminate / offboard a teammate
> **Make these updates in Workday — not in Windmill.**
Windmill treats Workday as the **system of record**.\
Editing a synced field directly in Windmill creates a manual override, and Workday stops updating that field. Learn how to [manage which fields sync to each employee](/org-chart/employee-field-sources).
## FAQs
Automatically every **24 hours**, with the option to trigger a manual sync in Windmill.
Merge is the unified API platform that powers Windmill's Workday integration, providing secure and reliable connectivity to your HRIS. [Learn more about Merge](/integrations/merge).
No — Windmill uses standard Workday SCIM + REST APIs. No custom Workday Studio work is required.
Only if you're using Basic Authentication. OAuth does not require an ISU. If using Basic Auth, we provide the required permissions and your Workday admin applies them.
Yes — Windmill respects your Workday org structure.
Only if they appear in Workday as active workers with a manager assigned.
Windmill uses time off data to track Days Off as a stat—the total days off for each employee (excluding weekends). This helps provide visibility into team availability and capacity planning.
If your organization wants to sync time off data from Workday, you'll need to **additionally link via OAuth** on top of your ISU connection. The ISU permissions alone will not grant authorization to time off data, since Workday only surfaces time off information through their REST endpoints (not available via the SOAP endpoint used by ISU).
**Setup process:**
1. Keep your existing ISU connection—it's still needed for all other employee data
2. Follow this additional guide to enable OAuth access for time off: [Accessing Time Off Data from Workday](https://help.merge.dev/articles/8106565-accessing-time-off-data-from-workday?lang=en#step-1-follow-our-main-workday-guide-with-one-minor-difference)
This dual-authentication approach allows you to maintain granular permission control through ISU while also accessing time off data through OAuth.
***
# Zendesk Support
Source: https://help.gowindmill.com/integrations/zendesk
Connect Zendesk Support to Windmill so ticket activity, response times, and customer interactions appear in 1:1 prep and performance reviews.
## Benefits of connecting Zendesk to Windmill
Connecting Zendesk to Windmill brings customer support and service work into performance conversations — without agents needing to create reports or justify their impact.
* Automatically surfaces ticket work, response patterns, and resolution outcomes
* Ensures support teams get recognition for effort, communication quality, and problem-solving
* Reduces prep time for performance reviews, calibrations, and promotions
* Helps managers coach using real conversation and case-handling context
* Makes performance reviews more fair, consistent, and grounded in measurable customer outcomes
Windmill turns ongoing customer support activity into structured insight for coaching, development, and recognition.
## Connected data
When connected, Windmill reads support activity and ticket content from Zendesk:
| Data Type | How Windmill Uses It |
| - | - |
| Ticket assignments and ownership | Attributes work to the correct support rep |
| Ticket status and resolution timelines | Highlights responsiveness, workload management, and follow-through |
| Tags, categories, and issue types | Helps contextualize complexity and scope of work |
| Internal note bodies | Provides communication and collaboration context |
| Ticket descriptions | Provides the full issue context |
| CSAT scores (if enabled) | Supports coaching and success recognition based on real customer feedback |
> Windmill stores ticket descriptions and internal note bodies. It does not store public reply comments. Windmill syncs all tickets that the connected Zendesk account can read.
## Permissions
Windmill requests granular, scoped API access via Zendesk OAuth. Every scope is **read-only**, except webhook management.
| Zendesk scope | Purpose |
| - | - |
| `tickets:read` | Reads ticket content, status, and resolution timelines |
| `users:read` | Attributes work to the correct support rep |
| `organizations:read` | Connects tickets to customer organizations for context |
| `groups:read` | Attributes work and collaboration to the correct team |
| `satisfaction_ratings:read` | Reads CSAT scores for coaching and success recognition |
| `sla_policies:read` | Adds SLA context to responsiveness and follow-through |
| `account_settings:read` | Reads account configuration, such as custom ticket statuses |
| `webhooks:read` and `webhooks:write` | Creates, monitors, and removes the webhook that sends ticket changes to Windmill |
> Windmill follows a **least-privilege access** model — collecting only data needed for performance context. Windmill never updates tickets, statuses, or comments in Zendesk. Windmill syncs all tickets that the connected Zendesk account can read.
## Required role
You need to be a Zendesk Administrator or an Account Owner to connect Zendesk.
## FAQs
Windmill stores ticket descriptions and internal note bodies for tickets that the connected account can read. It does not store public reply comments.
Windmill does not change tickets, statuses, or comments. It creates and removes a webhook so Zendesk can send ticket changes to Windmill.
Webhooks can send some changes shortly after they happen. An hourly incremental sync checks for new or changed data.
Yes. All data is encrypted in transit and at rest. Windmill meets SOC 2 requirements and uses scoped, revocable OAuth tokens.
Their historical contribution context remains available, but Windmill stops attributing new work once the user is deactivated.
# Zoom
Source: https://help.gowindmill.com/integrations/zoom
Connect Zoom to Windmill so meeting transcripts provide context for 1:1s and performance reviews.
For meeting controls and a comparison of Zoom features, see [Zoom transcripts, recordings, and My Notes](/integrations/zoom-meeting-content).
## Benefits of connecting Zoom to Windmill
Connecting Zoom to Windmill brings real meeting context into performance conversations — so coaching, feedback, and recognition are grounded in the actual work teams do together.
* Captures participation in key meetings, discussions, and decision-making moments
* Helps managers see where collaboration, leadership, or support happened
* Reduces the need to manually recall or summarize what happened in meetings
* Ensures quieter contributors and behind-the-scenes problem solvers get recognized
* Makes performance reviews more fair, balanced, and based on real interactions
Windmill turns ongoing Zoom meeting activity into clear context for reflection, coaching, and growth.
## Connected data
When connected, Windmill syncs **meeting metadata and transcripts** — never raw audio or video:
| Data Type | How Windmill Uses It |
| - | - |
| Meeting attendance & participant lists | Shows collaboration patterns and involvement across teams |
| Meeting frequency and context (titles, owners) | Highlights ongoing project, stakeholder, and leadership engagement |
| Meeting transcripts and AI summaries | Provides context for coaching and performance conversations |
Windmill stores **text transcripts** and generated summaries and action items, but never raw audio or video files. After Zoom finishes a transcript, Windmill gets it during a later hourly sync.
## Permissions
Windmill requests **read-only**, scoped access via Zoom OAuth. Here are the exact scopes we request and why:
| Scope | Purpose |
| - | - |
| `account:read:admin` | Reads general account information to identify your Zoom organization |
| `user:read:admin` | Reads user profiles to map meeting activity to employee profiles in Windmill |
| `meeting:read:admin` | Reads meeting details including titles, participants, and scheduling to reflect collaboration patterns |
| `webinar:read:admin` | Authorizes read-only webinar access; Windmill does not currently sync webinar data |
| `recording:read:admin` | Reads metadata for meeting recordings, transcripts, and AI summaries for coaching context |
| `report:read:admin` | Reads Zoom report data to reliably capture all meetings, including instant and ad-hoc meetings |
All scopes are **read-only**. Windmill never sends messages, changes settings, or alters meetings. You control which users and data are included.
> Windmill follows **least-privilege** access — only syncing the data required for performance context.
## Installation
Navigate to **Settings → Integrations** in the Windmill Dashboard.
Click **Add Integration** from the integrations page.
Find Zoom in the list of available integrations.
You'll be redirected to Zoom to authorize the connection. Review the requested permissions and approve.
## FAQs
No. Windmill does not record meetings. It stores text transcripts and generated summaries and action items, but never raw audio or video files.
No. The integration is strictly read-only.
Meeting metadata can update through webhooks. After Zoom finishes a transcript, Windmill gets it during a later **hourly** sync.
Yes. All data is encrypted in transit and at rest. Windmill is SOC 2 compliant and uses scoped, revocable OAuth tokens.
Their past meetings remain available for context in historical reviews, but Windmill stops syncing once they are archived.
# Zoom transcripts, recordings, and My Notes
Source: https://help.gowindmill.com/integrations/zoom-meeting-content
Choose the correct Zoom feature, start it during a meeting, and find the content in Windmill.
## Three Zoom features, two Windmill integrations
A transcript is the written record of what people say. Zoom can create one without a cloud recording. My Notes is a separate feature for your personal notes.
| Zoom feature | What it creates | Windmill integration |
| - | - | - |
| Meeting transcript | A transcript without a cloud recording | **Zoom**, connected company-wide by an admin |
| Cloud recording | Audio or video, plus a transcript if enabled | The same company-wide **Zoom** integration |
| My Notes | Your notes, with an available transcript and summary | **Zoom: My Notes**, connected by each person |
For personal notes, go to **Settings > Integrations > My connections** in Windmill and find **Zoom: My Notes**. See the [connection instructions](/integrations/zoom-my-notes#connect-zoom-my-notes).
Connecting an integration does not start a transcript, recording, or My Notes
during a meeting. The applicable Zoom feature must be active.
## Start the feature in Zoom
These instructions use the Zoom desktop app. Contact your Zoom admin if a control is not available.
### Meeting transcript
1. In the meeting toolbar, select **More > Transcript**.
2. If you are not the host, select **Request transcription**. The host must approve the request.
No cloud recording is required. Transcription can also start automatically if your admin has enabled it. See [Zoom's transcript guide](https://support.zoom.com/hc/en/article?id=zm_kb\&sysparm_article=KB0085682).
After the meeting, the host can find retained transcripts in the Zoom web portal under **My account > Recordings and Transcripts > Transcripts**, if permitted. See [Zoom's transcript access guide](https://support.zoom.com/hc/en/article?id=zm_kb\&sysparm_article=KB0076632).
### AI Companion: optionally save a transcript
AI Companion can create a meeting summary and optionally generate a saved meeting transcript. It does not require a cloud recording or a personal My Notes integration.
As the host, move your pointer over the AI Companion diamond at the top-right
of the meeting window. Zoom also calls this control **Zoom AI**.
Select **Meeting summary**. To keep a transcript after the meeting, also
select **Generate transcript**, if available.
Select **Start AI Companion** or **Start Zoom AI**, depending on your Zoom
version. If you are a participant, ask the host to start it with the transcript option enabled.
Starting AI Companion alone does not guarantee a saved transcript. The transcript option and your account settings determine whether Zoom keeps one. Windmill receives the available meeting transcript through the company-wide **Zoom** integration, not **Zoom: My Notes**. See [Zoom's meeting summary guide](https://support.zoom.com/hc/en/article?id=zm_kb\&sysparm_article=KB0058013).
### Cloud recording
1. Ask the host or co-host to select **More > Record > Record to the cloud**.
2. After Zoom finishes processing, the host can find the recording under **Recordings & Transcripts** in the Zoom web portal.
Audio transcription must be enabled for Windmill to receive the recording's transcript. **Record to computer** is not a cloud recording. See [Zoom's cloud recording guide](https://support.zoom.com/hc/en/article?id=zm_kb\&sysparm_article=KB0062627).
### My Notes
At the top of the meeting window, select **My Notes > Start taking notes**.
Transcription starts if supported in the meeting.
Add your notes. When finished, select **Done**, then confirm with **Done**.
Zoom also saves your notes when the meeting ends.
Open **Hub > My Notes** in the Zoom desktop app. If **Hub** is hidden,
select **More** first.
My Notes can contain its own transcript. Look inside the note, not only on Zoom's separate **Transcripts** page. See [Zoom's My Notes guide](https://support.zoom.com/hc/en/article?id=zm_kb\&sysparm_article=KB0083849).
## Review your content in Zoom Hub
Zoom Hub gives you one place to review the recordings, transcripts, and notes that you can access in Zoom.
Open **Hub** in the Zoom desktop app. If it is hidden, select **More > Hub**. Use the left menu to select:
* **All meeting assets** to find content by meeting.
* **Recordings & Transcripts** to review available recordings and transcripts.
* **My Notes** to review your personal notes and their available transcripts.
Hub shows what is available in Zoom. It does not mean that every item has synced to Windmill. See [Zoom's Hub guide](https://support.zoom.com/hc/en/article?id=zm_kb\&sysparm_article=KB0080742).
## Find the content in Windmill
All three sources appear in the same area. Open the matching **1:1**, then select its recording tab to see the available transcript, notes, summary, or action items.
This content is separate from the shared 1:1 agenda. It does not replace the agenda. Windmill stores text, not Zoom audio or video.
Your synced **My Notes** content is visible only to you. Company-wide Zoom setup does not give everyone access to every transcript. Access depends on matched participants and the integration's access rules.
## IT setup: enable transcripts
An admin connects the [company-wide Zoom integration](/integrations/zoom) once. Participants do not need a personal My Notes integration to sync meeting transcripts or cloud-recording transcripts.
Sign in to the Zoom web portal as an admin. Select your profile picture,
then **Admin Center > Settings > Meeting**.
Under **In Meeting (Advanced)**, enable **Meeting transcript**.
To start transcripts automatically, configure **Automatically generate transcripts for**.
Select **Meetings with meeting summary** to generate transcripts when meeting summaries run.
Enable **Allow hosts to view and manage transcripts after the meeting**.
Set retention according to your company's policy, then save your changes.
See [Zoom's meeting transcript settings](https://support.zoom.com/hc/en/article?id=zm_kb\&sysparm_article=KB0085675).
For cloud recordings, the separate setting is **Account Management > Account Settings > Recording & Transcript**. Enable **Cloud recording**, then select **Create audio transcript** under **Advanced cloud recording settings** and save. See [Zoom's cloud audio transcription settings](https://support.zoom.com/hc/en/article?id=zm_kb\&sysparm_article=KB0065911).
# Zoom: My Notes
Source: https://help.gowindmill.com/integrations/zoom-my-notes
Connect your Zoom account to sync your personal My Notes content with Windmill and link new notes to matching 1:1s.
For meeting controls and a comparison of Zoom features, see [Zoom transcripts, recordings, and My Notes](/integrations/zoom-meeting-content).
## Benefits of connecting Zoom: My Notes
Connect Zoom: My Notes to give Windy context from your Zoom meeting notes. Windmill can link a new note to its matching 1:1 and use the note as context for your work.
* Sync your Zoom My Notes content, including available summaries and transcripts
* Link new notes to matching 1:1s in Windmill
* Keep synced notes private to your Windmill account
* Give Windy more context from your meetings without syncing audio or video
When you connect Zoom: My Notes, Windmill also syncs notes from your meetings
in the previous six months. Windmill finds these meetings from your calendar
events and from meetings that your company's Zoom integration synced.
## Personal connections
Zoom: My Notes is a personal integration. Each Windmill member connects their own Zoom account.
The integration only syncs notes for the person who creates the connection. It does not sync notes that belong to other people in the Zoom account or organization.
Synced notes are only visible to the member who created the connection. If Windmill links a note to a shared 1:1, the other participant cannot see the note through your connection. They must connect their own Zoom account to sync and view their own notes.
The administrator-level [Zoom integration](/integrations/zoom) is separate. It
syncs meeting data and transcripts for a connected Zoom account. Zoom: My
Notes only syncs the installing member's personal My Notes content.
## Connect Zoom: My Notes
Go to [**Settings > Integrations**](https://app.gowindmill.com/COMPANY/config/integrations) in the Windmill Dashboard.
Find **Zoom: My Notes** and select **Connect**.
Sign in to your Zoom account. Review the requested read permissions and approve the connection.
Windmill receives new My Notes content after Zoom creates it. Windmill also syncs notes from your meetings in the previous six months, and checks recent notes each day for updates.
## Disconnect Zoom: My Notes
Go to [**Settings > Integrations**](https://app.gowindmill.com/COMPANY/config/integrations) in the Windmill Dashboard.
Select **My connections**. Zoom: My Notes appears here because it is a personal integration, not a company-wide integration.
Find your connected **Zoom: My Notes** account. Select the three-dot menu in the upper-right corner of the integration card.
Select **Disconnect integration**, then confirm that you want to disconnect it.
Windmill stops receiving new My Notes content after you disconnect the integration. If you connect it again, Windmill syncs notes from your meetings in the previous six months.
## Connected data
Windmill securely reads the following data from your Zoom account:
| Data type | How Windmill uses it |
| - | - |
| Note title and Zoom link | Identifies the note and provides a link to the source |
| Generated summary | Gives Windy concise meeting context |
| Manual notes | Includes the notes that you add in Zoom |
| Transcript and speaker names | Provides meeting context when Zoom supplies a transcript |
| Meeting details | Helps Windmill link the note to the matching meeting and 1:1 |
Windmill does not sync Zoom audio, video, or cloud-recording files through this integration.
## Where notes appear
### Linked notes on 1:1s
Windmill uses Zoom meeting details to find the matching meeting. When Windmill finds a match, the note appears as a linked recording on the 1:1.
The link and its content remain private to the member who connected Zoom: My Notes. Linking the note does not give the other 1:1 participant access.
### Windy context
Windy can use the synced note, summary, and available transcript as context when they answer your questions. The note can also provide context for Windmill features that use meeting data.
Zoom: My Notes does not copy content into the shared 1:1 agenda. The linked note and the shared agenda remain separate.
## Permissions
Windmill requests user-level, read-only access through Zoom OAuth. These permissions apply to the Zoom user who creates the connection.
| Scope | Purpose |
| - | - |
| `my_notes:read:note` | Reads your My Notes records |
| `my_notes:read:content` | Reads generated and manual note content |
| `my_notes:read:notes_transcript` | Reads the transcript when Zoom makes one available |
| `docs:read:file` | Reads the Zoom document that contains a My Notes record |
| `docs:read:list_children` | Reads related Zoom document items that form the note |
| `user:read:user` | Identifies the Zoom user who created the connection |
| `meeting:read:meeting` | Reads meeting details to link a note to the matching 1:1 |
| `meeting:read:list_meetings` | Finds the meeting that is associated with a note |
| `cloud_recording:read:list_recording_files` | Reads recording file metadata to link the note to its meeting and matching 1:1; Windmill does not download the files |
All requested scopes are read-only. Windmill does not create or change notes,
meetings, recordings, or settings in Zoom.
## FAQs
Yes. When you connect Zoom: My Notes, Windmill syncs notes from your meetings in the previous six months. Windmill finds these meetings from your calendar events and from meetings that your company's Zoom integration synced, so notes from other meetings may not sync.
No. Zoom: My Notes is a personal integration. Each member must connect their own Zoom account.
No. Synced notes are only visible to the member who created the connection. This rule also applies when Windmill links a note to a shared 1:1.
No. Windmill only stores text and related metadata from My Notes. It does not sync Zoom audio, video, or cloud-recording files through this integration.
The [Zoom integration](/integrations/zoom) is an administrator-level integration that syncs meeting data and transcripts from the connected Zoom account. Zoom: My Notes is a personal integration that only syncs the installing member's new My Notes content.
No. The integration uses read-only permissions. Windmill does not create, change, or delete Zoom notes, meetings, recordings, or settings.
# Running 1:1s on Windmill
Source: https://help.gowindmill.com/introducing-1-1s-on-windmill
Customer-facing announcement template for introducing Windmill 1:1s to your team, including what to expect from Windy, how to prepare, and how meetings are added.
Windmill’s 1:1 feature is designed to be more connected, contextual, and proactive by meeting people where they already work (Slack) and by surfacing the right information at the right time. Windmill adds 1:1 meetings from your calendar, while Windy (Windmill’s AI agent) surfaces work context from business apps like Google Workspace and Slack.
If you enable 1:1 notifications, Windy will send a Slack message before upcoming meetings to help you prepare. You can add notes or agenda items directly in Slack or in the Windmill platform, and after each meeting, your notes and action items will be saved automatically so you can easily follow up.
This will make check-ins between managers and their direct reports more effective and help participants come prepared, while ensuring a lightweight process. Context from your 1:1s will be resurfaced for you when writing your self and manager reviews in your next performance cycle.
### **For Managers & Employees**
* **1:1s are added from your calendar** after you connect it. You can also [add a missing event or start a 1:1 without a calendar event](https://help.gowindmill.com/features/1-on-1s/calendar).
* **Windy (via Slack)** can prompt participants ahead of a meeting when they enable [1:1 notifications](https://help.gowindmill.com/features/1-on-1s/notifications). Windy also suggests relevant topics, which you can add to the shared agenda.
* Everyone has access to a **[Catch Me Up](https://help.gowindmill.com/features/1-on-1s/catch-me-up)** section with information they can see about the person they're meeting. It can include recent work, [feedback](https://help.gowindmill.com/features/continuous-feedback), and relevant Windy interactions.
* **Shared agendas and notes** are visible and editable directly in Windmill.
* You can also leave **Private Notes** about anyone on your team in Windmill, perfect for reminders, coaching thoughts, or development areas you don’t want in shared 1:1 notes. Here’s a [Loom](https://www.loom.com/share/2837a1a852af45d08f2796fcff5f0b61) video on how to use private notes.
* Any **Zoom or Google Meet recording** will be summarized into key takeaways and action items.
* You can **add, edit, or view notes directly in Slack** or the Windmill platform anytime. See [here](https://www.loom.com/share/20a8beade551445b8f90790bc86f5871) for the list of Slack Shortcuts to easily capture context without leaving the conversation.
* You can also **import existing 1:1 notes** from tools like Google Docs and Notion directly into Windmill. Once imported, your notes become fast, searchable, and fully integrated into your workflow, showing up in performance reviews and accessible right from Slack via Windy.
***
## **Key Takeaways**
* Windmill brings **1:1s into Slack**, making prep, note-taking, and follow-up easier.
* **Less manual setup:** Windmill adds 1:1 meetings from your calendar and helps you prepare beforehand.
* Managers will have **richer prep** before each meeting (recent work and past feedback).
* Employees will have a more **engaging, structured experience** that encourages reflection and ownership.
* **Actionable insights:** Zoom/Google Meet recordings are automatically summarized with decisions and action items.
***
### Support
If you have questions, please reach out to me, or to Windmill's support team at [support@gowindmill.com](mailto:support@gowindmill.com).
***
### Where to Learn More
* [1:1s Overview](https://help.gowindmill.com/features/1-on-1s)
* [Private Notes](https://help.gowindmill.com/features/private-notes)
* [Talking to Windy](https://help.gowindmill.com/windy/talking-to-windy)
* [Slack Shortcuts](https://www.loom.com/share/20a8beade551445b8f90790bc86f5871)
* [Catch Me Up](https://help.gowindmill.com/features/1-on-1s/catch-me-up)
* [Importing 1:1 Notes from Google or Notion](https://www.loom.com/share/47de48e191e84e278120b2ade65a2ada)
* [Permissions and Access](https://help.gowindmill.com/permissions-and-access)
# Introducing Performance Reviews on Windmill
Source: https://help.gowindmill.com/introducing-performance-reviews-on-windmill
Customer-facing announcement template for introducing Windmill performance reviews to your team — what to expect, how cycles work, and what Windy will ask.
### **What is Windmill & Why We’re Using It**
Windmill is an AI-powered performance management platform that integrates with our daily tools (e.g., Slack, Google) to make reviews simpler, more meaningful, and reflective of real work. Windmill uses AI to help gather context (i.e., goals, projects, feedback) and gives everyone structured guidance directly in Slack throughout the process. While Windmill uses AI to surface helpful information, AI is not evaluating anyone’s performance. Managers are still responsible for writing feedback and finalizing reviews. You’ll receive a Slack notification from Windy, Windmill’s AI agent, with instructions when it’s your turn to complete each step.
### Why we chose it:
* **Reviews grounded in real work**: Windy uses feedback collected in Windmill and activity context from your connected tools. This helps reviewers use recent evidence instead of memory alone.
* **Faster and more consistent**: Instead of employees and managers spending hours writing from scratch, Windy surfaces a complete picture of employee performance, pulling in real examples, highlights, and feedback over the review period for you to review, revise, or approve.
* **Higher quality feedback:** Windy is trained to prompt for specificity and balance. When responses are vague, Windy follows up with nudges focused on specific examples and outcomes rather than personalities, ensuring reviews are actionable, fair, and grounded in reality.
### How the Review Process Works
A typical Windmill review cycle includes some combination of:
* **Self reviews** — You reflect on your own impact and growth
* **Peer reviews** — Colleagues share feedback on collaboration and strengths
* **Upward reviews** — Direct reports share feedback about their manager
* **Manager reviews** — Managers draft comprehensive performance reviews
Self, peer, and upward reviews all happen **in Slack**. Windy will message you when it's your turn and walk you through it conversationally. Your responses are automatically saved and uploaded to the Windmill platform.
Manager reviews are completed in the **Windmill platform**, where managers have access to a compiled packet, including all peer feedback, the employee's self review, relevant work activity, and 1:1 notes from the review period.
***
### For Individual Contributors: What to Expect
1. **You'll receive a Slack message from Windy** when it's time to complete your part of the cycle. Just follow the prompt; Windy will guide you step by step. You can choose to complete your self review directly in Slack, or in the Windmill platform.
2. **Windy brings context to you.** Rather than staring at a blank box, Windy will surface examples from your work — recent projects, feedback you've received, and highlights from your 1:1s — to help you write something authentic and specific.
3. **Be honest and specific.** The more concrete your examples, the more useful the review. Windy will prompt you if your responses are too vague.
4. **You won't be evaluated by AI.** Windy helps gather context and structure the draft, but your manager is always the one writing and finalizing your review.
***
### For Managers: What to Expect
1. **Your team will complete their parts first.** Windy reaches out to employees to gather self reviews, peer feedback, and/or upward reviews before you begin your manager review.
2. **You'll get a review packet.** Once the input is collected, the Windmill platform assembles a packet for each of your direct reports with their self review, peer feedback, upward reviews (if applicable), and a context report covering their work and contributions over the review period.
3. **Draft in the Windmill platform.** Use the packet as your foundation. Windy will help surface themes, flag gaps, and generate a structured draft that you can edit, revise, and approve.
4. **Finalize your review.** Windmill uses AI to compile and draft, but you are responsible for the final review. Read it carefully and make sure it reflects your honest assessment.
5. **Track your team's progress.** In the Windmill platform, you can see who has completed each step and who still has items outstanding.
***
### Tips for a Great Review Cycle
**For ICs**
* Complete your self review promptly and thoughtfully. This feeds into your manager's packet.
* When writing peer feedback, focus on specific behaviors and outcomes, not general impressions.
* Chat with Windy in Slack or in the platform at any time if you need help jogging your memory or formulating your responses.
**For Managers**
* Review the Performance Packet before drafting. Don't just approve the AI draft. Add your own voice and specific observations.
* Make sure ratings are grounded in evidence from the packet, not gut feel.
* After reviews are shared, plan time with each direct report to discuss their feedback and next steps.
***
### Support
If you have questions, please reach out to me, or to Windmill's support team at [support@gowindmill.com](mailto:support@gowindmill.com).
***
### Related guides
* [Review cycles overview](/features/performance-reviews)
* [Writing a review](/features/performance-reviews/writing-a-review)
* [Writing manually](/features/performance-reviews/writing-manually)
* [AutoDraft](/features/performance-reviews/autodraft)
* [Windy chat](/features/performance-reviews/windy-chat)
* [Fine-tune a review](/features/performance-reviews/fine-tune-a-review)
The video guides show [peer reviews](https://www.loom.com/share/326c97a1c8dd4a558217084af4aa92a6), [upward reviews](https://www.loom.com/share/a755f063165e46dc8d169b9585996a9a), and [manager reviews](https://www.loom.com/share/6b1771f08a57449883b0a66d754bec01).
# Introducing Windmill
Source: https://help.gowindmill.com/introducing-windmill
Customer-facing announcement template for introducing Windmill to your team — what Windy does in Slack, what to expect, and how feedback, 1:1s, and pulses work.
### **What is Windmill & Why We’re Using It**
Windmill is an AI-powered performance management platform that integrates with the tools we already use (e.g., Slack, Google Workspace) to help managers and employees stay aligned, give better feedback, and run more effective 1:1s.
**Windy** is available in Slack and the Windmill Dashboard. Windy helps you prepare for 1:1s and respond to Pulse surveys. You can also message Windy to give feedback about a colleague. Reply in the message thread when Windy contacts you.
When our company has the Feedback page enabled, you can also leave and request feedback there. Use **Feedback > To-dos** to respond to a request or decline it. Check the audience before submitting feedback.
We're using Windmill to help us move toward more continuous feedback and recognition, and make check-ins between managers and direct reports more effective and prepared, while ensuring a lightweight process.
***
### What You Can Expect
**Individual contributors** will receive occasional Slack messages from Windy asking about upcoming 1:1 agenda items or short pulse surveys. Reply in the Slack thread. You can also complete available work in the Windmill Dashboard.
**Managers** can also read feedback permitted by its audience, their shared 1:1 notes, and available team information in Windmill. Manager status does not provide access to every feedback entry.
***
### Best Practices for Managers
* **Choose your 1:1 notification settings** so Windy knows which upcoming meetings to contact you about and when to send the message.
* **Check the platform** regularly. The Windmill platform is where you'll find [catch-me-ups for 1:1s](https://help.gowindmill.com/features/1-on-1s/catch-me-up), feedback your team has received, and pulse survey results — all organized by employee.
* **Respond to Windy in threads.** When Windy reaches out, reply within the thread so the conversation stays organized.
* **Use Windy proactively.** You can always message @Windy directly to look up recent feedback, pull up 1:1 context, or get a quick catch-up on a team member.
***
### Best Practices for ICs
* **Reply to Windy's messages.** When Windy reaches out, it's because there's a specific action that helps your manager support you better, like sharing your agenda for an upcoming 1:1 or answering a Pulse survey.
* **Give proactive feedback.** Message Windy: *"@Windy, I want to give feedback about \[person's name]."* You can also use **Feedback > Leave feedback** when that page is enabled.
* **Prepare when Windy reaches out.** When Windy asks what you'd like to cover in your next 1:1, add a few items ahead of time to make the meeting more useful.
***
### Support
If you have questions, please reach out to me, or to Windmill's support team at [support@gowindmill.com](mailto:support@gowindmill.com).
***
### Where to Learn More
* [Meet Windy](https://help.gowindmill.com/windy/meet-windy)
* [Talking to Windy](https://www.loom.com/share/d354e2c6f47f4a23b4c076c0f7263b81?t=0)
* [1:1s on Windmill](https://help.gowindmill.com/features/1-on-1s)
* [Feedback](https://help.gowindmill.com/features/continuous-feedback)
* [Pulse Surveys](https://help.gowindmill.com/features/pulse-surveys)
* [Privacy and Access](https://help.gowindmill.com/permissions-and-access)
# Employee Field Sources
Source: https://help.gowindmill.com/org-chart/employee-field-sources
Choose the source of truth for each employee field — set company-wide defaults, override them per person, and control which system updates names, titles, managers, and more.
Field sources let you decide which system is the source of truth for each piece of employee information in Windmill. You might sync job titles and managers from your HRIS (Human Resources Information System), pull profile pictures from Slack, and manage job levels by hand. Windmill enforces your choices: only a field's assigned source can update it, so a sync never overwrites data you manage elsewhere.
You set sources in two places:
* **Company defaults** apply to every employee. For example, "BambooHR owns job titles."
* **Per-person overrides** apply to a single employee and take priority over the defaults. For example, "manage this employee's first name manually."
## How field sources work
Every field on an employee profile (name, job title, manager, start date, and so on) has a source. The source is either a connected integration (your HRIS, Slack, Google Workspace, Outlook, or SCIM) or **manual**, meaning the field is edited by hand in Windmill.
The source controls who can write the field:
* **An integration source** updates the field automatically on each sync. If you edit the field in Windmill, the edit becomes a manual override for that employee.
* **SCIM source** updates the field each time your identity provider pushes a change. Windmill also stores every value SCIM sends for fields another source owns, and applies the latest stored value when you switch the field to SCIM.
* **A manual field** is yours to edit in Windmill. No other sources will ever write to it.
* **A field with no source set** behaves like a manual field until you assign a source or a connected integration starts supplying it.
You can see each field's source on the employee's **Info** tab in [Settings > Org Chart](https://app.gowindmill.com/COMPANY/config/org-chart-v3). Each field shows the logo of the integration that manages the value, a pencil icon for manually managed fields, or a spinner while a sync is in progress. Hover over the icon to see details, like "Managed by Rippling" or "Managed manually."
Windmill keeps a history of every source change and field update, including
who made the change and where the value came from.
## Setting company defaults
Company defaults define the org-wide source of truth for each field.
Open the [Org Chart](https://app.gowindmill.com/COMPANY/config/org-chart-v3).
You'll see every employee field grouped into Personal, Role & reporting,
Employment, and Contact.
Each field lists the connected systems that can supply it. Pick one, or
select **Not set** to clear the source and manage the field manually.
Changes apply on the next sync, not immediately. HRIS data syncs daily, so a new source can take up to a day to bring its values in. See [Data Sync and Freshness](/data/data-sync-and-freshness) for timing by integration. When you update a source from an integration, a sync will be triggered immediately, but can take up to 10 minutes to propagate.
The Company defaults tab shows sources once you've connected an integration
that can supply employee fields. Until then, every field is managed manually.
## Overriding sources for one employee
Sometimes one person is the exception: a contractor who isn't in your HRIS, or an executive whose title you want to control directly. Per-person overrides handle these cases without changing your company defaults.
Open the [Org Chart](https://app.gowindmill.com/COMPANY/config/org-chart-v3).
Select the employee row to open the employee details.
Each field shows its current source. Fields that differ from the company
default are labeled as overrides.
Pick the system that should manage this field for this employee. To clear
an override and fall back to the company default, select **Clear** next to
the field.
To undo all of an employee's overrides at once, select **Reset overrides** on the Sources tab. The fields fall back to your company defaults on the next sync.
## Editing a synced field
Fields owned by an integration show the integration's logo on the employee's **Info** tab. Hover over the logo to see which integration manages the field.
You can still edit the field. When you save, Windmill switches that field to manual for that employee (a per-person override), and the integration stops updating it. This is useful when your HRIS has a stale value and you need the fix in Windmill now.
To hand the field back to the integration later, clear the override on the employee's **Sources** tab. The integration takes over again on its next sync.
A manual override sticks until you clear it. If you fix a value in Windmill,
also fix it in the source system, or the two will stay out of sync.
## Which sources can manage which fields
Not every system can supply every field. Windmill only offers sources that actually provide the data.
| Source | Fields it can manage |
| - | - |
| HRIS integrations (BambooHR, Rippling, Gusto, Workday, and [others](/integrations/integrations)) | First name, last name, display name, job title, job level, manager, employment status, start date, work location, gender |
| Slack | First name, last name, display name, profile picture, job title, pronouns, phone number |
| Google Workspace / Outlook | First name, last name, display name, profile picture, primary email, phone number |
| SCIM provisioning | First name, last name, display name, primary email, phone number, profile picture, job title, job level, manager, start date, pronouns, gender |
| Manual | All fields |
SCIM (System for Cross-domain Identity Management) appears as a source if your identity provider provisions users into Windmill. Job level, start date, pronouns, and gender require the Windmill extension attributes in your identity provider. See [SCIM attributes and field sources](/security/scim-attributes) for the attribute names and how stored values are applied.
## Who can manage field sources
Only Admins and HR Admins can change company defaults and per-person overrides. Team Members, Integration Managers, and Data Analysts can't view or edit field sources. See [Permissions and Access](/permissions-and-access) for the full role breakdown.
## FAQs
Nothing is deleted. The current value stays in place, and the new source
brings in its value on its next sync. Changes apply on the next sync, not
immediately.
The field's icon shows which integration manages it. You can still edit
it. Saving the change creates a manual override for that employee, and the
integration stops updating that field.
Fields on manually created employees start without a source. When you
connect an HRIS that includes the employee, it picks up those fields on its
first sync. Fields you've edited by hand in Windmill stay manual until you
assign them a source.
Yes, that's the main use case. Set each field's company default
independently. For example, sync managers and titles from your HRIS and
manage job levels by hand in Windmill.
No. Without a connected integration, every field is managed manually and
there's nothing to configure. Sources appear once you connect an
integration that can supply employee data.
# Employee Information
Source: https://help.gowindmill.com/org-chart/employee-information
How Windmill syncs employee data — names, titles, profile pictures, managers, and start dates — from your HRIS and keeps profiles accurate over time.
Windmill automatically pulls employee information from your connected systems to create and maintain employee profiles. This ensures your team's information stays up to date without manual data entry.
An employee is a person in the org chart. A member is an employee or another person who has workspace access. An employee can exist without member access.
## Employee data collection
### What Windmill collects
Your HR Information System (HRIS) provides the foundation for Windmill—your org chart and employee roster.
**What Windmill collects:**
* Employee first and last name
* Work email
* Job title and job level
* Department
* Manager / reporting structure
* Work location
* Start date
* Employment status (active / terminated)
* Gender (if provided by your HRIS)
Other integrations can add a profile picture, phone number, and pronouns. Slack, Google Workspace, Outlook, and SCIM supply these fields, not your HRIS.
**What Windmill does NOT collect:**
* Home addresses
* Social Security Numbers or government IDs
* Date of birth
* Compensation, salary, payroll, or benefits
* Employment contracts
Windmill is selective about employee data. We only collect what's necessary to
build your org chart, run reviews and 1:1s, and determine access permissions.
See [Personally Identifiable Information](/security/pii) for the canonical
list of fields and their sources.
### Profile pictures
Profile pictures sync automatically from a connected integration, usually Slack. Google Workspace, Outlook, and SCIM can also supply profile pictures. See [Employee Field Sources](/org-chart/employee-field-sources) to choose which integration manages them.
You can't change your profile picture directly in Windmill. To update your
picture, change it in the integration that manages it, such as Slack. The
new picture syncs to Windmill automatically.
## Data sources and syncing
### Employee data sources
**Primary source: Your HRIS** If you have an HRIS connected (BambooHR, Rippling, Gusto, etc.), Windmill uses that as the source of truth for employee data. Updates in your HRIS automatically sync to Windmill.
**Fallback sources** If you don't have an HRIS connected, Windmill pulls employee data from other connected systems like Google Workspace or Slack. However, this data may be less complete or accurate than HRIS data.
**Manual entry** If you don't have an HRIS and your other systems don't provide complete employee data, you can manually add and edit employee information in Windmill.
### Sync timing
Employee information syncs automatically on different schedules:
**Profile pictures:**
* Update within a few hours of being changed in Slack
* No manual sync required
**Employee data from HRIS:**
* Syncs daily
* Updates to job titles, departments, or reporting structure appear within 24 hours
**Manual updates:**
* Take effect immediately in Windmill
* Editing a field that syncs from an integration creates a manual override, and the integration stops updating that field
You can choose which employee fields sync from your HRIS and which you edit
in Windmill. Learn how to [manage which fields sync to each
employee](/org-chart/employee-field-sources).
### How employee data is used
Windmill uses employee information to:
**Build your org chart** Your reporting structure defines direct and indirect manager scope for supported features.
**Support access decisions** Windmill combines the org chart with roles, delegation, source permissions, and feature-specific privacy rules. See [Permissions and Access](/permissions-and-access).
**Sync information across the platform** Employee names, titles, and departments appear consistently in Feedback, 1:1s, and Reports.
**Enable Windy interactions** Windy uses employee data to identify who to reach out to and when, based on collaboration patterns and reporting relationships.
## Managing employee information manually
### Manually updating employee profiles
You can update employee information directly in Windmill. If a field syncs from an integration, editing it creates a [manual override](/org-chart/employee-field-sources#editing-a-synced-field) for that employee.
Open the [Org Chart](https://app.gowindmill.com/COMPANY/config/org-chart-v3).
Select the employee row to open the employee details.
On the **Info** tab, update the manually controlled fields.
Select **Save changes**.
**What you can update:**
* First and last name
* Display name
* Primary email
* Job title and job level
* Gender and pronouns
* Manager
* Start date
### Adding new employees
Use **Settings > Members** when a person needs workspace access. The invitation flow can match an existing employee or collect the details for a new employee record. See [Inviting Members](/org-chart/inviting-team-members).
## Profile visibility and access
### Profile visibility
Who can see employee profiles depends on your org chart structure:
**Managers can view:**
* Their own profile
* All direct reports' profiles
* Indirect reports (their team's direct reports)
**Team Members can view:**
* Their own profile
* Public information about other team members (name, title, department)
**Admins and HR Admins can manage:**
* Employee records across the organization in **Settings > Org Chart**
Access to feature content still follows org-chart scope, workspace roles, delegation, and feature-specific privacy rules.
### Missing profile pictures
If a profile picture doesn't appear in Windmill:
1. **Check the source** - Make sure the employee has a profile picture set in the integration that manages it, usually Slack
2. **Wait for sync** - Profile pictures can take a few hours to sync after being added
3. **Verify the integration** - Ensure the integration is still active in **Settings > Integrations**
If profile pictures still don't appear after checking these items, reach out to [support@gowindmill.com](mailto:support@gowindmill.com).
## Archived employees
When an employee leaves your organization, their profile needs to be archived in Windmill.
**If you have an HRIS connected:**
* When your HRIS marks an employee as inactive, Windmill archives the employee and their member access on the next sync
* The archive typically happens within 24 hours
* Historical data (feedback, reviews) is preserved but archived
**If you don't have an HRIS:**
* If the employee has member access, an Admin, HR Admin, or Integration Manager must first use **Remove member** in **Settings > Members**
* An Admin or HR Admin can then archive the employee in **Settings > Org Chart**
Archived employees:
* Do not appear in active employee lists
* Do not appear in active team lists or reports
* Have their historical data archived (not deleted)
Keep your org chart up to date as people join and leave your organization.
This ensures the right people have access to the right data in Windmill.
# Groups
Source: https://help.gowindmill.com/org-chart/groups
Create manual, smart, and synced employee groups, manage membership, and share access for surveys, reviews, analytics, and other Windmill workflows.
Groups are reusable collections of employees. Create a group once, then select it wherever Windmill offers group selection.
Open **Company settings > Groups** to browse the [groups you can access](https://app.gowindmill.com/COMPANY/config/groups).
## Why use groups
Use groups to target [pulse surveys](/features/pulse-surveys), choose [review cycle participants](/features/performance-reviews/cycles), filter [Analytics](/features/analytics), and share resources such as [skills](/features/skills). Groups can represent departments, committees, locations, or cross-functional teams beyond your reporting structure.
## Choosing a group type
| Type | How membership is managed | Example |
| - | - | - |
| **Manual** | You add and remove employees | A pilot cohort or committee |
| **Smart** | Windmill updates membership using employee filters | Employees in Engineering with a particular job title |
| **Synced** | A connected integration supplies the name and membership | A Google Workspace or Slack user group |
| **SCIM** | Your identity provider provisions the name and membership | A group pushed from Okta or Microsoft Entra ID |
**Create group** offers Manual, Smart, and Synced. SCIM groups arrive through identity-provider provisioning instead.
## Browsing groups
Search by name or filter by type. The list shows each group's name, type, member count, source, and visibility. Use the column controls to show optional columns, such as creator.
* **Company** means the group is shared company-wide.
* **Restricted** means access is limited by sharing settings. Admins and HR Admins retain access.
Open a group to see its full member list and, for a Smart group, its rules. Available actions depend on your access and the group type.
## Creating groups manually
Go to **Company settings > Groups** and select **Create group**.
Select **Manual**, then **Continue**.
Enter a name, then select **Create group**.
On the group page, select **Add employees**. Choose employees, then select **Add employees** to confirm. To add many employees at once, select **Import CSV**.
Adding employees keeps the existing members. To remove someone, open their row's actions menu and select **Remove from group**.
You can also add or remove Manual-group memberships in the **Groups** section of an employee's profile when you have edit access. Smart, Synced, and SCIM memberships appear there, but you can't change them manually.
## Creating smart groups
Smart groups keep a reusable employee segment current as employee information changes. Configure the filters during creation.
In **Groups**, select **Create group > Smart > Continue**.
Enter a name for the group.
Under **Membership rules**, add employee filters. Review the rules before creating the group.
Select **Create group**. Windmill calculates the matching membership.
### Choosing membership rules
The filters work like employee filtering in Analytics. Employees must match **all** filters you add. The editor supports a flat list of filters, without nested condition groups.
| Field | Use it to select employees by |
| - | - |
| **Job title** | Their job title |
| **Department** | Their department |
| **Manager** | Their direct manager (**Is**) or anyone they report into through the reporting hierarchy (**Reports into**) |
| **Employee** | Specific employees |
| **Email** | Their email address |
| **Start date** | When they joined |
| **Integrations** | Whether an integration is connected or not connected |
For example, combine a Department filter for Engineering with a Job title filter to include only employees who match both.
Only active employees are included. You can't reference another group as a rule or manually add or remove exceptions. Change the rules or the relevant employee information instead.
A Smart group with no filters includes every active employee. When you create the group, Windmill shows a warning. When you remove every rule from an existing Smart group, you must select **Include every active employee** to confirm.
### Editing rules
Find the group in **Groups** and open it.
Under **Membership rules**, select **Edit rules** and update the filters.
Select **Save rules** to recalculate membership. If no filters remain, confirm **Include every active employee** before saving.
### Refreshing membership
Windmill refreshes Smart groups in the background after relevant employee changes, including profile updates, hires, archive or restore actions, and reporting-line changes. Nearby changes are batched together, and a periodic refresh helps catch missed updates.
Updates aren't instantaneous. Changes from an HR system must reach Windmill before they can affect group membership.
If you have edit access, open **Group actions > Sync now** to recalculate membership using employee information already in Windmill. This doesn't force your HR system to send fresh data.
## Syncing groups from integrations
Use a Synced group when another system already owns the member list. Syncing is one-way: source groups flow into Windmill, and Windmill groups aren't pushed back.
### Choosing which groups to sync
In **Groups**, select **Create group > Synced > Continue**.
Search the **Sync integration groups** picker. Check each group's source and mapped employee count.
Choose up to 100 groups per submission.
Select **Sync N groups**, where N is the number selected. If some groups fail, the dialog keeps the failed selections available so you can retry them.
Only active employees mapped to people in the source system enter the roster. A source group can have more members than its Windmill group if some people aren't mapped or are archived.
### What stays in sync
The source owns the group's name and membership. Change them in the source system; you can't edit them in Windmill.
Windmill refreshes linked groups periodically. Freshness also depends on when the integration collects source data. With edit access, use **Group actions > Sync now** to refresh from source data already stored in Windmill. This doesn't force a fresh fetch from the provider.
If the source is no longer active, a refresh can archive the linked group. Restoring the source can make it available again.
### Supported integrations
Sources include **Google Workspace**, **Microsoft (Outlook)**, **Salesforce**, **Slack**, and your connected **HRIS (Human Resources Information System)**. Available group types depend on the integration. Slack groups are user groups, not channels.
## Managing SCIM groups
SCIM (System for Cross-domain Identity Management) lets your identity provider provision groups automatically. These groups appear when pushed to Windmill, without the Synced creation picker.
SCIM names and membership are read-only in Windmill. Rename the group or add and remove members in your identity provider, such as Okta or Microsoft Entra ID.
With edit access, you can still manage sharing and archive the group. Deleting a provisioned group through the identity provider archives it in Windmill. Future provisioning remains controlled by the provider.
See [Sync groups from your identity provider](/security/scim-group-sync) for setup instructions.
## Groups and permissions
**Membership** determines which employees belong to a group. **Sharing** determines who can view or edit it. Being a member doesn't by itself grant permission to edit the group.
### Creating and managing groups
Creating groups and linking new integration groups require group-management permission. Admins and HR Admins have this permission in the standard roles.
Other users can edit an existing group when granted **Can edit** access. This includes sharing and archiving, plus the actions supported by its type. It doesn't make Smart, Synced, or SCIM membership manually editable.
### Viewing groups
New groups are company-visible by default. Manually created Manual and Smart groups are initially editable by their creator and group administrators. Source-created groups are initially editable by group administrators.
**Can view** access exposes the group and its full roster. Viewers can select **View sharing** to inspect access settings without changing them.
### Sharing a group
Open the group and select **Share**.
Configure access for people, groups, or reporting lines. Review general access for the company and managers too.
Choose **Can view** or **Can edit**, or remove a grant where appropriate.
Select **Save** to apply the settings.
To restrict a group, remove company-wide access and review the remaining grants. Grants add together: removing one doesn't remove access provided by another, such as a manager or reporting-line grant.
Admins and HR Admins retain access to all groups, including Restricted groups. Their built-in administrative access isn't a removable person row in the sharing dialog.
Sharing a group doesn't automatically grant access to surveys, reviews, or reports that use it. Those features have their own access controls.
### Synced groups
Edit access lets you share or archive a Synced or SCIM group. Its source-owned name and membership remain read-only, including for administrators.
## Editing group details
With edit access, open **Group actions > Edit group** on a Manual or Smart group to change its name. Source-managed details for Synced and SCIM groups aren't editable in Windmill.
You can't convert a group's type. Create a separate group if you need a different way to manage membership.
### Archiving a group
Find the group you want to archive. You need edit access.
Open **Group actions > Archive group**.
Select **Archive group** in the confirmation dialog.
Archiving hides the group from normal active lists and selectors while retaining its stored record and memberships. It doesn't delete employees.
Archiving a source-managed group in Windmill may not stop syncing permanently. A later integration sync or identity-provider update can reactivate it. Manage the source connection or provisioning for a lasting change.
## Using groups
### In pulse surveys
Choose **Groups** in the **Select participants** step when you [create a pulse](/features/pulse-surveys/choose-participants), such as a team check-in or onboarding cohort. Only Admins and HR Admins can send a pulse to groups. Groups can overlap.
### In performance reviews
Use groups when choosing [review cycle participants](/features/performance-reviews/cycles). Check the cycle's participant list before launching.
### In analytics and sharing
Use groups in [Analytics employee filters](/features/analytics) to compare segments. Where a feature supports sharing with groups, such as [skills](/features/skills) or [1:1 templates](/features/1-on-1s/templates), grant access to the group instead of maintaining individual grants.
Each feature determines when it evaluates its audience. Changing a group's roster doesn't necessarily change an already-sent survey or an existing review cycle's participants.
## FAQs
Yes. The same employee can belong to a department, a project team, and a pilot cohort.
Direct member changes require a Manual group and edit access. For Smart groups, change the rules or employee information. For Synced and SCIM groups, change the source system.
For a Smart group, first check that the changed employee information has reached Windmill. Allow time for the background refresh, or use **Sync now** with edit access. Review every rule: employees must match all filters. For Synced groups, check source data and employee mapping; **Sync now** uses data already collected by Windmill. For SCIM groups, check provisioning in your identity provider.
It may be archived or its sharing may not include you. Ask an administrator or someone with edit access to check. For an integration group that hasn't been linked yet, an administrator can use **Create group > Synced > Continue**.
Admins and HR Admins retain access by design. Restricting sharing doesn't remove their administrative permissions.
Archived employees disappear from active member lists and counts. Manual memberships are retained and can appear again when the employee is restored. Smart membership is recalculated against active employees, and integration refreshes rebuild Synced membership from active mapped employees.
Use **Create group > Synced > Continue** to select integration groups. SCIM groups arrive through identity-provider provisioning instead.
No. Group syncing is inbound only. Manual and Smart groups stay in Windmill.
No. Other groups aren't available as Smart-group rules.
Use **Archive group** to remove it from active use while keeping the stored record. For a source-managed group, also manage its source or provisioning if you need it to stay inactive.
# Inviting Members
Source: https://help.gowindmill.com/org-chart/inviting-team-members
Invite people to Windmill and send welcome messages to existing members by email, Slack, or both.
Invite employees to give them access to the Windmill Dashboard and Windy in Slack. Send a **welcome message** to tell an existing member how to access Windmill. You can send the first welcome message or send it again at any time.
Member access and welcome messages are separate. A person can have member access without a welcome message. Sending a welcome message does not add a new member or change their role.
An **employee** is a person in your org chart. A **member** is an employee or another person who has workspace access. A **user** is the sign-in identity linked to a member. These records have different purposes.
## Who can invite members
Admins, HR Admins, and Integration Managers can invite employees across the company and assign any available role.
Managers can also invite direct and indirect reports when **Allow managers to invite reports** is enabled in **Settings > Security**. Managers can only:
* Invite employees in their reporting subtree
* Assign the Team Member role
Managers cannot invite a person who is not already in their reporting subtree. An Admin, HR Admin, or Integration Manager must handle that invitation.
## Sending welcome messages manually
Admins, HR Admins, and Integration Managers can send welcome messages from [Settings > Members](https://app.gowindmill.com/COMPANY/config/members). You can notify active members, including members who have already signed in or received a welcome message.
Choose **Email**, **Slack**, or both. Slack requires a connected Slack integration and a matched Slack account for the member. You can send a Slack welcome message again even if Windy has welcomed the member before.
### Send to one member
1. Open the member's row menu and select **Send welcome message**.
2. Select **Email**, **Slack**, or both, then select **Send welcome message**.
### Send to multiple members
To find members who have not been sent a welcome message, set **Welcome last sent** to **Never sent**.
Select individual rows or use the select-all checkbox. Select **Send welcome message**.
Select **Email**, **Slack**, or both, then select **Send welcome message**. You can select up to 1,000 members at a time.
### Check welcome and sign-in activity
**Welcome last sent** replaces **Invite last sent**. It shows the most recent welcome message send time. Point to the date to see the exact time. The date can take a few seconds to update. It does not confirm that the member read the message or signed in.
You can sort and filter the Members page with these fields:
| Field | Filter options |
| - | - |
| **Member since** | Date range |
| **Last login** | Date range, **Has logged in**, or **Never logged in** |
| **Welcome last sent** | Date range, **Sent**, or **Never sent** |
After the welcome date updates, members no longer match the **Never sent** filter and leave the filtered list.
### Welcome messages with SSO
Manual welcome messages are available with or without single sign-on (SSO). You can also send them to existing members managed through SCIM or Rippling, even when automatic onboarding notifications are off.
For access setup, see [SSO and SCIM](/security/sso-and-scim). To notify members automatically when they are provisioned, see [Sending Invites with Automatic Provisioning](/security/sending-invites-with-automatic-provisioning).
## Inviting members across the company
Admins, HR Admins, and Integration Managers can use the Members page.
If SCIM or Rippling manages member access, add members through that provider. You can still send welcome messages from the Members page.
Open [Members](https://app.gowindmill.com/COMPANY/config/members), then select **Invite members**.
Add one or more work email addresses. Select the role that most invitees need. You can change an individual role in the next step.
Review the employee records that Windmill matches. Add missing names, managers, job titles, or other required details.
Review each role and manager assignment. Under **Invitation delivery channels**, select **Email**, **Slack**, both, or neither. Slack is available only when Slack is connected.
Select **Send Invites** when you chose a notification channel. Select **Add Members** when you chose no notification channel.
Use a work email that is associated with the employee. For SAML single sign-on (SSO), the primary invitation email must match the SAML sign-in email.
## Inviting your reports
When manager invitations are enabled, a manager can select **Invite members** and choose uninvited employees from their reporting subtree.
This action is available from the **Invite members** quick link. Managers do not get access to **Settings > Members**.
Choose one or more direct or indirect reports who do not have member access.
Choose the email address to use for each employee's invitation.
Windmill assigns the Team Member role. Check each employee's manager and job title, and review the notification channels. Then send the invitations or add the members without a notification.
If **Invite members** is not available, ask an Admin to check **Allow managers to invite reports** in **Settings > Security**.
Windmill notifies active Admins when a manager adds members. The notice lists the new members and explains that the change can affect billing.
## Welcome messages when adding members
Adding a member and notifying the member are separate actions. You can use:
* **Email:** Sends an invitation email to the member's work email.
* **Slack:** Sends a welcome message from Windy in a Slack direct message.
* **Email and Slack:** Sends both notifications.
* **No notification:** Creates member access without sending a message. You can send a welcome message later from the Members page.
Adding a member does not provide access to private source content. Google documents, meetings, Slack channels, and other connected content keep their applicable source and feature permissions.
## Managing pending invitations
The Members page shows an invitation status beside the member's email address.
### Pending invitation
A pending-invitation indicator means that the member has a pending invitation and has not signed in. Check **Welcome last sent** to see whether a notification was sent.
Select the indicator to view the status. Use **Change Invite Email** if you must cancel the old invitation and send a new invitation to a different address.
### Missing invitation
A missing-invitation indicator means that the member exists but no active invitation is available.
Select the indicator, then select **Resend Member Invite**. Windmill sends the invitation by email and Slack when those channels are available.
## Automatic member provisioning
The method that creates the employee record does not always create member access.
| Method | Employee record | Member access | Automatic notification |
| - | - | - | - |
| Manual invitation | Created or matched during the invitation | Created when you finish the invitation | Email, Slack, both, or none |
| SAML SSO without SCIM | Can be matched by email | Can be created on the first successful SSO sign-in | None |
| SCIM or Rippling | Provisioned from the identity provider | Provisioned from the identity provider | Optional: email, Slack, or both (off by default) |
**Provisioning via SCIM or Rippling does not send welcome messages by default.** Members are created automatically through [SCIM](/security/sso-and-scim) or [Rippling](/integrations/rippling). Use **Send welcome message** to notify existing members manually. Turn on [onboarding notifications](/security/sending-invites-with-automatic-provisioning) in **Settings > Security** to notify members automatically when they are provisioned.
## Roles after invitation
The member receives the role that was selected during invitation or provisioning. Managers are defined by the org chart, not by a separate role.
See [Permissions and Access](/permissions-and-access) for the current role matrix and instructions to change a role.
## First access
After a manual invitation:
1. The member opens the email or Slack message, if you sent one.
2. The member signs in with the authentication email on their member record.
If you did not send a notification, use **Send welcome message** on the Members page or share the Windmill sign-in link yourself.
## FAQs
For SAML SSO, the primary invitation email must match the SAML sign-in email. For other sign-in methods, use an email associated with the employee. On **Settings > Members**, select the pending-invitation indicator beside the email address and use **Change Invite Email** when you must replace the primary invitation email.
An Admin, HR Admin, or Integration Manager can invite the employee. Without a manager, the employee has no upstream manager scope in the org chart. Assign the correct manager when you want reporting-subtree access to apply.
If your Human Resources Information System (HRIS) only syncs employee records, invite the employees to give them member access. SCIM and Rippling can create member access automatically. For these members, use **Send welcome message** to notify them without adding them again.
Not by default. Use **Send welcome message** on the Members page to notify existing members by email, Slack, or both. To notify members automatically when they are provisioned, turn on [onboarding notifications](/security/sending-invites-with-automatic-provisioning) in **Settings > Security**.
The **Remove member** action archives the member record. Windmill keeps the employee record and historical data. You can reactivate a manually managed member from the Members page.
# Managing Your Org Chart
Source: https://help.gowindmill.com/org-chart/managing-your-org-chart
Manage your Windmill org chart — reporting lines, departments, managers, and direct reports — and keep it in sync with your HRIS or edit it manually.
Your org chart stores the employee roster and reporting structure in Windmill. It defines manager reporting scope and supports team workflows across the product.
An employee can appear in the org chart without having member access to Windmill. See [Inviting Members](/org-chart/inviting-team-members) for the difference between an employee and a member.
## Why the org chart matters
Windmill uses your org chart to control visibility throughout the platform:
**Manager scope** Managers can use their direct and indirect reporting scope in supported features. Roles, delegation, feature privacy, and source permissions can provide or limit other access.
**Reporting structure** The org chart defines who reports to whom. This supports Feedback, 1:1s, and reports in Windmill.
**Team insights** Managers see aggregated data about their direct reports and teams based on the org chart structure.
Keep your org chart up to date as employees join, leave, or change roles. See [Permissions and Access](/permissions-and-access) for the complete access model.
## Org chart data sources
### If you have an HRIS connected
If you have an HRIS connected (BambooHR, Rippling, Gusto, Paylocity, Justworks, ADP, Workday, etc.), your org chart automatically syncs from your HR system.
**What syncs automatically:**
* Employee roster (who's on your team)
* Reporting structure (who reports to whom)
* Job titles and departments
* Manager assignments
**Sync timing:** Your org chart syncs daily from your HRIS. Changes typically appear in Windmill within 24 hours.
You can choose which org chart fields sync from your HRIS and which you edit in Windmill. Learn how to [manage which fields sync to each employee](/org-chart/employee-field-sources).
### If you don't have an HRIS
If you don't have an HRIS connected, you need to manage your org chart manually in Windmill. You can still define manager and direct-report relationships manually by assigning each employee a manager in the org chart.
**Data sources without HRIS:** Windmill can pull partial org chart data from:
* Google Workspace (email directory)
* Slack (team members)
However, these systems don't provide complete reporting structures. You'll need to manually assign managers and update the org chart as your team changes. Windmill uses each employee's assigned manager to decide which direct reports that manager can see in reports, 1:1s, and team views.
## Maintaining your org chart
### Editing the org chart manually
You can edit your org chart directly in Windmill. For example, if you're piloting Windmill before connecting HiBob or another HRIS, you can assign employees to their managers manually so managers can see their direct reports' data.
**To edit a single employee:**
Open the [Org Chart](https://app.gowindmill.com/COMPANY/config/org-chart-v3).
Select the employee row to open the employee details.
On the **Info** tab, update fields such as the employee's name, job title, or manager. If a field syncs from an integration, editing it creates a [manual override](/org-chart/employee-field-sources#editing-a-synced-field) for that employee.
Select **Save changes**.
After you save the change, Windmill updates the reporting relationship for that employee.
**To bulk update managers:**
If you're restructuring teams or adding a new manager, you can update multiple employees at once:
On **Settings > Org Chart**, select the employee rows that you want to change.
Choose the bulk manager action.
Select the new manager and review the number of affected employees.
Save the bulk change.
This is helpful when onboarding a new manager or reorganizing teams.
### Managing employee groups
Use the **Groups** section of an employee's profile to see their group memberships. With edit access to a Manual group, you can add or remove that membership directly. Smart, Synced, and SCIM memberships are displayed but cannot be changed manually.
For Smart groups, update the membership rules or the employee information they use. For Synced and SCIM groups, change membership in the source system. See [Groups](/org-chart/groups) for creation, sharing, and membership instructions.
### Adding new employees
If you don't have an HRIS and need to add someone to Windmill, see [Inviting Members](/org-chart/inviting-team-members) for detailed instructions.
### Org chart accuracy
**Check for employees without managers** An employee without a manager has no upstream manager scope. This is normal for the top-level leader. Other roles and feature permissions can still apply.
**Update when people leave** When someone leaves your organization, make sure they're removed from the org chart (or archived in your HRIS). This prevents them from appearing in active team lists.
Before you archive a manually managed employee, complete these steps:
* If the employee has member access, use **Remove member** in **Settings > Members**.
* If the employee has direct reports, assign those reports to a new manager.
Windmill doesn't let you archive an employee who has member access or direct reports. When an integration sync archives a manager, Windmill moves each active direct report to the archived employee's manager. If you later unarchive the employee, Windmill does not restore the previous reporting relationships.
**Reflect organizational changes** When someone changes roles, gets promoted, or moves to a different team, update their manager and title promptly. This ensures reports accurately reflect your current structure.
## Viewing your org chart
To view your org chart:
1. Go to **Settings > Org Chart**
2. You'll see a list of all employees in your system
By default, this list shows:
* Employee names
* Job titles
* Job levels
* Managers
Use **Customize columns** to show other columns, such as platform access.
The manager field controls upstream reporting scope. It does not control every report or feature. Company-wide roles and feature-specific access can still include an employee who has no manager.
Keep your org chart up to date as people join and leave. An accurate org chart ensures the right people have access to the right data.
## FAQs
Fix it in your HRIS. The next sync brings the corrected structure into Windmill. If you need the fix right away, you can update the manager in Windmill instead, which creates a manual override and stops your HRIS from updating that field. See [how to manage which fields sync to each employee](/org-chart/employee-field-sources).
No. Windmill supports one direct manager per employee. If another person needs supported manager-like visibility, use [access delegation](/permissions-and-access#access-delegation).
Yes. If you don't have an HRIS connected, go to **Settings > Org Chart**, open the employee's profile, and set the **Manager** field. That employee will appear as the manager's direct report in Windmill.
The top-level leader usually does not have a manager in Windmill. This is expected. Other employees should usually have a manager so that manager reporting scope is correct.
Add them to the org chart like any other employee. Assign them to their manager so they appear in team reports. If needed, use job titles or departments to distinguish contractors from full-time employees.
# Permissions and Access
Source: https://help.gowindmill.com/permissions-and-access
Understand Windmill roles, manager scope, delegated access, and the visibility rules that control what each member can see and manage.
Windmill uses several controls together to determine access. A member's **role** controls workspace administration. The org chart defines manager scope. Each feature and connected system can also apply its own visibility rules.
## Roles and capabilities
Windmill has five roles: **Admin**, **HR Admin**, **Integration Manager**, **Data Analyst**, and **Team Member**.
Managers do not have a separate role. A Team Member can be a manager when the org chart gives them direct or indirect reports.
| Capability | Admin | HR Admin | Integration Manager | Data Analyst | Team Member |
| - | - | - | - | - | - |
| Invite members across the company | Yes | Yes | Yes | No | No |
| Change member roles | Yes | Yes | Yes | No | No |
| Manage billing | Yes | Yes | Yes | No | No |
| Manage SSO settings | Yes | Yes | Yes | No | No |
| Connect and configure company integrations | Yes | Yes | Yes | No | No |
| Manage the org chart | Yes | Yes | No | No | No |
| Create groups and link integration groups | Yes | Yes | No | No | No |
| Manage access delegation | Yes | Yes | No | No | No |
| Manage performance review cycles | Yes | Yes | No | No | No |
| Send a Pulse to the whole company | Yes | Yes | No | No | No |
| View analytics for all employees | Yes | No | No | Yes | No |
When **Allow managers to invite reports** is enabled in **Settings > Security**, managers can invite direct and indirect reports as Team Members. This permission does not let a manager invite people outside their reporting subtree or assign an administrative role.
### Admin
Admins have all workspace capabilities. They can manage company settings, integrations, members, roles, billing, the org chart, groups, and company features.
Admin status does not by itself provide unrestricted access to all employee content. Source permissions and feature-specific privacy rules still apply.
### HR Admin
HR Admins can manage people operations and many company settings. This includes members, roles, billing, single sign-on (SSO), integrations, the org chart, groups, access delegation, performance review cycles, company-wide 1:1 templates, and supported company features.
HR Admin status does not provide the company-wide analytics permission. It also does not provide unrestricted access to employee content.
### Integration Manager
Integration Managers can manage company integrations, members, roles, billing, and SSO settings. This role does not grant permission to manage the org chart, create groups, manage access delegation, or manage performance review cycles. They can edit an existing group if its sharing grants them edit access. They do not get company-wide employee visibility from this role.
### Data Analyst
Data Analysts can view analytics for all employees. They cannot manage members, billing, integrations, the org chart, or other company settings.
### Team Member
Team Members use the standard Windmill features that their company enables. They can view their own information. Managers can also view supported information for people in their reporting subtree.
## Group access
Group sharing controls access to each group's full roster separately from workspace roles. New groups are company-visible by default. Members with **Can edit** access can manage an existing group, including its sharing and archive action, within the restrictions of its type. Only Manual groups allow direct member changes; Smart groups use rules, and Synced and SCIM groups have source-owned names and membership.
Admins and HR Admins can create groups, link integration groups, and access all groups, including **Restricted** groups. Their built-in access cannot be removed in the sharing dialog. Other members need an appropriate sharing grant to view or edit a restricted group.
Sharing grants are additive. Removing a person's direct grant doesn't remove access they receive through company, manager, group, or reporting-line sharing. Group membership alone doesn't grant edit access, and access to a group doesn't grant access to surveys, reviews, or reports that use it.
See [Groups and permissions](/org-chart/groups#groups-and-permissions) for defaults and sharing instructions.
## Changing a member's role
Admins, HR Admins, and Integration Managers can change roles.
Open [Members](https://app.gowindmill.com/COMPANY/config/members).
Find the member and select **Change role** from the row actions menu.
Review the role description, then select the role that the member needs.
Select **Update role** to save the change.
An Admin has all workspace capabilities. Only assign this role to a trusted member who needs full workspace administration.
## Org chart scope
The org chart defines each manager's reporting subtree. This scope includes direct and indirect reports.
The reporting subtree is one input to access. It does not override feature privacy or source-system permissions. For example, a manager relationship does not provide access to a private Google document, a private Slack channel, or private 1:1 content.
If an employee has no manager, no upstream manager receives access through the org chart. This is normal for a top-level leader. Other role and feature permissions can still apply.
### Manager changes
A manual manager change updates the old and new reporting scopes.
## Content visibility
Windmill combines these rules when it checks content access:
* **Workspace role:** Controls administrative actions and specific broad permissions, such as company-wide analytics.
* **Org chart:** Defines manager and reporting-subtree scope.
* **Feature rules:** Reviews, Pulses, 1:1s, and other features can have their own sharing and privacy settings.
* **Source permissions:** Connected content can keep the access rules from its source system.
* **Delegation:** Adds supported manager-like visibility for a selected reporting scope.
An administrative role does not replace the other controls.
## Feedback access
Feedback has its own audience rules. When the Feedback page is enabled, authors can select from audiences allowed by company settings. Options include the recipient, the direct manager, the manager hierarchy, the recipient and managers, or everyone in the company. Authors retain access to their feedback.
Admins and HR Admins can configure Feedback settings and read feedback about other people. This management access does not give them private feedback about themselves. They can read feedback about themselves when its audience otherwise permits access.
If a recipient has no manager, they can read **Manager only** and **Manager hierarchy** feedback about themselves. Some feedback can hide the author's identity even when its content is visible.
Request access is separate from feedback access. Members can find their own outgoing requests and incoming requests that need their response. Management access does not provide access to requests between other people.
See [Feedback visibility](/features/continuous-feedback#feedback-visibility) and [Feedback settings](/company-settings/feedback).
## 1:1 auditability
1:1 content is private by default. Admin or HR Admin status alone does not provide access to all 1:1 notes.
When 1:1 auditability is enabled, Windmill can provide read-only access to shared manager-and-report 1:1 history:
* Managers can audit 1:1s in their reporting subtree when manager audit access is enabled.
* HR Admins can audit all manager-and-report 1:1s when HR Admin audit access is enabled.
Audit access does not include Private Notes, participant-specific prep topics, Catch Me Up reports, or recording access.
## Access delegation
Access delegation gives one member supported manager-like visibility into another person's reporting subtree. The delegated member can see that person and everyone who reports up to them, directly or indirectly — the same downward scope a manager has. It does not extend upward: the delegated member does not gain visibility into anyone above that person in the org chart. It is useful for an interim manager, an assistant, or a People team member who needs a specific reporting scope without an org-chart change.
### Delegation limits
Delegation can provide access to supported team data and reports. It does not:
* Provide access to 1:1 notes or agendas
* Change Google document or meeting permissions
* Change Slack channel membership
* Let the delegated member impersonate another member
* Add permission to edit Pulses or company settings
* Override feature-specific privacy rules
### Adding delegation
Admins and HR Admins can add delegation. The manager and the member who receives access must each have an employee record.
Open [Access Delegation](https://app.gowindmill.com/COMPANY/config/access-delegation).
Start a new delegation rule.
Choose the manager whose reporting scope you want to share.
Choose the member who needs the delegated scope, then select **Delegate access**.
Delegation always resolves against your current org chart, not a snapshot taken when the rule was created. As people move in or out of that person's reporting subtree, the delegated scope follows along. Changes, including adding or removing a rule, usually take effect within a few minutes.
### Removing delegation
To remove access, go to **Settings > Access Delegation** and select **Remove** next to the delegation rule. Windmill refreshes access right away.
## Connected-system permissions
For connected content that has source-level access controls, Windmill keeps that permission context. Examples include:
* A private Google document stays limited to people who can access it in Google Drive.
* A meeting transcript stays limited by the meeting and source access rules.
* A private Slack channel does not become visible to people outside that channel.
Some integrations provide company-level activity or usage data instead of user-scoped content. Those integrations use the applicable Windmill feature permissions. For example, Admins and Data Analysts can view company-wide analytics.
## FAQs
Admins have all workspace capabilities. HR Admins have broad people-operations and company-setting capabilities, but they do not have every Admin capability. For example, HR Admins do not receive company-wide analytics access from their role.
Use access delegation when someone needs a supported manager reporting scope. Windmill does not set an end date for a delegation rule. Remove the rule when the access is no longer required.
Yes. Assign the Data Analyst role. This role provides analytics for all employees without workspace administration permissions.
When you change a manager in Windmill, the old manager loses access and the new manager gains access at the same time, usually within a few minutes. When the change comes from your HRIS, access updates after the next sync brings the change into Windmill.
Admins, HR Admins, and Integration Managers can create and manage company integrations. Any member can create a personal integration if they have the required permission in the connected system.
Access ends when the member record is archived. In Windmill, use **Remove member** in **Settings > Members** to end access right away. You must do this before you can archive the employee. When your HRIS marks an employee as inactive, Windmill archives their member access on the next sync. Historical data (like past feedback and reviews) is preserved.
Windmill requires at least one active Admin. Assign the Admin role to another active member before you change or remove the last Admin. A member also cannot remove their own member access.
Windmill provides Admin, HR Admin, Integration Manager, Data Analyst, and Team Member roles. Contact [support@gowindmill.com](mailto:support@gowindmill.com) if your organization needs a different access model.
# Running Pulses on Windmill
Source: https://help.gowindmill.com/running-pulses-on-windmill
Customer-facing announcement template for introducing Windmill pulse surveys to your team — what to expect from Windy in Slack and how responses are used.
Pulse surveys on Windmill are short, focused surveys. Windy sends them in Slack, and people can also answer in the Windmill platform. Use them to learn how your team feels about their work, their blockers, an all-hands meeting, and more, without the overhead of a formal survey tool or a long email chain.
Anyone in Windmill can create a pulse: managers, HR teams, or individual contributors. Results appear on the Windmill platform as people respond, and help you spot issues before they become problems.
## What you can use pulses for
Pulses are flexible. Some common uses include:
* **Engagement surveys**: Measure engagement with rating, scale, and eNPS questions, and track the results over time.
* **Team health checks**: How is morale? Are people motivated or burnt out?
* **Project feedback**: Collect feedback from the people involved after a launch or a cross-team project, while the work is still fresh.
* **Meeting or event feedback**: How did the all-hands land? What did people take away from the offsite?
* **Blockers**: What is slowing your team down right now?
* **Ongoing check-ins**: Weekly or monthly pulses to track trends over time.
## How to send a pulse
1. Go to **Pulse surveys** in the Windmill Dashboard.
2. Select **New pulse** and describe what you want to learn. You can also pick an idea or select **Create from scratch**.
3. Review the questions that Windy suggests. Edit them, change their types, or add your own.
4. Select participants: specific people, your team, groups, or everyone.
5. Choose whether responses are **Named** or **Anonymous**.
6. Send yourself a test, then launch the pulse. You can send it now or schedule it.
Windy sends the pulse in Slack and reminds people who have not responded. People can answer in Slack with Windy, or fill in the survey in the Windmill platform. See [Create a pulse](/features/pulse-surveys/create-a-pulse) for the full steps.
## Viewing responses
Responses appear on the pulse's page in the Windmill Dashboard as people submit them. The **Insights** tab shows response rates and results for each question. The **Responses** tab lists each response. You can filter and compare results by job title, group, and reporting line.
For anonymous pulses, Windmill hides any result that has fewer than three responses, so no one can work out who said what. See [Anonymity and privacy](/features/pulse-surveys/anonymity-and-privacy).
For named pulses, you can also turn on [live response streaming](/features/pulse-surveys/live-response-streaming) to post answers to a Slack channel as people respond. When a run ends, Windmill can send a report to the people you choose.
See [Named and anonymous pulses](/features/pulse-surveys/named-and-anonymous-pulses) and [Response sharing](/features/pulse-surveys/response-sharing) for who can see the results.
## For managers: best practices
* **Start simple.** A pulse with two or three questions gets more responses than a long survey.
* **Be consistent.** Recurring pulses, weekly or monthly, let you track trends over time. Set a recurring schedule and let Windy handle the rest.
* **Close the loop.** Share a summary of the results with your team. People respond to future pulses more often when they see that their input leads to action.
* **Use anonymous mode thoughtfully.** Anonymous pulses can surface honest feedback on sensitive topics, like team dynamics or manager feedback. You cannot change a pulse from named to anonymous after you create it, so choose before you create it.
* **Check results in the dashboard.** The **Insights** tab gives you the full picture, and you can ask Windy for takeaways.
## For ICs: what to expect
* **You can answer in Slack or in the platform.** When a pulse is sent to you, Windy messages you in Slack. Reply to Windy there, or open the survey from **Pulse surveys** in Windmill and fill it in.
* **Your answers save as you go.** Windmill keeps your answers as a private draft until you submit them. You can edit your response after you submit it, or withdraw it.
* **It takes a few minutes.** Pulses are intentionally short. If one feels long, tell your manager or admin. That is useful feedback.
* **Anonymous means anonymous.** If a pulse is anonymous, your answers are not linked to your name. The survey tells you before you start whether responses are named or anonymous, and who can see them.
* **Your responses matter.** Pulse results show your manager and your company how the team is doing. Thoughtful responses help your team improve.
## Support
If you have questions, please reach out to me, or to Windmill's support team at [support@gowindmill.com](mailto:support@gowindmill.com).
## Where to learn more
* [Pulse overview](/features/pulse-surveys)
* [Respond to a pulse](/features/pulse-surveys/respond-to-a-pulse)
# AI and Data Usage
Source: https://help.gowindmill.com/security/ai-data-usage
How Windmill uses AI, which models process your data, what is retained, and how Windmill protects sensitive information across Windy and platform features.
Windmill leverages AI to clean, summarize, parse, and aggregate data to make it more useful for HR teams and managers. This page explains how we use AI, what data the AI processes, and how we protect your information.
## AI models and providers
Windmill uses state-of-the-art AI models from trusted providers:
* [OpenAI](https://openai.com/)
* [Anthropic Claude](https://www.anthropic.com/claude)
* [Google Gemini](https://deepmind.google/technologies/gemini/)
These models power Windy, our AI agent, to help with feedback collection, 1:1 preparation, performance review drafting, and more.
**Zero data retention** Windmill has zero data retention enabled across all AI model providers. This means:
* Your data is not stored by our AI providers after processing
* API calls are processed and immediately discarded
* No logs or caches of your data are retained by OpenAI, Anthropic, or Google
Zero data retention ensures that your company's data never becomes part of AI provider training datasets or storage systems. In the future, if we choose to use other model providers, we only use providers that support zero data retention policies.
## AI security controls
AI features follow the same access controls as the rest of Windmill. Windy cannot retrieve or use content that the requesting member cannot access. Windmill application services enforce these permissions; permission decisions are never delegated to AI models.
**Company isolation** Search indexes and embeddings are isolated by company. Windmill checks resource-level permissions when it retrieves content. Embeddings are encrypted at rest and deleted with their linked source data.
**Controlled actions** Windy uses defined tools with validated inputs. Model-generated requests remain subject to the same permissions as the member making the request. Windy does not execute model-generated code, browse the internet, or modify external systems.
**Output handling** Windmill validates tool inputs and sanitizes AI-generated web content before it is displayed or used in an action.
## Data retention
Windmill retains data from customers as long as they have an active engagement with Windmill. Customers have the right to request complete data deletion after ending an engagement.
## Telemetry
Zero data retention applies to our AI model providers. Windmill records AI inputs, outputs, and tool activity as product telemetry. Access is limited to authorized personnel and is protected by audit logs.
Customers can request AI interaction and tool activity logs for their Windmill environment for audit or export.
## Model training
**Our AI model providers do not train on your data.** They operate under zero data retention.
* Windmill does not build or train general-purpose AI models from customer data
* Windmill may use anonymized customer data to improve its own models. Before use, we remove all information that could identify a customer, individual, or situation
* These models are used only to operate and improve Windmill. We never offer them as a service to other parties
* You can opt out at any time. Email [support@gowindmill.com](mailto:support@gowindmill.com), and we will confirm it in writing
Your data stays your data. Anonymized data never contains information that could identify a customer, individual, or situation.
## Prompt engineering
The optimization of AI performance is a continuous endeavor at Windmill. Our team regularly examines telemetry logs to refine and improve AI prompts, enhancing the relevance and accuracy of AI-generated content.
This process is conducted with the utmost respect for privacy—no private customer data is incorporated into prompts or used in any unauthorized manner.
## Model accuracy and quality
Generative AI, while powerful, can sometimes yield unexpected outcomes. Windmill is committed to mitigating instances of low-quality, incoherent, incomplete, or insensitive content.
We employ rigorous quality control measures and are dedicated to iterative enhancements of our AI capabilities. If you encounter any issues with AI-generated content, please report them to [support@gowindmill.com](mailto:support@gowindmill.com).
## Continuous improvement
Windmill values customer feedback as an essential component of our AI development cycle. We're dedicated to the ongoing enhancement of our AI solutions and encourage clients to provide input and report any issues.
Your feedback directly influences our improvement strategies and helps us serve you better. Reach out to [support@gowindmill.com](mailto:support@gowindmill.com) with any concerns or suggestions.
# Data Privacy and Collection
Source: https://help.gowindmill.com/security/data-privacy
How Windmill collects, stores, processes, and protects your data, including encryption, data residency, retention, and how customer information is handled.
At Windmill, privacy and security are at the core of what we do. We act as a central hub for your cloud service providers, integrating them into a single place to help improve company efficiency and operations.
## What Windmill collects
Windmill connects to your authorized business applications through their APIs. We only collect data that's necessary to provide our service and only from systems you explicitly authorize.
**From your HRIS (HR system)** We collect basic organizational data to build your org chart and roster: first and last name, work email, job title, department, manager and reporting structure, start date, employment status, and gender (if your HRIS provides it).
**What we do NOT collect from HRIS** Home addresses, Social Security Numbers, government IDs, dates of birth, phone numbers, pronouns, compensation, payroll, benefits, bank account details, and employment contracts. These fields are never requested or stored, even if your HRIS contains them.
See [Personally Identifiable Information](/security/pii) for the full canonical list of fields and their sources.
**From connected productivity tools** When you connect tools like Slack, Google Workspace, GitHub, Jira, or Linear, we collect activity data that helps Windy understand collaboration patterns and generate insights. The specific data collected depends on which integrations you enable.
## No browser installations
Windmill does NOT install anything on employee computers or in browsers. We only connect with the APIs of explicitly authorized business applications.
* We collect as little or as much as authorized by the business owner
* Windmill simply pieces together data that already exists in your connected systems
## Privacy and access controls
**Connected-content permissions** When connected content has source-level access controls, Windmill keeps that permission context. For example, a private Google document or Slack channel does not become visible to people who cannot access it in the source. Some integrations provide company-level activity or usage data instead. Windmill applies the permissions for that feature to this data.
**Org chart scope** The org chart defines direct and indirect reporting subtrees. Managers can use this scope in supported features. Roles, delegation, source permissions, and feature-specific privacy rules can provide or limit other access.
**Admin visibility** Windmill Admins manage workspace configuration, integrations, billing, and access settings, but admin status alone does not grant unlimited visibility into every employee's content. Source permissions, org-chart scope, delegation, and feature-specific privacy rules still apply. Admins and Data Analysts can view company-wide analytics where the analytics feature provides that access.
**1:1 auditability** 1:1 auditability is an explicit company-level setting for compliance, employee relations, and manager support. When enabled, authorized managers or HR Admins can review shared manager/direct 1:1 notes and history in a read-only audit view. Private Notes, participant-specific prep topics, Catch Me Up reports, and recording access are excluded.
**Access delegation** Admins and HR Admins can give one member supported manager-like visibility into another manager's reporting scope. Delegation does not provide access to the other member's account and does not let the delegated member impersonate that person.
Delegation does not provide all content that the selected manager can see. It excludes 1:1 notes and agendas, does not change Google or Slack permissions, and does not override feature-specific privacy rules. See [Permissions and Access](/permissions-and-access#access-delegation) for all limits.
Delegation changes start an access refresh after you save the rule. Only Admins and HR Admins can add or remove delegation rules.
## Historical data
When you connect systems, the amount of historical data varies by integration. For Reviews and 1:1s, Windmill will collect data on a go-forward basis from when the system was connected. If you are interested in capturing more historical data, let us know during onboarding or reach out via your shared support Slack channel.
## Data retention
Windmill retains data from customers as long as they have an active engagement with Windmill. You have the right to request complete data deletion after ending an engagement with Windmill.
## Additional resources
For more detailed information about our privacy practices:
* Read our [Privacy Policy](https://gowindmill.com/p/privacy-policy)
* Visit our [Trust Center](https://app.drata.com/trust/7bd6416b-c1ac-4c6c-afb4-a015fe83db6b)
* Contact us at [support@gowindmill.com](mailto:support@gowindmill.com)
# Domain allowlisting
Source: https://help.gowindmill.com/security/domain-allowlisting
Restrict who can be invited to your Windmill account by email domain so only people from approved organizations can join your workspace as members.
Domain allowlisting lets you control which email domains can be invited to your Windmill account. When set, members can only be invited if their email address matches one of the allowed domains.
## How it works
Admins, HR Admins, and Integration Managers can configure an allowlist of zero or more domains. When someone is invited to Windmill:
* If the allowlist is **empty**, anyone can be invited regardless of email domain.
* If the allowlist contains **one or more domains**, only people with email addresses on those domains can be invited.
## Default behavior
Domain allowlisting is **on by default**. When your Windmill account is created, the domain of the email used to create the account is automatically added to the allowlist.
For example, if your account was created with `jane@acme.com`, the `acme.com` domain is added to the allowlist automatically. Only users with `@acme.com` email addresses can be invited until you change the configuration.
## Managing the allowlist
Admins, HR Admins, and Integration Managers can update the domain allowlist at any time from **Settings > Security**:
* **Add a domain** to permit invites for a new email domain (for example, a subsidiary or contractor domain).
* **Remove a domain** to stop allowing new invites from that domain. Existing members are not affected.
* **Clear all domains** to disable the restriction entirely and allow invites from any domain.
## Best practices
* Keep the allowlist tight. Only add domains your organization controls or trusts.
* When working with contractors or partners on a different domain, add their domain temporarily and remove it when the engagement ends.
* If you need to invite a one-off external user, add their domain, send the invite, then remove the domain.
## FAQs
Nothing. The allowlist only controls who can be **invited**. Existing members keep their access.
Yes. Clear all domains from the allowlist to allow invites from any domain.
Admins, HR Admins, and Integration Managers can manage the allowlist from **Settings > Security**.
# Personally Identifiable Information (PII)
Source: https://help.gowindmill.com/security/pii
What personally identifiable information Windmill collects, under what conditions it's processed, and how PII is stored, accessed, and protected over time.
Windmill is designed to work with the data that already exists in your business systems. This page explains what personally identifiable information (PII) Windmill collects and the conditions under which it's stored.
## The core principle
**Windmill stores the data your organization makes available to it—no more and no less.**
If you connect a system to Windmill and grant access to certain data, Windmill will store and process that data to provide its services. If data is private or restricted in the source system, Windmill does not have access to it.
## What Windmill collects from HRIS
This is the canonical list of fields Windmill syncs from your HR system. Names, emails, job titles, managers, departments, and gender are personal information — Windmill stores them to build your org chart and power reviews, 1:1s, and feedback.
| Field | Collected? | Source |
| - | - | - |
| First and last name | Yes | HRIS (falls back to Google Workspace or Slack if no HRIS is connected) |
| Work email | Yes | HRIS (falls back to Google Workspace or Slack) |
| Job title | Yes | HRIS |
| Job level | Yes, if your HRIS provides it | HRIS |
| Department or team | Yes | HRIS |
| Manager and reporting structure | Yes | HRIS |
| Work location | Yes, if your HRIS provides it | HRIS |
| Start date | Yes | HRIS |
| Employment status (active / terminated) | Yes | HRIS — used to auto-archive employees who leave |
| Gender | Yes, if your HRIS provides it | HRIS |
| Profile picture | Yes | Slack, Google Workspace, Outlook, or SCIM (not your HRIS) |
| Home address | No | — |
| Social Security Numbers (SSNs) and government IDs | No | — |
| Date of birth / birthday | No | — |
| Phone number | Not from your HRIS | Slack, Google Workspace, Outlook, or SCIM, if provided |
| Pronouns | Not from your HRIS | Slack or SCIM, if provided |
| Compensation, salary, or pay rate | No | — |
| Payroll information | No | — |
| Benefits information | No | — |
| Bank account or credit card numbers | No | — |
| Employment contracts | No | — |
These "No" fields are never requested or stored, even if your HRIS contains them.
## What Windmill collects from other integrations
When you connect productivity tools like [Slack](/integrations/slack), [Google Workspace](/integrations/google-workspace), GitHub, Jira, or Linear, Windmill stores the data it has access to. This can include PII if users have shared it in those systems.
**Examples of when Windmill would store PII:**
* If someone posts a credit card number in a Slack channel where Windy is present, Windmill stores that message
* If you send PII to Windy in a direct message, Windmill stores it
* If you add sensitive information to private notes or 1:1 agendas in Windmill, Windmill has access to it
* If background checks, application materials, or other sensitive documents are stored in a Google Drive that Windmill has access to, Windmill may store that content
**Examples of when Windmill would NOT store PII:**
* If a document is in a Google Drive that isn't connected to Windmill, Windmill cannot see it
* If a Slack channel is private and Windy is not added to it, Windmill does not have access
* If files are stored in systems you haven't connected to Windmill, Windmill cannot see them
## Controlling what Windmill accesses
You have control over which integrations are connected and what data they can access.
For certain integrations, you have granular control over what Windmill can see:
* **[Slack](/integrations/slack):** Choose which channels Windy is added to
* **[Google Workspace](/integrations/google-workspace):** Choose which Shared Drives Windmill has access to
This behavior is functionally equivalent to connecting any third-party system to your business tools—Windmill stores what you choose to share.
## How Windmill protects all data
Windmill treats all customer data as critical to your business operations. Learn more about our security measures:
* [Data Privacy and Collection](/security/data-privacy) - Access controls, retention policies, and data deletion
* [Security and Compliance](/security/security-compliance) - Encryption, SOC 2 compliance, and infrastructure protection
* [AI and Data Usage](/security/ai-data-usage) - How AI processes your data and zero-retention policies
For additional information, review our [Privacy Policy](https://gowindmill.com/legal/privacy-policy/) or contact [support@gowindmill.com](mailto:support@gowindmill.com).
# SCIM Attributes and Field Sources
Source: https://help.gowindmill.com/security/scim-attributes
Every employee field Windmill can sync through SCIM, the exact attribute names and namespaces to use in your identity provider, and how SCIM works with field sources.
Windmill's SCIM (System for Cross-domain Identity Management) endpoint accepts the standard SCIM user attributes, the enterprise manager extension, and a Windmill extension for job level, start date, pronouns, and gender. This article lists every supported attribute and explains how the values reach employee profiles.
For the identity provider setup, see [Set up SCIM with Okta](/security/scim-okta) or [Set up SCIM with Microsoft Entra ID](/security/scim-entra-id).
## Supported attributes
Core attributes sit at the top level of the SCIM user. Extension attributes sit inside an object keyed by the extension's schema URI.
### Core user attributes
Schema: `urn:ietf:params:scim:schemas:core:2.0:User`
| Windmill field | SCIM attribute | Notes |
| - | - | - |
| Work email | `userName` or `emails[type eq "work"].value` | **Required.** Windmill uses the work email to identify the member. |
| External ID | `externalId` | Your identity provider's ID for the person. Optional but recommended. |
| Access | `active` | `false` archives the member. `true` restores access. |
| First name | `name.givenName` | |
| Last name | `name.familyName` | |
| Display name | `displayName` | If first and last name are missing, Windmill derives them from the display name. |
| Job title | `title` | |
| Work phone | `phoneNumbers[type eq "work"].value` | Must be a valid phone number. |
| Profile picture | `photos[type eq "photo"].value` | Must be an HTTPS URL. |
### Manager
Schema: `urn:ietf:params:scim:schemas:extension:enterprise:2.0:User`
| Windmill field | SCIM attribute | Notes |
| - | - | - |
| Manager | `manager.value` | A reference to the manager. See [Manager references](#manager-references). |
### Windmill extension attributes
Schema: `urn:ietf:params:scim:schemas:extension:gowindmill:2.0:User`
| Windmill field | SCIM attribute | Notes |
| - | - | - |
| Job level | `jobLevel` | Free text, for example `Senior` or `L5`. |
| Start date | `startDate` | `YYYY-MM-DD` format, for example `2026-09-08`. Invalid dates are skipped. |
| Pronouns | `pronouns` | Free text, for example `they/them`. |
| Gender | `gender` | Free text. |
Most identity providers don't include these four attributes in their default SCIM attribute list. You add them once with the attribute name and the Windmill namespace, then map your identity provider's user attributes to them. The [Okta](/security/scim-okta#add-the-windmill-extension-attributes) and [Entra ID](/security/scim-entra-id#add-the-windmill-extension-attributes) guides walk through this.
The Windmill extension attributes are **write-only**. Your identity provider can send them, but Windmill never returns them in SCIM responses, and their values don't appear in SCIM audit logs. Department mapping is not supported.
### Manager references
The `manager.value` attribute must identify a person who is already in Windmill. Windmill resolves the reference in this order and stops at the first match:
1. The manager's SCIM user ID, which is their Windmill Member ID
2. The manager's `externalId`
3. The manager's SCIM `userName`
4. The manager's work email
Most identity providers send the SCIM user ID automatically when both the manager and the report are assigned to the Windmill app. If the manager isn't in Windmill yet, Windmill stores the reference and applies it after the manager is provisioned.
A manager change that would create a reporting loop is skipped. A person set as their own manager clears the manager field.
## How SCIM works with field sources
Windmill treats SCIM as a [field source](/org-chart/employee-field-sources), alongside your HRIS (Human Resources Information System), Slack, Google Workspace, and Outlook. Every field on an employee profile has one source, and only that source can update the field.
Every SCIM request has two separate effects:
1. **Windmill stores the values** it receives from your identity provider. This always happens, even for fields another system owns.
2. **Windmill applies the values** to the employee profile for fields where SCIM is the source.
This means you don't need to configure field sources before your identity provider starts sending data. Values accumulate in the background, and Windmill applies them when SCIM becomes the source.
### Which fields SCIM updates
| Field state | What happens when your identity provider sends a value |
| - | - |
| No source set | SCIM claims the field for the company and applies the value. |
| Source is SCIM | Windmill applies the value. |
| Source is another system, like your HRIS | Windmill stores the value but doesn't change the profile. |
| Employee has a per-person override to another source | Windmill stores the value but doesn't change that employee's profile. |
When you switch a field's source to SCIM, Windmill applies the latest stored value to every affected employee within a few minutes. You don't need to trigger a new push from your identity provider. Windmill also runs an hourly check that re-applies stored values, so a missed update doesn't leave a profile out of date.
### Setting SCIM as the source for a field
Open the [Org Chart](https://app.gowindmill.com/COMPANY/config/org-chart-v3) and open the **Company defaults** tab.
Fields are grouped into Personal, Role & reporting, Employment, and Contact. For example, **Job level** is under Role & reporting.
SCIM appears as an option for every field it can manage once your identity provider has connected. Select it to make SCIM the company-wide source.
To manage a field from SCIM for one person only, open the employee and set the source on their **Sources** tab. See [Overriding sources for one employee](/org-chart/employee-field-sources#overriding-sources-for-one-employee).
If you also connect an HRIS, Windmill defaults job level, start date, gender, and manager to the HRIS. Pronouns default to Slack. Set the source to SCIM for any field you want your identity provider to own.
### Fields SCIM can manage
SCIM can be the source for: first name, last name, display name, work email, job title, job level, start date, pronouns, gender, work phone, profile picture, and manager.
## Clearing and updating values
Your identity provider controls whether a field is updated, left alone, or cleared:
* **A missing attribute leaves the field unchanged.** This applies to full replacements (PUT) as well as partial updates (PATCH), so an identity provider that sends only some attributes never wipes the others.
* **A `null` value, an empty string, or a PATCH `remove` operation clears the field.** An empty phone or photo list also clears the corresponding field.
* **Work email and `active` follow separate rules.** A valid work email is always required.
## Validation
Windmill validates each attribute on its own. An invalid optional attribute is skipped, and the valid attributes in the same request still apply. Your identity provider sees a successful response.
* Text values must be 255 characters or fewer.
* Start dates must be valid `YYYY-MM-DD` dates.
* Phone numbers must be valid phone numbers.
* Profile picture URLs must start with `https://`.
* Phone and photo entries should carry `type: "work"` and `type: "photo"`. If no entry has a matching type, Windmill uses the first entry without a type.
A request fails only for authentication problems, a missing work email, a malformed request, or a person whose employee record is already linked to a different member.
## Example user
This is the shape of a full user request from your identity provider. You don't write this yourself. It shows where each attribute belongs.
```json theme={null}
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
"urn:ietf:params:scim:schemas:extension:gowindmill:2.0:User"
],
"userName": "alex@example.com",
"externalId": "idp-alex",
"name": { "givenName": "Alex", "familyName": "River" },
"displayName": "Alex River",
"title": "Software Engineer",
"phoneNumbers": [{ "type": "work", "value": "+12025550123" }],
"photos": [{ "type": "photo", "value": "https://example.com/alex.png" }],
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
"manager": { "value": "manager-scim-id" }
},
"urn:ietf:params:scim:schemas:extension:gowindmill:2.0:User": {
"jobLevel": "Senior",
"startDate": "2026-09-08",
"pronouns": "they/them",
"gender": "Non-binary"
}
}
```
An identity provider can also update one extension attribute on its own with a PATCH request:
```json theme={null}
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operations": [
{
"op": "replace",
"path": "urn:ietf:params:scim:schemas:extension:gowindmill:2.0:User:jobLevel",
"value": "Staff"
}
]
}
```
## Supported operations
| Resource | Operations |
| - | - |
| `/Users` | Create, list, read, replace (PUT), update (PATCH), and deprovision (DELETE) |
| `/Groups` | Create, list, read, replace, update membership, and delete |
| `/Schemas`, `/ResourceTypes`, `/ServiceProviderConfig` | Discovery |
List filters support `eq` and `and` on `userName`, `externalId`, `displayName`, and `emails[type eq "work"].value`. SCIM bulk operations, sorting, ETags, and password changes aren't supported.
## FAQs
No. Only the work email is required. Map the fields you want your identity provider to manage. First name and last name are strongly recommended.
Check the field's source in [**Settings > Org Chart**](https://app.gowindmill.com/COMPANY/config/org-chart-v3). If an HRIS owns job level, Windmill stores the SCIM value but doesn't apply it. Switch the source to SCIM and the stored value is applied within a few minutes. Also confirm the attribute uses the exact external name `jobLevel` and the namespace `urn:ietf:params:scim:schemas:extension:gowindmill:2.0:User`.
Yes. Pick a source per field. For example, your HRIS can own job title and start date while SCIM owns names and work email. Windmill never lets two sources write the same field.
These attributes live in the Windmill extension schema, so they're not in your identity provider's default list. Add them once with the attribute name and namespace from the table above. See the [Okta](/security/scim-okta#add-the-windmill-extension-attributes) or [Entra ID](/security/scim-entra-id#add-the-windmill-extension-attributes) guide.
The manager must already be provisioned into Windmill. Assign the Windmill app to the manager in your identity provider. Windmill keeps the reference and applies it once the manager exists. Also check that the manager field's source is SCIM.
Nothing. A missing attribute means "leave unchanged." To clear a field, your identity provider must send an empty value or a remove operation.
Yes. Editing a synced field on the employee's **Info** tab creates a per-person manual override, and SCIM stops updating that field for that person. Clear the override on their **Sources** tab to hand the field back to SCIM. See [Editing a synced field](/org-chart/employee-field-sources#editing-a-synced-field).
# Set Up SCIM with Microsoft Entra ID
Source: https://help.gowindmill.com/security/scim-entra-id
Turn on automatic provisioning for the Windmill app in Microsoft Entra ID, add the Windmill extension attributes to the attribute list, map the manager, and assign users and groups.
This guide walks through the Microsoft Entra ID side of SCIM (System for Cross-domain Identity Management) provisioning. When you're done, Entra ID creates Windmill members, keeps their profiles and managers current, archives people you unassign, and provisions groups into Windmill.
## Before you begin
You'll need:
* A **Windmill enterprise application in Entra ID** with SSO active in Windmill. See [Set up SAML SSO](/security/sso-and-scim#set-up-saml-sso).
* The **Tenant URL** and **Secret token** from Windmill. In [**Settings > Security**](https://app.gowindmill.com/COMPANY/config/security), select **Set up SCIM**, then **Generate token**. See [Set up SCIM provisioning](/security/sso-and-scim#set-up-scim-provisioning).
* **Application Administrator** or **Cloud Application Administrator** access in Entra ID.
The Windmill token's setup window is 24 hours. Complete the **Turn on provisioning** section within that time. Entra ID's **Test Connection** counts as the first connection, so Windmill turns provisioning on as soon as the test succeeds.
## Turn on provisioning
In the Microsoft Entra admin center, go to **Enterprise applications** and open your Windmill app.
Select **Provisioning** in the left menu, then **Get started** (or **Edit provisioning** if provisioning already exists). Set **Provisioning Mode** to **Automatic**.
Under **Admin Credentials**, enter the **Tenant URL** and the **Secret Token** from Windmill. Select **Test Connection**. When the test succeeds, select **Save**.
Back in Windmill, the SCIM card in **Settings > Security** now shows **Active**.
## Review the standard attribute mappings
Under **Mappings**, open **Provision Microsoft Entra ID Users**. The default mappings already cover most of the fields Windmill supports. Confirm these rows are present.
| Windmill field | Entra ID source attribute | Target attribute |
| - | - | - |
| Work email | `userPrincipalName` | `userName` |
| Access | `Switch([IsSoftDeleted], ...)` | `active` |
| External ID | `mailNickname` or `objectId` | `externalId` |
| First name | `givenName` | `name.givenName` |
| Last name | `surname` | `name.familyName` |
| Display name | `displayName` | `displayName` |
| Job title | `jobTitle` | `title` |
| Work phone | `telephoneNumber` | `phoneNumbers[type eq "work"].value` |
| Manager | `manager` | `urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:manager` |
If your users sign in with an email that differs from their user principal name, map `mail` to `userName` instead. Windmill uses the work email to identify each member.
Windmill ignores attributes it doesn't support, such as address or department, so you can leave the other default mappings in place.
## Add the Windmill extension attributes
Job level, start date, pronouns, and gender live in the Windmill extension schema. Add them to the app's attribute list, then map a source attribute to each one.
In **Provision Microsoft Entra ID Users**, select **Show advanced options** at the bottom of the page, then **Edit attribute list for customappsso**.
Add a row for each attribute. Use the full namespaced name. Set the type to **String**.
| Attribute | Name | Type |
| - | - | - |
| Job level | `urn:ietf:params:scim:schemas:extension:gowindmill:2.0:User:jobLevel` | String |
| Start date | `urn:ietf:params:scim:schemas:extension:gowindmill:2.0:User:startDate` | String |
| Pronouns | `urn:ietf:params:scim:schemas:extension:gowindmill:2.0:User:pronouns` | String |
| Gender | `urn:ietf:params:scim:schemas:extension:gowindmill:2.0:User:gender` | String |
Select **Save**.
Back on the mappings page, select **Add New Mapping**. Set **Mapping type** to **Direct**, choose the **Source attribute** that holds the value, for example `extensionAttribute1` or a custom directory extension, and choose the new **Target attribute**. Set **Apply this mapping** to **Always**, then select **Ok**.
Repeat for each attribute, then select **Save** on the mappings page.
Entra ID doesn't have built-in attributes for job level, start date, or pronouns. Use one of the `extensionAttribute1` to `extensionAttribute15` fields, or a directory extension synced from your HR system. For start date, use the `YYYY-MM-DD` format. Windmill skips dates in other formats.
The attribute name must include the full namespace, exactly as shown in the table. An attribute named only `jobLevel` is sent as a core attribute and Windmill ignores it.
## Map the manager
Keep the default `manager` mapping. Entra ID resolves it to the manager's SCIM ID in Windmill automatically, as long as both the manager and the report are in the app's provisioning scope. If the manager isn't provisioned yet, Windmill keeps the reference and applies it once the manager exists.
See [Manager references](/security/scim-attributes#manager-references) for how Windmill resolves the value.
## Assign users and groups
Entra ID provisions the people and groups in the app's scope.
Under **Provisioning > Settings**, set **Scope** to **Sync only assigned users and groups**. This is the recommended option so you control exactly who gets access.
Open **Users and groups** in the app's left menu and select **Add user/group**. Assigning a group provisions each of its members. To sync the group itself into Windmill Groups, see [Sync groups from your identity provider](/security/scim-group-sync).
On the **Provisioning** page, set **Provisioning Status** to **On** and select **Save**. Entra ID runs an initial cycle, then checks for changes about every 40 minutes.
To test a single person right away, use **Provision on demand** on the Provisioning page. The person appears in Windmill within a few seconds.
When you remove someone from the app, Entra ID deactivates them in Windmill. Windmill archives the member and signs them out. Assigning them again restores their access.
## Set the field sources in Windmill
Windmill stores every value Entra ID sends. It writes a value to an employee's profile only when SCIM is the source for that field. Fields with no source are claimed by SCIM automatically. Fields owned by another system, like job level from your HRIS (Human Resources Information System), keep the other system's value until you switch the source.
To have Entra ID manage a field, open [**Settings > Org Chart**](https://app.gowindmill.com/COMPANY/config/org-chart-v3), open **Company defaults**, and set the field's source to **SCIM**. Windmill applies the latest values Entra ID sent within a few minutes. See [How SCIM works with field sources](/security/scim-attributes#how-scim-works-with-field-sources).
## Verify the setup
* In Windmill, the SCIM card in [**Settings > Security**](https://app.gowindmill.com/COMPANY/config/security) shows **Active** and a recent **Last sync** time.
* Open a provisioned employee in [**Settings > Org Chart**](https://app.gowindmill.com/COMPANY/config/org-chart-v3). The **Sources** tab shows **SCIM** for the fields Entra ID manages, and the **Info** tab shows the values.
* In Entra ID, **Provisioning > Provisioning logs** shows each user and group operation and any errors.
## FAQs
Check that the Tenant URL is the full URL from Windmill and the Secret Token was pasted without extra spaces. If more than 24 hours have passed since you generated the token, regenerate it in Windmill and try again.
Provisioning was turned off in Windmill. Turn the **Provisioning is on** toggle back on in [**Settings > Security**](https://app.gowindmill.com/COMPANY/config/security). Entra ID retries on its next cycle, or you can use **Restart provisioning**.
Confirm the target attribute name includes the full namespace `urn:ietf:params:scim:schemas:extension:gowindmill:2.0:User:` and that the mapping is saved with **Apply this mapping** set to **Always**. Then check the field's source in Windmill under [**Settings > Org Chart**](https://app.gowindmill.com/COMPANY/config/org-chart-v3). If another system owns the field, switch it to SCIM.
Both the manager and the report must be assigned to the Windmill app. Entra ID sends the manager only after the manager has been provisioned. Check the provisioning log for the report. Then check that the manager field's source is SCIM in [**Settings > Org Chart**](https://app.gowindmill.com/COMPANY/config/org-chart-v3).
Entra ID runs an incremental cycle about every 40 minutes. Use **Provision on demand** to push one person immediately. Once a request reaches Windmill, the change is applied within seconds.
Not by default. Turn on [onboarding notifications](/security/sending-invites-with-automatic-provisioning) in **Settings > Security** to notify them automatically.
# Sync Groups from Your Identity Provider
Source: https://help.gowindmill.com/security/scim-group-sync
Push groups from Okta or Microsoft Entra ID into Windmill Groups through SCIM so you can target pulse surveys and performance review cycles without maintaining group membership by hand.
With SCIM (System for Cross-domain Identity Management) provisioning active, your identity provider (IdP) can push its groups into Windmill. Each pushed group becomes a [Windmill Group](/org-chart/groups) with the same name and members. You can use it anywhere groups are used, like pulse survey audiences and performance review cycles.
This article covers how group sync works and how to turn it on in Okta and Microsoft Entra ID. It assumes SCIM provisioning is already active. See [Set up SCIM provisioning](/security/sso-and-scim#set-up-scim-provisioning).
## How group sync works
* **Groups appear through provisioning.** When your identity provider pushes a group, it appears in [**Company settings > Groups**](https://app.gowindmill.com/COMPANY/config/groups) as a SCIM group. It bypasses **Create group > Synced**, which is for connected integration groups.
* **Names and membership stay in sync.** Rename a group or change its members in your identity provider. Windmill applies the changes when the provider sends its next provisioning update.
* **Only provisioned members count.** A group member must already be provisioned into Windmill through SCIM. If someone in the group isn't assigned to the Windmill app yet, Windmill skips them until they're provisioned. Your identity provider re-sends the membership after the person is provisioned.
* **Deleting a group archives it.** When your identity provider sends a group deletion, Windmill archives the group and clears its membership. Past pulse surveys and review cycles that used the group keep their history.
* **Sync is one-way.** Groups flow from your identity provider into Windmill. Groups you create in Windmill aren't sent back.
SCIM group names and membership are read-only in Windmill. Make those changes in your identity provider. With edit access, you can still manage sharing or archive the group in Windmill.
Archiving a SCIM group in Windmill does not necessarily stop provisioning. A later identity-provider update can reactivate it. Manage provisioning in your identity provider for a lasting change.
## Push groups from Okta
Okta pushes groups through the **Push Groups** tab of the Windmill app. Turn on **Push Groups** under **Provisioning > Integration** first. See [Set up SCIM with Okta](/security/scim-okta#turn-on-provisioning).
Okta only sends members who are assigned to the app. The easiest way is to assign the group itself under **Assignments > Assign to Groups**. This provisions each member into Windmill.
In the Windmill app, open **Push Groups**, then select **Push Groups > Find groups by name** or **Find groups by rule**.
Search for the group and select it. Keep **Push group memberships immediately** checked. Select **Save**.
The group's status changes to **Active** after the push. Open [**Company settings > Groups**](https://app.gowindmill.com/COMPANY/config/groups) in Windmill to see the new group and its members.
Okta may show a **Link Group** option that matches an Okta group to an existing group by name. Windmill only exposes groups that were created through SCIM, so this option links to a previously pushed group, not to a group you created by hand in Windmill.
To stop syncing a group, open its row on the **Push Groups** tab and choose **Unlink pushed group**. Choose **Delete the group in the target app** to archive it in Windmill, or **Leave the group in the target app** to keep it in Windmill as a group your identity provider no longer updates.
## Provision groups from Microsoft Entra ID
Entra ID provisions groups that are assigned to the Windmill app, as long as the group mapping is enabled.
In the Windmill app, open **Provisioning > Mappings** and check that **Provision Microsoft Entra ID Groups** is enabled. The default mapping sends the group's display name and members.
Open **Users and groups**, select **Add user/group**, and choose the group. Assigning the group also provisions each of its members.
Entra ID creates the group and its members in the next cycle, about every 40 minutes. Use **Provision on demand** on the group to push it right away. The group then appears in [**Company settings > Groups**](https://app.gowindmill.com/COMPANY/config/groups).
To stop syncing a group, remove it from **Users and groups**. Entra ID deletes the group in Windmill on its next cycle, and Windmill archives it. Members who are still assigned to the app individually keep their access.
## Using synced groups in Windmill
Synced groups work like any other group. You can:
* Target them as the audience for a [pulse survey](/features/pulse-surveys)
* Choose them as participants in a [performance review cycle](/features/performance-reviews/cycles)
* Filter by them in reports and the org chart
See [Groups](/org-chart/groups#using-groups) for the steps.
## FAQs
The missing people aren't provisioned into Windmill yet. In Okta, assign them to the Windmill app. In Entra ID, add them to the app's users and groups. Your identity provider re-sends the group membership once they're provisioned.
That's expected. SCIM groups bypass **Create group > Synced** and appear directly in the Groups list when your identity provider pushes them.
You can manage sharing and archive the group with edit access. Its name and membership are read-only in Windmill; change them in your identity provider.
Yes. SCIM, Synced, Smart, and Manual groups all live together in [**Company settings > Groups**](https://app.gowindmill.com/COMPANY/config/groups). If two sources supply the same team, rename one in its source system so you can tell them apart.
Windmill archives the group and clears its membership. Members keep their access to Windmill. Past surveys and review cycles that used the group keep their history. Archived groups don't appear in group pickers.
Yes. When your identity provider deactivates the person, Windmill archives them and they no longer appear in any group's active member list. Your identity provider usually removes them from the group as well.
# Set Up SCIM with Okta
Source: https://help.gowindmill.com/security/scim-okta
Turn on SCIM provisioning for the Windmill app in Okta, map the standard profile attributes, add the Windmill extension attributes in the Profile Editor, and push groups.
This guide walks through the Okta side of SCIM (System for Cross-domain Identity Management) provisioning. When you're done, Okta creates Windmill members, keeps their profiles and managers current, archives people you unassign, and pushes groups into Windmill.
## Before you begin
You'll need:
* A **Windmill SAML app in Okta** with SSO active in Windmill. See [Set up SAML SSO](/security/sso-and-scim#set-up-saml-sso).
* The **Tenant URL** and **Secret token** from Windmill. In [**Settings > Security**](https://app.gowindmill.com/COMPANY/config/security), select **Set up SCIM**, then **Generate token**. See [Set up SCIM provisioning](/security/sso-and-scim#set-up-scim-provisioning).
* **Super Admin or Application Admin** access in Okta.
The Windmill token's setup window is 24 hours. Complete the **Turn on provisioning** section within that time. Okta's connector test counts as the first connection, so Windmill turns provisioning on as soon as the test succeeds.
## Turn on provisioning
In the Okta Admin Console, go to **Applications > Applications** and open your Windmill app.
On the **General** tab, select **Edit** under App Settings. Under **Provisioning**, select **SCIM**, then **Save**. A **Provisioning** tab appears.
If you created the app from an Okta SCIM template, this option is already on.
Open the **Provisioning** tab, select **Integration**, then **Edit**. Enter these values:
| Setting | Value |
| - | - |
| SCIM connector base URL | The **Tenant URL** from Windmill |
| Unique identifier field for users | `userName` |
| Supported provisioning actions | **Push New Users**, **Push Profile Updates**, **Push Groups** |
| Authentication Mode | **HTTP Header** |
| Authorization (Bearer) | The **Secret token** from Windmill |
Select **Test Connector Configuration**. When the test succeeds, select **Save**.
**Import Users** is optional. Turn it on if you want Okta to match people who already have access to Windmill to their Okta accounts.
Under **Provisioning > To App**, select **Edit**. Turn on **Create Users**, **Update User Attributes**, and **Deactivate Users**, then **Save**.
**Update User Attributes** must be on. Without it, Okta creates members but never sends profile changes.
Back in Windmill, the SCIM card in **Settings > Security** now shows **Active**.
## Map the standard attributes
The **To App** section of the **Provisioning** tab lists the attribute mappings Okta sends to Windmill. Okta's SCIM template includes most of the fields Windmill supports. Confirm these mappings and remove any you don't want to send.
| Windmill field | Okta app attribute | External name | Suggested Okta value |
| - | - | - | - |
| Work email | Username | `userName` | `user.email` |
| First name | Given name | `name.givenName` | `user.firstName` |
| Last name | Family name | `name.familyName` | `user.lastName` |
| Display name | Display name | `displayName` | `user.displayName` |
| Job title | Title | `title` | `user.title` |
| Work phone | Primary phone | `phoneNumbers.^[type=='work'].value` | `user.primaryPhone` |
| Manager | Manager value | `manager.value` | See [Map the manager](#map-the-manager) |
Make sure each mapping applies on **Create and update**. Windmill ignores attributes it doesn't support, such as address or department, so extra mappings are harmless.
## Add the Windmill extension attributes
Job level, start date, pronouns, and gender live in the Windmill extension schema. Okta doesn't include them by default. Add each one to the app's user profile in the Profile Editor, then map an Okta attribute to it.
Go to **Directory > Profile Editor**. Filter by **Apps**, find your Windmill app, and select **User** to open its profile.
Select **Add Attribute** and fill in the fields below. Use the exact external name and external namespace. They're case-sensitive.
| Attribute | Data type | Display name | Variable name | External name | External namespace |
| - | - | - | - | - | - |
| Job level | string | Job level | `jobLevel` | `jobLevel` | `urn:ietf:params:scim:schemas:extension:gowindmill:2.0:User` |
| Start date | string | Start date | `startDate` | `startDate` | `urn:ietf:params:scim:schemas:extension:gowindmill:2.0:User` |
| Pronouns | string | Pronouns | `pronouns` | `pronouns` | `urn:ietf:params:scim:schemas:extension:gowindmill:2.0:User` |
| Gender | string | Gender | `gender` | `gender` | `urn:ietf:params:scim:schemas:extension:gowindmill:2.0:User` |
Leave **Scope** unchecked so the attribute is a user-level attribute. Select **Save**, or **Save and Add Another** to continue with the next one.
Back in the app's profile, select **Mappings**, then the **Okta User to \[Windmill app]** tab. For each new attribute, choose the Okta attribute that holds the value, for example `user.jobLevel` or `user.startDate`. Set the mapping to apply on **Create and update**.
Select **Save Mappings**, then **Apply updates now** to push the values to existing assigned users.
Okta's default user profile doesn't include job level, start date, or pronouns. If you don't already have these attributes, add them to the Okta user profile first: in **Profile Editor**, open **Okta User (default)**, select **Add Attribute**, and create a string attribute such as `jobLevel`. Then populate it from your HR system or by hand. For start date, use the `YYYY-MM-DD` format.
If you set the external name without the external namespace, Okta sends the attribute as a core attribute and Windmill ignores it. Both values are required.
## Map the manager
Windmill reads the manager from the enterprise extension attribute `manager.value`. In most Okta SCIM apps this is the **Manager value** attribute (variable name `managerValue`). If your app doesn't have it, add it in the Profile Editor with external name `manager.value` and external namespace `urn:ietf:params:scim:schemas:extension:enterprise:2.0:User`.
Map it to an Okta attribute that identifies the manager by work email or Okta login, for example `user.managerId` when your directory stores the manager's login there. Windmill resolves the manager by SCIM ID, external ID, username, or work email. See [Manager references](/security/scim-attributes#manager-references).
Both the manager and the report must be assigned to the Windmill app. If the manager hasn't been provisioned yet, Windmill keeps the reference and applies it once the manager exists.
## Assign people
Okta provisions a person when you assign the Windmill app to them.
In the Windmill app, open **Assignments**.
Select **Assign**, then **Assign to People** or **Assign to Groups**. Assigning a group provisions everyone in it.
New members appear in [**Settings > Members**](https://app.gowindmill.com/COMPANY/config/members) within a few seconds. They get the **Team Member** role. Change roles in Windmill as needed.
When you unassign someone, Okta deactivates them in Windmill. Windmill archives the member and signs them out. Assigning them again restores their access.
## Push groups
To bring Okta groups into Windmill Groups, use the **Push Groups** tab in the Windmill app. Windmill creates a group with the same name and keeps its membership in sync. See [Sync groups from your identity provider](/security/scim-group-sync) for the steps and how synced groups behave in Windmill.
## Set the field sources in Windmill
Windmill stores every value Okta sends. It writes a value to an employee's profile only when SCIM is the source for that field. Fields with no source are claimed by SCIM automatically. Fields owned by another system, like job level from your HRIS (Human Resources Information System), keep the other system's value until you switch the source.
To have Okta manage a field, open [**Settings > Org Chart**](https://app.gowindmill.com/COMPANY/config/org-chart-v3), open **Company defaults**, and set the field's source to **SCIM**. Windmill applies the latest values Okta sent within a few minutes. See [How SCIM works with field sources](/security/scim-attributes#how-scim-works-with-field-sources).
## Verify the setup
* In Windmill, the SCIM card in [**Settings > Security**](https://app.gowindmill.com/COMPANY/config/security) shows **Active** and a recent **Last sync** time.
* Open an assigned employee in [**Settings > Org Chart**](https://app.gowindmill.com/COMPANY/config/org-chart-v3). The **Sources** tab shows **SCIM** for the fields Okta manages, and the **Info** tab shows the values.
* In Okta, **Reports > System Log** shows the push events. Filter by your Windmill app to see any errors.
## FAQs
Check that the SCIM connector base URL is the full **Tenant URL** from Windmill, the Authentication Mode is **HTTP Header**, and the token was pasted without extra spaces. If more than 24 hours have passed since you generated the token, regenerate it in Windmill and try again.
Provisioning was turned off in Windmill. Turn the **Provisioning is on** toggle back on in [**Settings > Security**](https://app.gowindmill.com/COMPANY/config/security), then retry the task in Okta.
Check three things in Okta. The attribute's **External namespace** must be `urn:ietf:params:scim:schemas:extension:gowindmill:2.0:User`. The attribute must be mapped in **Okta User to \[app]** mappings and applied on **Create and update**. And **Update User Attributes** must be on under **Provisioning > To App**. Then check the field's source in Windmill under [**Settings > Org Chart**](https://app.gowindmill.com/COMPANY/config/org-chart-v3).
Confirm the manager is assigned to the Windmill app and has been provisioned. Confirm the **Manager value** attribute maps to a value Windmill can resolve, such as the manager's work email. Then check that the manager field's source is SCIM in [**Settings > Org Chart**](https://app.gowindmill.com/COMPANY/config/org-chart-v3).
The person's employee record in Windmill is already linked to a different member. Contact [support@gowindmill.com](mailto:support@gowindmill.com) with the person's email so we can reconcile the records.
Not by default. Turn on [onboarding notifications](/security/sending-invites-with-automatic-provisioning) in **Settings > Security** to notify them automatically.
# Security and Compliance
Source: https://help.gowindmill.com/security/security-compliance
Windmill's security measures, compliance certifications, access controls, audit logging, and the practices in place to protect customer data and infrastructure.
Windmill maintains enterprise-grade security measures and compliance certifications to protect your organization's data.
## SOC 2 Type 2 compliance
**Windmill is SOC 2 Type 2 Compliant.** This certification demonstrates our commitment to maintaining high standards for security, availability, and confidentiality.
The full SOC 2 report is available upon request—reach out to [support@gowindmill.com](mailto:support@gowindmill.com) to receive a copy.
SOC 2 Type 2 certification means an independent auditor has verified our
security controls over an extended period, not just at a single point in time.
## Security measures
**Encryption at rest**
All data stored in Windmill is encrypted at rest. This helps protect sensitive data, including employee records, feedback, and activity data from your connected systems.
**Encryption in transit**
All data transmitted between Windmill and your browser, as well as between Windmill and integrated services, is encrypted using industry-standard TLS protocols.
**Strict permissions enforcement**
Windmill checks workspace roles, org-chart scope, feature privacy, delegation, and applicable source permissions. Private source content does not become public when you connect it to Windmill. Windmill uses feature permissions for company-level activity and usage data.
**Cookie policy**
Windmill has a cookie policy in place to manage how our site tracks and stores data. You can review our full cookie policy on our website.
## Admin access and permissions
**Integration management**
Admins, HR Admins, and Integration Managers can create or manage company integrations in Windmill. This ensures centralized control over which systems are connected and what data is accessible.
**Required permissions by integration**
Each connected system has its own authorization requirements. Review the setup page for the integration before you connect it. See [Integrations](/integrations/integrations) for the available integration pages.
**HRIS**
* **BambooHR** - Bamboo Administrator role
* **ADP** - HR Admin or Super User
* **Paylocity** - Company administrator
* **Gusto** - Full Access administrator role
* **Justworks** - Admin role
* **Rippling** - Admin access
**Support tools**
* **Front** - Company administrator
* **Zendesk** - Administrator or Account Owner role
**CRM**
* **Salesforce** - Administrator role and your Salesforce Instance URL
* **HubSpot** - Admin role and your HubSpot Instance URL
**Project management**
* **Jira** - No explicit permission required, just a Jira account
* **Linear** - Administrator role
* **Asana** - Administrator role
* **GitHub** - Owner or Manager role
* **Notion** - Notion admin
**Meetings and communications**
* **Google Workspace** - Must be a Google Workspace Admin
* **Zoom** - Zoom account owner
* **Slack** - Ability to connect Slack to third-party applications and install Slack apps
* **Roam** - Administrator role
If you're unsure whether you have the right permissions, contact your IT team
or system administrator before attempting to connect an integration.
## Roles and access
Windmill has Admin, HR Admin, Integration Manager, Data Analyst, and Team Member roles. Roles control workspace capabilities. The org chart, delegation, source permissions, and feature privacy rules also affect content visibility.
See [Permissions and Access](/permissions-and-access) for the current capability matrix and access model.
## Additional resources
For more information about security and compliance:
* Visit our [Trust Center](https://app.drata.com/trust/7bd6416b-c1ac-4c6c-afb4-a015fe83db6b)
* Review our [Privacy Policy](https://gowindmill.com/p/privacy-policy)
* Request our SOC 2 report at [support@gowindmill.com](mailto:support@gowindmill.com)
* Choose who receives [subprocessor notifications](/security/subprocessor-notifications)
## FAQs
Windmill uses **AES-256 encryption** for all data at rest. This encryption
is applied to all database instances, cache volumes, and automated backups.
All encryption keys are managed through AWS Key Management Service (KMS).
All data transmitted to and from Windmill is encrypted using **TLS 1.2 or
higher**. This includes all external communications (such as your browser
and API calls to integrated services) and all internal service and
infrastructure communication.
Windmill's infrastructure is hosted in **Amazon Web Services (AWS)**
datacenters in the United States.
Windmill undergoes regular security assessments including: - **Annual SOC 2
Type 2 audits** by independent third-party auditors - **Automated
vulnerability scanning** of our application and infrastructure -
**Penetration testing** conducted by external security firms - **Code
security reviews** as a core part of our SDLC. Results from these
assessments inform our security roadmap and continuous improvement efforts.
No. Windmill does not support password-based sign-in. Members authenticate
through Google, Microsoft, or a configured SAML identity provider. These
providers manage passwords and account recovery.
Windmill displays each API key once and stores only a one-way hash. API keys
are limited to one company and inherit the permissions of the member who
creates them. You can set an expiration date and revoke a key at any time. To
rotate a key, create a replacement and revoke the previous key. See [API
authentication](/api-reference/overview#authentication) for setup and usage
details.
Windmill's help center does not currently list a specific accessibility regulation or conformance standard such as Section 508, WCAG 2.1 or 2.2, ADA, or a VPAT. For a formal accessibility statement, VPAT, or WCAG/Section 508 confirmation, contact [support@gowindmill.com](mailto:support@gowindmill.com).
# Sending Invites with Automatic Provisioning
Source: https://help.gowindmill.com/security/sending-invites-with-automatic-provisioning
Turn on onboarding notifications so members provisioned through SCIM or Rippling automatically receive an onboarding email, a Slack welcome message from Windy, or both.
By default, members provisioned through [SCIM](/security/sso-and-scim) or [Rippling](/integrations/rippling) are created without a notification. You can [send welcome messages manually](/org-chart/inviting-team-members#sending-welcome-messages-manually) or share access details yourself.
Turn on **onboarding notifications** to notify these members automatically. Windmill sends an onboarding email, a Slack welcome message from Windy, or both around 15 minutes after a member is provisioned.
## Turn on onboarding notifications
Admins, HR Admins, and Integration Managers can change this setting. The controls are available when SCIM or Rippling is used for member provisioning.
Open [Security](https://app.gowindmill.com/COMPANY/config/security) and find the **Onboarding notifications** card.
Turn on the **Automatically notify provisioned members** toggle. The label shows SCIM or Rippling based on your provisioning source. Both delivery channels turn on.
Keep both channels, or clear the one you do not want. Clearing both channels turns onboarding notifications off.
## Delivery channels
* **Email:** Sends an onboarding email to the member's work email. When SSO is active, the email contains a **Login** button that opens your SSO sign-in page. Without SSO, the email contains a link to accept the invitation.
* **Slack:** Sends a welcome message from Windy in a Slack direct message. Slack delivery requires a connected Slack workspace and a matched Slack account for the member.
## When notifications are sent
Windmill sends a notification when a member gains access through provisioning:
* **New members:** Members provisioned for the first time receive a notification.
* **Reactivated members:** Members who lost access and are provisioned again receive a new notification.
Windmill waits around 15 minutes after provisioning before it sends the notification. If the member loses access inside this window—for example, after a quick correction in your identity provider—Windmill does not send the notification.
Windmill skips an automatic notification if a welcome message was sent to the member in the last 24 hours. This includes messages sent manually. The **Send welcome message** action on the Members page does not have this 24-hour limit.
Turning on onboarding notifications does not notify members who were provisioned earlier. Use **Send welcome message** on the [Members](https://app.gowindmill.com/COMPANY/config/members) page to notify them individually or as a group. See [Sending welcome messages manually](/org-chart/inviting-team-members#sending-welcome-messages-manually).
## FAQs
Check these conditions:
* Onboarding notifications were on before the member was provisioned.
* The member still has access. Members who lose access before the notification is sent are skipped.
* For Slack, the Slack integration is connected and Windmill matched the member's Slack account.
* The member did not receive another invite notification in the last 24 hours.
* For Rippling, provisioning itself can take up to a day after you assign access.
No. Windmill notifies a member only when they gain access—on first provisioning or on reactivation after access was removed. Profile updates from your identity provider do not trigger notifications.
No. Onboarding notifications apply to members provisioned through SCIM or Rippling. A member created by a first SSO sign-in has already signed in, so Windmill does not send a notification.
# SSO and SCIM
Source: https://help.gowindmill.com/security/sso-and-scim
Set up SAML single sign-on and SCIM provisioning so your identity provider controls who can sign in to Windmill and keeps member profiles, managers, and groups in sync.
Windmill supports SAML 2.0 single sign-on (SSO) so your team signs in through your company's identity provider (IdP). Okta and Microsoft Entra ID are fully tested. Any SAML 2.0 compliant provider should work.
SCIM 2.0 (System for Cross-domain Identity Management) builds on SSO. With SCIM, your identity provider creates members, keeps their profile fields and managers up to date, archives people who leave, and syncs groups into Windmill.
This article covers the setup in Windmill. For the identity provider side, use the guide for your provider:
Turn on provisioning, map profile fields in the Profile Editor, and push groups.
Turn on provisioning, add the Windmill attributes, and assign users and groups.
Every field SCIM can sync, the exact attribute names, and how SCIM works with field sources.
Bring identity provider groups into Windmill Groups for pulse surveys and review cycles.
## Before you begin
You'll need:
* **Admin, HR Admin, or Integration Manager access** to your Windmill account
* **Admin access** to your identity provider (Okta, Microsoft Entra ID, etc.)
Rippling requires exclusive control over user provisioning. If you connect [Rippling](/integrations/rippling), SCIM is automatically turned off if it was on, and you can't set up SCIM while Rippling is connected.
## How SSO and SCIM work together
SSO controls **how people sign in**. SCIM controls **who has access and what their profile contains**.
| Setup | Who creates members | Profile updates | Manual invitations |
| - | - | - | - |
| SSO only | The first successful SSO sign-in can create a Team Member. You can also [invite members](/org-chart/inviting-team-members) manually. | Managed in Windmill or by your HRIS (Human Resources Information System) and other integrations. | Available |
| SSO and SCIM | Your identity provider. A person must be provisioned before they can sign in. | Your identity provider pushes changes to Windmill as they happen. | Off. The Org Chart shows **Members managed by your Identity Provider (IdP)**. |
## Set up SAML SSO
Go to [**Settings > Security**](https://app.gowindmill.com/COMPANY/config/security) and select **Set up SSO** to open the setup wizard. The wizard has three steps.
Windmill displays your Entity ID (Audience URI), ACS URL, and Login URL. Copy these values into your identity provider's SAML application settings, or select **Download SP Metadata XML** to download the metadata file.
The wizard also shows the expected attribute mappings (`firstName → user.firstName`, `lastName → user.lastName`) and the Name ID format (`EmailAddress`).
After you configure your identity provider, give Windmill your SAML metadata so it can recognize sign-in requests. Paste a metadata **URL** or upload the **XML** file.
Select **Test SSO**. Windmill redirects you to your identity provider to sign in. Windmill activates SSO after the first successful sign-in.
Once SSO is active, it's **enforced for all users**. Google and Microsoft social login are turned off. There is **no fallback**. If your identity provider goes down or SSO is misconfigured, no one (including admins) can sign in until the issue is resolved. Make sure the test sign-in works before you roll SSO out to your team.
After activation, the **Security** page shows your SSO status and configuration. Use **Update metadata** if your identity provider's certificate or metadata changes. To turn SSO off, contact [support@gowindmill.com](mailto:support@gowindmill.com).
## Set up SCIM provisioning
SCIM requires an active SSO connection. If SSO isn't active yet, the SCIM card shows **Test SSO sign-in first**.
Setup takes two steps in Windmill and one in your identity provider. You don't need to come back to Windmill to turn provisioning on. Windmill turns it on automatically when your identity provider connects.
In [**Settings > Security**](https://app.gowindmill.com/COMPANY/config/security), select **Set up SCIM**, then **Generate token**. Windmill displays the **Secret token** and **Tenant URL** you need for your identity provider.
The token is displayed **once**. Copy it now and store it securely. If you lose it, generate a new one and update your identity provider.
Follow the guide for your provider: [Okta](/security/scim-okta) or [Microsoft Entra ID](/security/scim-entra-id). Use the Tenant URL as the SCIM base URL and the Secret token as the bearer token.
The SCIM card shows **Waiting for your identity provider**. When your identity provider sends its first successful request, for example a connection test or the first user push, Windmill turns provisioning on and the status changes to **Active**.
You have **24 hours** after you generate the token to connect. If the window closes first, the status changes to **Setup window expired**. Select **Regenerate token** and paste the new token into your identity provider.
You don't have to wait for the identity provider. Select **Turn on now** on the SCIM card to turn provisioning on immediately.
### Provisioning status
The SCIM card on the **Security** page shows the current state, the time of the last sync, and a link to view members.
| Status | Meaning |
| - | - |
| **Waiting for your identity provider** | The token is ready. Windmill turns provisioning on when your identity provider connects. |
| **Active** | Your identity provider manages members. Manual invitations are off. |
| **Paused** | Provisioning is off. Windmill rejects requests from your identity provider until you turn it on. |
| **Setup window expired** | Your identity provider didn't connect within 24 hours. Regenerate the token to continue. |
### Pausing, resuming, and removing SCIM
* **Pause provisioning.** Turn off the **Provisioning is on** toggle. Windmill rejects requests from your identity provider, but existing members keep their access. Your identity provider shows errors until you turn provisioning back on.
* **Resume provisioning.** Turn the toggle back on. Windmill applies the latest values it received from your identity provider to every provisioned member. See [SCIM attributes and field sources](/security/scim-attributes#how-scim-works-with-field-sources).
* **Regenerate the token.** The old token stops working immediately. Paste the new token into your identity provider. Regenerating a token doesn't turn a paused connection back on.
* **Remove SCIM.** Deletes the SCIM configuration and token. Members provisioned through SCIM keep their access, and manual invitations become available again.
## What SCIM syncs
SCIM keeps four things in sync from your identity provider:
* **Members.** Who has access to Windmill.
* **Profile fields.** Name, work email, job title, job level, start date, pronouns, gender, work phone, and profile picture. See [SCIM attributes and field sources](/security/scim-attributes).
* **Managers.** The reporting line in your org chart.
* **Groups.** Identity provider groups become [Windmill Groups](/org-chart/groups). See [Sync groups from your identity provider](/security/scim-group-sync).
### Member lifecycle
* **New members** are created with the **Team Member** role. Change roles in [**Settings > Members**](https://app.gowindmill.com/COMPANY/config/members). See [Permissions and Access](/permissions-and-access).
* **Existing members** are linked, not duplicated. If a person with the same work email already has access to Windmill, SCIM links the identity provider record to that member.
* **Archived members** are reactivated when your identity provider provisions them again, for example when you re-assign the Windmill app to them.
* **Deprovisioned members** are archived when your identity provider deactivates or deletes them. Windmill signs them out, and their reviews, feedback, and notes are preserved. Access to any other Windmill account is unaffected.
**SCIM provisioning does not send welcome messages by default.** Turn on [onboarding notifications](/security/sending-invites-with-automatic-provisioning) in **Settings > Security** to notify provisioned members automatically. You can also [send welcome messages manually](/org-chart/inviting-team-members#sending-welcome-messages-manually) from the Members page.
### Profile fields and field sources
Windmill treats SCIM as a [field source](/org-chart/employee-field-sources), the same way it treats your HRIS or Slack. SCIM stores every value your identity provider sends. It writes a value to an employee's profile only when SCIM is the source for that field.
* Fields with **no source set** are claimed by SCIM the first time it sends a value.
* Fields **owned by another source**, like job level from your HRIS, keep the other source's value. SCIM stores its value in the background.
* When you **switch a field to SCIM** in [**Settings > Org Chart**](https://app.gowindmill.com/COMPANY/config/org-chart-v3), Windmill applies the latest stored value within a few minutes. You don't need to trigger a new push from your identity provider.
See [SCIM attributes and field sources](/security/scim-attributes) for the full field list and setup steps.
## SAML attribute mappings
| Attribute | Required | Notes |
| - | - | - |
| NameID (EmailAddress) | Yes | Identifies the user |
| firstName | Strongly recommended | Populates the user's first name on first sign-in |
| lastName | Strongly recommended | Populates the user's last name on first sign-in |
No custom SAML attribute mapping is needed. When SCIM is active, profile fields come from SCIM rather than the SAML assertion.
Attribute paths vary by identity provider:
* **Okta:** `firstName` → `user.firstName`, `lastName` → `user.lastName`
* **Microsoft Entra ID:** `firstName` → `user.givenname`, `lastName` → `user.surname`
## Best practices
* **Test SSO before you roll it out.** There's no fallback if something goes wrong. Make sure the test sign-in works first.
* **Copy the SCIM token immediately.** It's only displayed once. If you lose it, regenerate it and update your identity provider.
* **Connect your identity provider within 24 hours.** The token's setup window closes after 24 hours. If it does, regenerate the token.
* **Decide which system owns each field.** If you also connect an HRIS, review [field sources](/org-chart/employee-field-sources) so SCIM and your HRIS don't both try to manage the same field.
* **Use identity provider groups to manage Windmill Groups.** Managing group membership in your identity provider is easier than maintaining groups manually in Windmill.
* **Don't use both Rippling and SCIM.** They're mutually exclusive. If you use Rippling for provisioning, continue using Rippling.
## FAQs
Contact Windmill support at [support@gowindmill.com](mailto:support@gowindmill.com) to have SSO turned off for your account.
Select **Regenerate token** on the SCIM card in [**Settings > Security**](https://app.gowindmill.com/COMPANY/config/security). The old token stops working immediately, so update your identity provider right away.
Your identity provider didn't send a request within 24 hours of the token being generated. Select **Regenerate token**, paste the new token into your identity provider, and run a connection test or assign a user. Windmill turns provisioning on when the first request arrives.
Provisioning was turned off in Windmill. Turn the **Provisioning is on** toggle back on in [**Settings > Security**](https://app.gowindmill.com/COMPANY/config/security). Windmill then accepts requests again and applies the latest values.
No. When your identity provider pushes a person whose work email already belongs to a Windmill member, SCIM links to that member. Their history, reviews, and 1:1s stay in place.
No. When provisioning is on, your identity provider is the only way to add members. Assign the Windmill app to the person in your identity provider instead.
First, check whether SCIM is active. When SCIM is active, the identity provider must provision the member before they sign in. Without SCIM, verify that the identity provider sends the NameID attribute in the SAML assertion.
Not by default. Turn on [onboarding notifications](/security/sending-invites-with-automatic-provisioning) in **Settings > Security** to notify provisioned members automatically. Use [Send welcome message](/org-chart/inviting-team-members#sending-welcome-messages-manually) on the Members page to notify existing members by email, Slack, or both.
No. With Okta SAML SSO, members can be created when they first sign in, but Windmill does not send invite emails or Slack messages because of that. With Okta SCIM provisioning, members are created silently unless you turn on [onboarding notifications](/security/sending-invites-with-automatic-provisioning).
Check three things. First, the attribute is mapped in your identity provider with the exact name and namespace from [SCIM attributes and field sources](/security/scim-attributes). Second, SCIM is the source for that field in [**Settings > Org Chart**](https://app.gowindmill.com/COMPANY/config/org-chart-v3). Third, the employee doesn't have a per-person override that points the field at another source.
SCIM and Rippling provisioning can't be used together. Disconnect Rippling before you set up SCIM, or continue using Rippling to manage access.
# Subprocessor notifications
Source: https://help.gowindmill.com/security/subprocessor-notifications
Choose who receives notices when Windmill adds or changes a subprocessor, so your security, legal, or procurement team stays informed.
Windmill emails a notice when it changes the subprocessors that handle your data. You can add your security, legal, or procurement contacts so they get these notices too, even if they aren't Windmill members.
## Who receives notifications
Subprocessor change notifications go to:
* **All Admins** in your Windmill account
* **Any additional email addresses** you add in **Settings > Security**
Additional recipients don't need a Windmill account. A shared inbox like `security@yourcompany.com` works well.
## Managing additional recipients
Admins, HR Admins, and Integration Managers can manage additional recipients from [Settings > Security](https://app.gowindmill.com/COMPANY/config/security).
### Adding a recipient
Open [Security settings](https://app.gowindmill.com/COMPANY/config/security) in the Windmill Dashboard.
The card lists the additional recipients already on file.
The address is added to the list and receives future subprocessor notices.
### Removing a recipient
Click **Remove** next to the address in the **Subprocessor notifications** card. That address stops receiving notices. Admins keep receiving notices while they have the Admin role.
## FAQs
No. All Admins receive subprocessor notifications automatically. The list in **Settings > Security** is only for additional recipients.
Yes. Any valid email address can be added, including shared inboxes and people outside Windmill.
You can add up to 100 additional email addresses.
Admins, HR Admins, and Integration Managers can add and remove recipients from **Settings > Security**.
# Add Slack channels as context
Source: https://help.gowindmill.com/windy/adding-windy-to-channels
Give Windmill access to permitted Slack channel content without enabling Windy conversations in those channels.
Add the Windmill Slack app to a channel when you want Windmill to use that channel's messages and canvases as context. Windmill can use this context in feedback workflows, 1:1s, and reports.
Adding the app to a channel does not let you chat with Windy in that
channel. Windy does not answer messages or `@Windy` mentions in public,
private, or Slack Connect channels. To chat with Windy, open a direct message
with Windy or use the Windmill Dashboard.
## How channel access works
Slack lists the app as **Windmill**. After you add the app to a channel, its bot appears as **Windy** in the channel member list.
For each channel that you add, Windmill can:
* Sync messages and threads
* Sync Slack canvases
* Use permitted channel content as context for Windmill features
Channel access does not change where you talk to Windy. Use a Windy direct message or a Windmill Dashboard chat for conversations.
## Add the app to public channels automatically
We recommend automatic access to public channels. This option gives Windmill more context without channel-by-channel setup. Admins, HR Admins, and Integration Managers can change this setting.
Go to **Settings** in the Windmill Dashboard.
Select **Integrations**, and then select **Slack**.
Select **Open settings** for the Slack integration.
Select **Autojoin public channels**, and then select **Save settings**.
When you enable this setting, the app joins existing and new public channels that Windmill finds. The app does not rejoin a channel after someone removes it from that channel.
Slack Connect channels require the separate **Include Slack Connect channels** setting.
## Add the app to one channel
Use either method below to add a public or private channel.
### Use `/invite` in Slack
Open the channel that you want Windmill to use as context.
Type `/invite`, and then select **Add apps to this channel**.
Search for **Windy**, and then add the app.
### Use the channel settings
Open the channel, and then select the channel name at the top.
Select **Integrations**, and then select **Add apps**.
Search for **Windmill**, and then add the app.
After the app joins, Slack adds a message to the channel history. The message says that Windy joined the channel. This message does not cause a notification, mention, or alert.
### Private channel access
A member of a private channel must add the app to that channel. Adding the app does not give other people access to the private channel.
Windmill keeps Slack's access controls. Only people who can read the private channel in Slack can see its raw messages in Windmill. Managers, admins, and other employees who are not channel members cannot read the content.
## Remove channel access
You can remove the app in Slack or in the Windmill Dashboard.
### Remove the app in Slack
Open the channel from which you want to remove the app.
Type `/remove @Windy`.
Confirm that Windy must leave the channel.
### Remove the app in the Windmill Dashboard
Admins, HR Admins, and Integration Managers can remove the app from a channel in the Windmill Dashboard.
Go to **Settings > Integrations > Slack**, and then select **Open settings**.
Find the channel in **Slack Channels with Access**.
Select the **Leave** icon in the channel's row.
## FAQs
No. In Slack, Windy only responds in your direct-message conversation with the Windy app. Windy does not respond to messages or `@Windy` mentions in public, private, or Slack Connect channels. Adding the Windmill Slack app to a channel gives Windmill access to permitted channel content as context. It does not create a Windy conversation in that channel.
No. Slack adds a join message to the channel history, but the message does not cause a notification, mention, or alert.
No. Windmill keeps Slack's access controls. If a person cannot read the private channel in Slack, that person cannot read its raw messages in Windmill.
Enable **Autojoin public channels** in **Settings > Integrations > Slack**. The app joins public channels except channels that it left before. Slack Connect channels require the separate **Include Slack Connect channels** setting.
Add the app to each private channel separately.
## Next steps
To start a conversation, see [Talking to Windy](/windy/talking-to-windy). For the full Slack data and permission reference, see [Slack](/integrations/slack).
# Introducing Windy
Source: https://help.gowindmill.com/windy/meet-windy
Meet Windy, Windmill's AI assistant available in Slack and the Windmill Dashboard — what Windy can do for managers and individual contributors and how Windy uses context across your integrations.
Windy is your AI agent in Slack and the Windmill Dashboard. Windy can ask your team questions, answer questions about your team, help with feedback, collect agenda items, and give you a summary of missed work. To start a conversation in Slack, open your direct message with Windy and mention `@Windy`. You can also open a chat in the Windmill Dashboard.
## Where you can talk to Windy
You always talk to the same Windy, independent of where you start the conversation. Windy is available in these locations:
* **Slack** — DM Windy directly
* **The Windmill homepage** — Use the **Ask Windy a question** box at the top of your homepage
* **Ask Windy** — Start a new chat or open your chat history from the left navigation
* **Employee profiles** — Chat with Windy in context about a specific teammate
* **Pulse pages** — Ask Windy about pulse results and trends
Adding the Windmill Slack app to a channel gives Windmill access to that channel as context. Windy does not respond to @mentions or questions in public or private channels.
Windy has the same product knowledge and connected-system access in each chat surface. Your permissions and your company's enabled features control the information and actions that are available.
## What Windy does
Windy helps you stay connected to your team without continuous check-ins or manual status updates.
**Helps you give and request feedback** Start a conversation with Windy to give feedback about a colleague or to request feedback. With the Feedback page enabled, Windy can also find your requests and cancel pending requests that you created. Windy confirms the feedback and its audience before saving it. See [Feedback](/features/continuous-feedback).
**Helps with self, peer, and upward reviews** If you run performance reviews in Windmill, Windy helps collect feedback from the team through a conversational flow.
**Helps run your 1:1s** Windy can help collect agenda items, catch you up on previous action items or offer suggestions about what to cover.
**Follows up automatically** When a workflow includes reminders, Windy can contact a person again if they do not respond.
## Who interacts with Windy
All invited members can interact with Windy. Windy makes permitted information from the platform available through Slack and the Windmill Dashboard.
**Everyone on your team** Windy reaches out to individual contributors for responses to pulse surveys, 1:1 agenda items, and performance review tasks. Members can interact with Windy in Slack and in the Windmill Dashboard.
**Managers** Windy shows permitted information about team member activities, feedback, and check-in responses. Managers can view this information in the Windmill Dashboard and interact with Windy in Slack.
**Admins** Admins configure Windy's settings, control which Slack channels Windmill can use as context, and manage integrations. Like managers, admins can view reports in the Windmill Dashboard and interact with Windy in Slack.
## Replying to Windy in Slack
When Windy sends you a Slack message, reply in the message thread. A top-level message in your Windy direct message does not answer the earlier request. Windy will ask you to return to the correct thread.
## Windy learns over time
The more systems you connect and the more Windy interacts with your team, the better Windy becomes at identifying the right moments to reach out and the right people to ask.
Windy will become your go-to resource for running your team. The more you use
Windmill, the more useful Windy's insights become.
## Next steps
Ready to start interacting with Windy? Learn [how to talk to Windy](/windy/talking-to-windy) and [how to add Slack channels as context](/windy/adding-windy-to-channels).
# Talking to Windy
Source: https://help.gowindmill.com/windy/talking-to-windy
How to chat with Windy in Slack and in the Windmill Dashboard — asking questions about your team, requesting feedback, prepping for 1:1s, and using skills for common workflows.
Windy contacts your team in Slack to send Pulse surveys, assist with 1:1 preparation, and help run performance reviews. You can also start conversations with Windy in Slack or the Windmill Dashboard, for example to give or request feedback. This article explains how to interact with Windy.
## Where you can talk to Windy
You always talk to the same Windy, independent of where you start the conversation. Windy has the same product knowledge, the same access to your connected systems, and the same ability to take actions on your behalf in every surface. Your permissions and your company's enabled features control this access.
Today, you can chat with Windy in:
* **Slack** — DM Windy directly
* **The Windmill homepage** — Use the **Ask Windy a question** box at the top of your homepage
* **Ask Windy** — Start a new chat or open your chat history from the left navigation
* **Employee profiles** — Chat with Windy in context about a specific teammate
* **Pulse pages** — Ask Windy about pulse results and trends
The main difference between surfaces is where the conversation starts. Use Slack for an ongoing conversation or to reply to a Windy message. Use a platform chat when you are in the Windmill Dashboard and want an answer or action without a change of tools.
You can chat with Windy in your direct-message conversation with the Windy app. To start a new conversation, mention `@Windy` in that direct message. Add the Windmill Slack app to public or private channels only when you want Windmill to read channel context. Windy does not respond to mentions or questions in those channels.
## What you can ask Windy
In any chat surface, you can ask Windy to:
* Answer Windmill product questions ("How do peer reviews work?")
* Look up information about your people and team (recent feedback, 1:1 history, performance review status)
* Pull from your connected systems and Windmill context (meetings, conversations, documents, tasks, calendar, code)
* Take actions on your behalf, such as giving or collecting feedback, adding 1:1 agenda items, or working through performance review tasks
If you are not sure whether Windy can do something, ask Windy.
## Always reply in threads in Slack
When Windy sends you a message in Slack, reply in that message thread. This keeps your response with the correct request or task.
Move the pointer over Windy's message.
Select the **Reply in thread** icon.
Enter your response in the thread.
Send the message from the thread.
Do not send a top-level message as a response to an earlier Windy message.
The top-level message does not answer the earlier request. Windy will ask you
to return to the correct thread.
## What to expect from Windy
Depending on which features your team has activated, Windy will reach out for different things:
### Pulse surveys
Windy asks about your work, team, and company. A Pulse can contain one or more questions. Windmill recommends two to five questions for a focused Pulse.
Frequency: The Pulse schedule can be manual, one-time, recurring, based on a calendar event, or based on an employee start date. Recurring schedules can repeat weekly or monthly. A calendar event schedule sends the Pulse before or after a recurring meeting. See [Scheduling types](/features/pulse-surveys/scheduling-types) for details.
### Agenda requests
Windy can contact you before 1:1s to ask for agenda items. Windy can also give you a summary of items from previous 1:1s. If you enabled [last-minute reminders](/features/1-on-1s/notifications#last-minute-reminders), Windy can send a short reminder approximately 10 minutes before the meeting. This reminder identifies recent agenda changes.
### Performance reviews
Windy can assist with performance reviews — particularly self reviews, upward reviews, and peer reviews.
You can also ask Windy about your tasks for an active review cycle. For example:
What do I need to do for my current review cycle?
Windy returns a complete list of your pending and completed performance review todos—self reviews, upward reviews, peer nominations, peer feedback, and manager reviews—with clickable links to each task in Windmill.
## Language support
Windmill's interface is only available in English. However, Windy is powered by leading LLMs and works well in most languages.
When Windy reaches out, questions will be in English—but you can respond in any language you want.
## How often Windy reaches out
The number of messages depends on the features and schedules that your company enables. Pulse surveys, 1:1 notifications, and performance reviews can each cause separate messages.
You can manage your personal 1:1 notification settings in [Windy features](/windy/windy-features).
## Starting conversations with Windy
You do not have to wait for Windy to contact you. You can start a conversation in a direct message with Windy or from a Windmill Dashboard chat. The examples below show Slack phrasing, but the same requests work in the Windmill Dashboard.
### Give unsolicited feedback
Open a direct message with Windy and send this type of request:
@Windy, I want to give feedback to \[person's name].
Windy helps you prepare the feedback. When audience selection is available, Windy asks you to select an allowed audience. Windy then shows the text and audience for final confirmation before saving it. See [Feedback visibility](/features/continuous-feedback#feedback-visibility).
### Request feedback
You can ask Windy to collect feedback about you. If you are a manager, you can request feedback about anyone in your reporting line, including skip-level reports. You can also limit the request to a specific topic.
@Windy, request feedback about me from \[person's name].
@Windy, request feedback about \[report's name] from \[person's name].
@Windy, request feedback about \[report's name] from \[person's name] about \[topic].
When the Feedback page is enabled, Windy creates a scheduled request. A completed response is not guaranteed. See [Request delivery](/features/continuous-feedback#request-delivery).
### Find and cancel feedback requests
With the Feedback page enabled, you can ask Windy about incoming and outgoing requests:
"@Windy, which feedback requests need my response?"
"@Windy, which feedback requests have I sent?"
You can ask Windy to cancel a pending request that you created. You cannot cancel it after feedback collection starts. You can also respond or decline from [Feedback > To-dos](https://app.gowindmill.com/COMPANY/feedback?tab=todos).
You can give feedback to multiple people at once. Ask Windy. They can
assist with that.
In addition to feedback, Windy can answer questions about your connected systems:
* Research across meetings
* Conversations
* Documents
* Tasks
* Calendar
* Code
* Connected data
### Add agenda items for 1:1s
You can ask Windy to add an item to an upcoming 1:1. You can also ask about previous 1:1s, notes, or action items.
@Windy, add \[topic] to my next 1:1 with \[person's name].
See [1:1s](/features/1-on-1s/index) for more information about agendas, notes, and meeting history.
### Use skills
Skills give Windy reusable instructions for common workflows. You can create a skill in the Windmill Dashboard and ask Windy to use it in a chat.
See [Skills](/features/skills) for setup instructions and examples.
### Reference people, Pulses, and documents
In the Windmill Dashboard, type `@` in the chat box to reference a specific person, Pulse, or Company Knowledge document instead of describing it in words. Pick a result from the list to insert it as a chip in your message.
Mentioning a Company Knowledge document tells Windy to read that document in full before responding. Windy already knows every document's title and "When to use" note without a mention, so only mention one when you want to guarantee it gets read in full rather than leaving that choice to Windy. See [Sharing and access](/company-settings/company-knowledge/organizing-and-sharing#sharing-and-access) for how a document's folder controls who can mention it.
This is separate from `/` for [Skills](/features/skills), which trigger a saved set of instructions instead of referencing a specific person, Pulse, or document.
## Next steps
Learn how to [add Slack channels as context](/windy/adding-windy-to-channels) for feedback workflows, 1:1s, and reports.
# Windy features
Source: https://help.gowindmill.com/windy/windy-features
Control whether you see Windy's reasoning in Slack and the Windmill Dashboard, and manage your 1:1 notification settings.
The Windy features page contains personal settings that control how Windy interacts with you. Each available preference has controls for its supported channels. Reasoning visibility is available in Slack and the Windmill Dashboard.
## Open Windy features
### In the web app
Go to [**Settings > Windy > Features**](https://app.gowindmill.com/COMPANY/config/windy/features) to view your preferences.
The page has separate sections for Slack and platform chat. The Slack section appears only when your company has connected Slack. Use the toggle next to a feature to enable or disable it for that channel.
### In Slack
You can also manage your preferences by talking to Windy directly. Open a conversation with Windy and send a request such as:
List my current Windy preferences
Windy will show your current settings. To make a change, send a request such as:
Turn on the reasoning preference in Slack
## Available preferences
### Show reasoning
When enabled, Windy's reasoning and actions are visible to you. Windy always uses reasoning to generate answers. This setting controls whether you can see that reasoning.
* **Available on:** Slack, Web
* **Default:** Disabled
## 1:1 notifications
Control when and how Windy contacts you before your 1:1s. These settings include relationship-based toggles, timing, and per-employee overrides.
See [1:1 notifications](/features/1-on-1s/notifications) for the full settings reference.
## Next steps
Learn more about working with Windy:
* [Introducing Windy](/windy/meet-windy) — What Windy does and who interacts with them
* [Talking to Windy](/windy/talking-to-windy) — How to interact with Windy in Slack
* [Add Slack channels as context](/windy/adding-windy-to-channels) — Give Windmill access to permitted channel content