# Pyn Help Source: https://support.pynhq.com/ > Help and education for the Pyn app: set up your workspace, run flows, and understand what your employees see. ## Start with your role ### Admins and HR You own the workspace. [Getting started](https://support.pynhq.com/getting-started/) takes you from an empty workspace to a live automation; [Flows](https://support.pynhq.com/flows/) is where you design what Pyn sends; [Directory](https://support.pynhq.com/directory/) is who it sends to; [Settings](https://support.pynhq.com/settings/) and [Integrations](https://support.pynhq.com/integrations/) connect it to your HRIS, Slack and email. ### Managers Pyn writes to you when one of your people reaches a moment. [For managers](https://support.pynhq.com/for-employees/for-managers/) covers what the nudges look like and how to [pick a buddy](https://support.pynhq.com/for-employees/for-managers/pick-a-buddy/) from a message. ### Employees You never need a Pyn account. [For employees and managers](https://support.pynhq.com/for-employees/) explains [why you received a message](https://support.pynhq.com/for-employees/why-you-received-a-message/), how to answer it, and [what Pyn records about you](https://support.pynhq.com/for-employees/privacy-and-your-data/). ### IT and security [Single sign-on](https://support.pynhq.com/integrations/sso/) for Okta and any OIDC provider, [Data and security](https://support.pynhq.com/concepts/data-and-security/) for sessions, exports and audit, [Roles and permissions](https://support.pynhq.com/getting-started/roles-and-permissions/) for who can do what, and [Sign in](https://support.pynhq.com/account/sign-in/) for the options your people see. ## Popular - [Create an automation](https://support.pynhq.com/flows/automations/create-an-automation/), the first thing most workspaces build. - [Choose a trigger](https://support.pynhq.com/flows/automations/choose-a-trigger/) to decide which moment enrols someone. - [Add an email step](https://support.pynhq.com/flows/steps/add-an-email-step/) and write the message that goes out. - [Add a Slack sender](https://support.pynhq.com/settings/senders/add-a-slack-sender/) so messages can arrive as direct messages. - [Invite a user](https://support.pynhq.com/settings/users/invite-a-user/) to give a colleague access to the workspace. ## Three tutorials to begin with - [Set up your workspace in 30 minutes](https://support.pynhq.com/getting-started/tutorial-set-up-your-workspace/): Create the workspace, connect your HRIS and Slack, brand your emails and invite your team. - [Launch first-day onboarding end to end](https://support.pynhq.com/getting-started/tutorial-launch-first-day-onboarding/): Build a start-date automation with a welcome, a manager heads-up and a first-week check-in, then watch it run. - [Build your journey map](https://support.pynhq.com/journey/tutorial-build-your-journey-map/): Lay out the moments that matter for your company, prioritise them and attach flows and content to each. ## Browse by area ### [Journey](https://support.pynhq.com/journey/) The map of moments your flows hang off, from pre-boarding to exit. ### [Flows](https://support.pynhq.com/flows/) Automations, campaigns, forms and polls, and the steps and messages inside them. ### [Library](https://support.pynhq.com/library/) Content with versions and the media your messages use. ### [Directory](https://support.pynhq.com/directory/) Employees, groups and demographics, kept current from your HRIS. ### [Activity](https://support.pynhq.com/activity/) Enrollments, messages and actions as they happen, plus the campaign calendar. ### [Integrations](https://support.pynhq.com/integrations/) Slack, Teams, HiBob, BambooHR, Rippling, Workday, ADP, Greenhouse, Ashby, Google Workspace, Microsoft 365 and Jira. ### [Concepts](https://support.pynhq.com/concepts/) How a workspace, its employees, journeys, flows, steps and deliveries fit together. ### [FAQ and glossary](https://support.pynhq.com/faq/) Direct answers to the questions support hears most, and one definition per term in the [Glossary](https://support.pynhq.com/glossary/). ## What's new The [Changelog](https://support.pynhq.com/changelog/) has a post for each week, newest first: the story of the week's biggest changes, then every fix and improvement. The latest is the [week of 19 October 2026](https://support.pynhq.com/changelog/week-of-2026-10-19/): duplicating a step within a flow, a simpler Okta connection, and previews for upcoming joiners and for steps sent to a manager, buddy or HR business partner. ## For agents and developers Every page is also published as markdown, JSON and structured data from the same build. [For agents and developers](https://support.pynhq.com/for-agents/) lists the URLs: `/llms.txt`, `/llms-full.txt`, `/api/stories.json`, `/api/media.json` and the `.md` twin of each page. --- # Getting started Source: https://support.pynhq.com/getting-started/ > What Pyn is, how a flow works, and the path from a new workspace to your first live automation. Pyn is where HR teams design and automate the moments that matter in an employee's time with the company: the first day, a new manager, a work anniversary, a return from leave. You describe each moment once as a flow; Pyn watches your people data and sends the right message to the right person at the right time, in Slack, Microsoft Teams or email. [Video: A tour from Directory to Flows: open an employee, then open an automation.](https://support.pynhq.com/media/getting-started/overview/getting-started-overview-tour.mp4) ## Who this is for - **The Owner or Admin setting Pyn up**: start with [Set up your workspace in 30 minutes](https://support.pynhq.com/getting-started/tutorial-set-up-your-workspace/). - **The HR partner who designs messages**: start with [Launch first-day onboarding end to end](https://support.pynhq.com/getting-started/tutorial-launch-first-day-onboarding/). - **Anyone deciding who gets access to what**: read [Roles and permissions](https://support.pynhq.com/getting-started/roles-and-permissions/) and [Plans and what each unlocks](https://support.pynhq.com/getting-started/plans/). ## How a flow works Every automation in Pyn has the same four parts, and every page in Flows is about one of them. 1. **Trigger**: the event that starts the flow for one employee, such as a start date arriving, a manager changing or a form being submitted. A date trigger also sets the **reference date** the steps are timed from. 2. **Audience**: who is eligible. Lifecycle stages (Current, Joiner, On leave, Terminated) plus included and excluded groups; an exclusion always wins. 3. **Steps**: what happens, in order. Each step has a sender, a recipient (the employee, their manager, their buddy, a group or a channel), a schedule relative to the reference date, and content. 4. **Enrollment**: one employee's run through the flow. Pyn creates an enrollment when the trigger fires for someone in the audience, schedules every step, and shows the result under [Activity](https://support.pynhq.com/activity/) as enrollments, messages and actions. A flow runs in one of three modes. **Automated** enrols and sends by itself. **Verification** enrols but pauses each enrollment under **Needs Review** until someone unpauses it. **Manual Only** never enrols by itself; you pick people with **Manual Enroll**. You can also enrol people by hand in any mode, which is how you test a flow on yourself. ## The path | Stage | What you do | Where | | --- | --- | --- | | 1 | Create the workspace and answer four questions | [Create a workspace](https://support.pynhq.com/account/workspaces/create-a-workspace/) | | 2 | Bring employees in from your HRIS or a spreadsheet | [Integrations](https://support.pynhq.com/integrations/), [Directory](https://support.pynhq.com/directory/) | | 3 | Connect Slack, Teams or an email sender | [Integrations](https://support.pynhq.com/integrations/), [Settings](https://support.pynhq.com/settings/) | | 4 | Brand your emails and invite your team | [Settings](https://support.pynhq.com/settings/), [Invite your team](https://support.pynhq.com/getting-started/invite-your-team/) | | 5 | Turn on your first flow and watch it in Activity | [Flows](https://support.pynhq.com/flows/), [Activity](https://support.pynhq.com/activity/) | | 6 | Tell your company what is coming | [Communicate the rollout](https://support.pynhq.com/getting-started/communicate-the-rollout/) | ## Pages in this section - [Set up your workspace in 30 minutes](https://support.pynhq.com/getting-started/tutorial-set-up-your-workspace/) - [Launch first-day onboarding end to end](https://support.pynhq.com/getting-started/tutorial-launch-first-day-onboarding/) - [Invite your team](https://support.pynhq.com/getting-started/invite-your-team/) - [Communicate the rollout](https://support.pynhq.com/getting-started/communicate-the-rollout/) - [Roles and permissions](https://support.pynhq.com/getting-started/roles-and-permissions/) - [Plans and what each unlocks](https://support.pynhq.com/getting-started/plans/) - [Views, filters, search and export](https://support.pynhq.com/getting-started/views-filters-search-and-export/) ## Where it is in the app Pyn opens at `/home`. The **Getting Started Guide** card on Home links to this section, and the left navigation lists every area in the order the pages of this site follow; see [Navigate Pyn](https://support.pynhq.com/home/navigate-pyn/). ## Related - [Set up your workspace in 30 minutes](https://support.pynhq.com/getting-started/tutorial-set-up-your-workspace/) to go from an empty workspace to a live flow. - [Launch first-day onboarding end to end](https://support.pynhq.com/getting-started/tutorial-launch-first-day-onboarding/) to build and test a real flow. - [Roles and permissions](https://support.pynhq.com/getting-started/roles-and-permissions/) before you invite anyone. - [Plans and what each unlocks](https://support.pynhq.com/getting-started/plans/) for what the free plan includes. ## Related Intercom articles - [Getting started guide (Pyn 2)](https://intercom.help/pyn/en/articles/13336486-getting-started-guide-pyn-2) — draws on - [Welcome to Pyn (Pyn 1)](https://intercom.help/pyn/en/articles/6002223-welcome-to-pyn-pyn-1) — Pyn 1 article, kept for reference - [Create a Workspace (Pyn 2)](https://intercom.help/pyn/en/articles/8066861-create-a-workspace-pyn-2) - [How to Set up the First Day (Onboarding) Flow (Pyn 2)](https://intercom.help/pyn/en/articles/12691830-how-to-set-up-the-first-day-onboarding-flow-pyn-2) - [Add/Remove a User to Your Pyn Account (Pyn 2)](https://intercom.help/pyn/en/articles/11518130-add-remove-a-user-to-your-pyn-account-pyn-2) - [Manage Pyn Permission Types (Pyn 2)](https://intercom.help/pyn/en/articles/12044706-manage-pyn-permission-types-pyn-2) - [Enabling Single Sign On (Pyn 2)](https://intercom.help/pyn/en/articles/16838066-enabling-single-sign-on-pyn-2) --- # Launch first-day onboarding end to end Source: https://support.pynhq.com/getting-started/tutorial-launch-first-day-onboarding/ > Build a start-date flow with a pre-start email, a day-one welcome and a manager nudge, test it on yourself, review the first enrollments and switch it to Automated. **Goal**: an onboarding flow that reaches every new starter without anyone remembering to send it. **Time**: 20 to 30 minutes. **You end up with**: an automation triggered by the start date, with three email steps, published, tested on yourself, reviewed in Verification mode and then running in Automated mode. You are an **Owner**, **Admin** or **Power User**, your workspace has employees with start dates in [Directory](https://support.pynhq.com/directory/), and a sender is connected ([Set up your workspace in 30 minutes](https://support.pynhq.com/getting-started/tutorial-set-up-your-workspace/) covers both). [Video: The onboarding flow: open the automation and a step, then follow its enrollments under Activity.](https://support.pynhq.com/media/getting-started/onboarding/getting-started-onboarding-tour.mp4) ## Chapter 1: Start from the trigger 1. In Pyn, open **Flows** in the left navigation, then select **Automations**. 2. Open an onboarding automation from the list, or select **Create New** in the top-right corner and choose a trigger under **Employee Lifecycle** in the **Select Trigger** dialog: **Start of Onboarding** for steps from day one, or **Pre-onboarding** to begin before the start date. 3. Select the trigger card at the top of the editor. In the drawer, on **Configure**, set **This flow starts** to **on the day of** so the start date is the reference date every step is timed from, and leave **the Employee's Start Date** at **just once**. 4. Under **Prevent repeat enrollments**, choose **Never reenroll**, so a corrected start date does not enrol the same person twice. 5. Select the **Audience** tab. Under **Lifecycle**, keep **Current** and **Joiner** so people enrol before their first day; leave **Included** and **Excluded** empty unless only part of the company should get this flow. **Audience Preview** shows who matches. ![Open an automation to edit its trigger and steps.](https://support.pynhq.com/media/flows/automations/flows-automations-editor.png) ## Chapter 2: Add the three messages 1. Select **Add Step** and choose **Send Email to Employee** under **Communication**. 2. In the drawer, give the step a title such as `Before you start`. Under **Send from**, pick your sender. Under **To**, keep **Employee**; for a pre-start message choose the personal address, since the work mailbox may not exist yet. 3. Under **Schedule**, choose **1 week before**, set the time to 9:00 and choose **Recipient Time Zone**. Leave the weekdays as they are, and under **On a skipped day** choose **Deliver on next delivery day**. 4. Write the subject and body. Type `@` to insert a token such as the employee's preferred name, so the message reads as if written for them. 5. Add a second **Send Email to Employee** step titled `Day one welcome`, scheduled **on the day of** the reference date, to the employee's work address. 6. Add a third step, **Send Email to Employee**, titled `Manager check-in nudge`. Under **To**, choose **Manager**; under **Schedule**, choose 3 days after. This one reminds the manager to book time with their new report. 7. Select **Publish** in the top-right corner. The steps now run against this published version. > **Caution:** Steps scheduled before the start date only reach people whose record arrives in Pyn before that day. If your HRIS adds starters late, Pyn warns on the step; either move the step closer to day one or turn on **Skip if overdue at enrollment** so a late starter is not sent a stale pre-start email. ## Chapter 3: Test it on yourself 1. Select **Use This**, then **Manual Only** in **Select how you would like this flow to operate:**. The flow is on, but nothing enrols by itself yet. 2. Open the mode menu in the top-right corner and select **Manual Enroll**. 3. Under **Search for an employee to enroll**, find yourself. Set the **Reference Date** to a date next week, turn on **Flag as Test**, select **Next** and then **Confirm**. 4. Open **Activity** in the left navigation. Under **Enrollments**, your test enrollment is listed with each step and its scheduled date. Open a step to see the message with your name filled in. ## Chapter 4: Review real enrollments, then let it run 1. Back on the automation, open the mode menu, select **Change Mode** and choose **Verification**. From now on each new starter enrols, but every enrollment pauses. 2. In **Activity**, select **Needs Review**. Open each paused enrollment, check the dates and the messages, and unpause the ones that are right. 3. After a week or two of clean reviews, select **Change Mode** again and choose **Automated**. Pyn confirms with **Congrats!**; enrollments now schedule and send without review. ## What you should see In **Flows**, the automation shows **Automated** as its mode and a count of enrollments. In **Activity**, **All Enrollments** lists one row per new starter and **All Messages** lists each email with its status: **Scheduled** until the day, then **Delivered**. The free plan includes this one automation; see [Plans and what each unlocks](https://support.pynhq.com/getting-started/plans/) before turning on a second. ## Next steps - Add a Slack or Teams step so the day-one welcome arrives where people chat: see [Automations](https://support.pynhq.com/flows/automations/). - Ask the manager to confirm they met their new starter by adding a button and a reminder to the nudge step. - Repeat the pattern for work anniversaries, which need no HRIS beyond the start date you already have. ## Related - [Automations](https://support.pynhq.com/flows/automations/) for every trigger, step type and schedule option. - [Enrollments](https://support.pynhq.com/activity/enrollments/) for reviewing, unpausing and stopping enrollments. - [Employees](https://support.pynhq.com/directory/employees/) for the start dates and managers this flow depends on. - [Set up your workspace in 30 minutes](https://support.pynhq.com/getting-started/tutorial-set-up-your-workspace/) for connecting the sender this flow sends from. ## Related Intercom articles - [How to Set up the First Day (Onboarding) Flow (Pyn 2)](https://intercom.help/pyn/en/articles/12691830-how-to-set-up-the-first-day-onboarding-flow-pyn-2) — replaces - [How to customize the onboarding packet (Pyn 1)](https://intercom.help/pyn/en/articles/6024064-how-to-customize-the-onboarding-packet-pyn-1) — Pyn 1 article, kept for reference --- # Set up your workspace in 30 minutes Source: https://support.pynhq.com/getting-started/tutorial-set-up-your-workspace/ > From an empty workspace to a live flow: bring in employees, connect a channel, brand your emails, invite your team and turn on one automation. **Goal**: a workspace that knows your employees, can send messages, looks like your company and has one automation running. **Time**: about 30 minutes, plus whatever your HRIS or Slack admin needs to approve. **You end up with**: every card on Home ticked, employees in Directory, a sender in Settings, a themed email, at least one teammate invited and a flow in Automated or Verification mode. You are an **Owner** or **Admin**. If you have not created the workspace yet, do [Create a workspace](https://support.pynhq.com/account/workspaces/create-a-workspace/) first; it takes a minute and seeds the checklist this tutorial follows. [Video: The setup path: Directory, Integrations, Senders, Theme, Current Users, a flow and Activity.](https://support.pynhq.com/media/getting-started/setup/getting-started-setup-tour.mp4) ## Chapter 1: Bring in your employees Everything in Pyn keys off employee records: start dates, managers, time zones, emails. Pyn reads them from your HRIS or from a spreadsheet you upload. 1. In Pyn, open **Settings** in the left navigation. It opens on **Integrations**, **Installed**. 2. If your workspace was created with a supported HRIS, its tile is already under **Installed** with an inactive status. Select it and follow the connect dialog for your system; [Integrations](https://support.pynhq.com/integrations/) has a page per HRIS with the credentials each needs. 3. Otherwise select **Available** in the left rail and select your HRIS tile. Hovering a tile shows **Click to Install**. ![Settings, Integrations, Available lists every system you can connect; hovering a tile shows Click to Install.](https://support.pynhq.com/media/getting-started/setup/getting-started-setup-integrations-available.png) 4. If you have no HRIS to connect, select the **File Upload** tile under **Installed**; its panel is headed **Employee File**. In the panel's banner select **Download Sample File**, fill the columns, then select **Upload** and choose the file. On success the banner reads **Success! Uploaded N records.** and points you to **Directory**. 5. Open **Directory** in the left navigation and confirm your employees are listed under **Employees**, **Active**. Processing after an upload or first sync takes a minute or two. ## Chapter 2: Connect a channel to send through Pyn sends as a **sender**: a Slack or Teams user or bot, a Google Workspace or Microsoft 365 mailbox, or a verified email address. 1. Back in **Settings**, **Integrations**, **Available**, select **Slack** (or **Microsoft Teams**) and approve the Pyn app in your messaging workspace when it opens. If the connection cannot start, Pyn says so and asks you to contact support. 2. For email, select **General**, then **Senders** in the left rail. Select **Add new email sender**, enter a **Sender Name** such as `HR Team` and an **Email Address**, then **Send Verification Email**. 3. Open the verification email and select **Verify Email**. The page reads **Email Verified**; back in **Senders** the sender's status becomes active. 4. Alternatively select **Add Google Email Sender** or **Add Microsoft 365 Email Sender** to send from a real mailbox you own. > **Tip:** An executive who should appear as a sender but will never log in to Pyn can connect their own Slack or Google account through a link you create with **Create Slack Auth Link** or **Create Google Auth Link**. The link works for three days. ## Chapter 3: Make emails look like your company 1. In **Settings**, under **General**, select **Account Settings**. Check **Company Name** (used by the `company.name` token) and **Time Zone** (used for employees without one of their own), and upload a **Logo**. 2. Select **Theme**. Turn on **Show Logo in Emails**, then set **CTA Color**, **CTA Text Color**, **Link Color**, **Font Family** and **Font Size**. The **Preview** on the right updates as you change them. ## Chapter 4: Invite your team 1. In **Settings**, under **General**, select **Current Users**, then **Invite** in the top-right corner. ![The Invite user dialog from Settings, Current Users.](https://support.pynhq.com/media/getting-started/setup/getting-started-setup-invite-dialog.png) 2. Enter the **Email address**, choose a **Role** (**Admin**, **Power User** or **Limited User**) and select **Invite**. The dialog confirms **Success!** and the person appears with status **Pending** until they first sign in. [Invite your team](https://support.pynhq.com/getting-started/invite-your-team/) explains the roles; [Roles and permissions](https://support.pynhq.com/getting-started/roles-and-permissions/) has the full matrix. ## Chapter 5: Turn on your first flow 1. Open **Flows** in the left navigation. The **Automations** view lists the automations in your workspace, grouped by journey moment. 2. Select an automation to open it. For a first flow, a date-based one such as a work anniversary or a welcome message is simplest. 3. Select each step card in turn and check its sender, its recipient and its schedule in the drawer. Pick the sender you connected in Chapter 2. 4. Select **Use This** in the top-right corner. In **Select how you would like this flow to operate:** choose **Verification** to review each enrollment before anything sends, or **Automated** to let it run. 5. Open **Activity** in the left navigation. Enrollments appear under **Enrollments** as the trigger fires; in Verification mode they wait under **Needs Review** until you unpause them. ## What you should see On **Home**, every checklist card is ticked. **Directory** lists your people, **Settings**, **Senders** shows an active sender, and **Flows** shows one automation with a mode other than inactive. Workspaces on the free plan show a banner on Flows once that first automation is on; see [Plans and what each unlocks](https://support.pynhq.com/getting-started/plans/). ## Next steps - Build a real onboarding flow step by step: [Launch first-day onboarding end to end](https://support.pynhq.com/getting-started/tutorial-launch-first-day-onboarding/). - Tell your company what to expect: [Communicate the rollout](https://support.pynhq.com/getting-started/communicate-the-rollout/). - Learn the table controls you will use everywhere: [Views, filters, search and export](https://support.pynhq.com/getting-started/views-filters-search-and-export/). ## Related - [Create a workspace](https://support.pynhq.com/account/workspaces/create-a-workspace/) for the step before this tutorial. - [Complete the getting-started checklist](https://support.pynhq.com/home/complete-the-getting-started-checklist/) for how each Home card ticks. - [Integrations](https://support.pynhq.com/integrations/) for each HRIS and messaging integration in detail. - [Settings](https://support.pynhq.com/settings/) for senders, theme, users and account settings. ## Related Intercom articles - [Getting started guide (Pyn 2)](https://intercom.help/pyn/en/articles/13336486-getting-started-guide-pyn-2) — draws on - [Create a Workspace (Pyn 2)](https://intercom.help/pyn/en/articles/8066861-create-a-workspace-pyn-2) — draws on --- # Communicate the rollout Source: https://support.pynhq.com/getting-started/communicate-the-rollout/ > Decide what changes when Pyn starts sending, who needs to know, and how to announce it so the first messages are expected rather than a surprise. Your flows are built and the first messages are days away. The people who receive them, the managers who get nudges and the colleagues who used to send these emails by hand all need to hear about Pyn before Pyn writes to them. A short plan now saves a week of "what is this?" replies later. ## Before you start - You know which flows go live first and roughly when the first messages send. [Activity](https://support.pynhq.com/activity/) shows the scheduled dates once a flow is on. - You know who used to send this communication. They are your first audience. ## Steps 1. Write down how each communication is produced today: who drafts it, who approves it, what tool sends it. For each one, decide whether Pyn sends it from day one or later. You do not have to move everything at once; a message in Pyn can link to your wiki or a document that stays where it is. 2. Choose where collaboration happens. Pyn's [Library](https://support.pynhq.com/library/) holds reusable content with a draft and published version, so a reviewer can read a draft before a step uses it; invite reviewers as **Limited User** so they can read without editing flows. 3. Invite the people who send employee communications as **Admin** or **Power User**, following [Invite your team](https://support.pynhq.com/getting-started/invite-your-team/), and tell them which senders Pyn will use so a message from "HR Team" is recognised as theirs. 4. Coordinate timing across teams. Campaigns in [Flows](https://support.pynhq.com/flows/campaign-templates/) give dated messages a calendar under **Activity**, **Campaigns**, so an all-hands note and a benefits deadline do not land on the same morning. 5. Announce Pyn to the company before the first flow sends, using the template below. Say what Pyn is, where messages come from, and who to reply to. 6. Brief managers separately. They receive nudges and may be asked to pick a buddy or confirm a check-in; tell them what the messages look like and that replying to the sender reaches a person. ## A template announcement Adapt the sender, channel names and examples to your company. > **Subject: A new way we'll keep you in the loop** > > Hi everyone, > > From next week, some of the messages you get from the People team will arrive through Pyn, a tool we use to send the right information at the right time: a welcome on your first day, a heads-up before a benefits deadline, a note on your work anniversary. > > You don't need to do anything. Messages will come by email from **HR Team** or in Slack from the **Pyn** app. Some will have a button to confirm you've read them or a short form; most are information only. Replies go to a real person on the People team. > > If something looks wrong or you'd rather not receive a particular message, reply and tell us. > > Thanks, > The People team ## What you should see The first messages arrive with no surprise: recipients recognise the sender, managers know why they were nudged, and your inbox gets questions about content rather than about where the message came from. ## Related - [Set up your workspace in 30 minutes](https://support.pynhq.com/getting-started/tutorial-set-up-your-workspace/) for connecting the senders you name in the announcement. - [Invite your team](https://support.pynhq.com/getting-started/invite-your-team/) for bringing the people who send communications into Pyn. - [Campaign Templates](https://support.pynhq.com/flows/campaign-templates/) for dated, company-wide communications on a calendar. - [Library](https://support.pynhq.com/library/) for content a reviewer can read before it is used. ## Related Intercom articles - [Communicate to your organization about Pyn](https://intercom.help/pyn/en/articles/6002206-communicate-to-your-organization-about-pyn) — draws on --- # Invite your team Source: https://support.pynhq.com/getting-started/invite-your-team/ > Invite a colleague to your Pyn workspace by email, choose their role, resend an invitation, change a role later or remove someone's access. You want colleagues in the workspace: an HR partner to write messages, an IT admin to connect systems, or a manager who should review enrollments. You invite each by email and choose how much of Pyn they see. ## Before you start - You are an **Owner** or **Admin**. Power Users and Users cannot invite. - You know which role to give. In short: **Admin** for people who manage settings, integrations and the directory; **Power User** for people who build and publish flows; **Limited User** for people who read the journey, library and activity. [Roles and permissions](https://support.pynhq.com/getting-started/roles-and-permissions/) has the matrix. ![Settings, General, Current Users lists each user with their email, last seen, role and status.](https://support.pynhq.com/media/getting-started/roles/getting-started-roles-current-users.png) ## Steps 1. In Pyn, open **Settings** in the left navigation, then under **General** select **Current Users**. The **Invite** button is in the top-right corner; it is also on **Journey** and on the **Invite team members** card on Home. 2. Select **Invite**. The **Invite user** dialog opens with the line "Invite a user to your organization's workspace." ![The Invite user dialog from Settings, Current Users.](https://support.pynhq.com/media/getting-started/setup/getting-started-setup-invite-dialog.png) 3. Enter the **Email address**. Use the address the person signs in with at work; Pyn links the invitation to that exact address. 4. Choose the **Role**: **Admin** (the default), **Power User** or **Limited User**. 5. Select **Invite**. The dialog shows **Success!** and "They will receive an email from Pyn inviting them to join your workspace." Select **Done**. > **Note:** Inviting an address that is already in the workspace shows **Already Invited!** and changes nothing, not even the role. If the user had been archived, the invitation restores them with the role they had. ## What you should see The person appears in **Current Users** with the role you chose and status **Pending**. When they sign in with any option for that address, their status becomes **Active** and **Last Seen** starts updating. The **Invite team members** card on Home ticks once the workspace has more than one user. ## After the invitation Open the row's menu, the button at the right end of the row, to: - **Resend Invite** while the status is **Pending**. Pyn confirms **Invite Sent**, or **Invite Not Sent** if the email could not go out. - **Assign User Role**, **Assign Power User Role**, **Assign Admin Role** or **Assign Owner Role** to change the role. Only an Owner sees the Owner option, and only an Owner can change another Owner. You cannot change your own role. - **Archive** to remove the person's access. Archived users disappear from **Current Users**; inviting the same address again restores them. A separate **Inactive Users** view under **General** lists users whose account has been deactivated. ## Troubleshooting - **They signed in but see Create a Workspace for your team.** They used a different email address from the one you invited. Invite that address, or ask them to sign in with the invited one. - **They see Pending even though they signed in.** Check **Last Seen**; if it is blank, the sign-in was with another address. If it has a time, reload the page. ## Related - [Roles and permissions](https://support.pynhq.com/getting-started/roles-and-permissions/) for exactly what each role sees and can do. - [Sign in](https://support.pynhq.com/account/sign-in/) for what the invitee goes through. - [Complete the getting-started checklist](https://support.pynhq.com/home/complete-the-getting-started-checklist/) for the Home card this ticks. - [General](https://support.pynhq.com/settings/general/) for the Current Users and Inactive Users lists. ## Related Intercom articles - [Add/Remove a User to Your Pyn Account (Pyn 2)](https://intercom.help/pyn/en/articles/11518130-add-remove-a-user-to-your-pyn-account-pyn-2) — replaces - [Manage Pyn Permission Types (Pyn 2)](https://intercom.help/pyn/en/articles/12044706-manage-pyn-permission-types-pyn-2) — draws on --- # Plans and what each unlocks Source: https://support.pynhq.com/getting-started/plans/ > The plans a Pyn workspace can be on, what the app does differently on each, how add-ons show their availability, and where to ask for an upgrade. Every workspace is on one plan. The plan is set by Pyn, not from inside the app; what you can change from the app is to ask for an upgrade. The pages below describe what the app does differently on each plan, and how the **Addons** catalogue and the **Compare plans** dialog present the tiers. ![The Addons gallery, one tile per capability.](https://support.pynhq.com/media/getting-started/plans/getting-started-plans-addons.png) ## The plans | Plan | Who is on it | What the app does | | --- | --- | --- | | **Free** | New workspaces created from the sign-in page | One automation may be on at a time. Flows shows "Your plan includes one free automation!" with **Activate an automation**, and once one is on, "You've enabled your one free automation! Upgrade to create more and unlock additional features." with **Upgrade for unlimited automations**. | | **Playground** | Workspaces filled with sample data for exploring Pyn | Shows the **You're in Playground Mode** banner with **Exit**; hidden from the **Switch Workspace** list. | | **Team** | Paid customers | No automation limit. The **Compare plans** dialog calls this tier **Scale**. | | **Enterprise** | Paid customers on an enterprise agreement | No automation limit. The **AI** item is left out of the navigation. Add-ons marked **Enterprise Tier** are included. | | **Classic** | Workspaces migrated from Pyn 1 (Classic) | Marks a workspace that came from Pyn 1; it is not a plan you can choose. | A workspace shows its plan nowhere as a label. The banner on Flows, the chips in Addons and the **Your plan** button in **Compare plans** are how you tell. ## How add-ons show availability **Addons** (Owners and Admins; `/addons/all`) is a gallery of capabilities. Each tile carries a footer: | Footer | Meaning | What opening the tile offers | | --- | --- | --- | | **Installed** | The add-on is on in this workspace | "Congratulations! This Addon is installed and working in this Workspace." | | **Upgrade Available** | Part of the Team (Scale) tier and off in this workspace | An **Upgrade** button that puts you on the waitlist; the tile then reads "Addon Requested! We'll be in touch soon with next steps." | | **Enterprise Tier** | Part of the Enterprise tier | A **Request Demo** button | The catalogue, with the tier each add-on belongs to: | Add-on | Tier | | --- | --- | | Pyn fundamentals | Free | | Forms and Polls | Team | | Buddy Program | Team | | JIRA, Asana, ServiceNow | Team | | Culture Amp | Team | | Security Compliance | Team | | Slack/Teams #Channels | Enterprise | | Calendar Meetings | Enterprise | | Manager Digest | Enterprise | | LMS Integration | Enterprise | | SMS | Enterprise | | Mentor Program | Enterprise | | Personalized Note | Enterprise | | Custom Code | Enterprise | ## The Compare plans dialog **Upgrade for unlimited automations** on the Flows banner opens **Compare plans**, with a **Monthly** / **Yearly** switch and three columns; the middle one is marked **Recommended**. ![The Compare plans dialog, opened from the Flows banner.](https://support.pynhq.com/media/getting-started/plans/getting-started-plans-compare.png) | Column | Price shown | Listed features | | --- | --- | --- | | **Starter** (the free plan; marked **Your plan**) | Free, unlimited seats | Employee Journey Designer; one activation and one campaign for free; send emails, Slack and Teams; chat support; one manual and one automated trigger | | **Scale** (the Team plan) | Per employee per month, 200 employees minimum, unlimited seats | Everything in Starter plus unlimited automations, three-level security, alternative email recipient, custom fonts, custom domains and senders, saved recipient filters, HRIS support beyond BambooHR, security review, GDPR and DPA review, email support | | **Enterprise** | Custom | Everything in Scale plus internationalisation, SMS, advanced permissions, custom branding, data retention, cohorts, custom integrations and onboarding, benchmarks, support SLAs, payment terms, a support Slack channel, a dedicated CS partner, buddy automation, conditional senders | Both paid columns end in **Request upgrade**. The dialog is a summary for comparison; the plan tables above describe what the app enforces. ## Asking for an upgrade - **Request upgrade** in **Compare plans**, **Upgrade** or **Request Demo** on an add-on, and **Contact Sales** in the profile menu all open a request to Pyn's sales team. - A paid feature seen in a free workspace carries a 💎 line saying it is a paid feature, that you can view it in the Playground, and offering a **contact sales** link that opens the same request. ## Related - [Addons](https://support.pynhq.com/addons/) for each add-on in detail. - [Automations](https://support.pynhq.com/flows/automations/) for the one automation a free workspace runs. - [Workspaces](https://support.pynhq.com/account/workspaces/) for sandbox and playground workspaces. - [Profile](https://support.pynhq.com/account/profile/) for the Contact Sales item. --- # Roles and permissions Source: https://support.pynhq.com/getting-started/roles-and-permissions/ > The four workspace roles, which navigation items and actions each one unlocks, who can change whose role, and how the labels differ between screens. Every user in a workspace has exactly one role. The roles nest: **Owner** includes everything **Admin** can do, Admin includes **Power User**, and Power User includes **User**. The role decides which navigation items appear and which actions Pyn accepts. ![Settings, General, Current Users lists each user with their email, last seen, role and status.](https://support.pynhq.com/media/getting-started/roles/getting-started-roles-current-users.png) ## The four roles | Role | Who it is for | In one line | | --- | --- | --- | | **Owner** | The person who created the workspace and anyone they trust with it | Everything, including making and changing other Owners | | **Admin** | People Ops leads, HR systems owners | Everything except managing Owners | | **Power User** | HR partners and programme owners who build flows | Build, publish and run flows; no directory, settings or add-ons | | **User** | Reviewers and stakeholders who need to read | Read journey, library and activity; act on enrollments | The role names appear slightly differently on different screens: the **Invite user** dialog offers **Admin**, **Power User** and **Limited User**; the **Role** column in **Current Users** shows **Owner**, **Admin**, **Power** or **User**; the row menu says **Assign Power User Role**. **Limited User**, **Power** and **User** are the same two roles under different labels. ## What each role sees in the navigation | Navigation item | Owner | Admin | Power User | User | | --- | --- | --- | --- | --- | | Home, AI, Journey, Library, Activity, Search, Notices | Yes | Yes | Yes | Yes | | Flows | Yes | Yes | Yes | No | | Directory | Yes | Yes | No | No | | Addons | Yes | Yes | No | No | | Settings | Yes | Yes | No | No | ## What each role can do The table lists the actions Pyn's server checks by role. Anything not listed, such as reading, is open to every role. | Action | Minimum role | | --- | --- | | Create, duplicate, archive, restore or publish an automation; change its mode | Admin | | Edit an automation's steps, trigger and audience; send a test message; preview | User | | Manually enrol employees; verify (unpause) enrollments; republish enrollments to a new version | User | | Stop an enrollment | Admin | | Pause or reschedule an individual step in an enrollment | Admin | | Resend a bounced delivery | User | | Enrol a campaign template; duplicate a campaign or step | User | | Export an actions, enrollments or flows table as CSV; export a saved view | User | | Create or edit a conditional sender | Admin | | Invite a user; resend an invitation; archive a user | Admin | | Change a user's role to User, Power User or Admin | Admin | | Change a user's role to Owner, or change an Owner's role at all | Owner | | Change workspace company name, time zone, logo, theme or priorities | Admin | | Complete a Home checklist card | User | Navigation hides Flows from Users, so in practice a User edits flows only through links they are given; the server still accepts the edit. ## Changing roles - Open **Settings**, **Current Users**, then the menu at the right end of a row. The options are **Assign User Role**, **Assign Power User Role**, **Assign Admin Role** and, for Owners, **Assign Owner Role**; the role the person already has is left out. - An Admin sees no role options on an Owner's row. Only an Owner can promote someone to Owner or change an Owner. - Nobody can change their own role; the menu on your own row is disabled. - Assigning a role removes the previous one, so a user always has one role. ## Roles from single sign-on When a workspace signs in through Okta or an OpenID Connect provider, the admin can map provider groups to each Pyn role. On every sign-in Pyn gives the person the highest role of any group they are in. Pyn never creates a user from SSO alone; the address must be invited, or the mapping must cover it. See [SSO](https://support.pynhq.com/integrations/sso/). ## Users you may see but did not invite A user whose email ends in `@pynhq.com` or `@pyn.ai` carries a **Support** chip in **Current Users**. That is Pyn's own staff, present for support; their row behaves like any other. ## Related - [Invite your team](https://support.pynhq.com/getting-started/invite-your-team/) for choosing a role when you invite. - [Navigate Pyn](https://support.pynhq.com/home/navigate-pyn/) for what each item in the first table opens. - [SSO](https://support.pynhq.com/integrations/sso/) for group-to-role mapping. - [Profile](https://support.pynhq.com/account/profile/) for where your own role and status appear. ## Related Intercom articles - [Manage Pyn Permission Types (Pyn 2)](https://intercom.help/pyn/en/articles/12044706-manage-pyn-permission-types-pyn-2) — replaces - [Enabling Single Sign On (Pyn 2)](https://intercom.help/pyn/en/articles/16838066-enabling-single-sign-on-pyn-2) — draws on - [Add or deactivate users and admins (Pyn 1)](https://intercom.help/pyn/en/articles/6002205-add-or-deactivate-users-and-admins-pyn-1) — Pyn 1 article --- # Views, filters, search and export Source: https://support.pynhq.com/getting-started/views-filters-search-and-export/ > The control bar on every table and board in Pyn: the view menu, Filters, Sort, Find, Metrics, Save View, and the three kinds of export. Directory, Flows, Journey, Library, Notices and Settings show their records in **views**: a table, gallery, calendar, board or page that belongs to a group in the area's left rail (for example **Employees**, **Active**). Activity's views are built in. Every view has the same control bar above it; the sections below cover each control. ![The Filters menu on the Employees table lists one submenu per filterable property.](https://support.pynhq.com/media/getting-started/views/getting-started-views-control-bar.png) ## The control bar, left to right | Control | Shown when | What it does | | --- | --- | --- | | Heading | Always | The group and view name, such as **Employees / Active**. | | View menu (named **Table**, **Gallery**, **Calendar**, **Journey** or **Page**) | Always | Changes the layout and holds the view's own actions; see below. | | **Filters** | The view's records have a select or indexed date property | One submenu per property. | | **Sort** | Flows and Messages tables | A fixed list of sort orders for that table. | | **Find** | Journey, Content, Employees, Employee Groups, Enrollments, Flows and Messages | Text search within the view. | | **Metrics** | The view has metrics, such as enrollment counts on Flows | Choose the metrics shown and their date range. | | **Save View** or **Save as New View** | Always | Stores the changes you made, or discards them. | | Primary action | Depends on the view | **Invite** on Journey and Current Users; **Create New** and similar on others. | ## Filters Each submenu lists the property's options plus **(No Value)**; tick the values to keep. **Show Everything** removes the filter for that property; **Clear All** unticks every value. A date property offers **All Time**, **Last 30 Days**, **Upcoming 30 Days** and **Custom Range…**, which opens a start and end date picker. The **Filters** button is highlighted while a filter is applied, and marked dirty while you have unsaved changes. ## Sort **Flows** offers **Journey order, then status** (the default), **Status, then journey order**, **Title A to Z**, **Newest first** and **Needs publishing first, then journey order**. **Messages** offers **Sort by Scheduled**, **Sort by Completed** and **Sort by Draft**. Picking the current option again returns to the default. Sort is kept for the session and is not saved with the view. ## Find **Find** opens a field labelled **Enter your terms**. Words match anywhere in the record's text, including the middle of a word, and an email address matches that address exactly. Find is separate from universal **Search** in the navigation, which spans areas; see [Navigate Pyn](https://support.pynhq.com/home/navigate-pyn/). ## Metrics On views with metrics, **Metrics** has two submenus: the metrics to show, and **Date Range** with **last 30 days**, **last 90 days**, **last 6 months** and **last 12 months**. The chosen metric and range are saved with the view. ## The view menu ![On a built-in view the view menu offers Change View Type, Rows per page, Duplicate View and Export.](https://support.pynhq.com/media/getting-started/views/getting-started-views-customize-menu.png) | Item | Shown when | What it does | | --- | --- | --- | | **Change View Type** | The group allows more than one layout | **Table** (a table or spreadsheet view), **Gallery** (large cards), **Calendar**, **Journey** (a journey map) or **Page**. | | **Rows per page** | Table layout | **25** (the default) or **100**. | | **Rename View** | The view is one you saved | Prompts for a new title. | | **Duplicate View** | Always | Copies the view without its filters and metrics, and opens the copy. | | **Export** | Journey layout | Saves the board as a PNG image in a new tab. | | **Export Data** | Table layout on Actions, Enrollments or Flows | Downloads a CSV of the rows as shown, including unsaved filter and sort. | | **Export** | Table layout on a saved view with columns, except Flows | Starts a background export; a notice tells you when the file is ready. | | **Archive View** | The view is one you saved | Asks for confirmation, then removes the view and returns to the area's first view. | Built-in views (**Active**, **Upcoming**, **All Enrollments** and the rest) cannot be renamed or archived. Duplicate one to get a view you own. ## Saving a view ![A changed view shows its controls as dirty and enables Save View or Save as New View.](https://support.pynhq.com/media/getting-started/views/getting-started-views-save-view.png) Changing the filter, layout, rows per page or metrics marks the view dirty and enables the save button. On a view you own it reads **Save View** and updates the view in place. On a built-in view it reads **Save as New View**, creates a copy under the same group with your changes, and opens it; the new view appears in the left rail with an asterisk until it is saved again. The menu beside the button offers **Discard Changes**. ## The three exports | Export | Where | Result | Who | | --- | --- | --- | --- | | Image | Journey board, view menu, **Export** | A PNG of the board, opened in a new tab; "Could not export image" if it fails | Everyone | | CSV now | Actions, Enrollments and Flows tables, view menu, **Export Data** | A `.csv` named after the view, downloaded at once, up to 1,000 rows, matching the current filter and sort | Everyone | | Background export | Other saved table views, view menu, **Export** | A file produced in the background; a notice under **Notices** carries the download, visible only to the person who asked | Everyone | ## Related - [Navigate Pyn](https://support.pynhq.com/home/navigate-pyn/) for universal Search across areas. - [Activity](https://support.pynhq.com/activity/) for the Actions, Enrollments and Messages tables these controls appear on most. - [Directory](https://support.pynhq.com/directory/) for the Employees and Employee Groups views. - [Notices](https://support.pynhq.com/notices/) for where a background export arrives. --- # For employees and managers Source: https://support.pynhq.com/for-employees/ > What it means when a message from Pyn arrives in your inbox, Slack or Teams, how to act on it, how to reply, and what Pyn records about you. Your company uses Pyn to send the messages that go with moments in your working life: the week before you start, your first day, a work anniversary, a policy to read, a return from leave. The People team writes the messages and decides when they go out; Pyn delivers them to you by email, Slack or Microsoft Teams at the right moment, and tells the People team whether you acted on them. You never need a Pyn account for any of this. Everything you are asked to do happens inside the message, or on a page the message links to. ## What you might receive | What arrives | Where | What to do | | --- | --- | --- | | A message with information | Email, Slack or Teams | Read it. Nothing is tracked beyond the fact that it was delivered. | | A message with a button | Email, Slack or Teams | Select the button to open a link or read a page. If the button asks you to confirm something, selecting it records that you did. See [Acknowledge a message](https://support.pynhq.com/for-employees/acknowledge-a-message/). | | A form or poll | Inside a Slack message, or a button that opens a page | Answer the questions and select **Submit**. See [Answer a form or poll](https://support.pynhq.com/for-employees/answer-a-form-or-poll/). | | A link to a longer article | A button in the message | It opens on a reader page; see [The reader and respond pages](https://support.pynhq.com/for-employees/public-pages/). | | A calendar invitation | Your Google or Outlook calendar | Accept it as you would any invitation. See [Accept a calendar invitation](https://support.pynhq.com/for-employees/accept-a-calendar-invitation/). | | An invitation to a Slack channel | Slack | You are added to the channel; nothing to do. | | The same message again | Same channel as the first | A reminder: the People team asked Pyn to follow up until you act. Acting on either copy stops the reminders. | ## Guides - [Why you received a message from Pyn](https://support.pynhq.com/for-employees/why-you-received-a-message/): Who set it up, who it comes from, and how Pyn knew when to send it. - [Reply to a message](https://support.pynhq.com/for-employees/reply-to-a-message/): Where a reply goes, by channel. - [Acknowledge a message](https://support.pynhq.com/for-employees/acknowledge-a-message/): Confirm you have read or done something with one click. - [Answer a form or poll](https://support.pynhq.com/for-employees/answer-a-form-or-poll/): In Slack or on the respond page. - [Accept a calendar invitation](https://support.pynhq.com/for-employees/accept-a-calendar-invitation/): Pyn adds you to an event in your company calendar. - [Privacy and your data](https://support.pynhq.com/for-employees/privacy-and-your-data/): What Pyn knows about you, what it records, and who sees it. - [The reader and respond pages](https://support.pynhq.com/for-employees/public-pages/): The two pages a message can open without signing in. - [For managers](https://support.pynhq.com/for-employees/for-managers/): Nudges, escalations and picking a buddy. ## Related - [Why you received a message from Pyn](https://support.pynhq.com/for-employees/why-you-received-a-message/) for the people and automation behind a message. - [Acknowledge a message](https://support.pynhq.com/for-employees/acknowledge-a-message/) for the most common ask. - [Answer a form or poll](https://support.pynhq.com/for-employees/answer-a-form-or-poll/) for questions and surveys. - [Privacy and your data](https://support.pynhq.com/for-employees/privacy-and-your-data/) for what is recorded. - [For managers](https://support.pynhq.com/for-employees/for-managers/) if people report to you. ## Related Intercom articles - [Using Pyn with Slack](https://intercom.help/pyn/en/articles/6767588-using-pyn-with-slack) — draws on - [Set up a buddy automation (Pyn 2)](https://intercom.help/pyn/en/articles/16304943-set-up-a-buddy-automation-pyn-2) --- # For managers Source: https://support.pynhq.com/for-employees/for-managers/ > What Pyn sends you about the people who report to you, why a reminder or an escalation arrives, and how to nominate a buddy. Most of what Pyn sends a manager is about someone else: a new starter joining your team next week, a buddy to nominate, a 30-day check-in to book, an anniversary to mark. The People team writes these messages once and Pyn sends them to whoever manages the person at the time, so you receive them without being a Pyn user. ## What you might receive - **Preparation nudges**: "Alex starts on Monday", a week before a start date, with a checklist or a link to a guide. - **Asks with a button or form**: nominate a buddy, confirm equipment is ordered, complete a probation review. These are tracked, so Pyn can remind you and, if you still do not act, tell your own manager or HR business partner. - **Check-in prompts** at 30, 60 or 90 days and at anniversaries, often with a suggested agenda. - **Escalation notices** when someone on your team has not acted on something they were asked to do. - [What nudges and escalations look like](https://support.pynhq.com/for-employees/for-managers/what-nudges-and-escalations-look-like/): Reminders repeat the message; escalations tell someone else, and what the notice says. - [Pick a buddy](https://support.pynhq.com/for-employees/for-managers/pick-a-buddy/): Nominate a buddy for a new starter from the Slack picker. ## Related - [What nudges and escalations look like](https://support.pynhq.com/for-employees/for-managers/what-nudges-and-escalations-look-like/) for the follow-ups you may receive or cause. - [Pick a buddy](https://support.pynhq.com/for-employees/for-managers/pick-a-buddy/) for the most common manager ask. - [For employees and managers](https://support.pynhq.com/for-employees/) for what everyone receives. ## Related Intercom articles - [Set up a buddy automation (Pyn 2)](https://intercom.help/pyn/en/articles/16304943-set-up-a-buddy-automation-pyn-2) --- # Pick a buddy Source: https://support.pynhq.com/for-employees/for-managers/pick-a-buddy/ > Nominate a buddy for a new starter from the people picker in the Slack message Pyn sends you; the choice is written to the new starter's record and starts the buddy's own messages. Someone new is joining your team and the People team runs a buddy programme. A week or so before the start date, Pyn sends you a Slack message asking you to choose the buddy. The picker in the message lists your colleagues; your choice becomes the **Buddy** on the new starter's record and triggers the messages that brief the buddy. ## Before you start - You have the Slack message from Pyn with the buddy form in it. The buddy picker is a Slack feature; the People team sends it to Slack for that reason. - You know who you want: someone on or near the team who is not the new starter's manager. ## Steps 1. Open the Slack direct message. It names the new starter and shows the form, with a people list labelled **Buddy**. 2. Open the list and choose the colleague. You can type part of a name to narrow it. 3. Answer any other questions in the form, such as a note for the buddy. 4. Select **Submit**. > **Note:** If you receive the same message again a few days later, it is a reminder because no buddy has been recorded yet. Submitting from either copy is enough. ## What you should see Slack accepts the submission and the message no longer waits on you. In Pyn, the new starter's profile shows the buddy you chose, the **Buddy Assigned** automation enrols the new starter, and the buddy receives their first message within the hour. If you picked the wrong person, tell the People team; they can change the relationship on the record. ## Related - [Answer a form or poll](https://support.pynhq.com/for-employees/answer-a-form-or-poll/) for the other kinds of questions a form can hold. - [Buddy programme](https://support.pynhq.com/flows/automations/tutorial-buddy-programme/) for how the People team sets it up. - [What nudges and escalations look like](https://support.pynhq.com/for-employees/for-managers/what-nudges-and-escalations-look-like/) for the reminders that follow an unanswered nomination. ## Related Intercom articles - [Set up a buddy automation (Pyn 2)](https://intercom.help/pyn/en/articles/16304943-set-up-a-buddy-automation-pyn-2) — draws on --- # What nudges and escalations look like Source: https://support.pynhq.com/for-employees/for-managers/what-nudges-and-escalations-look-like/ > A reminder is the original message sent again a set number of days later; an escalation is a short generated notice to a manager, skip-level manager, HRBP or buddy saying who has not completed what. When the People team attaches a button or form to a message, they can also decide what happens if nobody acts on it. Two things can follow: the recipient gets the message again, or someone else is told. You can be on either end. ## Reminders A reminder is the same message, from the same sender, in the same channel, sent again a set number of days after the original was delivered. Up to ten can be set, though one to three is usual. They stop the moment the recipient selects the tracked button or submits the form, from any of the copies, so acting on the latest one is enough. Reminders are not sent for calendar invitations, channel invitations or tickets. If you keep receiving the same message, it is a reminder: select the button or complete the form and it stops. ## Escalations An escalation is a notice to someone other than the recipient, sent a set number of days after the original if it is still not actioned. The People team chooses who: the employee's manager, skip-level manager, HRBP or buddy, a specific person, a shared mailbox or a Slack channel. Up to three escalations can follow one message, for example the manager after 3 days and the skip-level manager after 7. An escalation is cancelled if the person acts first or the sequence is stopped. The notice is generated by Pyn, not written by the People team, and arrives in the same channel as the original message. It reads, for example: > ⏰ **Jane Doe** hasn't completed **Sign the handbook** in *New hire onboarding*. It was sent on 3 Oct (5 days ago). > > *You're getting this as Jane's manager.* When the message was about someone other than its recipient, the first line adds "for" and that person's name. By email, the subject names the step and the recipient in brackets. The second line says why you were chosen: as the employee's manager, skip-level manager, HRBP or buddy; "because the step is about you" when the escalation reaches the employee themselves; or "You're the escalation contact for this step" when you were named directly. ## What to do with one An escalation carries no button of its own. Speak to the person named, or forward them the original ask. Once they act, nothing further is sent to you about it. ## Related - [Acknowledge a message](https://support.pynhq.com/for-employees/acknowledge-a-message/) for what counts as acting. - [Add reminders](https://support.pynhq.com/flows/steps/add-reminders/) for how the People team sets them up. - [Add escalations](https://support.pynhq.com/flows/steps/add-escalations/) for the escalation settings. --- # Accept a calendar invitation Source: https://support.pynhq.com/for-employees/accept-a-calendar-invitation/ > Pyn adds you as a guest to an existing event in your company's Google Calendar or Outlook calendar, so the invitation arrives from the calendar, not from Pyn. Your company wants you at a recurring onboarding session, a benefits briefing or a manager training. Rather than sending you the details to book yourself, Pyn adds you as a guest to the event the organiser already has in their calendar. ## Steps 1. Look for the invitation in your calendar application. It comes from Google Calendar or Microsoft Outlook under the organiser's name, in the same way as any other invitation, because Pyn added you to their event. 2. Open it. The title, time, location and description are the organiser's; Pyn changes nothing about the event except the guest list. 3. Accept, decline or propose a new time using your calendar's own buttons. Your response goes to the organiser. 4. If the event repeats, the People team chose whether you were added to every occurrence or only to the next one after a date on your record, so you may see a single event rather than the whole series. ## What you should see The event in your calendar with you listed as a guest. Pyn records that the invitation was sent; it does not track whether you accepted. ## Related - [Why you received a message from Pyn](https://support.pynhq.com/for-employees/why-you-received-a-message/) for how the timing was chosen. - [For employees and managers](https://support.pynhq.com/for-employees/) for everything else you might receive. --- # Acknowledge a message Source: https://support.pynhq.com/for-employees/acknowledge-a-message/ > Select the button in a message from Pyn to confirm you have read a policy, finished a task or opened a page; Pyn records it and stops any reminders. A message asks you to confirm something: "I've read the handbook", "My equipment has arrived", "Read the benefits guide". The ask is a button inside the message. Selecting it is the acknowledgement; there is nothing else to fill in or send back. ## Steps 1. Open the message in your email, Slack or Teams. 2. Find the button. In email it is a coloured or outlined button in the body; in Slack it is a Slack button under the text; in Teams it is a button on the card. 3. Select it. One of three things happens, depending on what the People team attached: - a web page opens, for example a policy on your intranet; - a reader page opens with an article the People team wrote (see [The reader and respond pages](https://support.pynhq.com/for-employees/public-pages/)); - a form opens, in which case answer it as described in [Answer a form or poll](https://support.pynhq.com/for-employees/answer-a-form-or-poll/). 4. Read or do what it asks. Selecting the button is what Pyn records; you do not need to come back to the message afterwards. > **Note:** Replying to the message, or reading it without selecting the button, does not count as acknowledging it. If the People team set reminders, you receive the same message again until you select the button. ## What you should see The link or page opens. In Slack, the message keeps the button; in Pyn, the People team sees your delivery move to **Actioned**, and any reminders or escalations attached to it are cancelled. ## Related - [Answer a form or poll](https://support.pynhq.com/for-employees/answer-a-form-or-poll/) when the button opens questions. - [The reader and respond pages](https://support.pynhq.com/for-employees/public-pages/) for the pages a button can open. - [Privacy and your data](https://support.pynhq.com/for-employees/privacy-and-your-data/) for what "Actioned" means and who sees it. ## Related Intercom articles - [Create a Read and Accept message](https://intercom.help/pyn/en/articles/6010965-create-a-read-and-accept-message) — Pyn 1 article, kept for reference --- # Answer a form or poll Source: https://support.pynhq.com/for-employees/answer-a-form-or-poll/ > Answer a Pyn form or poll inside the Slack message it arrived in, or on the respond page an email button opens, and see Submitted when it is recorded. The People team wants to hear from you: how your first month went, whether you have everything you need, a quick pulse on the week. A form has several questions and a **Submit** button. A poll has one or two questions and records each answer the moment you select it. ## Steps **Slack** 1. Open the direct message or channel post. The questions are laid out inside the message. 2. Answer each one: tick a checkbox, pick one of **Very Dissatisfied**, **Dissatisfied**, **Neutral**, **Satisfied** or **Very Satisfied**, type into a text box, or pick a colleague from a people list. 3. Select **Submit** at the bottom of the message. For a poll, selecting an answer submits it straight away. 4. Slack keeps the message; the answers are sent to Pyn. **Email** 1. Select the button in the email. The respond page opens in your browser, with the form's title at the top. No sign-in is needed. 2. Answer each question. A required question that you leave blank is marked **This field is required.** when you submit, and the page waits for you to fill it in. 3. Select **Submit**. For a poll, select the answer that fits; each answer is recorded as soon as you select it. 4. The page replaces the questions with **Submitted** and **Your response has been recorded.** > **Note:** If you open the link again after submitting, the page shows **Submitted** rather than the questions. If the page says **Something went wrong** and that the link may have expired or is invalid, the message it came from was withdrawn; ask your People team. ## What you should see **Submitted** on the respond page, or the Slack message accepting your answers. The People team sees your delivery move to **Actioned** and can read your answers against your record. Any reminders attached to the message stop. ## Related - [Acknowledge a message](https://support.pynhq.com/for-employees/acknowledge-a-message/) for a message with a button but no questions. - [The reader and respond pages](https://support.pynhq.com/for-employees/public-pages/) for how the respond page works. - [Pick a buddy](https://support.pynhq.com/for-employees/for-managers/pick-a-buddy/) for the people picker managers see. --- # Privacy and your data Source: https://support.pynhq.com/for-employees/privacy-and-your-data/ > What Pyn holds about you comes from your company's HR system; what it records about a message is whether it was delivered, whether you opened a link and whether you acted; only your company's Pyn users see either. Pyn is a tool your employer runs. It holds a copy of parts of your employee record so it can address and time messages, and it records how each message was received so the People team can tell who still needs a nudge. Nothing in Pyn is visible outside your company's workspace. ## What Pyn knows about you Your record in Pyn comes from your company's HR system, a spreadsheet the People team uploaded, or both, refreshed on a schedule. The fields are the ones needed to deliver and personalise messages: name and preferred name, work and personal email, job title, department, team, location and country, time zone, start date, birthday, manager, buddy, mentor and HR business partner, and whether you are an upcoming joiner, current, on leave or have left. [HRIS fields](https://support.pynhq.com/integrations/hris-fields/) lists what each HR system provides. If your company connected Slack, Pyn also reads the Slack user list with email addresses, so it can match your Slack account to your record and send you direct messages. Pyn cannot read your Slack channels; it can post to a channel only when the Pyn app has been added to it. ## What Pyn records about a message | Status | What it means | | --- | --- | | **Delivered** | The channel accepted the message. | | **Clicked** | You opened a link in it. Links in a Pyn message pass through Pyn so it can record this. | | **Actioned** | You selected a button that was marked for tracking, or submitted a form or poll. | | **Bounced** | An email could not be delivered. | Pyn does not record that you opened or read an email, and it does not read replies you send to a person. Form and poll answers are stored against your record for the People team to read. ## Who sees it Users of your company's Pyn workspace, which usually means the People team and the admins they invite. They see each message as it was sent to you, its status, and your form answers. Your manager does not see this unless they are a Pyn user; what a manager receives from Pyn is described in [For managers](https://support.pynhq.com/for-employees/for-managers/). ## Links that work without signing in A button in a message can open a reader page or a respond page. Each link carries a code that identifies the message it came from, and the code does not expire, so keep the message to yourself as you would any work email. See [The reader and respond pages](https://support.pynhq.com/for-employees/public-pages/). ## Related - [Why you received a message from Pyn](https://support.pynhq.com/for-employees/why-you-received-a-message/) for who sends what and when. - [HRIS fields](https://support.pynhq.com/integrations/hris-fields/) for the fields each HR system provides to Pyn. - [Sync cadence and matching](https://support.pynhq.com/integrations/sync-and-matching/) for how often records refresh and how your time zone is worked out. - [Data and security](https://support.pynhq.com/concepts/data-and-security/) for how the workspace itself is secured. --- # The reader and respond pages Source: https://support.pynhq.com/for-employees/public-pages/ > Two pages a Pyn message can open without a sign-in: the reader page shows an article the People team wrote, and the respond page takes a form or poll answer. A message is short; the thing it points at can be longer. When the People team attaches an article or a form to a message, the button in the message opens one of two pages in your browser. Neither asks you to sign in or create an account. ## The reader page The reader page shows one piece of content from your company's Pyn library: a title and the article under it, with the formatting, images and links the author added. It opens from a **Link to Library Content** button in an email, Slack or Teams message. Opening it records a click on the message; the page itself asks nothing of you. The address is `/reader/` followed by a code. The code identifies the message you received, so the page shows the version of the article that was current when the message was sent, and the link keeps working. ## The respond page The respond page shows a form or poll: its title, each question, and **Submit** for a form. It opens from a form button in an email. (In Slack the same form appears inside the message instead, with no page to open.) - Questions can be a checkbox, a five-point scale from **Very Dissatisfied** to **Very Satisfied**, a text box, or a block of text to read. - A required question left blank shows **This field is required.** when you select **Submit**. - A poll records each answer the moment you select it, so it has no **Submit** button. - After submitting, the page reads **Submitted** and **Your response has been recorded.** Opening the link again shows the same, not the questions. - **Something went wrong** with "We couldn't load this form" means the link is invalid, for example because the message was withdrawn. The address is `/respond/` followed by a code tied to your message, so your answers are recorded against you without a sign-in. ## Related - [Acknowledge a message](https://support.pynhq.com/for-employees/acknowledge-a-message/) for the buttons that open these pages. - [Answer a form or poll](https://support.pynhq.com/for-employees/answer-a-form-or-poll/) for the steps on the respond page and in Slack. - [Privacy and your data](https://support.pynhq.com/for-employees/privacy-and-your-data/) for what the codes in the links carry. --- # Reply to a message Source: https://support.pynhq.com/for-employees/reply-to-a-message/ > Where a reply goes depends on the channel and the sender: a person's mailbox or Slack account, a company address, or the Pyn app, which no person reads. You want to ask a question about something Pyn sent you. Where you reply depends on who the message came from, which Pyn shows plainly on every message. ## Steps 1. Look at the sender of the message: the **From** line of an email, the name on a Slack direct message, or the app name on a Teams message. 2. If it is a colleague's name and address, reply as you normally would. Pyn sent the message through that person's own mailbox or Slack account, so the reply reaches them directly. 3. If it is a company address such as `people@yourcompany.com`, reply to it. The People team set that address up as a sender and receives replies there. 4. If it is the Pyn app in Slack or Teams, do not reply in that conversation; there is no person behind the app. Use the contact details in the message, or ask your People team. 5. If the message asks you to confirm or answer something, use the button or form in it rather than replying. A reply does not count as acting on the message, so reminders keep coming until you select the button or submit the form; see [Acknowledge a message](https://support.pynhq.com/for-employees/acknowledge-a-message/). ## What you should see A reply to a person or a company address lands in their inbox or Slack like any other message. A button or form, once used, changes the message in Slack to show it was submitted, and no reminder follows. ## Related - [Why you received a message from Pyn](https://support.pynhq.com/for-employees/why-you-received-a-message/) for how senders are chosen. - [Acknowledge a message](https://support.pynhq.com/for-employees/acknowledge-a-message/) to act rather than reply. - [For employees and managers](https://support.pynhq.com/for-employees/) for the rest of what you might receive. ## Related Intercom articles - [Using Pyn with Slack](https://intercom.help/pyn/en/articles/6767588-using-pyn-with-slack) — draws on - [What read/write access does Pyn use for the Slack integration?](https://intercom.help/pyn/en/articles/6024093-what-read-write-access-does-pyn-use-for-the-slack-integration) — draws on --- # Why you received a message from Pyn Source: https://support.pynhq.com/for-employees/why-you-received-a-message/ > A message from Pyn was written by your People team, sent from a person or address they chose, and timed by a date on your employee record such as your start date or anniversary. A message from Pyn is a message from your company. Someone on the People team wrote it, chose who it should go to and when, and Pyn delivered it. The timing comes from your employee record, so a "welcome to your first week" email arrives in your first week and an anniversary note arrives on your anniversary. ## Who wrote it Your company's People team, or whoever they have given access to Pyn, builds automations: a trigger (for example, a start date), an audience (for example, everyone in Engineering) and a sequence of messages. When your record meets the trigger, you are enrolled and each message is scheduled relative to that date. Every message was written by a person before you were ever enrolled; Pyn fills in details such as your first name, your manager's name or your start date when it sends. ## Who it comes from The People team picks a sender for each message, so the name you see is deliberate: - **An email from a colleague's address**, such as your manager or the head of People. Pyn sent it through their connected Google Workspace or Microsoft 365 mailbox, so a reply goes to them. - **An email from a company address**, such as `people@yourcompany.com`. It is a verified sending address that the People team set up. - **A Slack direct message from a colleague.** They connected their Slack account to Pyn so messages can come from them. - **A Slack direct message or channel post from the Pyn app**, or a Microsoft Teams message from the Pyn app. The company's Pyn installation sent it. ## Why now Most messages are tied to a date on your record: start date, anniversary, birthday, a return from leave, the day you became a manager. Others fire when something changes, such as being added to a team or being named as someone's buddy, and some run on a timetable such as a monthly pulse. The People team can also enrol people by hand, for example to send a campaign to a group on a chosen day. Pyn sends at the time of day the People team chose, in your time zone where your record has one, otherwise in the company's time zone. ## Why you got it twice A message can carry a button or a form the People team wants you to act on. If you have not acted after a set number of days, Pyn sends the same message again as a reminder, up to three times. Acting on any copy stops the rest. If you still do not act, Pyn can notify your manager; see [What nudges and escalations look like](https://support.pynhq.com/for-employees/for-managers/what-nudges-and-escalations-look-like/). ## Related - [Reply to a message](https://support.pynhq.com/for-employees/reply-to-a-message/) for where a reply lands, by channel. - [Privacy and your data](https://support.pynhq.com/for-employees/privacy-and-your-data/) for what Pyn holds and records. - [For employees and managers](https://support.pynhq.com/for-employees/) for everything you might receive. ## Related Intercom articles - [Using Pyn with Slack](https://intercom.help/pyn/en/articles/6767588-using-pyn-with-slack) — draws on --- # Home Source: https://support.pynhq.com/home/ > Home is where you land after signing in: a greeting, the date and a checklist of setup steps that tick themselves off as your workspace comes together. Home is the first page after sign-in and the page the Pyn logo returns you to. It greets you by name and shows a short checklist, **Welcome, let's get started!**, of the things a new workspace needs: people data, a messaging channel, teammates and a live flow. Each card opens the place in the app where you do that step, and ticks itself off when the step is done. ![Home greets you by name and lists the setup steps left to do.](https://support.pynhq.com/media/home/overview/home-overview.png) ## Who uses it Everyone lands here, whatever their role. The checklist is aimed at the admin setting the workspace up: its cards lead to **Settings**, which only admins and owners can open. Once every card is ticked, Home is the greeting and the date; the day-to-day numbers live in [Activity](https://support.pynhq.com/activity/). ## Concepts - **Greeting**: **Good Morning**, **Good Afternoon** or **Good Evening** by your clock, followed by your preferred name or display name, and today's date. - **Checklist card**: one setup step, with a title, a one-line reason and an arrow. A ticked card shows a filled check and struck-through text; it stays in the list. - **Getting Started Guide**: the first card, which opens this help site. It is the only card you dismiss by hand, with the **X** on its right; the others complete on their own. - **Playground banner**: in a playground workspace a banner above the greeting says **You're in Playground Mode** with an **Exit** button. ## Which cards you see The cards depend on the answers given when the workspace was created. Every workspace gets **Invite team members** and **Activate your first flow**. Choosing BambooHR or Workday as the HRIS adds an **Integrate with BambooHR** or **Integrate with Workday** card; HiBob and Rippling get an inactive integration under Settings but no card; any other HRIS answer adds **Upload Employee File**. Choosing Slack as the messaging platform adds **Connect to Slack**. [Complete the getting-started checklist](https://support.pynhq.com/home/complete-the-getting-started-checklist/) lists where each card goes and what ticks it. ## What you can do here - [Complete the getting-started checklist](https://support.pynhq.com/home/complete-the-getting-started-checklist/) - [Navigate Pyn](https://support.pynhq.com/home/navigate-pyn/): the left navigation, who sees which items, Search and Notices - [Set up your workspace in 30 minutes](https://support.pynhq.com/getting-started/tutorial-set-up-your-workspace/): the checklist as a start-to-finish tutorial ## Where it is in the app `/home`. Opening `https://app.pyn.ai/` redirects here, and so does selecting **Home** at the top of the left navigation or the Pyn logo above it. ## Related - [Complete the getting-started checklist](https://support.pynhq.com/home/complete-the-getting-started-checklist/) for what each card does and when it ticks. - [Navigate Pyn](https://support.pynhq.com/home/navigate-pyn/) for the navigation items and what each role sees. - [Set up your workspace in 30 minutes](https://support.pynhq.com/getting-started/tutorial-set-up-your-workspace/) to work through the checklist end to end. - [Activity](https://support.pynhq.com/activity/) for enrollments, messages and the dashboard once flows are running. ## Related Intercom articles - [Getting started guide (Pyn 2)](https://intercom.help/pyn/en/articles/13336486-getting-started-guide-pyn-2) — draws on --- # Complete the getting-started checklist Source: https://support.pynhq.com/home/complete-the-getting-started-checklist/ > Work through the cards on Home, see what each one opens and what makes it tick itself off, and dismiss the guide card when you no longer need it. You have a new workspace and Home shows a list of cards under **Welcome, let's get started!**. Each card is one setup step. Working down the list leaves you with people data, a channel to send through, a team and a live flow. ## Before you start - You are an **Owner** or **Admin**. The cards lead to Settings, which other roles cannot open. - For the HRIS card, you have the credentials for your people system to hand, or a spreadsheet of employees for Employee File. ![Home greets you by name and lists the setup steps left to do.](https://support.pynhq.com/media/home/overview/home-overview.png) ## Steps 1. In Pyn, open **Home** at the top of the left navigation. The cards are listed under **Welcome, let's get started!**. 2. Select **Invite team members**. The **Invite user** dialog opens on top of Home; enter an **Email address**, choose a **Role** and select **Invite**. The card ticks once the workspace has more than one user who is active, pending or created. ![Invite team members opens the Invite user dialog without leaving Home.](https://support.pynhq.com/media/home/checklist/home-checklist-invite-dialog.png) 3. Select the people-data card. **Integrate with BambooHR** or **Integrate with Workday** opens that integration's panel in Settings (a HiBob or Rippling workspace has no card: open **Settings**, **Installed** and select the integration); **Upload Employee File** opens the Employee File panel, where **Download Sample File** shows the columns and the upload button takes your spreadsheet. The card ticks once a first run of employees has succeeded. 4. Select **Connect to Slack** to open the Slack integration panel in Settings and install the Pyn app in your Slack workspace. The card ticks once a messaging integration is active. If your workspace was created with Email or Microsoft Teams as the platform there is no Slack card; connect a sender or Teams from Settings instead. 5. Select **Activate your first flow**. It opens **Flows**, where you pick an automation and select **Use This**. The card ticks once any automation is in **Automated**, **Verification** or **Manual Only** mode. 6. When you no longer want the **Getting Started Guide** card, select the **X** at its right edge. It is the only card you dismiss by hand. > **Note:** Pyn re-checks the cards each time Home loads, so a step done from Settings or Flows directly, without going through the card, still ticks it. Dismissing the guide card is remembered in this browser only; another browser or device shows it again. ## What you should see Every card except the guide shows a filled check and struck-through text. Home then shows the greeting, the date and the ticked list; the live view of what Pyn is sending moves to [Activity](https://support.pynhq.com/activity/). ## Troubleshooting - **The HRIS card does not tick after you connect.** The tick waits for the first successful sync of employees, not for the connection itself. Open **Directory** to see whether employees have arrived; a sync can take a few minutes. - **You are not an admin and the cards open an empty page.** Settings is hidden from Power Users and Users. Ask an Owner or Admin to complete the checklist, or to change your role. ## Related - [Home](https://support.pynhq.com/home/) for what Home shows and which cards a workspace gets. - [Set up your workspace in 30 minutes](https://support.pynhq.com/getting-started/tutorial-set-up-your-workspace/) for the same steps with every screen described. - [Invite your team](https://support.pynhq.com/getting-started/invite-your-team/) for roles and what the invitee receives. - [Integrations](https://support.pynhq.com/integrations/) for each HRIS and messaging integration in detail. --- # Navigate Pyn Source: https://support.pynhq.com/home/navigate-pyn/ > The left navigation on every page: what each item opens, which items each role sees, how Search works and what the Notices dot means. The left navigation is the same on every page of Pyn. It lists the product areas top to bottom, in the order below, with **Search** after them, **Notices** and **Settings** at the bottom, and your avatar last. ![Home greets you by name and lists the setup steps left to do.](https://support.pynhq.com/media/home/overview/home-overview.png) ## The items, top to bottom | Item | Opens | Who sees it | | --- | --- | --- | | **Home** | `/home`, the greeting and checklist | Everyone | | **AI** | `/ai/home`, Pyn AI | Everyone except Enterprise-plan workspaces | | **Journey** | The journey map | Everyone | | **Library** | Content and Media | Everyone | | **Directory** | Employees, Employee Groups, Demographics | Owners and Admins | | **Flows** | Automations, Campaign Templates, Cohort Templates, Forms, Polls | Owners, Admins and Power Users | | **Activity** | Enrollments, Messages, Actions and the Dashboard | Everyone | | **Addons** | The add-ons catalogue | Owners and Admins | | **Search** | Universal search, as a dialog | Everyone | | **Notices** | `/notifications/home`, in-app notices | Everyone | | **Settings** | `/settings/home`, which opens Integrations, Installed | Owners and Admins | | Your avatar | The profile menu | Everyone | A **User** therefore sees Home, AI, Journey, Library, Activity, Search and Notices; a **Power User** adds Flows; **Admins** and **Owners** see everything. [Roles and permissions](https://support.pynhq.com/getting-started/roles-and-permissions/) covers what each role can do inside those areas. ## Steps: find something with Search 1. In Pyn, select **Search** in the left navigation. A dialog opens at the top of the page with the field focused. 2. Type part of a name. Pyn searches employees, employee groups, forms, journey moments and automations, matching in the middle of words, and lists up to ten results as you type. 3. Select a result. An employee or group opens in a panel over Directory, a moment opens in a panel over Journey, and a form or automation opens its editor. Typing an email address searches for that exact address. Universal search does not cover enrollments, messages, polls or library content; use **Find** on those tables instead, as described in [Views, filters, search and export](https://support.pynhq.com/getting-started/views-filters-search-and-export/). ## Notices, warnings and collapsing - **Notices** shows a red dot when you have open notices: a bounced delivery, an integration or sender that needs reconnecting, a webhook that could not take a payload, or an export that is ready to download. - A **yellow bar** down the left edge of the navigation marks a sandbox workspace. - The **Expand navigation** button appears when the navigation is collapsed to icons; the warning bar stays visible in the collapsed state. ## What you should see The current area is highlighted, and selecting it again does nothing. Every item is a link, so middle-click or Cmd-click opens it in a new tab. ## Related - [Home](https://support.pynhq.com/home/) for what the first item shows. - [Roles and permissions](https://support.pynhq.com/getting-started/roles-and-permissions/) for the full matrix behind the Who sees it column. - [Views, filters, search and export](https://support.pynhq.com/getting-started/views-filters-search-and-export/) for Find, Filters and Sort inside each area. - [Notices](https://support.pynhq.com/notices/) for what each notice means and how to act on it. --- # AI Source: https://support.pynhq.com/ai/ > Pyn AI, in preview: a home page, a Context section with employees, countries and departments, and an Agents section with a skill catalogue and a run log. The preview shows a sample organisation, not your workspace's data. **AI** is the Pyn AI preview. It sits in the left navigation, under **Home**, and opens on a page that reads **Pyn AI knows about your people.** The idea it demonstrates is a per-employee context, built from the moments on the employee journey, that agents read and act on: a weekly digest for every manager, a daily onboarding health report, and a catalogue of further skills. > **Note:** Pyn AI is in preview. Every page in the area is populated from a sample organisation of 500 employees built into the app, with two skills enabled and six recorded runs. Nothing you see is read from your workspace, and nothing you select on these pages changes it. ![AI opens on Home, with the tagline and the preview's headline figures.](https://support.pynhq.com/media/ai/overview/ai-overview-home.png) ## What is in the area | Group | Views | What it shows | | --- | --- | --- | | **Home** | **Home** | The tagline, a paragraph linking to the employees, departments and countries in the sample, and five figures: **Employees**, **Pending actions**, **Agents running**, **Hours saved** and **$ saved**. | | **Context** | **Employees**, **Countries**, **Departments**, **Teams** | Who the agents know about and what signals they hold. **Teams** opens an empty page. See [Context](https://support.pynhq.com/ai/context/). | | **Agents** | **Skills**, **Runs** | The catalogue of skills, each tied to a journey moment, and the log of runs. See [Agents](https://support.pynhq.com/ai/agents/). | Selecting a row in **Employees**, **Skills** or **Runs** opens a full page for it at `/ai/employee/`, `/ai/skill/` or `/ai/run/` followed by its id, with **Back** returning to the table. ## Who sees it The **AI** item appears for every role in workspaces on the Free, Playground and Team plans. It is left out of the navigation on the Enterprise plan, and Pyn can switch the preview off for a workspace. With the preview off, **AI** opens on a page titled **Pyn AI** that explains the feature is in beta testing and offers **Contact Us**. ## Pyn AI and MCP servers Separately from the preview, a workspace admin can expose chosen Pyn operations to an AI client such as Claude or Cursor through an MCP server. That lives under **Settings**, **MCP Servers**, and reads your real workspace data subject to each person's role; see [MCP Servers](https://support.pynhq.com/settings/mcp-servers/). - [Context](https://support.pynhq.com/ai/context/): Employees, countries and departments, and the Employee Context page. - [Agents](https://support.pynhq.com/ai/agents/): Skills, runs and what a run page shows. - [Skill catalogue](https://support.pynhq.com/ai/agents/reference-skill-catalogue/): Every skill in the preview, its moment, owner and purpose. ## Where it is in the app Open `/ai/home` in Pyn, or select **AI** in the left navigation. The groups and views are listed across the top of the page. ## Related - [Context](https://support.pynhq.com/ai/context/) for the people data the preview reasons over. - [Agents](https://support.pynhq.com/ai/agents/) for skills and runs. - [Skill catalogue](https://support.pynhq.com/ai/agents/reference-skill-catalogue/) for the full list of skills. - [MCP Servers](https://support.pynhq.com/settings/mcp-servers/) for connecting an AI client to your workspace. --- # Agents Source: https://support.pynhq.com/ai/agents/ > The Agents section of the Pyn AI preview: a Skills table of 22 skills tied to journey moments, two of them enabled, and a Runs log with the time, duration and result of each run. An agent in the preview is a skill: a named job with a description, a prompt that spells out what it does, an owner, and a journey moment it belongs to. **Skills** is the catalogue; **Runs** is what has happened. > **Note:** Pyn AI is in preview. The skills, owners, runs and savings shown are sample data built into the app. Two skills are enabled, **weekly-manager-digest** and **daily-onboarding-health**, and the six runs belong to them; the other twenty skills are listed as **Disabled** and cannot be opened. ![Agents > Skills lists every skill with its moment, status, owner and savings.](https://support.pynhq.com/media/ai/agents/ai-agents-skills.png) ## Skills The table has **Moment** (a chip for the journey moment), **Name**, **Status** (**Enabled** or **Disabled**), **Owner**, **Hours Saved** and **$ Saved** (totals across the skill's runs, or a dash), and **Preview** (a link to a sample image for the two enabled skills). Select an enabled row to open the skill's page: - **Owner**, **Hours Saved** and **$ Saved**; - **Description**, in a sentence or two, including when the skill is meant to be triggered; - the full prompt the skill runs with, as written: for the manager digest, the fixed header and footer, the priority order of categories from onboarding to compliance, the action labels and the data sources per category; - **Recent Runs**, with **Run**, **Status**, **Started**, **Duration** and **Result**, ten to a page. [Skill catalogue](https://support.pynhq.com/ai/agents/reference-skill-catalogue/) lists all 22. ## Runs The **Runs** table has **Skill**, **Status**, **Started**, **Duration**, **Hours Saved**, **$ Saved** and **Triggered By**. Every recorded run is **completed** and was triggered by **schedule**. Select a row to open the run's page, titled **Run** and its id, with a **Details** section repeating those fields and a **Result** section, for example "Digest compiled and sent to 42 managers." or "Report generated. 4 active onboardings, 1 at-risk, 2 flags." ## Where it is in the app Open `/ai/agents/skills` or `/ai/agents/runs` in Pyn, or select **AI** in the left navigation and then **Skills** or **Runs** under **Agents**. ## Related - [Skill catalogue](https://support.pynhq.com/ai/agents/reference-skill-catalogue/) for every skill, its moment and its purpose. - [Context](https://support.pynhq.com/ai/context/) for the data the skills read. - [AI](https://support.pynhq.com/ai/) for what the preview is and who sees it. --- # Skill catalogue Source: https://support.pynhq.com/ai/agents/reference-skill-catalogue/ > Every skill in the Pyn AI preview, grouped by the part of the employee journey it serves, with its journey moment, owner, whether it is enabled, and what its description says it does. The **Skills** table in the Pyn AI preview lists 22 skills. Each is tied to one moment on the [Journey](https://support.pynhq.com/journey/) map and has an owner from the sample organisation. The two enabled skills have run; the rest are catalogue entries that describe what the skill would do. > **Note:** Pyn AI is in preview. This list reproduces the catalogue built into the app; it is not a list of features you can turn on. ## Enabled | Skill | Moment | Owner | What it does | | --- | --- | --- | --- | | **weekly-manager-digest** | Next steps | Valentina Lee | Compiles a prioritised weekly digest for every manager with at least one direct report, delivered on Friday at 10 AM in the manager's time zone, covering onboarding, transitions, performance, celebrations, leave, coaching, hiring and compliance for their team, with company-wide context from leadership. | | **daily-onboarding-health** | First day | Valentina Lee | Generates a daily onboarding health report for the onboarding coordinator covering every employee in an onboarding journey, flagging those at risk. | ## Onboarding | Skill | Moment | Owner | What it does | | --- | --- | --- | --- | | **welcome-email** | First day | Nicholas Miller | Sends a personalised first-day email to the employee and their manager. | | **buddy-assignment** | Pre-onboarding | Nicholas Miller | Pairs a new hire with an onboarding buddy from the same department. | | **equipment-provisioning** | First day | Nicholas Miller | Creates IT tickets for a new hire's equipment and access. | | **thirty-day-checkin** | 90-day check-in | Nicholas Miller | Sends a 30-day survey to the employee and a separate one to their manager. | | **ninety-day-report** | 90-day check-in | Nicholas Miller | Compiles a 90-day summary of the new hire's onboarding. | ## Offboarding | Skill | Moment | Owner | What it does | | --- | --- | --- | --- | | **offboarding-checklist** | Employee exit | Nicholas Miller | Starts the departure process when an employee resigns or is let go. | | **access-revocation** | Employee exit | Nicholas Miller | Disables system access for a departing employee on their last day. | | **exit-survey** | Employee exit | Nicholas Miller | Sends a confidential exit survey to departing employees. | ## Celebrations and engagement | Skill | Moment | Owner | What it does | | --- | --- | --- | --- | | **birthday-notification** | Birthday | Nicholas Miller | Posts a birthday message to the employee's team channel. | | **anniversary-celebration** | Milestone anniversary | Nicholas Miller | Posts a milestone message on a work anniversary. | | **pulse-survey** | Engagement survey | Nicholas Miller | Distributes a short quarterly engagement survey and collects anonymised responses. | | **kudos-digest** | Surprise & delight | Valentina Lee | Summarises the week's peer-to-peer recognition. | ## Compliance and leave | Skill | Moment | Owner | What it does | | --- | --- | --- | --- | | **training-tracker** | Compliance | Valentina Lee | Monitors required training and reminds employees who are overdue. | | **policy-acknowledgement** | Compliance | Valentina Lee | Sends updated policy documents for review and signature. | | **visa-expiry-monitor** | Leaves of absence | Nicholas Miller | Checks for upcoming visa and work permit expirations and alerts the People team. | ## Performance and career | Skill | Moment | Owner | What it does | | --- | --- | --- | --- | | **review-cycle-reminder** | Introduce review cycle | Nicholas Miller | Notifies managers as a review cycle approaches and tracks their progress. | | **three-sixty-feedback** | Evaluations | Nicholas Miller | Gathers 360-degree feedback from an employee's peers, reports and manager. | | **career-discussion-prep** | Development conversations | Valentina Lee | Generates talking points and a framework for a manager-employee career conversation. | ## Operations | Skill | Moment | Owner | What it does | | --- | --- | --- | --- | | **payroll-sync** | Transitions | Valentina Lee | Pushes employee data changes (new hires, terminations, role and salary changes) to the payroll provider. | | **headcount-report** | Next steps | Valentina Lee | Produces a snapshot of headcount, open positions, recent departures and attrition by department. | ## Related - [Agents](https://support.pynhq.com/ai/agents/) for the Skills and Runs tables and the skill page. - [Context](https://support.pynhq.com/ai/context/) for the signals the skills read. - [Journey](https://support.pynhq.com/journey/) for the moments in the second column. --- # Context Source: https://support.pynhq.com/ai/context/ > The Context section of the Pyn AI preview: tables of employees, countries and departments from a sample organisation, and the Employee Context page that gathers the signals and suggested actions for one person and their reports. **Context** is what the agents know. In the preview it is built from a sample organisation: 500 employees across departments and countries, each tagged with the journey moments that apply to them right now, such as **First day**, **90-day check-in**, **Birthday** or **Return from parental leave**. The moments are the same vocabulary as the [Journey](https://support.pynhq.com/journey/) map. > **Note:** Pyn AI is in preview. The people, signals and actions on these pages are sample data built into the app, not your employees. The buttons in the drawers do not send anything. ![Context > Employees lists each sample employee with their signals and journey moments.](https://support.pynhq.com/media/ai/context/ai-context-employees.png) ## Employees The **Employees** view is a table with **Name** (name, title and primary email), **Signals** (how many moments apply), **Pending** (how many of those call for an action; holidays and high leave accrual are informational), **Journey** (a chip per moment) and **Last Updated**. Select a row to open the person's **Employee Context** page. ## The Employee Context page The page opens with **Back**, the title **Employee Context** and a **Canvas** / **Timeline** switcher. Below are: - a summary of the person: role, department, country, manager and start date; - an AI summary paragraph; - one block per moment that applies to them, in a fixed order: offboarding, onboarding, then birthday, anniversary, leave request, return from parental leave, 90-day and 6-month check-ins, performance review, career, promotion, training, benefits, survey, wellbeing and recruiting; - the same blocks for each of their direct reports. Each block opens a drawer with the moment's details (for example **Leave Type**, **Dates**, **Remaining Balance** and **Coverage** for a leave request) and a primary action with alternatives: **Approve** with **Decline** and **Request More Info**; **Schedule**; **Remind**; **Buy Gift**; **View Journey**; **Plan**; **Start**; **Message**. ## Countries and departments **Countries** lists each country in the sample. A country's page shows **Upcoming Holidays** for it and a table of its employees with **Name**, **Title** and **Primary Email**. **Departments** lists each department; a department's page tables its employees with **Country** and **Time Zone** as well. **Teams** opens an empty page with no list behind it. ## Where it is in the app Open `/ai/context/employees`, `/ai/context/countries` or `/ai/context/departments` in Pyn, or select **AI** in the left navigation and then the view under **Context**. ## Related - [AI](https://support.pynhq.com/ai/) for what the preview is and who sees it. - [Agents](https://support.pynhq.com/ai/agents/) for the skills that read this context. - [Journey](https://support.pynhq.com/journey/) for the moments the signals are named after. --- # Journey Source: https://support.pynhq.com/journey/ > The Journey is a board of the employee lifecycle: categories hold moments, and each moment links to the flows and content that serve it. The Journey is a map of what employees experience at your company, from the first interview to alumni. It is laid out as a board: each column is a **category** such as Onboarding, and each card in it is a **moment** such as First day. Open a moment to see the flows and content behind it, mark how well you cover it today, and decide what to improve next. Everyone in the workspace can read the Journey. Admins add, move and archive categories and moments. ![Journey > Whole Journey maps every moment by lifecycle category.](https://support.pynhq.com/media/journey/overview/journey-overview-map.png) ## Concepts - **Category**: a column on the board that groups related moments, for example Onboarding or Leave and Life Events. A category has a title, an emoji, a colour and a description. - **Moment**: a card inside a category that employees would recognise as one experience, for example 90-day check-in or Return from parental leave. A moment carries the properties you use to plan: Current State, Level of Effort, Priority, Department, an Owner and Stakeholders. - **Flows and content on a moment**: automations, campaign templates and library content are attached to moments. The moment's **Flows** and **Content** tabs list them, and the template catalogue offers more to add. - **Views**: the Journey ships with three views, **Whole Journey**, **High Priority** and **Archived**. Filters, Find and Metrics change what you see; **Save as New View** keeps that as a view of your own. - **Metrics**: each card shows a number for the chosen metric (Employees, Deliveries, Clicks or Actions) over a date range, so the map doubles as a report. ## What you can do here - Build the map: [Add a category](https://support.pynhq.com/journey/add-a-category/), [Add a moment](https://support.pynhq.com/journey/add-a-moment/), [Reorder moments and categories](https://support.pynhq.com/journey/reorder-moments-and-categories/), [Archive a moment](https://support.pynhq.com/journey/archive-a-moment/). - Plan: [Set a moment's properties](https://support.pynhq.com/journey/set-moment-properties/), [Filter the map](https://support.pynhq.com/journey/filter-the-map/), [Save a view](https://support.pynhq.com/journey/save-a-view/). - Act: [Attach a flow or content to a moment](https://support.pynhq.com/journey/attach-a-flow-to-a-moment/). - Report: [Read journey metrics](https://support.pynhq.com/journey/read-journey-metrics/), [Export the map as an image](https://support.pynhq.com/journey/export-the-map/). - [Tutorial: build your journey map](https://support.pynhq.com/journey/tutorial-build-your-journey-map/): Prioritise the moments that matter, then attach flows to them. About 30 minutes. - [Reference: moment properties](https://support.pynhq.com/journey/reference-moment-properties/): Every option on a moment and what it means, plus the three views. ## Where it is in the app Open **Journey** in the primary navigation on the left of every page, or open `/journey/home`. It lands on **Whole Journey**; the other views are listed under **Journey** in the left rail. ## Related - [Build your journey map](https://support.pynhq.com/journey/tutorial-build-your-journey-map/) to go from the starter map to a prioritised plan with flows attached. - [Moment properties](https://support.pynhq.com/journey/reference-moment-properties/) for the meaning of every option on a moment. - [Flows](https://support.pynhq.com/flows/) for the automations and campaign templates a moment points to. - [Library](https://support.pynhq.com/library/) for the content a moment points to. ## Related Intercom articles - [What is an employee journey? (Pyn 2)](https://intercom.help/pyn/en/articles/8103377-what-is-an-employee-journey-pyn-2) — draws on - [How we build our maps (Pyn 2)](https://intercom.help/pyn/en/articles/8103386-how-we-build-our-maps-pyn-2) — draws on - [Learn about the employee journey and employee journey map](https://intercom.help/pyn/en/articles/7174861) — draws on - [Customize Your Employee Journey Map (Pyn 2)](https://intercom.help/pyn/en/articles/11594210-customize-your-employee-journey-map-pyn-2) - [How to filter your Map (Pyn 2)](https://intercom.help/pyn/en/articles/8103927-how-to-filter-your-map-pyn-2) - [Analyze your Employee Journey with Metrics (Pyn 2)](https://intercom.help/pyn/en/articles/12062347-analyze-your-employee-journey-with-metrics-pyn-2) --- # Build your journey map Source: https://support.pynhq.com/journey/tutorial-build-your-journey-map/ > A 30-minute walk from the starter map to a prioritised plan: trim it, mark your gaps, pick the moments that matter and put flows behind them. **Goal:** turn the starter Journey into your company's plan: a board that shows only the moments you run or intend to run, says how well each is covered, and has a flow behind every high-priority moment. **Time:** about 30 minutes for a first pass. Most teams come back to it each quarter. **You will end up with:** - a board with the categories and moments that apply to you, in the order employees meet them; - a **Current State**, **Priority**, **Level of Effort**, **Department** and **Owner** on every moment you kept; - a saved view called "Gaps" that lists the high-priority moments you do not cover yet; - at least one flow attached to a high-priority moment, created from the template catalogue. ## Before you start - You are a workspace admin. Everyone can read the Journey, but changing it needs the Admin role. - Employee data is in the workspace. Until it is, the board shows **Your journey begins when you add employee data!** with a button to upload a file or connect BambooHR. - Set aside the people who will own moments: Owner and Stakeholders are chosen from the workspace's users. [Video: Build your journey map: mark a moment, filter to the gaps, save the view, attach a flow.](https://support.pynhq.com/media/journey/map/journey-tutorial-build-map.mp4) ## 1. Read the starter map Pyn gives every new workspace a map to start from, with categories such as Onboarding, Reviews & Feedback, Growth & Development, Building Engagement, Manager Development, Leave and Life Events, Org-wide Campaigns and Offboarding & Alumni, each holding the moments most companies run. 1. In Pyn, open **Journey** in the left navigation. The board opens on **Whole Journey**. 2. Scroll across the board once, left to right, reading the column headings and the cards. Each card is a moment; its badge shows how many employees were in that moment in the last 30 days. 3. Select any card to open its panel on the right, then select the tabs: **Details** for its properties, **Flows** for what is attached, **Activity** for enrollments, **Content** for library content. 4. Close the panel. Do not change anything yet. The first pass is to recognise what is already there. ## 2. Trim the map to your company 1. Work column by column. For a moment you do not run and will not run, select its card, then **Archive** at the foot of the panel, and confirm. The card leaves the board. (Jury duty and Alumni recruitment are common first picks.) 2. For a whole category you do not run, open the category's panel from its heading chip and archive it the same way. 3. For an experience that is missing, select **Add Moment** at the foot of the right column, type its title and press **Enter**. If it needs a new column, select **Add Category** at the right end of the board, name the category in the panel that opens, and then add moments to it. 4. Drag cards up and down, and between columns, until each column reads in the order employees live it. Drag column headings to order the categories. > **Tip:** Nothing you archive is lost. Open the **Archived** view from the left rail to see every archived moment and **Unarchive** one. ## 3. Mark how well you cover each moment 1. Select the first card on the board. On **Details**, set **Current State** to **We have this**, **Needs improvement** or **Do not have this yet**. Leave **Unknown** only when nobody in the room knows. 2. Set **Level of Effort** to how much work improving it would take: **Low**, **Medium** or **High**. 3. Set **Department** to the team responsible and **Owner** to the person accountable. Add **Stakeholders** if other teams are involved. 4. Close the panel and repeat for every card. Each value saves the moment you pick it, so you can stop and resume at any time. This is the longest chapter. Forty moments at about half a minute each is twenty minutes; doing it with the people who own the moments is faster and more honest than doing it alone. ## 4. Decide what matters 1. Open **Filters** at the top of the board, hover **Current State** and tick **Needs improvement** and **Do not have this yet**. The board narrows to your gaps. 2. Go through the remaining cards and set **Priority** on each: **High priority** for the few you will fix this quarter, **Medium priority** for the next wave, **Low priority** for the rest. A rule of thumb: high priority goes to moments that reach many employees or carry risk (first day, leave, exit), and to gaps with a **Low** or **Medium** effort. 3. Hover **Priority** in **Filters** and tick **High priority**. You are now looking at the moments that matter most and are not covered. 4. Select **Save as New View**. The view opens and appears in the left rail as **Whole Journey\***; select the view-type button (it reads **Journey**), then **Rename View**, and name it "Gaps". ![Filter Current State and Priority together to see the gaps that matter most.](https://support.pynhq.com/media/journey/map/journey-tutorial-gaps-view.png) The seeded **High Priority** view shows everything you marked high priority, covered or not; your "Gaps" view shows only the uncovered ones. Both update as you change properties. ## 5. Put a flow behind each high-priority moment 1. On your "Gaps" view, select the first card. 2. Select the **Flows** tab. Under **Templates**, look for a catalogue flow that fits and select **Add**. The flow appears in the list above. 3. Select it to open it in Flows. Check the trigger and the audience, read every step, change the sender and wording to your voice, then publish it and set its mode. [Automations](https://support.pynhq.com/flows/automations/) explains each of these. 4. Back on the Journey, select the moment's **Content** tab and add any catalogue content the flow's steps link to, then open it, edit and **Publish**. 5. When the flow is live, set the moment's **Current State** to **We have this**. It drops off your "Gaps" view. 6. Repeat for each card on the view. If no template fits, select **Create flow** on the Flows tab to start an automation from scratch in Flows and assign it this moment. ## 6. Keep the map honest 1. Open **Metrics**, set **Metric** to **Deliveries** and **Date Range** to **last 90 days**, and read the badges: moments with flows show numbers, moments without stay at zero. Save this as a view too if you report on it. 2. Each quarter, return to "Gaps", move the next moments to **High priority**, and repeat chapter 5. 3. Select the view-type button, then **Export**, to download the board as an image for your next leadership update. ## Related - [Set a moment's properties](https://support.pynhq.com/journey/set-moment-properties/) and [Moment properties](https://support.pynhq.com/journey/reference-moment-properties/) for the meaning of every option you used. - [Filter the map](https://support.pynhq.com/journey/filter-the-map/) and [Save a view](https://support.pynhq.com/journey/save-a-view/) to build views for each department or owner. - [Attach a flow or content to a moment](https://support.pynhq.com/journey/attach-a-flow-to-a-moment/) for the moment panel in detail. - [Automations](https://support.pynhq.com/flows/automations/) to finish the flows you added, and [Content](https://support.pynhq.com/library/content/) to edit the content they link to. ## Related Intercom articles - [Customize Your Employee Journey Map (Pyn 2)](https://intercom.help/pyn/en/articles/11594210-customize-your-employee-journey-map-pyn-2) — replaces - [How we build our maps (Pyn 2)](https://intercom.help/pyn/en/articles/8103386-how-we-build-our-maps-pyn-2) — draws on - [How to create an employee journey map](https://intercom.help/pyn/en/articles/7174933) — draws on --- # Add a category Source: https://support.pynhq.com/journey/add-a-category/ > Add a column to the Journey board for a stage of the employee experience your map does not cover yet, then name and colour it. You want a new column on the Journey, for example "Internal mobility" or "Wellbeing", so that its moments have a home. A category is created empty and opens straight away so you can name it. ## Before you start - You are a workspace admin. Everyone can read the Journey, but adding, moving and archiving categories and moments needs the Admin role. ## Steps 1. In Pyn, open **Journey** in the left navigation. The board opens on **Whole Journey**. 2. Scroll to the right end of the board and select **Add Category**. 3. A new column appears and its panel opens on the right. Select the title at the top of the panel and type the category name. 4. Select the emoji at the top of the panel to pick an emoji and a colour together. The colour tints the whole column. 5. In **Details**, select **(No Description)** and write what this stage of the journey covers. 6. Close the panel. Changes save as you make them; there is no save button. ![A new category opens its panel so you can name it straight away.](https://support.pynhq.com/media/journey/map/journey-map-category-panel.png) ## What you should see The new column sits at the right end of the board with your title, emoji and colour. It has no moments yet; the **Add Moment** card at its foot is where you add the first one. Drag the column's heading to move it earlier in the journey. ## Related - [Add a moment](https://support.pynhq.com/journey/add-a-moment/) to fill the new category. - [Reorder moments and categories](https://support.pynhq.com/journey/reorder-moments-and-categories/) to put the column where it belongs in the lifecycle. - [Moment properties](https://support.pynhq.com/journey/reference-moment-properties/) for what a category holds. --- # Add a moment Source: https://support.pynhq.com/journey/add-a-moment/ > Add a moment card to a Journey category straight from the board, then open it to describe the experience and set its properties. An experience your employees go through is missing from the map, for example "Relocation" or "Internal transfer". You add it as a moment inside the category it belongs to. ## Before you start - You are a workspace admin. - The category exists. If not, [add a category](https://support.pynhq.com/journey/add-a-category/) first. ![Add Moment turns into a draft card that takes the new moment's title.](https://support.pynhq.com/media/journey/map/journey-map-add-moment.png) ## Steps 1. In Pyn, open **Journey** in the left navigation. 2. Find the category column the moment belongs to and select **Add Moment** at its foot. A draft card appears in its place. 3. Type the moment's title into the draft card. 4. Press **Enter**, or select anywhere outside the card. The card becomes a moment at the foot of the column. 5. Select the new card to open its panel, then set its emoji, description and properties as described in [Set a moment's properties](https://support.pynhq.com/journey/set-moment-properties/). > **Note:** Leaving the draft card empty cancels it. You cannot add moments on the **Archived** view; switch to **Whole Journey** first. ## What you should see The moment appears as the last card in its column, with the metric badge every card carries. Drag it up the column to place it in order, and open it to attach flows and content. ## Related - [Set a moment's properties](https://support.pynhq.com/journey/set-moment-properties/) to record its Current State, Priority, Level of Effort, Department and Owner. - [Add a category](https://support.pynhq.com/journey/add-a-category/) when the moment needs a new column. - [Attach a flow or content to a moment](https://support.pynhq.com/journey/attach-a-flow-to-a-moment/) to put communications behind it. --- # Archive a moment Source: https://support.pynhq.com/journey/archive-a-moment/ > Take a moment you do not run off the Journey board, and bring it back later from the Archived view. Your map starts with moments that may not apply to you, such as Jury duty or Alumni recruitment. Archiving hides a moment from the board without deleting it; its flows and content stay attached and you can restore it at any time. ## Before you start - You are a workspace admin. ## Steps 1. In Pyn, open **Journey** in the left navigation. 2. Select the moment's card to open its panel. 3. At the foot of the panel select **Archive**. 4. In the dialog, which asks **Are you sure you want to archive this?**, select **Archive**. The panel closes and the card leaves the board. > **Tip:** You can also drag a card onto the archive target that appears at the edge of the board while you drag. On the **Archived** view the same target restores the card instead. ## Restore a moment 1. In the left rail select **Archived**. 2. Select the moment's card and, at the foot of its panel, select **Unarchive**. The moment returns to its category on **Whole Journey**. ![The Archived view lists every archived moment by category.](https://support.pynhq.com/media/journey/map/journey-map-archived-view.png) ## What you should see On **Whole Journey** the card is gone and the column has closed up. On **Archived** the card is listed under its category. Categories themselves are archived the same way from their panel, which hides every moment in them until you unarchive the category. ## Related - [Reorder moments and categories](https://support.pynhq.com/journey/reorder-moments-and-categories/) if the moment belongs elsewhere rather than off the board. - [Save a view](https://support.pynhq.com/journey/save-a-view/) to keep a view of only the moments you run. --- # Attach a flow or content to a moment Source: https://support.pynhq.com/journey/attach-a-flow-to-a-moment/ > From a moment's panel, see the flows and content that serve it and add more from the template catalogue. A moment is only a plan until something is sent for it. The moment panel shows which automations, campaign templates and library content point at it, and offers ready-made templates for that moment that you can add in one step. ## Before you start - You are a workspace admin. Everyone can see what is attached; adding from the catalogue needs the Admin role. ![The Flows tab lists what is attached to the moment, then the catalogue templates you can add.](https://support.pynhq.com/media/journey/moments/journey-moment-flows-tab.png) ## Steps 1. In Pyn, open **Journey** in the left navigation and select the moment's card, for example **Anniversary**. 2. In the panel select the **Flows** tab. Existing automations, campaign templates and campaigns for this moment are listed first. 3. Under **Templates**, find the catalogue flow you want and select **Add**. The flow is created for this moment and appears in the list above. 4. Select the new entry to open the flow and finish it in Flows: check its trigger, audience and steps, then publish it and set its mode. 5. For content, select the **Content** tab. Library content attached to the moment is listed; select **Add** on a catalogue item to add it, then select it to open the editor. > **Note:** When the moment has no flows and no templates are left to add, the tab reads **There's no flows for this moment...yet!** with a **Create flow** button that takes you to Flows, where you create an automation and assign it this moment. ## What you should see The flow or content you added is listed on the tab and no longer offered under **Templates**. In Flows, the automation shows this moment, and the Library groups the content under it. The **Activity** tab fills with enrollments once the flow runs. ## Related - [Automations](https://support.pynhq.com/flows/automations/) to finish, publish and switch on the flow you added. - [Content](https://support.pynhq.com/library/content/) to edit and publish the content you added. - [Build your journey map](https://support.pynhq.com/journey/tutorial-build-your-journey-map/) for working through the whole map this way. --- # Export the map as an image Source: https://support.pynhq.com/journey/export-the-map/ > Download the Journey board you are looking at, filters and all, as a PNG for a slide deck or a leadership update. You want to show the map to people who do not use Pyn. The export captures the board exactly as it is on screen, so filter it first to the story you want to tell. ## Before you start - You are on a Journey board view. The **Export** option appears only for the **Journey** view type, not for **Table**. ## Steps 1. In Pyn, open **Journey** in the left navigation and open the view you want to share. 2. Apply any [filters](https://support.pynhq.com/journey/filter-the-map/) and choose the [metric](https://support.pynhq.com/journey/read-journey-metrics/) you want on the cards. 3. Select the view-type button at the left of the control bar, which reads **Journey**. 4. Select **Export**. ## What you should see A PNG named after the view, for example `Whole Journey.png`, opens in a new browser tab, from where you can save it. It shows every column and card that is on the board when you export. ## Troubleshooting - **A message says "Could not export image".** The board could not be rendered to an image, which happens on very large boards or when the browser blocks the download. The board itself is unaffected; filter to fewer moments and try again. - **The export is cut off.** The export includes what the board renders, so widen the browser window or filter the board before exporting. ## Related - [Filter the map](https://support.pynhq.com/journey/filter-the-map/) to narrow the board before you export it. - [Save a view](https://support.pynhq.com/journey/save-a-view/) so the same export is one click away next time. ## Related Intercom articles - [How to export your map](https://intercom.help/pyn/en/articles/8103955) — replaces --- # Filter the map Source: https://support.pynhq.com/journey/filter-the-map/ > Narrow the Journey board to the moments that match a Current State, Priority, Level of Effort or Department, or find a moment by name. With forty or more moments on the board, filters let you look at one question at a time: which high-priority moments do we not have yet, or which moments belong to L&D. Filters work on the properties you have set, so an unset property only matches **(No Value)**. ## Before you start - The moments you care about have their properties set. See [Set a moment's properties](https://support.pynhq.com/journey/set-moment-properties/). ![Filters lists each moment property; hover one to pick its values.](https://support.pynhq.com/media/journey/map/journey-map-filters.png) ## Steps 1. In Pyn, open **Journey** in the left navigation. 2. At the top of the board select **Filters**. The menu lists **Current State**, **Level of Effort**, **Priority** and **Department**. 3. Hover a property. Its values slide out, plus **(No Value)** for moments that have none. 4. Tick one or more values. The board updates as you tick; a moment shows when it matches every property you have filtered. 5. To remove a property's filter, hover it and select **Show Everything**. **Clear All** on a property clears its ticks. 6. To find one moment, select **Find**, type part of its title into **Enter your terms**, and the board keeps only matching cards. > **Tip:** Filtering **Priority** to **High priority** and **Current State** to **Needs improvement** and **Do not have this yet** gives you the gap list most teams start from. ## What you should see The **Filters** button is highlighted while a filter is on, and columns show only matching cards; a column with no matches is empty rather than hidden. The **Save as New View** button becomes active, so you can keep the filtered board as a view of your own. ## Related - [Save a view](https://support.pynhq.com/journey/save-a-view/) to keep this filter as a named view. - [Set a moment's properties](https://support.pynhq.com/journey/set-moment-properties/) if a moment is missing from a filter because its property is unset. - [Moment properties](https://support.pynhq.com/journey/reference-moment-properties/) for every value a filter offers. ## Related Intercom articles - [How to filter your Map (Pyn 2)](https://intercom.help/pyn/en/articles/8103927-how-to-filter-your-map-pyn-2) — replaces - [The power of Filters and Themes](https://intercom.help/pyn/en/articles/8568561) — draws on --- # Read journey metrics Source: https://support.pynhq.com/journey/read-journey-metrics/ > Put a number on every moment card: employees in the moment, deliveries, clicks or actions over the last 30 days to 12 months. Every card on the board carries a badge with a number. On **Whole Journey** it is the employees who were in that moment in the last 30 days. Switch the metric to see which moments drive deliveries, clicks and actions, and over which period. ## Before you start - Flows are attached to moments and have run. A moment with no flows shows zero deliveries, clicks and actions. ![Metrics offers a Metric and a Date Range for the whole board.](https://support.pynhq.com/media/journey/metrics/journey-metrics-menu.png) ## Steps 1. In Pyn, open **Journey** in the left navigation. 2. At the top of the board select **Metrics**. 3. Hover **Metric** and choose one: **Employees** (people who were in the moment), **Deliveries** (messages delivered for its flows), **Clicks** (links clicked in them) or **Actions** (actions completed from them). 4. Hover **Date Range** and choose **last 30 days**, **last 90 days**, **last 6 months** or **last 12 months**. 5. Read the badge on each card. Hover it for the metric's name. 6. To keep this metric and range, select **Save as New View** and name the view; see [Save a view](https://support.pynhq.com/journey/save-a-view/). ## What you should see The badge on every card changes to the metric you chose, and the **Metrics** button is highlighted. Compare columns to see where attention is going: high deliveries with low actions on a moment suggests its messages need a clearer ask or a better time. ## Related - [Save a view](https://support.pynhq.com/journey/save-a-view/) to keep a metric and date range as a named report. - [Activity](https://support.pynhq.com/activity/) for the enrollments and messages behind the numbers. - [Filter the map](https://support.pynhq.com/journey/filter-the-map/) to measure a subset of moments. ## Related Intercom articles - [Analyze your Employee Journey with Metrics (Pyn 2)](https://intercom.help/pyn/en/articles/12062347-analyze-your-employee-journey-with-metrics-pyn-2) — replaces --- # Reorder moments and categories Source: https://support.pynhq.com/journey/reorder-moments-and-categories/ > Drag moments within or between categories, and drag categories along the board, to put the Journey in the order employees live it. The board reads left to right and top to bottom as the employee's timeline, so order matters. You move cards and columns by dragging them; the new order is saved as soon as you drop and stays when you come back. ## Before you start - You are a workspace admin. - You are on **Whole Journey** or another view that shows the moments you want to move. ## Steps 1. In Pyn, open **Journey** in the left navigation. 2. To move a moment, press and hold its card, then drag it. A drop zone appears between every pair of cards in every column. 3. Drop the card on the zone where it belongs. Dropping it in another column moves it to that category as well. 4. To move a category, press and hold its heading chip and drag it. Drop zones appear between the columns. 5. Drop the column where it belongs. The other columns shift to make room. ## What you should see The card or column sits where you dropped it and the rest of the board has closed the gap. Reload the page and the order is the same. The **Table** view type and the Library's grouping by moment follow this order too. ## Troubleshooting - **The drop zones next to the card I am dragging do nothing.** Dropping a moment directly above or below its own position is a no-op. Choose a different zone. - **A card snapped back.** The save failed, usually because your connection dropped. Drag it again. ## Related - [Add a moment](https://support.pynhq.com/journey/add-a-moment/) to put a new card at the foot of a column before you drag it into place. - [Archive a moment](https://support.pynhq.com/journey/archive-a-moment/) to drag a card you do not run off the board. - [Add a category](https://support.pynhq.com/journey/add-a-category/) when you need a new column. --- # Save a view Source: https://support.pynhq.com/journey/save-a-view/ > Keep a filtered, measured Journey board as a view of your own, then rename, duplicate, switch the view type or archive it. Filters and metrics are unsaved until you keep them. Saving them as a view adds an entry under **Whole Journey**, **High Priority** and **Archived** in the left rail that anyone in the workspace can open, for example "Onboarding gaps" or "Q4 deliveries". ## Before you start - You have filtered the board or changed its metric. The save button stays disabled until something has changed. ## Steps 1. In Pyn, open **Journey** in the left navigation and set up the board with [filters](https://support.pynhq.com/journey/filter-the-map/) or [metrics](https://support.pynhq.com/journey/read-journey-metrics/). 2. At the top right of the board select **Save as New View**. On **Whole Journey** and **Archived**, which are read-only, the button always reads **Save as New View**; on a view you own it reads **Save View** and updates the view in place. 3. The new view opens and appears in the left rail, named after the view it came from with an asterisk. 4. To name it, select the view-type button at the left of the control bar (it reads **Journey**), then **Rename View**, and type the new name. ![On the built-in Whole Journey view the view-type button offers Change View Type, Duplicate View and Export.](https://support.pynhq.com/media/journey/views/journey-views-customize-menu.png) > **Note:** To throw away unsaved changes instead, open the arrow beside the save button and select **Discard Changes**. ## Manage a view The view-type button's menu also offers: - **Change View Type**: **Journey** (the board), **Table** (one row per moment with its **Category** and **Title**) and the other types the workspace supports. - **Duplicate View**: copies the view and opens the copy. - **Export**: downloads the board as an image; see [Export the map as an image](https://support.pynhq.com/journey/export-the-map/). - **Rename View** and **Archive View**: on a view you saved, rename it or remove it from the rail. ## What you should see Your view sits in the left rail below the seeded ones and opens with its filters and metric already applied. Reopen it later and it is unchanged until someone selects **Save View** on it again. ## Related - [Filter the map](https://support.pynhq.com/journey/filter-the-map/) to decide what the view shows. - [Read journey metrics](https://support.pynhq.com/journey/read-journey-metrics/) to choose the number on each card. - [Export the map as an image](https://support.pynhq.com/journey/export-the-map/) to share the view outside Pyn. ## Related Intercom articles - [How to filter your Map (Pyn 2)](https://intercom.help/pyn/en/articles/8103927-how-to-filter-your-map-pyn-2) — draws on --- # Set a moment's properties Source: https://support.pynhq.com/journey/set-moment-properties/ > Record how well you cover a moment today, how much effort it takes to improve, its priority, the team responsible and who owns it. The properties on a moment turn the map into a plan: filter by **Current State** to see gaps, by **Priority** to see what is next, by **Department** or **Owner** to see who holds it. Each property saves the instant you choose a value. ## Before you start - You are a workspace admin. - You know who owns the moment. Owner and Stakeholders are chosen from the workspace's users, so invite anyone missing from **Settings** first. ![A moment's Details tab holds its description and every property.](https://support.pynhq.com/media/journey/map/journey-map-moment-panel.png) ## Steps 1. In Pyn, open **Journey** in the left navigation and select the moment's card. Its panel opens on the right on the **Details** tab. 2. Select **Current State** and choose **Unknown**, **We have this**, **Needs improvement** or **Do not have this yet**. 3. Select **Level of Effort** and choose **Low**, **Medium** or **High**. 4. Select **Priority** and choose **Low priority**, **Medium priority** or **High priority**. Moments set to **High priority** appear on the **High Priority** view. 5. Select **Department** and choose the team responsible, for example **People Operations** or **L&D**. 6. Select **Owner** and pick one user; select **Stakeholders** and pick everyone else involved. 7. To change the title, emoji or description, select each at the top of the panel and edit it in place. ## What you should see Each value shows as a coloured chip on the Details tab as soon as you pick it, and the panel can be closed at any point. Open **Filters** on the board and the moment now matches the values you set. The full list of options is in [Moment properties](https://support.pynhq.com/journey/reference-moment-properties/). ## Related - [Moment properties](https://support.pynhq.com/journey/reference-moment-properties/) for the meaning of every option. - [Filter the map](https://support.pynhq.com/journey/filter-the-map/) to see only the moments that match a property. - [Build your journey map](https://support.pynhq.com/journey/tutorial-build-your-journey-map/) for a method that uses these properties to prioritise. --- # Moment properties Source: https://support.pynhq.com/journey/reference-moment-properties/ > Every property on a journey moment, with its options, plus the fields on a category and the three seeded Journey views. A moment is a card on the Journey board. Its properties describe the experience and how well you cover it today. Every single-select property below is also a filter on the map. ## Moment | Property | Type | Options | Use it for | | --- | --- | --- | --- | | **Title** | text | | The name on the card, for example "First day". | | **Emoji** | emoji | | The icon on the card. Select the emoji in the moment panel to change it. | | **Description** | rich text | | Notes on what the moment is and who it affects. Shows "(No Description)" until you write one. | | **Current State** | single-select | **Unknown**, **We have this**, **Needs improvement**, **Do not have this yet** | How well you cover the moment today. | | **Level of Effort** | single-select | **Low**, **Medium**, **High** | How much work it takes to improve. | | **Priority** | single-select | **Low priority**, **Medium priority**, **High priority** | What to work on first. The **High Priority** view shows moments set to **High priority**. | | **Department** | single-select | **Talent Acquisition**, **People Operations**, **HRBP**, **Employee Experience**, **L&D**, **IT**, **DEIB**, **Total Rewards**, **Facilities**, **Finance**, **People Analytics**, **Internal Comms**, **Legal** | The team responsible for the moment. | | **Owner** | one workspace user | | The person accountable for the moment. | | **Stakeholders** | workspace users | | Everyone else involved. | A moment also belongs to exactly one category, shown as a chip in the panel header, and can be archived. Archived moments leave the board and appear only on the **Archived** view. ## Category | Property | Type | Use it for | | --- | --- | --- | | **Title** | text | The column heading, for example "Onboarding". A new category reads "Untitled" until you name it. | | **Emoji** and colour | picker | Chosen together from the category's avatar in its panel. The colour tints the column. | | **Description** | rich text | Notes on the stage of the journey the category covers. | The category panel also lists the category's moments in board order. ## Moment panel tabs | Tab | Shows | | --- | --- | | **Details** | The description, the properties above, Owner and Stakeholders. | | **Flows** | The automations, campaign templates and campaigns attached to the moment, then a **Templates** section of catalogue flows an admin can **Add**. | | **Activity** | The enrollments that ran for this moment's flows. | | **Content** | The library content attached to the moment, then catalogue content an admin can **Add**. | ## Views | View | Shows | Save button | | --- | --- | --- | | **Whole Journey** | Every active moment, grouped by category, with the Employees metric for the last 30 days on each card. | **Save as New View** | | **High Priority** | Moments whose **Priority** is **High priority**. | **Save View** | | **Archived** | Archived moments only. Dragging a card onto the restore target brings it back. | **Save as New View** | Whole Journey and Archived are read-only, so changes to them are saved as a new view. High Priority is editable in place. See [Save a view](https://support.pynhq.com/journey/save-a-view/). ## Filters and metrics - **Filters** offers **Current State**, **Level of Effort**, **Priority** and **Department**, each with its options plus **(No Value)**, **Show Everything** and **Clear All**. - **Metrics** offers a **Metric** (**Employees**, **Deliveries**, **Clicks**, **Actions**) and a **Date Range** (**last 30 days**, **last 90 days**, **last 6 months**, **last 12 months**). - **Find** matches text in moment titles. ## Related - [Set a moment's properties](https://support.pynhq.com/journey/set-moment-properties/) to fill these in from the moment panel. - [Filter the map](https://support.pynhq.com/journey/filter-the-map/) to narrow the board by any single-select property. - [Save a view](https://support.pynhq.com/journey/save-a-view/) to keep a filtered, measured board as its own view. ## Related Intercom articles - [Customize Your Employee Journey Map (Pyn 2)](https://intercom.help/pyn/en/articles/11594210-customize-your-employee-journey-map-pyn-2) — draws on --- # Library Source: https://support.pynhq.com/library/ > The Library holds the content employees read and the media your messages embed: write and publish once, link from any flow. The Library is where the longer things live. **Content** is a page an employee opens from a button in a message: a first-week guide, a benefits overview, a manager checklist. **Media** is the images, video and files you drop into messages and content. Each is stored once, so a change in the Library reaches every flow that links to it. Everyone in the workspace can read the Library and create content and media. Publishing content and adding from the template catalogue need the Admin role. ![Library opens on Content, Everything: one card per piece of content, with Create new at the top right.](https://support.pynhq.com/media/library/overview/library-content-gallery.png) ## Concepts - **Content**: a titled, rich-text document edited as a draft and published as versions. A message links to it with a button, and the employee reads the published version on a Pyn page styled with your theme. - **Version**: a snapshot taken each time you select **Publish**. **History** lists every version; open one to read it, and **Restore** to make it the published version again. - **Moment**: each piece of content can belong to a Journey moment. The Library groups content by moment, and the moment's **Content** tab lists it. - **Media**: an uploaded image, video or file. Every upload is scanned for malware before it can be used; the scan result shows on the media item. - **Views**: **Content** and **Media** each have an **Everything** view in the left rail. **Find** and **Filters** narrow it, and **Save as New View** keeps the result. ## What you can do here - Content: [Create content](https://support.pynhq.com/library/content/create-content/), [Publish content](https://support.pynhq.com/library/content/publish-content/), [Restore a previous version](https://support.pynhq.com/library/content/restore-a-previous-version/), [Archive content](https://support.pynhq.com/library/content/archive-content/), [Find content](https://support.pynhq.com/library/content/find-content/), [Link to content from a message](https://support.pynhq.com/library/content/use-content-in-a-step/). - Media: [Upload media](https://support.pynhq.com/library/media/upload-media/), [Insert media in a message](https://support.pynhq.com/library/media/insert-media-in-a-message/). - [Content](https://support.pynhq.com/library/content/): Write, publish and version the pages employees read. - [Media](https://support.pynhq.com/library/media/): Upload images, video and files for messages and content. - [Reference: content states and versions](https://support.pynhq.com/library/content/reference-content-states/): Draft, published, previous version, archived. - [Reference: media types and scan states](https://support.pynhq.com/library/media/reference-media-types/): What you can upload and what Scanning, Clean, Infected and Error mean. ## Where it is in the app Open **Library** in the primary navigation on the left of every page, or open `/library/home`. It lands on **Content**, **Everything**; the **Media** section sits below it in the left rail. ## Related - [Content](https://support.pynhq.com/library/content/) for the pages employees read. - [Media](https://support.pynhq.com/library/media/) for the files messages embed. - [Flows](https://support.pynhq.com/flows/) for the steps that link to content and media. ## Related Intercom articles - [How to use the Pyn Library (Pyn 1)](https://intercom.help/pyn/en/articles/6002229-how-to-use-the-pyn-library-pyn-1) — Pyn 1 article, kept for reference - [Guide to the Pyn Library: Content and Media (Pyn 2)](https://intercom.help/pyn/en/articles/16768547-guide-to-the-pyn-library-content-and-media-pyn-2) - [Add visual content to your message (Pyn 2)](https://intercom.help/pyn/en/articles/13872876-add-visual-content-to-your-message-pyn-2) --- # Content Source: https://support.pynhq.com/library/content/ > Content is a page an employee reads from a button in a message. Write it once, publish it, and every step that links to it shows the latest version. Messages are short; content is where the detail goes. A piece of content has a title and a rich-text body with headings, lists, links, images, video and tokens. A step in a flow links to it with a button, and the employee reads it on a Pyn page in your workspace's theme. ![Open a piece of content to read or edit it.](https://support.pynhq.com/media/library/content/library-content-editor.png) ## What you can do here - [Create content](https://support.pynhq.com/library/content/create-content/) from scratch or from the template catalogue, and assign it a Journey moment. - [Publish content](https://support.pynhq.com/library/content/publish-content/) so the latest draft is what employees see, or discard a draft. - [Restore a previous version](https://support.pynhq.com/library/content/restore-a-previous-version/) from **History**. - [Archive content](https://support.pynhq.com/library/content/archive-content/) you no longer send. - [Find content](https://support.pynhq.com/library/content/find-content/) by title or by moment. - [Link to content from a message](https://support.pynhq.com/library/content/use-content-in-a-step/) with the **Link to Library Content** widget. - [Content states and versions](https://support.pynhq.com/library/content/reference-content-states/) explains draft, published and previous versions. ## Where it is in the app Open **Library** in the left navigation; it opens on **Content**, on the **Everything** view. The gallery groups content by Journey moment. Select a card to open the editor at `/library/content/`, and **Back** in the editor returns you to the view you came from. ## Related - [Create content](https://support.pynhq.com/library/content/create-content/) to write your first piece. - [Link to content from a message](https://support.pynhq.com/library/content/use-content-in-a-step/) to send it. - [Media](https://support.pynhq.com/library/media/) for the images and files content embeds. ## Related Intercom articles - [How to use the Pyn Library (Pyn 1)](https://intercom.help/pyn/en/articles/6002229-how-to-use-the-pyn-library-pyn-1) — Pyn 1 article, kept for reference - [Guide to the Pyn Library: Content and Media (Pyn 2)](https://intercom.help/pyn/en/articles/16768547-guide-to-the-pyn-library-content-and-media-pyn-2) - [Choosing your message add-on](https://intercom.help/pyn/en/articles/7157050-choosing-your-message-add-on) — Pyn 1 article, kept for reference --- # Archive content Source: https://support.pynhq.com/library/content/archive-content/ > Remove a piece of content from the Library's views when you no longer send it, and bring it back if you need it again. Archiving takes content off the **Content** views and out of the pickers without deleting it or its versions. Use it for pieces that have had their day, such as a benefits guide for a plan year that has ended. ## Before you start - No active step still links to the content, or you have replaced the link. Archiving does not edit the steps that point at it. ## Steps 1. In Pyn, open **Library** in the left navigation and select the content to open the editor. 2. On the right-hand rail select **Details**. 3. At the foot of the drawer select **Archive**. The button changes to **Unarchive**. 4. Select **Back** to return to the Content view. The content is no longer listed. > **Tip:** To bring it back, open the content's editor again (for example from a step that links to it, or from universal search), select **Details**, then **Unarchive**. ## What you should see The content is gone from **Everything** and from the **Link to Library Content** picker in the message editor. Its versions are kept, so unarchiving returns it exactly as it was. ## Related - [Find content](https://support.pynhq.com/library/content/find-content/) to locate the piece you want to archive. - [Publish content](https://support.pynhq.com/library/content/publish-content/) if you only want to change what it says. --- # Create content Source: https://support.pynhq.com/library/content/create-content/ > Start a new piece of library content, write its title and body, give it a Journey moment, and let it autosave as a draft. You want a page employees can open from a message, for example "Your first week" or "How to claim expenses". Content starts as a draft that saves itself as you type; nobody sees it until you publish. ## Before you start - You are signed in to Pyn. Anyone can create and edit content; publishing needs the Admin role. - Decide which Journey moment the content belongs to, so it is grouped with the right flows. ## Steps 1. In Pyn, open **Library** in the left navigation. It opens on **Content**. 2. Select **Create new** at the top right. To start from a ready-made piece instead, select the arrow beside it, then **Add from Template**, pick a category on the left and a template on the right. Either way the editor opens. 3. Select **Your title here** and type the title. Employees see it as the page heading. 4. Select **Your content here** and write the body. The toolbar gives you headings, bold, italic and underline, alignment, lists, quotes and links; type `@` to insert a token such as the employee's preferred name; use the image button to [insert media](https://support.pynhq.com/library/media/insert-media-in-a-message/). 5. On the right-hand rail select **Details**, then under **Moment** select **Select Moment** and choose the moment. The drawer also holds the **Archive** button. 6. Watch the header: **Saving...** while a change is written, then **Draft autosaved** once it is stored. ![A new piece of content opens in the editor with its empty title and body.](https://support.pynhq.com/media/library/content/library-content-create-new.png) > **Note:** A draft is private to the editor. Steps that link to this content show nothing until you select **Publish**; see [Publish content](https://support.pynhq.com/library/content/publish-content/). [Video: Create a piece of content, give it a moment, publish it and see its first version.](https://support.pynhq.com/media/library/content/library-content-create-and-publish.mp4) ## What you should see The header reads **Draft autosaved** and the **Publish** button is active. Select **Back** at the top left to return to the Content view: the new piece appears as a card under its moment, or under no moment if you did not choose one. ## Related - [Publish content](https://support.pynhq.com/library/content/publish-content/) to make the draft visible to employees. - [Link to content from a message](https://support.pynhq.com/library/content/use-content-in-a-step/) to put a button to it in a step. - [Insert media in a message](https://support.pynhq.com/library/media/insert-media-in-a-message/) for images and video in the body. ## Related Intercom articles - [Guide to the Pyn Library: Content and Media (Pyn 2)](https://intercom.help/pyn/en/articles/16768547-guide-to-the-pyn-library-content-and-media-pyn-2) — draws on --- # Find content Source: https://support.pynhq.com/library/content/find-content/ > Narrow the Content view to one Journey moment, search titles with Find, switch to a table, and save the result as a view. The Content gallery groups every piece by its Journey moment, in the order of the map. When the gallery grows, filter it to a moment or search a title rather than scrolling. ![Filters offers Moment; hover it to pick one or more moments.](https://support.pynhq.com/media/library/content/library-content-filters.png) ## Steps 1. In Pyn, open **Library** in the left navigation. It opens on **Content**, on the **Everything** view. 2. To see one moment's content, select **Filters**, hover **Moment**, and tick the moments you want. Type in the search box at the top of the list to find a moment by name. 3. To clear the filter, hover **Moment** again and select **Show Everything**; **Clear All** removes the ticks. 4. To search by title, select **Find**, type part of the title into **Enter your terms**, and the gallery keeps only matching cards. 5. To see a list instead of cards, select the view-type button at the left of the control bar (it reads **Gallery**), then **Change View Type**, then **Table**. 6. To keep any of this, select **Save as New View**, then rename the new view from the same menu. ## What you should see The **Filters** or **Find** button is highlighted while active and the gallery shows only matching content, still grouped by moment. Select a card to open it in the editor; **Back** returns you to the filtered view. ## Related - [Create content](https://support.pynhq.com/library/content/create-content/) and set its moment so these filters find it. - [Journey](https://support.pynhq.com/journey/) for the moments the Library groups by. --- # Publish content Source: https://support.pynhq.com/library/content/publish-content/ > Publish the current draft of a piece of content as a new version that every linked step shows, or discard the draft and go back to the published version. Editing never changes what employees see; publishing does. Each publish takes a snapshot of the title and body as a new version and makes it the one every button in every message opens, including messages already sent. ## Before you start - You are a workspace admin. Publishing and restoring versions are admin actions. - The content has unsaved-to-published changes: the header reads **Draft autosaved** and **Publish** is active. ## Steps 1. In Pyn, open **Library** in the left navigation and select the content to open the editor. 2. Read the draft once more. Tokens such as `@principal.preferredName` are filled in for each reader when the page is opened. 3. At the top right select **Publish**. 4. The **Draft autosaved** chip disappears and **Publish** becomes inactive, because the draft and the published version now match. 5. On the right-hand rail select **History**. The new version is at the top of **Version History**, marked **This version**, with the time and who published it. ## Discard a draft To throw away edits and return the draft to the published version, select the arrow beside **Publish**, then **Discard**. The editor reloads with the published title and body. Discard does nothing on content that has never been published. > **Caution:** Publishing is immediate and applies to every message that links to the content, including ones delivered weeks ago. If you need the old wording back, [restore the previous version](https://support.pynhq.com/library/content/restore-a-previous-version/). ## What you should see Open a message that links to the content, or the content's page, and the new text is there. In **Version History** the published version is marked with a dot, and older versions remain listed and openable. ## Related - [Restore a previous version](https://support.pynhq.com/library/content/restore-a-previous-version/) to roll back a publish. - [Content states and versions](https://support.pynhq.com/library/content/reference-content-states/) for what draft, published and previous mean. - [Create content](https://support.pynhq.com/library/content/create-content/) for writing the draft in the first place. --- # Restore a previous version Source: https://support.pynhq.com/library/content/restore-a-previous-version/ > Open an earlier published version of a piece of content from History, read it, and make it the published version again. A publish went out with a mistake, or you want last quarter's wording back. Every publish is kept as a version, so you can read any of them and put one back live. ## Before you start - You are a workspace admin. - The content has been published more than once; otherwise **Version History** has a single entry. ![Version History lists every published version with its time and publisher.](https://support.pynhq.com/media/library/content/library-content-history.png) ## Steps 1. In Pyn, open **Library** in the left navigation and select the content to open the editor. 2. On the right-hand rail select **History**. **Version History** lists versions newest first: the open one reads **This version**, the live one is marked with a dot, and each shows when it was published and by whom. 3. Select the version you want. It opens read-only: the title and body cannot be edited and the header reads **Viewing previous version**. 4. Check it is the one you want, then select **Restore** at the top right. 5. The editor returns to the current content with that version's title and body, and the version is now the published one. > **Note:** Restoring copies the old version onto the draft as well, so any unpublished edits you had are replaced. Publish again afterwards if you want to change it further. ## What you should see The header no longer reads **Draft autosaved**, **Publish** is inactive, and in **Version History** the dot has moved to the version you restored. Messages that link to the content now open that version. ## Related - [Publish content](https://support.pynhq.com/library/content/publish-content/) for how versions are created. - [Content states and versions](https://support.pynhq.com/library/content/reference-content-states/) for how restore relates to the draft. ## Related Intercom articles - [Guide to the Pyn Library: Content and Media (Pyn 2)](https://intercom.help/pyn/en/articles/16768547-guide-to-the-pyn-library-content-and-media-pyn-2) — draws on --- # Link to content from a message Source: https://support.pynhq.com/library/content/use-content-in-a-step/ > Add a button to a flow step's message that opens a piece of library content, with a label and style of your choice and optional action tracking. Content reaches employees through a button in a message. The button opens the published version of the content on a Pyn page, and with **Track Action** ticked, opening it counts as the message's action in Activity. ## Before you start - You are a workspace admin or power user, so you can edit flows. - The content is published. A button to unpublished content has nothing to show. ## Steps 1. In Pyn, open **Flows** in the left navigation, select the automation, then select the step whose message you want to change. The step editor opens on the right. 2. Place the cursor in the message body where the button should go. 3. In the editor toolbar select **Widgets**, then **Link to Library Content**. 4. Under **Library Content**, choose the piece. Type to search the list. 5. In **Label**, type the button text, for example "Read the guide". Choose a **Button Style**; **Default** uses your theme's button colour. 6. Tick **Track Action** if opening the content should count as the employee's action for this step, then select **Save**. 7. Select **Publish** on the automation so enrollments pick up the change. > **Note:** Content is the same for everyone who opens it, except for tokens, which are filled in per reader. To send different content to different groups, add a step per group with its own audience. ## What you should see The button sits in the message body with your label. In the step's preview and in a test send, selecting it opens the content on a Pyn page in your theme. Once the step delivers, [Actions](https://support.pynhq.com/activity/actions/) shows who opened it when **Track Action** is on. ## Related - [Automations](https://support.pynhq.com/flows/automations/) for editing and publishing steps. - [Publish content](https://support.pynhq.com/library/content/publish-content/) so the button has something to open. - [Actions](https://support.pynhq.com/activity/actions/) to see who opened the content. ## Related Intercom articles - [Choosing your message add-on](https://intercom.help/pyn/en/articles/7157050-choosing-your-message-add-on) — Pyn 1 article, kept for reference --- # Content states and versions Source: https://support.pynhq.com/library/content/reference-content-states/ > What draft, published, previous version and archived mean for library content, how versions are created, and which actions each state offers. A piece of content is one draft plus zero or more published versions. The draft is what you edit; a version is a snapshot taken at publish time; the published version is the one employees read. ## States | State | How you know | What employees see | Actions | | --- | --- | --- | --- | | **Draft, never published** | **Draft autosaved** in the header; **History** is empty. | Nothing. Buttons to this content have no page to open. | **Publish**. **Discard** does nothing. | | **Draft with changes** | **Draft autosaved** in the header; a dotted version in **History**. | The last published version. | **Publish** to make the draft live; **Discard** to return the draft to the published version. | | **Published, no changes** | No status chip; **Publish** is inactive. | The current version. | Edit to start a new draft. | | **Viewing previous version** | **Viewing previous version** in the header; title and body read-only. | Unchanged. | **Restore** to make this version live and copy it onto the draft. | | **Archived** | **Unarchive** at the foot of **Details**; missing from the Content views and pickers. | Existing buttons still open the published version. | **Unarchive**. | **Saving...** shows while any change is being written. ## How versions work - **Publish** copies the draft's title, body and moment into a new version, records who published it, and marks the draft clean. The new version appears at the top of **Version History** at once. - **Restore** does the reverse: it copies a chosen version's title and body onto the draft, marks the draft clean, and makes that version the published one. No new version is created. - **Discard** is a restore of the version that is published at that moment. - Versions are never deleted, and every version is listed in **Version History** with its time and publisher. The one marked with a dot is published; the one you have open reads **This version**. ## Who can do what | Action | Role | | --- | --- | | Read content and versions | Everyone in the workspace | | Create content and edit a draft | Everyone in the workspace | | Publish, Restore, Discard | Admin | | Add from Template | Admin | ## Related - [Publish content](https://support.pynhq.com/library/content/publish-content/) for the publish and discard steps. - [Restore a previous version](https://support.pynhq.com/library/content/restore-a-previous-version/) for rolling back. - [Archive content](https://support.pynhq.com/library/content/archive-content/) for retiring a piece. --- # Media Source: https://support.pynhq.com/library/media/ > Media is the images, video and files you upload once and embed in messages and content; every upload is scanned before it can be used. Media is the Library's file store. Upload a banner, a GIF, a short video or a PDF here and pick it from any message or piece of content, or upload straight from the message editor and it lands here too. Each file is scanned for malware on upload and shows its scan result. ![Library > Media lists your uploads, with Upload at the top right.](https://support.pynhq.com/media/library/media/library-media-gallery.png) ## What you can do here - [Upload media](https://support.pynhq.com/library/media/upload-media/) from the Media view. - [Insert media in a message](https://support.pynhq.com/library/media/insert-media-in-a-message/) from your computer or from the Library. - [Media types and scan states](https://support.pynhq.com/library/media/reference-media-types/) lists what you can upload and what each scan state means. ## Where it is in the app Open **Library** in the left navigation and select **Everything** under **Media** in the left rail. The view lists uploads newest first, with **Upload** at the top right. Select a tile to open the media panel, which previews the file and lists its type, filename, scan result and, for images, width and height. ## Related - [Upload media](https://support.pynhq.com/library/media/upload-media/) to add a file. - [Insert media in a message](https://support.pynhq.com/library/media/insert-media-in-a-message/) to use it. - [Content](https://support.pynhq.com/library/content/) for the pages that embed media. ## Related Intercom articles - [Add visual content to your message (Pyn 2)](https://intercom.help/pyn/en/articles/13872876-add-visual-content-to-your-message-pyn-2) - [Banner image specs and sizing](https://intercom.help/pyn/en/articles/6885344-banner-image-specs-and-sizing) — Pyn 1 article, kept for reference - [Embedding images in your short messages](https://intercom.help/pyn/en/articles/6011035-embedding-images-in-your-short-messages) — Pyn 1 article, kept for reference --- # Insert media in a message Source: https://support.pynhq.com/library/media/insert-media-in-a-message/ > Add an image, GIF or video to a message or piece of content, from your computer or from the Library, and align it. Images and short videos belong in the body of a message or a piece of content. The editor's media picker offers two sources: a file from your computer, which is uploaded and kept with the message, or a file already in the Library. ## Before you start - You are editing a step's message in Flows or a piece of content in the Library. ## Steps 1. Place the cursor in the body where the media should go. 2. In the editor toolbar select the image button. The **Choose media** picker opens full screen. 3. On the **Local** tab, select **Upload from your computer** and choose a file, or drop a file onto that tile. Files you have already uploaded to this message or content are listed beside it. 4. Or select the **From Library** tab and select a tile from the workspace's media. 5. The media is inserted at the cursor. Select it to set its alignment, or drag its corner to resize an image. 6. Select **Publish** on the automation or the content when you are done. > **Note:** A file you upload from **Local** is scanned before it displays, so a preview can take a moment to appear and the image cannot be resized or realigned until the scan is **Clean**. ## What you should see The image or video shows in the body and in the step's preview. In email, Slack and Teams the file is delivered as part of the message; on a content page it loads with the page. ## Related - [Upload media](https://support.pynhq.com/library/media/upload-media/) to add files to the Library ahead of time. - [Media types and scan states](https://support.pynhq.com/library/media/reference-media-types/) for what you can insert. - [Create content](https://support.pynhq.com/library/content/create-content/) for the editor this picker lives in. ## Related Intercom articles - [Add visual content to your message (Pyn 2)](https://intercom.help/pyn/en/articles/13872876-add-visual-content-to-your-message-pyn-2) — replaces - [Embedding images in your short messages](https://intercom.help/pyn/en/articles/6011035-embedding-images-in-your-short-messages) — Pyn 1 article, kept for reference --- # Upload media Source: https://support.pynhq.com/library/media/upload-media/ > Add an image, video or file to the Library from the Media view, wait for the malware scan, and check its details. You have a banner or a document that several messages will use. Uploading it to the Library once means every editor can pick it from **From Library**. ## Before you start - The file is one of the supported types listed in [Media types and scan states](https://support.pynhq.com/library/media/reference-media-types/). ![Upload Media takes a dropped file or opens a file picker.](https://support.pynhq.com/media/library/media/library-media-upload-dialog.png) ## Steps 1. In Pyn, open **Library** in the left navigation and select **Everything** under **Media** in the left rail. 2. Select **Upload** at the top right. The **Upload Media** dialog opens. 3. Drop the file onto **Drop files here or click to browse**, or select it to choose a file. The dialog reads **Uploading...** while the file transfers. 4. The dialog closes and the new media item's panel opens on the right. While the scan runs the panel shows only **Malware Scan: Scanning**; it refreshes on its own. 5. When the scan finishes, the preview appears and the **Details** tab lists **Content Type**, **Upload Filename**, **Malware Scan** and, for images, width and height. > **Caution:** A file whose scan result is **Infected** shows the notice **Potential malware or viruses detected. This media will not display and cannot be used.** Upload a clean copy instead. ## What you should see The file is the first tile on the **Everything** view. Select the preview in its panel to open the file in a new tab. It is now offered under **From Library** in every message and content editor. ## Related - [Insert media in a message](https://support.pynhq.com/library/media/insert-media-in-a-message/) to use the upload. - [Media types and scan states](https://support.pynhq.com/library/media/reference-media-types/) for supported files and what each scan state means. ## Related Intercom articles - [Add visual content to your message (Pyn 2)](https://intercom.help/pyn/en/articles/13872876-add-visual-content-to-your-message-pyn-2) — replaces - [Banner image specs and sizing](https://intercom.help/pyn/en/articles/6885344-banner-image-specs-and-sizing) — Pyn 1 article, kept for reference --- # Media types and scan states Source: https://support.pynhq.com/library/media/reference-media-types/ > The file types the Library accepts, what the media panel shows, and what the Scanning, Clean, Infected and Error scan states mean. The Library accepts images, video and documents. Every upload is scanned for malware, and the scan result decides whether the file can be shown and used. ## Supported file types | Kind | Types | How it displays | | --- | --- | --- | | Images | GIF, JPEG, PNG, SVG, WebP | Inline in messages and content; the media panel shows the image and its width and height. | | Video | MP4, WebM | A video player in content and in the media panel. | | Documents | PDF, Word (DOC, DOCX), Excel (XLS, XLSX), PowerPoint (PPT, PPTX), Pages, Numbers, Keynote, OpenDocument text, spreadsheet and presentation (ODT, ODS, ODP), RTF, TXT, CSV | A PDF previews in the panel; other documents show a blank tile and open in a new tab. | The file picker only offers these types, and a file of another type dropped onto the upload area is ignored. ## Scan states | State | Meaning | What you can do | | --- | --- | --- | | **Scanning** | The file has uploaded and is being checked. The panel shows only this field and refreshes every few seconds. | Wait. An image you uploaded a moment ago shows a local preview meanwhile. | | **Clean** | The scan passed. The file has a public address and displays everywhere. | Insert it, open it, use it. | | **Infected** | The scanner found malware. The panel shows **Potential malware or viruses detected. This media will not display and cannot be used.** | Archive the item and upload a clean file. | | **Error** | The scan could not complete. The file does not display. | Upload the file again. | ## Media panel fields | Field | Meaning | | --- | --- | | **Content Type** | The file's type, for example `image/png`. | | **Upload Filename** | The name of the file you uploaded. The item's title starts as the same name. | | **Malware Scan** | One of the states above. | | Width, height | Pixel size, images only. | ## Where media lives Media uploaded from the **Media** view belongs to the Library and is offered under **From Library** everywhere. Media uploaded from a message or content editor's **Local** tab belongs to that message or content and is listed on its **Local** tab. The **Media** view groups Library media by Journey moment where a moment is set. ## Related - [Upload media](https://support.pynhq.com/library/media/upload-media/) for adding files from the Media view. - [Insert media in a message](https://support.pynhq.com/library/media/insert-media-in-a-message/) for using them. ## Related Intercom articles - [Add visual content to your message (Pyn 2)](https://intercom.help/pyn/en/articles/13872876-add-visual-content-to-your-message-pyn-2) — draws on - [Banner image specs and sizing](https://intercom.help/pyn/en/articles/6885344-banner-image-specs-and-sizing) — Pyn 1 article --- # Directory Source: https://support.pynhq.com/directory/ > Directory is the people side of Pyn: every employee the workspace knows about, the groups they belong to, and the demographics those groups are built from. Every message Pyn sends goes to an employee, on a date taken from their record, in their time zone, often because of the group they are in. Directory is where those records live. Employees arrive from your HRIS, from a spreadsheet you upload, or from the people your Slack, Google or Microsoft integration can see; Pyn merges each person's sources into one profile with a lifecycle stage, a manager, a buddy and the demographics that place them in groups. Directory is for admins and owners. Other roles do not see it in the navigation, although flows read employee data on their behalf. ![Directory > Employees lists everyone in the workspace with their country and time zone.](https://support.pynhq.com/media/directory/employees/directory-employees-list.png) ## Concepts - **Employee**: one person, assembled from one or more **sources** (a HiBob record, an Employee File row, a Slack member). The profile shows the merged result; the **Sources** tab shows the parts. - **Lifecycle stage**: **Upcoming Joiner**, **Current Active Employee**, **Extended Leave** or **Terminated**, worked out from start date, termination date and active status. The **Active**, **Upcoming** and **Inactive** views split the list by stage. - **Relations**: **Manager**, **Buddy**, **Mentor** and **HRBP**, each another employee. Flows send to them as recipients, and groups can be built from who has or lacks one. - **Demographic**: a property such as Department or Location that Pyn turns into one group per value. Five are set up for you; you add more from the properties your sources supply. - **Group**: a saved set of employees used as an audience: **Demographic**, **Lifecycle**, **Filter**, **Relationship** or **Static**. ## Views | Group | Views | What they list | | --- | --- | --- | | **Employees** | **Active**, **Upcoming**, **Inactive** | Employees by stage, as a table or a gallery. | | **Employee Groups** | **All Groups**, **Demographic**, **Lifecycle**, **Filter** | Every group, or one kind. | | **Customize** | **All Demographics** | The demographics that produce groups. | ## What you can do here - Find people: [Find an employee](https://support.pynhq.com/directory/employees/find-an-employee/), [Read an employee profile](https://support.pynhq.com/directory/employees/read-an-employee-profile/), [Export employees](https://support.pynhq.com/directory/employees/export-employees/). - Keep the data right: [Upload employees from a spreadsheet](https://support.pynhq.com/directory/employees/upload-employees-from-a-spreadsheet/), [Add an upcoming employee](https://support.pynhq.com/directory/employees/add-an-upcoming-employee/), [Fix a missing manager, time zone or email](https://support.pynhq.com/directory/employees/fix-missing-details/). - Build audiences: [Create a filter group](https://support.pynhq.com/directory/employee-groups/create-a-filter-group/), [Create a static group](https://support.pynhq.com/directory/employee-groups/create-a-static-group/), [Create a relationship group](https://support.pynhq.com/directory/employee-groups/create-a-relationship-group/), [Create a demographic](https://support.pynhq.com/directory/demographics/create-a-demographic/). - [Tutorial: your first employee upload and groups](https://support.pynhq.com/directory/tutorial-first-upload-and-groups/): From a spreadsheet to a filter group an automation can target. About 25 minutes. - [Reference: employee properties](https://support.pynhq.com/directory/employees/reference-employee-properties/): Every field on a profile, where it comes from, and how stage and time zone are worked out. - [Reference: group types](https://support.pynhq.com/directory/employee-groups/reference-group-types/): Demographic, Lifecycle, Filter, Relationship and Static groups, and the ones every workspace starts with. ## Where it is in the app Open **Directory** in the primary navigation on the left of every page, or open `/directory/home`. It lands on **Employees** > **Active**; the other views are listed on the left. An employee or group opens in a panel on the right. **Search** at the top of the navigation finds employees and groups from anywhere in Pyn. ## Related - [Your first employee upload and groups](https://support.pynhq.com/directory/tutorial-first-upload-and-groups/) to go from an empty workspace to a usable audience. - [Employees](https://support.pynhq.com/directory/employees/) for the list and the profile. - [Employee Groups](https://support.pynhq.com/directory/employee-groups/) for audiences. - [Demographics](https://support.pynhq.com/directory/demographics/) for the properties behind demographic groups. - [Integrations](https://support.pynhq.com/integrations/) for the HRIS and Employee File sources that feed Directory. ## Related Intercom articles - [How to Upload Employee Data Manually (Pyn 2)](https://intercom.help/pyn/en/articles/16755797-how-to-upload-employee-data-manually-pyn-2) - [Understand Groups in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/12651638-understand-groups-in-pyn-pyn-2) --- # Demographics Source: https://support.pynhq.com/directory/demographics/ > A demographic is an employee property Pyn turns into groups, one per value. Five come with every workspace; add more from the properties your sources supply. Department, Location, Division, Country and Employment Type are demographics from the day the workspace is created: Pyn reads each employee's value and keeps a group per value, so **Department: Engineering** exists as soon as one engineer does. **All Demographics** under **Customize** lists them and any you add, with the property each one reads. ![Customize > All Demographics lists each demographic and the property it reads.](https://support.pynhq.com/media/directory/demographics/directory-demographics-table.png) ## What you can do here - [Create a demographic](https://support.pynhq.com/directory/demographics/create-a-demographic/) from a boolean, single-select or allowed text property, with your own names for a boolean's two groups. - [Archive a demographic](https://support.pynhq.com/directory/demographics/archive-a-demographic/) you no longer group by, and unarchive it later. - [Group types](https://support.pynhq.com/directory/employee-groups/reference-group-types/) lists the seeded demographics and the properties that qualify. ## Where it is in the app Open **Directory** in the left navigation and select **All Demographics** under **Customize**. The table shows **Name** and **Property**. Select a row for its panel: the property key and **Demographic Groups**, one per value seen (**No demographic groups yet** until the first evaluation). New demographics are created from **Employee Groups** > **Create** > **Demographic**. ## Related - [Create a demographic](https://support.pynhq.com/directory/demographics/create-a-demographic/) to add one. - [Archive a demographic](https://support.pynhq.com/directory/demographics/archive-a-demographic/) to retire one. - [Employee Groups](https://support.pynhq.com/directory/employee-groups/) for the groups a demographic produces. ## Related Intercom articles - [Understand Groups in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/12651638-understand-groups-in-pyn-pyn-2) — draws on --- # Archive a demographic Source: https://support.pynhq.com/directory/demographics/archive-a-demographic/ > Retire a demographic you no longer group by, and bring it back later if you need it. A property stopped being useful, or you created a demographic from the wrong one. Archiving takes it, and its groups, out of the lists and the audience pickers without deleting anything. ## Steps 1. In Pyn, open **Directory** in the left navigation, then select **All Demographics** under **Customize**. 2. Select the demographic's row to open its panel. 3. Open the panel's actions menu (the **...** button) and select **Archive**. The panel closes. 4. To restore it, show archived rows in the view and open the demographic again; its menu now offers **Unarchive**. > **Caution:** An automation whose audience includes one of the demographic's groups keeps that reference. Check the audiences of flows that used the groups before you archive, and move them to another group. ## What you should see The demographic leaves **All Demographics** and its groups leave **Employee Groups**. Unarchiving puts the demographic back; its groups are re-evaluated on the next refresh of employee data. ## Related - [Create a demographic](https://support.pynhq.com/directory/demographics/create-a-demographic/) to replace it with the right property. - [Group types](https://support.pynhq.com/directory/employee-groups/reference-group-types/) for archiving individual groups. --- # Create a demographic Source: https://support.pynhq.com/directory/demographics/create-a-demographic/ > Turn an employee property into groups, one per value, so flows can target by Job Class, Work Office or any yes/no field your HRIS supplies. Your HRIS marks contractors with a type-of-contract field and you want to leave them out of a benefits campaign. Make the field a demographic and Pyn gives you a group per value to exclude. ## Before you start - You are a workspace admin. - The property is a boolean, a single-select, or one of the text fields that qualify: `employmentType`, `executiveLeader`, `jobClass`, `location`, `typeOfContract`, `workOffice`. Other text fields do not appear in the list. ![Create Employee Group offers Demographic, Filter, Relationship and Static.](https://support.pynhq.com/media/directory/employee-groups/directory-employee-groups-create.png) ## Steps 1. In Pyn, open **Directory** in the left navigation, then select **All Groups** under **Employee Groups**. 2. Select **Create**, then **Demographic** in the **Create Employee Group** dialog. 3. Under **Select a Property**, choose the property. 4. Type a **Demographic Title**. It defaults to the property's name and becomes the prefix of each group, as in **Job Class: Technician**. 5. For a boolean property, fill **Group Name when True** and **Group Name when False**, for example "Executive leaders" and "Everyone else". Left blank, the groups are named **Title: TRUE** and **Title: FALSE**. 6. Select **Create**. The dialog reads **Click done to open the new Demographic. Creating the groups for the demographic may take a few minutes**; select **Done**. > **Note:** A boolean demographic gets both groups at once, even when nobody is in one of them. Any other demographic gets a group the first time an employee has that value, so an empty value has no group. ## What you should see The demographic's panel opens with **This demographic is still being calculated for your employees** until the first evaluation, then **Demographic Groups** lists one group per value. The demographic is listed under **Customize** > **All Demographics**, and its groups under **Employee Groups** > **Demographic** with the demographic as their **Parent**. Each group can be included or excluded in an audience. ## Related - [Group types](https://support.pynhq.com/directory/employee-groups/reference-group-types/) for what qualifies and the seeded demographics. - [Archive a demographic](https://support.pynhq.com/directory/demographics/archive-a-demographic/) to retire one. - [Employee properties](https://support.pynhq.com/directory/employees/reference-employee-properties/) for the properties and their keys. ## Related Intercom articles - [Understand Groups in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/12651638-understand-groups-in-pyn-pyn-2) — draws on --- # Employee Groups Source: https://support.pynhq.com/directory/employee-groups/ > A group is a saved set of employees that an automation or a step can send to. Pyn keeps most groups up to date for you; a static group is the one you manage by hand. An automation's audience is built from groups: include these, exclude those. Pyn gives every workspace a set to start with, one group per department, location and so on, and lets you add your own. Membership is evaluated by Pyn as employee data changes, so a group you made last year still means what it said. ![Directory > Employee Groups lists every group with its type and parent demographic.](https://support.pynhq.com/media/directory/employee-groups/directory-employee-groups-table.png) ## The five kinds | Kind | Members | You create it by | | --- | --- | --- | | **Demographic** | Everyone with one value of a property: Department is Engineering. | Creating a demographic; Pyn makes a group per value. | | **Lifecycle** | Everyone near a date: a birthday in the next week, the first 90 days after start. | Seeded; **Birthday** and **Onboarding** exist from the start. | | **Filter** | Everyone matching an audience: lifecycle stages plus included and excluded groups. | **Create** > **Filter**. | | **Relationship** | Everyone who has, or lacks, a manager, buddy, mentor or HRBP, or who is one. | **Create** > **Relationship**. | | **Static** | The people you add. | **Create** > **Static**. | The table shows a type icon, the **Parent** demographic (for demographic groups) and the **Name**. The views **Demographic**, **Lifecycle** and **Filter** show one kind each; relationship and static groups are in **All Groups**. Select a group to open its panel with **Group Employees:** and, for a filter group, a **Configure** tab showing its audience. ## What you can do here - [Create a filter group](https://support.pynhq.com/directory/employee-groups/create-a-filter-group/) for a saved audience. - [Create a static group](https://support.pynhq.com/directory/employee-groups/create-a-static-group/) from names, pasted emails or a file. - [Create a relationship group](https://support.pynhq.com/directory/employee-groups/create-a-relationship-group/) such as everyone without a buddy. - [Create a demographic](https://support.pynhq.com/directory/demographics/create-a-demographic/) to get a group per value of a property. - [Group types](https://support.pynhq.com/directory/employee-groups/reference-group-types/) lists the seeded groups and how each kind is evaluated. - [How audiences match](https://support.pynhq.com/directory/employee-groups/how-audiences-match/) explains how included groups combine: any of those with the same parent, all of those with different parents. ## Where it is in the app Open **Directory** in the left navigation and select **All Groups** under **Employee Groups**. **Create** at the top right opens **Create Employee Group**. A group opens in a panel on the right; **Search** in the navigation finds groups by name too. ## Related - [Group types](https://support.pynhq.com/directory/employee-groups/reference-group-types/) for the detail on each kind. - [Demographics](https://support.pynhq.com/directory/demographics/) for the properties behind demographic groups. - [Automations](https://support.pynhq.com/flows/automations/) for using a group as an audience. ## Related Intercom articles - [Understand Groups in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/12651638-understand-groups-in-pyn-pyn-2) - [Create a Custom Group](https://intercom.help/pyn/en/articles/6843523-create-a-custom-group) — Pyn 1 article, kept for reference - [Understand Groups in Pyn (Pyn 1)](https://intercom.help/pyn/en/articles/6024178-understand-groups-in-pyn-pyn-1) — Pyn 1 article, kept for reference --- # Create a filter group Source: https://support.pynhq.com/directory/employee-groups/create-a-filter-group/ > Save an audience as a group: lifecycle stages plus the groups to include and exclude. Pyn keeps its members current. You keep building the same audience in every flow: current employees in Engineering who are not in the leadership team. A filter group saves that definition once, and every flow can include it. ## Before you start - You are a workspace admin. - The groups you want to combine are demographic groups, such as departments, countries and locations. A filter group takes no static, relationship, lifecycle or other filter groups; include those in an automation's audience directly. ![Add Filter Group takes a name, the lifecycle stages and the groups to include and exclude.](https://support.pynhq.com/media/directory/employee-groups/directory-employee-groups-filter-add.png) ## Steps 1. In Pyn, open **Directory** in the left navigation, then select **All Groups** under **Employee Groups**. 2. Select **Create**, then **Filter** in the **Create Employee Group** dialog. The **Add Filter Group** page opens. 3. Type a **Group Name**, for example "US Engineering". 4. Under **Lifecycle**, choose the stages to allow. **Current** is chosen for you; open the selector to add a stage such as **Joiner**, or remove one with its **x**. Nothing chosen matches nobody. 5. Under **Included**, search for and add the groups a member must be in; under **Excluded**, the groups that remove them. Groups with the same parent, such as two countries, mean "in any of these"; groups with different parents must all match. Someone in an excluded group is left out whatever else they match. 6. Select **Preview**. The **Confirm Filter Group** page lists the matching employees; read it, then select **Confirm**. 7. On **Your filter group has been created.** select **Done**. The group's panel opens. > **Note:** Including **Department: Engineering**, **Country: Australia** and **Country: USA** means `Engineering AND (Australia OR USA)`: the two countries share a parent, so either matches, and Department is a separate requirement. The lifecycle stages are a requirement on top. See [How audiences match](https://support.pynhq.com/directory/employee-groups/how-audiences-match/). ## What you should see The panel reads **This filter group is still being evaluated for your employees** until Pyn has checked everyone, which can take several minutes in a large workspace, then **Details** shows **Last Evaluated** and **Group Employees:**. **Configure** shows the audience read-only. The group is listed under **Filter** and **All Groups** and can be chosen in any automation's audience. If something goes wrong the page reads **There was an error creating the filter group**; select **Back**, check the audience and confirm again. ## Related - [How audiences match](https://support.pynhq.com/directory/employee-groups/how-audiences-match/) for how included, excluded and lifecycle conditions combine. - [Group types](https://support.pynhq.com/directory/employee-groups/reference-group-types/) for how a filter group is re-evaluated. - [Automations](https://support.pynhq.com/flows/automations/) for using the group. ## Related Intercom articles - [Understand Groups in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/12651638-understand-groups-in-pyn-pyn-2) — draws on --- # Create a relationship group Source: https://support.pynhq.com/directory/employee-groups/create-a-relationship-group/ > Group everyone who has, or lacks, a manager, buddy, mentor or HRBP, or everyone who is one, so a flow can reach them or a report can find the gaps. Who has no buddy three weeks in? Who manages someone? A relationship group answers a question like that and stays current as relations change in your HRIS. ## Before you start - You are a workspace admin. - The relation is in your data: manager, buddy, mentor and HRBP each come from your HRIS or an Employee File upload. [Employee properties](https://support.pynhq.com/directory/employees/reference-employee-properties/) lists the columns. ![Create Employee Group offers Demographic, Filter, Relationship and Static.](https://support.pynhq.com/media/directory/employee-groups/directory-employee-groups-create.png) ## Steps 1. In Pyn, open **Directory** in the left navigation, then select **All Groups** under **Employee Groups**. 2. Select **Create**, then **Relationship** in the **Create Employee Group** dialog. 3. Under **Select a Relationship**, choose one: **Buddy**, **Buddy to others**, **HRBP**, **HRBP to others**, **Manager**, **Manager of others**, **Mentor** or **Mentor to others**. 4. Under **Group Members**, choose the side you want. The labels change with the relation, for example **Employees with a buddy** or **Employees without a buddy**, **Employees who manage someone** or **Employees who do not manage anyone**. 5. Type a **Group Title**, or leave it to take the label you chose. 6. Select **Create**, then **Done**. > **Tip:** **Manager of others**, **Buddy to others**, **HRBP to others** and **Mentor to others** with **Has relationship** are how you get "all managers", "all buddies" and so on. **Managers**, **Buddies**, **HRBPs** and **Mentors** already exist in every workspace with exactly that definition. ## What you should see The group opens in its panel and is listed in **All Groups** with the relationship icon. **Adding employees to the group may take a few minutes**, as the dialog says; then **Group Employees:** lists everyone on the chosen side. Use the group in an automation's audience, or open it after each HRIS sync to see who still lacks the relation. ## Related - [Fix a missing manager, time zone or email](https://support.pynhq.com/directory/employees/fix-missing-details/) for the people the group finds. - [Group types](https://support.pynhq.com/directory/employee-groups/reference-group-types/) for the seeded relationship groups. - [Automations](https://support.pynhq.com/flows/automations/) for sending to the group. ## Related Intercom articles - [Understand Groups in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/12651638-understand-groups-in-pyn-pyn-2) — draws on --- # Create a static group Source: https://support.pynhq.com/directory/employee-groups/create-a-static-group/ > Build a group from named people: search for them, paste their email addresses, or upload a file of addresses. Some audiences are a list someone wrote: this quarter's onboarding buddies, the people on a pilot. A static group holds exactly the people you put in it. ## Before you start - You are a workspace admin. - If you are pasting or uploading, you have each person's work email as it appears in Pyn. A file is `.csv`, `.xls` or `.xlsx`; every cell that holds an email address is read, whatever the column. ![Add Static Group takes a name and the people, by search, paste or file.](https://support.pynhq.com/media/directory/employee-groups/directory-employee-groups-static-add.png) ## Steps 1. In Pyn, open **Directory** in the left navigation, then select **All Groups** under **Employee Groups**. 2. Select **Create**, then **Static** in the **Create Employee Group** dialog. The **Add Static Group** page opens. 3. Type a **Group Name**, for example "Leadership Team". 4. Add people one of three ways: type in **Search for an employee to add** and select each match; select **Paste a list of employee email addresses**, paste them separated by commas, spaces or new lines, and select **Process Emails**; or select **Upload a CSV, XLS, or XLSX file of employee email addresses** and choose the file. 5. Read the result of a paste or upload. **Selected Employees (N)** lists who matched; a notice lists any addresses that **did not match current employees**, with **copy to clipboard** so you can check them. Remove anyone with the **X** on their row. 6. Select **Next**. The **Confirm Static Group** page reads **Confirm to add these N employees to the group**; select **Confirm**. 7. On **Your static group has been created.** select **Done**. The group's panel opens. > **Note:** Only current employees, upcoming joiners and people on leave can be found or matched; terminated employees are skipped. A paste or file is capped at 1,000 addresses, and the notice says how many were processed when there were more. ## What you should see The group under **All Groups** with its members listed under **Group Employees:**, ready to include or exclude in an automation. Membership is yours to manage: Pyn does not add or remove people from a static group when their data changes. ## Related - [Create a filter group](https://support.pynhq.com/directory/employee-groups/create-a-filter-group/) when the list should follow a rule instead. - [Group types](https://support.pynhq.com/directory/employee-groups/reference-group-types/) for how static groups differ from the rest. - [Automations](https://support.pynhq.com/flows/automations/) for using the group. ## Related Intercom articles - [Understand Groups in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/12651638-understand-groups-in-pyn-pyn-2) — draws on - [Create a Custom Group](https://intercom.help/pyn/en/articles/6843523-create-a-custom-group) — Pyn 1 article, kept for reference --- # How audiences match Source: https://support.pynhq.com/directory/employee-groups/how-audiences-match/ > How Pyn combines an audience's lifecycle stages, included groups and excluded groups: groups with the same parent match any one of them, groups with different parents must all match, and an exclusion always wins. An employee matches an audience when they are in one of its lifecycle stages, in at least one included group under each parent, and in none of its excluded groups. Every audience in Pyn follows this rule: an automation's trigger, a step's **Audience** tab, a conditional sender's rules and a filter group. ## Included groups: OR within a parent, AND across parents Every demographic group has a parent, the demographic it comes from. The pickers show it in front of the group's name: **Department: Engineering**, **Country: Australia**. Pyn sorts the included groups by parent, then: - Groups with the same parent combine with OR. An employee has one value for each property, so nobody is in both Australia and USA. - Each parent is a separate condition, and the conditions combine with AND. Including **Department: Engineering**, **Country: Australia** and **Country: USA** means: `Engineering AND (Australia OR USA)` | Employee | Department | Country | Matches | | --- | --- | --- | --- | | Priya | Engineering | Australia | Yes | | Sam | Engineering | USA | Yes | | Alex | Engineering | United Kingdom | No: not in Australia or USA | | Jordan | Marketing | Australia | No: not in Engineering | Adding **Department: Product** widens the department condition rather than adding a new one: `(Engineering OR Product) AND (Australia OR USA)`. Leaving **Included** empty skips the group condition, so everyone in the chosen lifecycle stages matches. ## Groups without a parent Lifecycle groups (**Birthday**, **Onboarding**), relationship groups, static groups and filter groups have no parent demographic. Each one is its own condition, so including two of them means "in both". Including **Onboarding** and **Department: Engineering** matches engineers in their first 90 days; including two static groups matches only the people on both lists. A filter group's own audience takes demographic groups only, so this applies to the audiences of automations, steps and conditional senders. ## Excluded groups and lifecycle stages - **Excluded**: being in any one excluded group removes the employee, whatever they match under **Included**. An exclusion always wins. - **Lifecycle**: a separate condition on top of the groups. The employee's stage must be one of those chosen. With no stage chosen, the audience matches nobody. The full example with **Current** under **Lifecycle** and **Leadership Team** under **Excluded** reads: current, and in Engineering, and in Australia or USA, and not in Leadership Team. The **Audience Preview** under the fields lists who matches today, so you can check the result before you publish or confirm. ## Related - [Set the audience for an automation](https://support.pynhq.com/flows/automations/set-the-audience/) to apply the rule to a trigger. - [Create a filter group](https://support.pynhq.com/directory/employee-groups/create-a-filter-group/) to save a demographic audience as a group. - [Group types](https://support.pynhq.com/directory/employee-groups/reference-group-types/) for how each kind of group decides its members. --- # Group types Source: https://support.pynhq.com/directory/employee-groups/reference-group-types/ > The five kinds of employee group, how each decides its members, when it is re-evaluated, and the groups every workspace starts with. A group is a set of employees with a title. Four of the five kinds are evaluated by Pyn from employee data; the fifth is a list you keep. All five can be included or excluded in the audience of an automation, a step or a conditional sender; a filter group's audience takes demographic groups only. ## The kinds | Kind | Membership rule | Re-evaluated | Created by | | --- | --- | --- | --- | | **Demographic** | The employee's value of the parent demographic's property equals the group's value. One group per value, created as values appear; a boolean demographic has a group for true and one for false. | Whenever employee data refreshes. | [Create a demographic](https://support.pynhq.com/directory/demographics/create-a-demographic/); the groups follow. | | **Lifecycle** | Today is within a window around a date property: from `offsetBefore` days before to `offsetAfter` days after. | Daily, as dates pass. | Seeded. | | **Filter** | Matches a saved audience of demographic groups: in one of the included groups under each parent (or any group if none), in none of the excluded groups, and in one of the chosen lifecycle stages. See [How audiences match](https://support.pynhq.com/directory/employee-groups/how-audiences-match/). | Whenever employee data refreshes; **Last Evaluated** on the panel. | [Create a filter group](https://support.pynhq.com/directory/employee-groups/create-a-filter-group/). | | **Relationship** | Has the relation (**Has relationship**) or lacks it (**Has no relationship**), for `manager`, `buddy`, `mentor`, `hrbp`, or the reverse (`manages`, `buddyOf`, `mentees`, `hrbpOf`). | Whenever relations change. | [Create a relationship group](https://support.pynhq.com/directory/employee-groups/create-a-relationship-group/). | | **Static** | The people added to it. | Never; you add and remove members. | [Create a static group](https://support.pynhq.com/directory/employee-groups/create-a-static-group/). | Groups appear in the audience pickers sorted by their parent demographic first, so demographic groups come as **Department: Engineering** and the rest follow by name. The parent decides how included groups combine: the same parent means any of them, different parents means all. See [How audiences match](https://support.pynhq.com/directory/employee-groups/how-audiences-match/). ## Groups every workspace starts with **Demographics**, each with a group per value as values appear: | Demographic | Property | | --- | --- | | **Country** | `country` | | **Division** | `division` | | **Department** | `department` | | **Location** | `location` | | **Employment Type** | `employmentType` | | **Lifecycle** | `stage`, with the groups **Current Active Employees**, **Upcoming Employees**, **Inactive Employees** (people on leave) and **Terminated Employees** | **Lifecycle groups:** | Group | Window | | --- | --- | | **Birthday** | 8 days before to 1 day after the birthday. | | **Onboarding** | Start date to 90 days after. | **Relationship groups:** **Managers** (manager of others), **Buddies** (buddy to others), **HRBPs** (HRBP to others), **Mentors** (mentor to others). ## Which properties can become a demographic Any boolean or single-select property, and these string properties: `employmentType`, `executiveLeader`, `jobClass`, `location`, `typeOfContract`, `workOffice`. Custom fields your HRIS adds qualify when they are boolean or single-select. Free-text fields such as `department` are already demographics; others cannot be chosen. ## Archiving Every group's menu offers **Archive**, which hides it from the views and the pickers; an archived group's menu offers **Unarchive**. Archiving a demographic archives it from **All Demographics**; its groups stop being evaluated. An automation that includes an archived group keeps the reference. ## Related - [How audiences match](https://support.pynhq.com/directory/employee-groups/how-audiences-match/) for how an audience combines its groups. - [Create a filter group](https://support.pynhq.com/directory/employee-groups/create-a-filter-group/) for the most flexible kind. - [Create a demographic](https://support.pynhq.com/directory/demographics/create-a-demographic/) to add a group per value. - [Employee properties](https://support.pynhq.com/directory/employees/reference-employee-properties/) for the properties groups read. ## Related Intercom articles - [Understand Groups in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/12651638-understand-groups-in-pyn-pyn-2) — replaces - [Understand Groups in Pyn (Pyn 1)](https://intercom.help/pyn/en/articles/6024178-understand-groups-in-pyn-pyn-1) — Pyn 1 article --- # Employees Source: https://support.pynhq.com/directory/employees/ > Every current, upcoming and inactive employee, with a profile that merges what each of your sources knows about them. Employees is the list Pyn sends to. Each row is one person, however many systems know about them; Pyn works out their lifecycle stage from their dates and status and files them under **Active**, **Upcoming** or **Inactive**. Select a row to open the profile: their details, the groups they are in, their enrollments and deliveries, and the sources the record was built from. ![Select an employee to open their profile beside the list.](https://support.pynhq.com/media/directory/employees/directory-employees-profile.png) ## The three views | View | Who is in it | | --- | --- | | **Active** | Stage **Current Active Employee**: started, not terminated, active in a source. | | **Upcoming** | Stage **Upcoming Joiner**: a start date in the future. This view has the **Add employee** button. | | **Inactive** | Stage **Terminated**: a termination date in the past, inactive in every source, or removed from the source. | Someone on **Extended Leave** keeps their place in the lifecycle group for leave and does not appear in these three views; the **Lifecycle** demographic's **Inactive Employees** group lists them. The table shows **Name** (with the work email, or the personal email in italics when there is no work email yet), **Country** and **Time Zone**. Switch to **Gallery** in the view-type menu for cards. **Find** searches names; **Filters** offers the employee properties. ## What you can do here - [Find an employee](https://support.pynhq.com/directory/employees/find-an-employee/) with Search, Find or a filter. - [Read an employee profile](https://support.pynhq.com/directory/employees/read-an-employee-profile/): details, groups, activity and sources. - [Add an upcoming employee](https://support.pynhq.com/directory/employees/add-an-upcoming-employee/) who is not in your HRIS yet. - [Upload employees from a spreadsheet](https://support.pynhq.com/directory/employees/upload-employees-from-a-spreadsheet/) to load or update many at once. - [Fix a missing manager, time zone or email](https://support.pynhq.com/directory/employees/fix-missing-details/). - [Export employees](https://support.pynhq.com/directory/employees/export-employees/) as CSV. - [Employee properties](https://support.pynhq.com/directory/employees/reference-employee-properties/) lists every field and how stage and time zone are worked out. ## Where it is in the app Open **Directory** in the left navigation; it lands on **Active**. **Upcoming** and **Inactive** are under **Employees** on the left. A profile opens as a panel on the right of `/directory/home`. ## Related - [Read an employee profile](https://support.pynhq.com/directory/employees/read-an-employee-profile/) for what each tab shows. - [Employee properties](https://support.pynhq.com/directory/employees/reference-employee-properties/) for the fields. - [Employee File](https://support.pynhq.com/integrations/employee-file/) for the spreadsheet integration. - [Employee Groups](https://support.pynhq.com/directory/employee-groups/) for the audiences built from these people. ## Related Intercom articles - [How to Upload Employee Data Manually (Pyn 2)](https://intercom.help/pyn/en/articles/16755797-how-to-upload-employee-data-manually-pyn-2) - [How to upload employee data manually (Pyn 1)](https://intercom.help/pyn/en/articles/6024080-how-to-upload-employee-data-manually-pyn-1) — Pyn 1 article, kept for reference - [How does Pyn determine a message recipient's time zone?](https://intercom.help/pyn/en/articles/6024089-how-does-pyn-determine-a-message-recipient-s-time-zone) — Pyn 1 article, kept for reference --- # Add an upcoming employee Source: https://support.pynhq.com/directory/employees/add-an-upcoming-employee/ > Add one new joiner by hand from the Upcoming view so their preboarding starts before they are in your HRIS. An offer is signed but the person will not be in your HRIS until payroll sets them up, and you want their welcome messages to start now. Add them as an upcoming joiner; when the HRIS record arrives with the same work email, Pyn merges the two. ## Before you start - You are a workspace admin. The button is hidden from other roles. - You know their start date and country. A time zone is required too; the dialog defaults it to the workspace's zone. ![Add an upcoming employee asks for the few fields preboarding needs.](https://support.pynhq.com/media/directory/employees/directory-employees-add-employee.png) ## Steps 1. In Pyn, open **Directory** in the left navigation, then select **Upcoming** under **Employees**. 2. Select **Add employee**. The dialog **Add an upcoming employee** opens. 3. Fill **Full name** and, if they go by something else, **Preferred name**. Left blank, the preferred name is the first word of the full name. 4. Fill **Work email** if the mailbox exists (it must match the address your HRIS will send later), otherwise **Personal email** so preboarding has somewhere to go. 5. Fill **Start date**, choose **Country** and check **Time zone**. 6. Search for their **Manager** and select them; **Clear** removes the choice. 7. Select **Add employee**. > **Note:** The dialog creates an Employee File record behind the scenes, with a generated id that starts with `pyn-`. If the workspace has no Employee File integration yet, Pyn creates one. ## What you should see The dialog reads **[Name] has been added as an upcoming joiner.** Select **Done** and the person appears on **Upcoming** with their start date; on the day they start they move to **Active**. If the manager could not be linked, the dialog says so and you can supply the manager through a spreadsheet upload. Any automation triggered by start date and open to upcoming joiners enrols them from here. ## Related - [Upload employees from a spreadsheet](https://support.pynhq.com/directory/employees/upload-employees-from-a-spreadsheet/) for many people at once, or for the fields the dialog does not ask for. - [Fix a missing manager, time zone or email](https://support.pynhq.com/directory/employees/fix-missing-details/) if the record needs correcting. - [Automations](https://support.pynhq.com/flows/automations/) for what enrols a joiner. ## Related Intercom articles - [How to Upload Employee Data Manually (Pyn 2)](https://intercom.help/pyn/en/articles/16755797-how-to-upload-employee-data-manually-pyn-2) — draws on --- # Export employees Source: https://support.pynhq.com/directory/employees/export-employees/ > Export an Employees table view to CSV and collect the file from Notices. You want the list in a spreadsheet: to audit time zones, to start the next Employee File upload from what Pyn has, or to hand to someone without a Pyn login. Export writes the table's columns to a CSV and delivers it as a download in Notices. ## Before you start - The view is a **Table** with columns. **Active** has columns and offers **Export**; a view without configured columns, such as **Upcoming**, does not. Save your own view with the columns you want if you need another cut. ![The view-type menu on a table view holds Export.](https://support.pynhq.com/media/directory/employees/directory-employees-export-menu.png) ## Steps 1. In Pyn, open **Directory** in the left navigation and select the view to export, for example **Active**. 2. Open the view-type menu: the button at the top that reads **Table**. 3. Select **Export**. Pyn starts building the file in the background. 4. Open **Notices** in the left navigation. When the file is ready a notice reads **Active_2026-10-22.csv is ready to download** (the view's title and today's date) with an **Expires** time. 5. Select **Download**. > **Note:** An export holds at most 1,000 rows and only you can download it; it expires after seven days. The columns are the view's: for **Active**, **Name**, **Primary Email**, **Country**, **Time Zone** and **Manager**. ## What you should see A CSV in your downloads with one row per employee in the view and a column per table column. To use it for an Employee File upload, add the `employeeId` column and rename the headers to the property keys in [Employee properties](https://support.pynhq.com/directory/employees/reference-employee-properties/). ## Related - [Download an export](https://support.pynhq.com/notices/download-an-export/) for the Notices side. - [Upload employees from a spreadsheet](https://support.pynhq.com/directory/employees/upload-employees-from-a-spreadsheet/) to send an edited export back. --- # Find an employee Source: https://support.pynhq.com/directory/employees/find-an-employee/ > Open one person's profile from anywhere in Pyn with Search, or narrow the Employees list with Find and Filters. You have a name, or part of one, and want the profile. Search in the left navigation reaches it from any page; the Employees list narrows with Find and Filters when you want several people at once. ## Steps 1. In Pyn, select **Search** at the top of the left navigation. A search field opens over the page. 2. Type part of the name or email. Matches appear as you type, including people, groups, automations, forms and journey moments; employees show their name, email and a **Joiner** or **Terminated** chip where that applies. 3. Select the person. **Directory** opens with their profile in the panel on the right. ## Narrow the list instead 1. Open **Directory** in the left navigation and choose **Active**, **Upcoming** or **Inactive** under **Employees**. 2. Select **Find** and type part of a name. The table narrows as you type; matching happens inside words, so "son" finds Johansson. 3. For a property, select **Filters** and pick one, for example **Department** or **Time Zone**, then tick the values you want. 4. Select a row to open the profile, or change the view-type menu from **Table** to **Gallery** for a card per person. > **Tip:** A terminated employee is on **Inactive**, not **Active**; someone with a future start date is on **Upcoming**. Search finds them wherever they are. ## What you should see The profile panel with the person's name, avatar and tabs; or a shorter table showing the people who match. The URL carries the panel, so you can share it with another admin. ## Related - [Read an employee profile](https://support.pynhq.com/directory/employees/read-an-employee-profile/) for what the panel shows. - [Employees](https://support.pynhq.com/directory/employees/) for the three views. --- # Fix a missing manager, time zone or email Source: https://support.pynhq.com/directory/employees/fix-missing-details/ > Why a profile shows a blank manager, time zone or email, which source Pyn takes each value from, and how to put it right. A manager nudge went nowhere, a message landed at 3 a.m., or an email bounced. Each traces back to one field on the profile, and the fix is always the same: find the source that should supply it and correct it there. Profiles themselves are not edited in Pyn. ## How Pyn fills a profile Every field is taken from the highest-preference source that has a value. The order is: an addendum (form answers and webhooks), Workday, BambooHR, ADP, Greenhouse, Ashby, Rippling, HiBob, Pyn Classic, Employee File, Sample Data, then Slack. So a time zone from HiBob beats one from a spreadsheet, and a spreadsheet value beats what Slack reports. ## Steps 1. In Pyn, open **Directory** in the left navigation and open the person's profile. 2. On **Details**, note which field is blank or wrong. 3. Open **Sources**. Each entry is a record from one system. The field comes from the first of these, in the order above, that supplies it. 4. Fix the value in that source. For an HRIS, change it there; Pyn picks it up on the next sync. For a spreadsheet, correct the row and upload the file again; the row is matched on `employeeId`. 5. For a source that should not be contributing at all, for example a Slack member matched to the wrong person, open its menu on **Sources** and select **Disconnect**, then confirm **Disconnect this source?**. The profile is rebuilt without it. ## The three usual cases - **Manager**: in a spreadsheet, `managerId` must equal another row's `employeeId`; in an HRIS, the manager must be an employee Pyn knows. A manager who is not an employee Pyn knows does not link. A relationship group of **Employees without a manager** finds everyone affected: [Create a relationship group](https://support.pynhq.com/directory/employee-groups/create-a-relationship-group/). - **Time zone**: Pyn uses the source's time zone if it is a valid IANA name, an abbreviation or a Windows name; failing that, the country plus postal code for the US, Canada and Australia; failing that, the country if it has one zone. A US employee with no postal code and no time zone gets none, and the upload reports **Could not determine timezone**. Messages for someone with no time zone use the workspace's time zone from **Settings** > **Account Settings**. - **Email**: a profile with no **Primary Email Address** shows the personal address in italics and cannot receive work email; a wrong one bounces. Correct it in the source, then [Resend a bounced message](https://support.pynhq.com/activity/messages/resend-a-bounced-message/). > **Note:** An employee who is only known to Slack, Google Workspace or Microsoft 365 has no employment source, so Pyn treats them as inactive whatever those systems say. Give them an HRIS record or a spreadsheet row to make them **Active**. ## What you should see After the sync or upload, **Details** shows the corrected value and, for a manager, the link to their profile. Groups that depend on the field are re-evaluated on the next refresh of employee data. ## Related - [Employee properties](https://support.pynhq.com/directory/employees/reference-employee-properties/) for every field, the stage rules and the time-zone rules. - [Upload employees from a spreadsheet](https://support.pynhq.com/directory/employees/upload-employees-from-a-spreadsheet/) for correcting a spreadsheet source. - [Resend a bounced message](https://support.pynhq.com/activity/messages/resend-a-bounced-message/) once the address is right. ## Related Intercom articles - [How does Pyn determine a message recipient's time zone?](https://intercom.help/pyn/en/articles/6024089-how-does-pyn-determine-a-message-recipient-s-time-zone) — draws on --- # Read an employee profile Source: https://support.pynhq.com/directory/employees/read-an-employee-profile/ > What each tab of an employee's profile shows: their details and relations, the groups they are in, their enrollments, deliveries and outstanding actions, and the sources behind the record. The profile is the merged view of one person: what Pyn will use when it schedules a message for them, sends to their manager or decides which groups they are in. ![Select an employee to open their profile beside the list.](https://support.pynhq.com/media/directory/employees/directory-employees-profile.png) ## Steps 1. In Pyn, open **Directory** in the left navigation and select the person's row, or find them with **Search**. 2. On **Details**, read the fields: **Preferred Name**, **Display Name**, **Legal Name**, **Job Title**, the email addresses, **Business Unit**, **Department**, **Division**, **Location**, **Team**, **Birthday**, **Start Date**, **Termination Date**, **Tenure Date**, **Time Zone** and the rest. Fields your source does not supply are blank; **Probation End Date** appears only when a source supplies it. 3. Below the fields, read the relations: **Buddy**, **HRBP**, **Manager** and **Mentor**, each a link to that person's profile. 4. Open **Groups** for every group the person is in: the demographic groups for their department and so on, their lifecycle group, and any filter, relationship or static group that includes them. 5. Open **Activity**. **Outstanding** lists deliveries whose action they have not completed (**No outstanding actions** when there are none), **Deliveries** lists every message sent to them, and **Enrollments** lists their enrollments with a status pill. Select an enrollment to open it in Activity. 6. Open **Sources** to see the records the profile is built from, one per system: a HiBob employee, an Employee File row, a Slack member. **Sources** is shown to power users, admins and owners. > **Note:** Fields are read-only on the profile. Pyn takes each value from the source with the highest preference that supplies it, so to change a value you change it in that source: the HRIS, or the spreadsheet you upload. [Fix a missing manager, time zone or email](https://support.pynhq.com/directory/employees/fix-missing-details/) explains the order. ## What you should see A panel with the person's avatar and name in the header, the four tabs, and values you recognise from your HRIS or spreadsheet. The avatar shows initials when no source supplies a picture. ## Related - [Employee properties](https://support.pynhq.com/directory/employees/reference-employee-properties/) for the meaning of each field. - [Fix a missing manager, time zone or email](https://support.pynhq.com/directory/employees/fix-missing-details/) when a value is wrong or blank. - [Open an enrollment](https://support.pynhq.com/activity/enrollments/open-an-enrollment/) for the enrollments the Activity tab links to. --- # Upload employees from a spreadsheet Source: https://support.pynhq.com/directory/employees/upload-employees-from-a-spreadsheet/ > Load or update your employees from a CSV, XLS or XLSX file through the Employee File integration, and read the result. Without an HRIS connection, a spreadsheet is how employees get into Pyn, and how they are kept current. Each upload is an upsert: rows are matched on your `employeeId`, changed values are updated, and people missing from the file are marked as removed from this source. ## Before you start - You are a workspace admin. - Your file has a header row whose names are the property keys listed in [Employee properties](https://support.pynhq.com/directory/employees/reference-employee-properties/). `employeeId` and `primaryEmail` are required on every row. The sample file (step 2) has every accepted column. ![The Employee File panel in Settings, with Download Sample File and Upload.](https://support.pynhq.com/media/directory/employees/directory-employees-employee-file-panel.png) ## Steps 1. In Pyn, open **Settings** at the foot of the left navigation, then **Integrations**. Select **Installed** and the **File Upload** tile if you have uploaded before; otherwise select **Available** and the **File Upload** tile, which creates the integration and opens it. Either way the panel that opens is headed **Employee File**. 2. In the panel's banner, select **Download Sample File** for a CSV with every column and example rows, and use it as your template. 3. Check the columns that need a particular format: dates as `yyyy-MM-dd`; `status` as `active`, `leave` or `inactive`; `country` as a name or ISO code; `timeZone` as an IANA name such as `Europe/London` (or leave it blank and supply `country` and, for the US, Canada and Australia, `postalCode`); `birthday` as `MM-dd`; `managerId`, `buddyId`, `hrbpId` and `mentorId` as another row's `employeeId`. 4. Select **Upload** and choose the file. 5. Read the banner. **Uploading...** then **Success! Uploaded N records.** means every row passed; or a list of errors, each as **Row #n:** followed by the column and the value received, for example **Unknown timezone** or **Could not determine timezone from country**. Fix every listed row and upload again; a file with any failing row is not applied. 6. Open **Directory** in the left navigation. Processing takes a minute or two; profiles then appear or update under **Active**, **Upcoming** and **Inactive**. > **Caution:** A person who is in Pyn from an earlier upload but not in the new file is marked removed from the Employee File source. If that was their only source, their stage becomes **Terminated** and they move to **Inactive**. Export first and edit the export when in doubt. ## What you should see The **History** tab of the Employee File panel records each upload with a status dot. **Advanced** lists **Fields in Employee File**: every column seen and how many rows carried a value. In **Directory**, the new rows are present with the values from your file; a value another source already supplies (an HRIS, say) is not overridden, because Employee File comes after the HRIS sources in the merge order. ## Related - [Employee properties](https://support.pynhq.com/directory/employees/reference-employee-properties/) for every column and the merge order. - [Export employees](https://support.pynhq.com/directory/employees/export-employees/) to start your next update from what Pyn has. - [Employee File](https://support.pynhq.com/integrations/employee-file/) for the integration itself. ## Related Intercom articles - [How to Upload Employee Data Manually (Pyn 2)](https://intercom.help/pyn/en/articles/16755797-how-to-upload-employee-data-manually-pyn-2) — replaces - [How to upload employee data manually (Pyn 1)](https://intercom.help/pyn/en/articles/6024080-how-to-upload-employee-data-manually-pyn-1) — Pyn 1 article, kept for reference --- # Employee properties Source: https://support.pynhq.com/directory/employees/reference-employee-properties/ > Every field on an employee, the relations between employees, the external ids that tie a profile to its sources, how the lifecycle stage is decided and how a time zone is resolved. An employee profile is a fixed set of properties plus any custom fields your HRIS adds. The key in the first column is the column header Pyn expects in an Employee File upload and the name a token uses. ## Properties | Key | Label | Notes | | --- | --- | --- | | `displayName` | Display Name | The full name shown everywhere. | | `preferredName` | Preferred Name | Used by tokens such as the first name in a greeting. | | `legalName` | Legal Name | For documents. | | `jobTitle` | Job Title | | | `primaryEmail` | Primary Email Address | The work address messages go to. Required on an upload. | | `personalEmail` | Personal Email Address | Shown in italics in lists when there is no work address. | | `secondaryEmail` | Secondary Email Address | | | `avatarUri` | Avatar Image | A URL. Initials are shown when empty. | | `startDate` | Start Date | Most recent or upcoming start. `yyyy-MM-dd`. Drives Onboarding and anniversary triggers and the Upcoming view. | | `terminationDate` | Termination Date | `yyyy-MM-dd`. | | `tenureDate` | Tenure Date | Original start for seniority, when it differs from Start Date. | | `probationEndDate` | Probation End Date | Shown only when a source supplies it. | | `birthday` | Birthday | `MM-dd` on the profile; an upload also accepts `dd/MM` and `yyyy-MM-dd`. | | `businessUnit`, `department`, `division`, `location`, `team` | Business Unit, Department, Division, Location, Team | Free text. Department, Division, Location and Country are demographics from the start. | | `employmentType` | Employment Type | Free text such as Full-Time or Contractor. A demographic from the start. | | `jobClass` | Job Class | Free text; can be a demographic. | | `country` | Primary Country | ISO code on the profile; an upload accepts a name. | | `postalCode` | Postal Code | Used to resolve a time zone for the US, Canada and Australia. | | `timeZone` | Time Zone | IANA name. | | `locale` | Locale | BCP 47 tag such as `en-US`. Resolved from country when absent. | | `active` | Active status | **Active**, **Inactive**, **On Leave** or **Removed**. `status` on an upload. | | `stage` | Lifecycle | Worked out by Pyn; see below. | | `exempt` | Exempt Status | **Exempt** or **Non-Exempt** (US). | | `workerType`, `employeeType`, `timeType` | Worker Type, Employee Type, Time Type | **Contingent Worker** / **Employee**; **Fixed Term** / **PEO** / **Regular**; **Full-Time** / **Part-Time**. From Workday and ADP. | | `removed` | Removed | Set when the person has gone from the source system. | | `returningEmployee` | Returning Employee | Rehired after leaving (BambooHR). | An HRIS can add custom fields; they appear at the end of **Details** and in the **Filters** list. A string, boolean or single-select property can become a demographic: [Create a demographic](https://support.pynhq.com/directory/demographics/create-a-demographic/). ## Relations | Relation | Upload column | Used for | | --- | --- | --- | | **Manager** | `managerId` | The Manager recipient and tokens; the **Managers** relationship group. | | **Buddy** | `buddyId` | The Buddy recipient; the **Buddies** group. | | **HRBP** | `hrbpId` | The HRBP recipient and tokens; the **HRBPs** group. | | **Mentor** | `mentorId` | The **Mentors** group. | Each upload column holds the other person's `employeeId` from the same file. An HRIS supplies its own ids and Pyn matches them. ## External ids and sources Every source record carries an external key: the system's own id (a BambooHR employee id, a Workday worker id, your `employeeId` in an Employee File) and the person's email. Pyn matches records to one profile on those keys, so a spreadsheet row and an HRIS record with the same work email become one employee. Signing in with an email that matches a profile links the user to it. Values are merged source by source in this order, first wins: addendum (form answers and webhooks), Workday, BambooHR, ADP, Greenhouse, Ashby, Rippling, HiBob, Pyn Classic, Employee File, Sample Data, Slack. The **Sources** tab on a profile lists the records, and **Disconnect** on one removes it from the merge. ## How the lifecycle stage is decided Pyn orders the start date, the termination date and today, and reads the stage from the order: | Dates | Stage | | --- | --- | | Removed from the source | **Terminated**, whatever the dates say. | | Start date in the future (termination absent or earlier) | **Upcoming Joiner** | | Start date in the past, no termination or termination in the future, active in a source | **Current Active Employee** | | Start date in the past and the person is inactive | **Terminated**; except within a day of the start date, when they stay **Upcoming Joiner** to cover an HRIS that has not caught up. | | Termination date in the past | **Terminated** | | No dates at all | **Current Active Employee** if active, else **Terminated** | "Active" means the source says so and that source is an employment system. Slack, Google Workspace and Microsoft 365 are not: a person known only to them reads as inactive. An `active` of `leave` keeps the person out of the Active view and in the **Inactive Employees** lifecycle group under the **Lifecycle** demographic. ## How a time zone is resolved 1. The time zone the source supplies, if it is a valid IANA name, a recognised abbreviation or a Windows time-zone name. 2. Otherwise the country and postal code, for the US (ZIP), Canada and Australia. 3. Otherwise the country, if it has a single time zone. 4. Otherwise none. Messages to the person send in the workspace's time zone from **Settings** > **Account Settings**, and an Employee File upload reports the row so you can add a time zone or postal code. ## Related - [Fix a missing manager, time zone or email](https://support.pynhq.com/directory/employees/fix-missing-details/) for putting a value right. - [Upload employees from a spreadsheet](https://support.pynhq.com/directory/employees/upload-employees-from-a-spreadsheet/) for the file these keys head. - [Group types](https://support.pynhq.com/directory/employee-groups/reference-group-types/) for the groups built from these properties. ## Related Intercom articles - [How does Pyn determine a message recipient's time zone?](https://intercom.help/pyn/en/articles/6024089-how-does-pyn-determine-a-message-recipient-s-time-zone) — draws on --- # Your first employee upload and groups Source: https://support.pynhq.com/directory/tutorial-first-upload-and-groups/ > A 25-minute walk from a spreadsheet to an audience: upload your people, check the profiles Pyn built, add a joiner by hand, then create the static and filter groups your first automation will target. **Goal:** a Directory that matches your organisation well enough to run a flow against: every current employee with a work email, a start date, a time zone and a manager; upcoming joiners in place before their first day; and two groups ready to use as an audience. **Time:** about 25 minutes, most of it in the spreadsheet. **You will end up with:** - every employee in **Directory** > **Employees**, split into **Active**, **Upcoming** and **Inactive** by Pyn; - a profile per person showing their manager and the groups they are in; - a **Static** group of named people (for example your onboarding buddies) and a **Filter** group of everyone who is about to join; - the first automation pointed at one of them. ## Before you start - You are a workspace admin. - You do not have an HRIS connected. If you do, Pyn fills Directory from it and you can skip to chapter 4; [Integrations](https://support.pynhq.com/integrations/) covers each connector. - Have the list of employees to hand with, at minimum, each person's work email, full name, start date and their manager's email. [Video: Your first employee upload and groups: the Employee File panel, a profile, an upcoming joiner, a static group and a filter group.](https://support.pynhq.com/media/directory/employees/directory-tutorial-first-upload.mp4) ## 1. Build the spreadsheet Pyn reads a `.csv`, `.xls` or `.xlsx` file with a header row. Column names are the property keys in [Employee properties](https://support.pynhq.com/directory/employees/reference-employee-properties/). 1. Open **Settings** at the foot of the left navigation, select **Integrations**, then **Available**, and select the **File Upload** tile. Pyn creates the integration and opens its panel, headed **Employee File**. 2. In the panel's banner, select **Download Sample File**. The file `pyn-employee-file-upload-sample.csv` has every column Pyn accepts, with example rows. 3. Fill one row per employee. `employeeId` is your own stable id for the person (a payroll number is ideal), `primaryEmail` is their work address, `displayName` their full name. Set `status` to `active`, `leave` or `inactive`; leave it blank and the person reads as inactive. 4. Put dates in `startDate`, `terminationDate` and `tenureDate` as `yyyy-MM-dd`. Put the manager's `employeeId` in `managerId`, and likewise `buddyId`, `hrbpId` and `mentorId`. 5. Give everyone a time zone, either `timeZone` as an IANA name such as `Australia/Sydney`, or `country` plus `postalCode` for the US, Canada and Australia, or `country` alone for a country with one zone. 6. Add the columns you want to group by: `department`, `location`, `division`, `team`, `businessUnit`, `jobTitle`. Delete the sample rows before you upload. ## 2. Upload it 1. Back in the **Employee File** panel, select **Upload** and choose your file. 2. Read the result. **Success! Uploaded N records** means every row passed. Otherwise the banner lists each problem as **Row #n:** with the column and the value it received; fix those rows and upload again. The whole file is rejected until every row passes. 3. Open **Directory** in the left navigation. The upload is applied in the background and the first profiles appear within a minute or two. > **Note:** Uploading again later is an update, not a duplicate: Pyn matches rows on `employeeId`, changes what differs, and marks anyone missing from the new file as removed from the source. ## 3. Check what Pyn built ![Select an employee to open their profile beside the list.](https://support.pynhq.com/media/directory/employees/directory-employees-profile.png) 1. On **Active**, count the rows against your file. Someone missing is on **Upcoming** (a future start date) or **Inactive** (a past termination date, or no `active` status). 2. Read the **Country** and **Time Zone** columns. A blank time zone means Pyn could not work one out from the row; add a `timeZone` or `postalCode` for that person and upload again. 3. Select a row to open the profile. On **Details**, check **Manager** and, if you supplied them, **Buddy**, **HRBP** and **Mentor**. A missing manager means the `managerId` did not match another row's `employeeId`. 4. Open the **Groups** tab. The person is already in the demographic groups for their department, location, division and employment type, and in the lifecycle group for their stage. ## 4. Add someone who is not in the file yet A signed offer arrives after the upload. Rather than edit the spreadsheet, add them from the **Upcoming** view. 1. Select **Upcoming** under **Employees**, then **Add employee**. 2. Fill **Full name**, **Start date**, **Country** and **Time zone** (it defaults to the workspace's zone). Add **Work email** if they have one, otherwise **Personal email**, and search for their **Manager**. 3. Select **Add employee**. The dialog confirms **has been added as an upcoming joiner**; select **Done**. ## 5. Create a static group A static group is a list you manage by hand: the people you have picked to be onboarding buddies, for example. 1. Select **All Groups** under **Employee Groups** on the left, then **Create**, then **Static**. 2. Type a **Group Name**, for example "Onboarding buddies". 3. Add members by searching, or select **Paste a list of employee email addresses**, paste them and select **Process Emails**. Addresses that match nobody are listed so you can fix them. 4. Select **Next**, read the list, then **Confirm**. On **Your static group has been created.** select **Done** to open the group. ## 6. Create a filter group A filter group is a saved audience that Pyn keeps up to date: everyone about to join, say, or every current engineer outside the leadership team. 1. Select **All Groups** again, then **Create**, then **Filter**. 2. Type a **Group Name**, for example "Upcoming joiners". 3. Under **Lifecycle**, remove **Current** with its **x** and choose **Joiner**. Leave **Included** and **Excluded** empty. 4. Select **Preview**, read the list, then **Confirm**. On **Your filter group has been created.** select **Done**. The group's panel shows **This filter group is still being evaluated** until Pyn has checked every employee, then lists its members. Every later upload re-evaluates it. ## 7. Point a flow at it 1. Open **Flows** in the left navigation and open an automation, or create one. 2. In its audience, add "Upcoming joiners" under **Included**. [Automations](https://support.pynhq.com/flows/automations/) explains the trigger and the audience in full. ## Related - [Upload employees from a spreadsheet](https://support.pynhq.com/directory/employees/upload-employees-from-a-spreadsheet/) for the monthly update, and [Export employees](https://support.pynhq.com/directory/employees/export-employees/) to start that update from what Pyn has. - [Create a relationship group](https://support.pynhq.com/directory/employee-groups/create-a-relationship-group/) for everyone without a buddy, and [Create a demographic](https://support.pynhq.com/directory/demographics/create-a-demographic/) to group by a property such as Job Class. - [Employee properties](https://support.pynhq.com/directory/employees/reference-employee-properties/) for every column, and how stage and time zone are worked out. - [Fix a missing manager, time zone or email](https://support.pynhq.com/directory/employees/fix-missing-details/) when a profile is not what you expected. ## Related Intercom articles - [How to Upload Employee Data Manually (Pyn 2)](https://intercom.help/pyn/en/articles/16755797-how-to-upload-employee-data-manually-pyn-2) — draws on - [Understand Groups in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/12651638-understand-groups-in-pyn-pyn-2) — draws on --- # Flows Source: https://support.pynhq.com/flows/ > Automations, campaign templates, forms and polls: everything Pyn sends to employees and everything it collects from them. Flows is where you design what Pyn sends and when. An automation enrols employees when a trigger fires and runs its steps relative to a reference date such as a start date or anniversary. A campaign template is a dated plan of milestones you enrol people into on demand. Forms and polls collect answers inside those messages. ![Flows > Automations lists every automation in the workspace.](https://support.pynhq.com/media/flows/automations/flows-automations-table.png) ## What you can do here - Build an [automation](https://support.pynhq.com/flows/automations/) for a lifecycle moment: choose a trigger, set the audience, add steps and publish - Enrol a one-off list of employees by hand, with their own reference dates, from a search, a pasted list or a spreadsheet - Run a dated [campaign](https://support.pynhq.com/flows/campaign-templates/) for a review cycle, a benefits window or an all-hands - Create [forms](https://support.pynhq.com/flows/forms/) and [polls](https://support.pynhq.com/flows/polls/) and embed them in a step - Sort and export the list of automations, duplicate one, archive one or attach it to a journey moment ## Where it is in the app Open `/flows/home` in Pyn, or select **Flows** in the primary navigation on the left of every page. The sub-navigation has two groups: **Flows** (**Automations**, **Campaign Templates**, **Cohort Templates**) and **Forms** (**Polls**, **Forms**). Flows is visible to power users, admins and owners. ## Related - [Automations](https://support.pynhq.com/flows/automations/) for triggers, audiences, modes and enrolments. - [Campaign templates](https://support.pynhq.com/flows/campaign-templates/) for dated campaigns on the Activity calendar. - [Forms](https://support.pynhq.com/flows/forms/) and [Polls](https://support.pynhq.com/flows/polls/) for what you can collect from employees. - [Activity](https://support.pynhq.com/activity/) to see every enrolment and message a flow produced. ## Related Intercom articles - [How to create an Automation Flow (Pyn 2)](https://intercom.help/pyn/en/articles/11612966-how-to-create-an-automation-flow-pyn-2) - [Select the Right Trigger for your Flow (Pyn 2)](https://intercom.help/pyn/en/articles/11987518-select-the-right-trigger-for-your-flow-pyn-2) - [Using Triggers in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/12651319-using-triggers-in-pyn-pyn-2) - [Set up a buddy automation (Pyn 2)](https://intercom.help/pyn/en/articles/16304943-set-up-a-buddy-automation-pyn-2) - [Choose the Audience for your Flow (Pyn 2)](https://intercom.help/pyn/en/articles/11987525-choose-the-audience-for-your-flow-pyn-2) - [Manually Enroll Employees in a Flow (Pyn 2)](https://intercom.help/pyn/en/articles/11506664-manually-enroll-employees-in-a-flow-pyn-2) - [Setting Per-Employee Reference Dates in a Mail Merge Spreadsheet (Pyn 2)](https://intercom.help/pyn/en/articles/16996083-setting-per-employee-reference-dates-in-a-mail-merge-spreadsheet-pyn-2) - [Handling late enrollments (Pyn 2)](https://intercom.help/pyn/en/articles/16729160-handling-late-enrollments-pyn-2) - [When a start date changes after someone is enrolled (Pyn 2)](https://intercom.help/pyn/en/articles/16729197-when-a-start-date-changes-after-someone-is-enrolled-pyn-2) - [How to Set up the First Day (Onboarding) Flow (Pyn 2)](https://intercom.help/pyn/en/articles/12691830-how-to-set-up-the-first-day-onboarding-flow-pyn-2) - [Gather Quick Feedback with a Poll (Pyn 2)](https://intercom.help/pyn/en/articles/12159628-gather-quick-feedback-with-a-poll-pyn-2) - [Send to Slack Channel (Pyn 2)](https://intercom.help/pyn/en/articles/16755625-send-to-slack-channel-pyn-2) - [Integrating Pyn with Google Calendar (Pyn 2)](https://intercom.help/pyn/en/articles/13401726-integrating-pyn-with-google-calendar-pyn-2) - [Custom Email Recipients in Workflows (Pyn 2)](https://intercom.help/pyn/en/articles/13930364-custom-email-recipients-in-workflows-pyn-2) - [Format Your Message (Pyn 2)](https://intercom.help/pyn/en/articles/16814757-format-your-message-pyn-2) - [Mention the Principal in Slack Messages and Channels (Pyn 2)](https://intercom.help/pyn/en/articles/16814823-mention-the-principal-in-slack-messages-and-channels-pyn-2) - [Embed a YouTube Video (Pyn 2)](https://intercom.help/pyn/en/articles/16857906-embed-a-youtube-video-pyn-2) - [Add visual content to your message (Pyn 2)](https://intercom.help/pyn/en/articles/13872876-add-visual-content-to-your-message-pyn-2) - [Set up Reminders for Messages (Pyn 2)](https://intercom.help/pyn/en/articles/13642436-set-up-reminders-for-messages-pyn-2) - [Deactivating Link & Media Unfurling in Slack Messages (Pyn 2)](https://intercom.help/pyn/en/articles/13930400-deactivating-link-media-unfurling-in-slack-messages-pyn-2) - [Set Up a Campaign (Pyn 2)](https://intercom.help/pyn/en/articles/12119560-set-up-a-campaign-pyn-2) - [Create and Use Forms (Pyn 2)](https://intercom.help/pyn/en/articles/16857779-create-and-use-forms-pyn-2) - [Create a Webhook (Pyn 2)](https://intercom.help/pyn/en/articles/16858360-create-a-webhook-pyn-2) --- # Automations Source: https://support.pynhq.com/flows/automations/ > An automation enrols employees when its trigger fires, filters them with an audience and runs a published sequence of steps relative to a reference date. An automation is a trigger, an audience and an ordered list of steps. When the trigger fires for an employee who is in the audience, Pyn creates an enrollment for that employee and schedules every step against the enrollment's reference date. The employee the enrollment is about is the principal; each step can go to the principal, their manager, their buddy, their HRBP, a group, a channel or a named address. ![Flows > Automations lists every automation in the workspace.](https://support.pynhq.com/media/flows/automations/flows-automations-table.png) ## How the pieces fit together 1. **Trigger.** Decides *when* and *for whom* the automation runs, and what the reference date is. A start-date trigger fires on (or around) each employee's start date; a Buddy Assigned trigger fires the moment a buddy relation appears; a recurring trigger fires on a timetable. The [Trigger catalogue](https://support.pynhq.com/flows/automations/trigger-catalogue/) lists every option. 2. **Audience.** Narrows the trigger to lifecycle stages plus included and excluded groups. An employee outside the audience is never enrolled. See [Set the audience for an automation](https://support.pynhq.com/flows/automations/set-the-audience/). 3. **Steps.** Messages, calendar invites, channel invites, tickets and acknowledgements, each with its own recipient, sender and schedule relative to the reference date. Steps are documented under [Steps and messages](https://support.pynhq.com/flows/steps/). 4. **Version.** Publishing takes a snapshot of the trigger, audience and steps. Enrollments run against the version they were created on until you update them. See [Publish an automation](https://support.pynhq.com/flows/automations/publish-an-automation/). 5. **Enrollment.** One employee's run through one version. Open [Enrollments](https://support.pynhq.com/activity/enrollments/) to see each person's steps, their status and their reference date. ![Open an automation to edit its trigger and steps.](https://support.pynhq.com/media/flows/automations/flows-automations-editor.png) ## Modes The button next to **Publish** shows the automation's mode. **Draft** means it has never been published. The other four modes come from **Change Mode**: | Mode | What Pyn does | | --- | --- | | **Automated** | Enrols every eligible employee when the trigger fires and sends each step at its scheduled time. | | **Verification** | Enrols eligible employees but creates each enrollment paused. Nothing sends until someone reviews it in **Activity** > **Needs Review** and selects **Unpause**. | | **Manual** | Never enrols anyone on its own. People join only through **Manual Enroll**. | | **Inactive** | Enrols nobody. Enrollments that already exist run to completion. | **Archive** is on the same menu. An archived automation is also inactive and leaves the Automations list. The reference page [Automation and enrollment states](https://support.pynhq.com/flows/automations/automation-and-enrollment-states/) has every state and transition. ## Where it is in the app Open `/flows/home` in Pyn and select **Automations**. The table lists every automation with its journey moment, enrollment count, **Required** in the **Publish** column when it has unpublished changes, and its mode in the **Status** column. **Create New** opens the trigger picker; the arrow beside it offers **Add from Template**. Selecting a row opens the editor at `/flows/automation/` followed by its id, with the trigger card at the top, the steps below it in schedule order and a drawer on the right for whatever you select. ## Guides - [Create an automation](https://support.pynhq.com/flows/automations/create-an-automation/): Start from a trigger or from the template catalogue. - [Choose a trigger](https://support.pynhq.com/flows/automations/choose-a-trigger/): Pick the family that matches the moment. - [Set the audience](https://support.pynhq.com/flows/automations/set-the-audience/): Lifecycle stages, included and excluded groups. - [Change the mode](https://support.pynhq.com/flows/automations/change-the-mode/): Verification, Automated, Manual or Inactive. - [Publish an automation](https://support.pynhq.com/flows/automations/publish-an-automation/): Versions and updating existing enrollments. - [Manually enroll employees](https://support.pynhq.com/flows/automations/manually-enroll-employees/): Search, paste or upload a list with a reference date. - [Enroll from a spreadsheet](https://support.pynhq.com/flows/automations/enroll-from-a-spreadsheet/): Per-row reference dates and custom tokens. - [Handle late enrollments](https://support.pynhq.com/flows/automations/handle-late-enrollments/): What happens when a step is already overdue. - [Move an enrollment to a new start date](https://support.pynhq.com/flows/automations/move-an-enrollment-to-a-new-start-date/): Stop, re-enrol, and skip what was already sent. ## Tutorials - [Pre-boarding to a personal email](https://support.pynhq.com/flows/automations/tutorial-pre-boarding-to-a-personal-email/): Reach new starters before they have a work inbox. - [Birthdays and anniversaries](https://support.pynhq.com/flows/automations/tutorial-birthdays-and-anniversaries/): Yearly celebrations with a manager nudge a week ahead. - [Buddy programme](https://support.pynhq.com/flows/automations/tutorial-buddy-programme/): A form nominates the buddy; Pyn messages them. - [New-manager flow](https://support.pynhq.com/flows/automations/tutorial-new-manager-flow/): Four weeks of support from the first direct report. - [Offboarding](https://support.pynhq.com/flows/automations/tutorial-offboarding-flow/): A respectful exit for the leaver, their manager and their team. ## Reference - [Trigger catalogue](https://support.pynhq.com/flows/automations/trigger-catalogue/): every trigger, its description, offsets, recurrence and window. - [Automation and enrollment states](https://support.pynhq.com/flows/automations/automation-and-enrollment-states/): modes, versions, enrollment and step states. - [Scheduling internals](https://support.pynhq.com/flows/automations/scheduling-internals/): reference date adjustment, trigger windows, cadence and minimums. ## Related - [Flows](https://support.pynhq.com/flows/) for the other things Flows contains. - [Steps and messages](https://support.pynhq.com/flows/steps/) for recipients, senders, schedules, reminders and escalations on a step. - [Enrollments](https://support.pynhq.com/activity/enrollments/) to review, unpause or stop what an automation produced. - [Journey](https://support.pynhq.com/journey/) to attach automations to the moments on your map. ## Related Intercom articles - [How to create an Automation Flow (Pyn 2)](https://intercom.help/pyn/en/articles/11612966-how-to-create-an-automation-flow-pyn-2) - [Configure Automations (Pyn 1)](https://intercom.help/pyn/en/articles/6024016-configure-automations-pyn-1) — Pyn 1 article, kept for reference - [Select the Right Trigger for your Flow (Pyn 2)](https://intercom.help/pyn/en/articles/11987518-select-the-right-trigger-for-your-flow-pyn-2) - [Using Triggers in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/12651319-using-triggers-in-pyn-pyn-2) - [Enable the Birthday Moment Automation](https://intercom.help/pyn/en/articles/6024165-enable-the-birthday-moment-automation) — Pyn 1 article, kept for reference - [Set up a buddy automation (Pyn 2)](https://intercom.help/pyn/en/articles/16304943-set-up-a-buddy-automation-pyn-2) - [Choose the Audience for your Flow (Pyn 2)](https://intercom.help/pyn/en/articles/11987525-choose-the-audience-for-your-flow-pyn-2) - [Add Filters to Your Automation](https://intercom.help/pyn/en/articles/7856462-add-filters-to-your-automation) — Pyn 1 article, kept for reference - [Create and save recipient filters](https://intercom.help/pyn/en/articles/6005739-create-and-save-recipient-filters) — Pyn 1 article, kept for reference - [How to schedule Automations](https://intercom.help/pyn/en/articles/6023999-how-to-schedule-automations) — Pyn 1 article, kept for reference - [If I turn on or add a Pyn in an enabled Automation, will employees already enrolled in the Automation receive that Pyn?](https://intercom.help/pyn/en/articles/6024094-if-i-turn-on-or-add-a-pyn-in-an-enabled-automation-will-employees-already-enrolled-in-the-automation-receive-that-pyn) — Pyn 1 article, kept for reference - [Manually Enroll Employees in a Flow (Pyn 2)](https://intercom.help/pyn/en/articles/11506664-manually-enroll-employees-in-a-flow-pyn-2) - [How to manually enroll an employee in an Automation (Pyn 1)](https://intercom.help/pyn/en/articles/6023214-how-to-manually-enroll-an-employee-in-an-automation-pyn-1) — Pyn 1 article, kept for reference - [Setting Per-Employee Reference Dates in a Mail Merge Spreadsheet (Pyn 2)](https://intercom.help/pyn/en/articles/16996083-setting-per-employee-reference-dates-in-a-mail-merge-spreadsheet-pyn-2) - [Handling late enrollments (Pyn 2)](https://intercom.help/pyn/en/articles/16729160-handling-late-enrollments-pyn-2) - [Does an employee still receive an automated Pyn if they're added to the HRIS after the messages were scheduled to go out?](https://intercom.help/pyn/en/articles/6024091-does-an-employee-still-receive-an-automated-pyn-if-they-re-added-to-the-hris-after-the-messages-were-scheduled-to-go-out) — Pyn 1 article, kept for reference - [When a start date changes after someone is enrolled (Pyn 2)](https://intercom.help/pyn/en/articles/16729197-when-a-start-date-changes-after-someone-is-enrolled-pyn-2) - [How to Set up the First Day (Onboarding) Flow (Pyn 2)](https://intercom.help/pyn/en/articles/12691830-how-to-set-up-the-first-day-onboarding-flow-pyn-2) - [Send to Personal Email Address](https://intercom.help/pyn/en/articles/8563275-send-to-personal-email-address) — Pyn 1 article, kept for reference - [Gather Quick Feedback with a Poll (Pyn 2)](https://intercom.help/pyn/en/articles/12159628-gather-quick-feedback-with-a-poll-pyn-2) - [Automating Buddy Pyns (Pyn 1)](https://intercom.help/pyn/en/articles/6023188-automating-buddy-pyns-pyn-1) — Pyn 1 article, kept for reference - [Getting Started with Buddy](https://intercom.help/pyn/en/articles/6023205-getting-started-with-buddy) — Pyn 1 article, kept for reference - [Personalize your Buddy Pyns with Tokens](https://intercom.help/pyn/en/articles/6023197-personalize-your-buddy-pyns-with-tokens) — Pyn 1 article, kept for reference - [How to customize the new manager packet](https://intercom.help/pyn/en/articles/6024074-how-to-customize-the-new-manager-packet) — Pyn 1 article, kept for reference - [Editing Enrollment Rule: Timing](https://intercom.help/pyn/en/articles/8279902-editing-enrollment-rule-timing) — Pyn 1 article, kept for reference --- # Tutorial: birthdays and anniversaries Source: https://support.pynhq.com/flows/automations/tutorial-birthdays-and-anniversaries/ > Set up yearly work-anniversary and birthday automations that give managers a week's notice and celebrate the person on the day, with milestone years handled separately. **Goal:** nobody's work anniversary or birthday passes unnoticed, and managers never find out on the day. **Time:** about 45 minutes. **You will end up with** three automations: **Work anniversary** (every year), **Milestone anniversary** (every 5 years) and **Birthday** (from the template catalogue), each with a manager heads-up a week ahead and a message to the person on the day. [Video: Anniversaries by date trigger, birthdays from the template catalogue.](https://support.pynhq.com/media/flows/automations/flows-automations-tutorial-anniversaries.mp4) ## Before you start - **Start Date** is synced for everyone. For birthdays, your HRIS must provide **Birthday**; open a few profiles in **Directory** to confirm. Birthdays are stored as month and day only. - Slack is connected, so the celebration can be a direct message and the milestone a channel post. Email works too; swap **Send Direct Message** for **Send Email to Employee** throughout. - Decide the privacy stance on birthdays. The catalogue's **Birthday opt-in** template asks people first; this tutorial excludes anyone in a static group named **No birthday messages**. ## Chapter 1: the yearly work anniversary 1. In Pyn, open **Flows** in the left navigation, then **Automations**, and select **Create New**. 2. Under **Dates and Schedules**, select **Upcoming Anniversary** ("The upcoming anniversary of a start date."). Title the automation `Work anniversary`. 3. On the trigger's **Configure** tab, set **This flow starts** to **1 week before** and leave the recurrence at **every year**. The flow now starts seven days before each anniversary, and the anniversary itself is the reference date, so "on the day of" means the anniversary. ![On Configure, This flow starts is the offset and the field under it is the recurrence.](https://support.pynhq.com/media/flows/automations/flows-automations-trigger-configure.png) 4. Open **Audience** and set **Lifecycle** to **Current**. Someone on leave is still included if you add **On leave**; most teams do. 5. Select **Add a step**, then **Send Direct Message**. Set **To** to **Manager**, schedule it **1 week before** at 09:00 in the **Recipient Timezone**, and title it `Anniversary heads-up`: > Heads-up: @principal.preferredName's work anniversary is on @date.reference. That is @principal.tenure with us. > > A short, specific thank-you from you lands better than anything we can automate. Two ideas: mention one thing they did this year that mattered, and share it where the team can see. 6. Add a second **Send Direct Message** step. Set **To** to **Employee**, schedule it **on the day of** at 09:00 in the **Recipient Timezone**, and title it `Happy anniversary`: > Happy work anniversary, @principal.preferredName! Today marks @principal.tenure at @company.name. Thank you for everything you have brought to the team this year. 7. Select **Publish**, then the mode button, **Change Mode**, **Automated**. > **Note:** **every year** fires on the first anniversary and every one after it, never on the start date itself. If your onboarding flow already marks the one-year point, choose **every year after the first** so the two never collide. ## Chapter 2: milestone anniversaries Big years deserve more than a direct message. A second automation keeps the milestone logic separate so the yearly flow stays simple. 1. Select **Create New**, then **Upcoming Milestone Anniversary** ("A significant anniversary (e.g. 5 or 10 years)"). Title it `Milestone anniversary`. 2. On **Configure**, set **This flow starts** to **2 weeks before** and leave the recurrence at **every 5 years**. Years 5, 10, 15 and so on fire; the yearly flow also fires on those days, so decide whether to keep both or add **Milestone anniversary** recipients to an excluded group for the yearly one. 3. Add a **Send Direct Message** step to **Manager**, **2 weeks before** at 09:00, titled `Milestone coming up`. Ask them to arrange a gift or a moment with the team and to tell the People team if they need budget. 4. Add a **Post to Channel** step to your team or company channel, **on the day of** at 10:00, titled `Celebrate a milestone`: > Today @principal.preferredName celebrates @principal.tenure at @company.name. Please join us in saying congratulations and thank you! 5. Select **Publish**, then **Change Mode**, **Verification**. Milestones are rare, so review the first one in **Needs Review** before moving to **Automated**. ## Chapter 3: birthdays from the template catalogue The trigger picker has no Birthday row, because birthdays have no year to count from. The **Birthday celebration** template carries the birthday trigger ready-made: it starts **1 week before** and repeats **every year**. 1. On **Automations**, select the arrow beside **Create New**, then **Add from Template**. 2. Find **Birthday celebration** and select it. Pyn copies it into your workspace under the **Birthday** moment and opens it, inactive, with two Slack steps: one to the manager a week before and one to the employee on the day. ![Add from Template copies a ready-made automation into your workspace.](https://support.pynhq.com/media/flows/automations/flows-automations-add-from-template.png) 3. Select the trigger card. **Configure** reads "This flow runs based on the employee's **Birthday**. This is the birthday on the Employee Record." and the recurrence offers **every year** only. 4. Open **Audience**. Set **Lifecycle** to **Current**, and under **Excluded** add your **No birthday messages** group. 5. Open each step and rewrite the copy in your voice. For the message to the employee, keep it short and avoid mentioning age: > Happy birthday, @principal.preferredName! Hope you have a great day. From all of us at @company.name. 6. Select **Publish**, then **Use This** and choose **Automated**. > **Tip:** Want people to opt in rather than out? Add the **Birthday opt-in** template as well. It asks each employee whether they would like a birthday message; put the people who say yes in a static group and use that group as the **Included** audience of **Birthday celebration**. ## What you should see Under **Enrollments**, people are enrolled seven days before each anniversary and birthday, with the anniversary or birthday as **Reference Date**. The manager's message shows as delivered on the day of enrollment and the employee's message as scheduled for the day itself. Someone who joined on 29 February is celebrated on 28 February in non-leap years. ## Next steps - Attach the three automations to the **Birthday** and **Work anniversary** moments on your [Journey](https://support.pynhq.com/journey/) map if the template did not do it for you. - Read [Scheduling internals](https://support.pynhq.com/flows/automations/scheduling-internals/) for exactly how recurrence years and leap days are counted. ## Related - [Configure a date trigger](https://support.pynhq.com/flows/automations/configure-a-date-trigger/) for offsets and recurrence. - [Scheduling internals](https://support.pynhq.com/flows/automations/scheduling-internals/) for the year-counting rules. - [Create an automation](https://support.pynhq.com/flows/automations/create-an-automation/) for the template catalogue. - [Steps and messages](https://support.pynhq.com/flows/steps/) for Slack senders, channels and tokens. ## Related Intercom articles - [Enable the Birthday Moment Automation](https://intercom.help/pyn/en/articles/6024165-enable-the-birthday-moment-automation) — Pyn 1 article, kept for reference --- # Tutorial: buddy programme Source: https://support.pynhq.com/flows/automations/tutorial-buddy-programme/ > Run an onboarding buddy programme in Pyn, where the manager nominates a buddy through a form, the buddy is briefed the moment they are chosen, and both sides are checked on through the first month. **Goal:** every new starter has a buddy who knows they are a buddy before day one. **Time:** about an hour. **You will end up with** a **Buddy selection** form, a nomination step in your pre-boarding automation, and a new **Buddy briefing** automation triggered the moment the buddy is assigned, plus two check-in steps in your first-weeks flow. [Video: Buddy briefing: Buddy Assigned trigger and a message to the buddy.](https://support.pynhq.com/media/flows/automations/flows-automations-tutorial-buddy.mp4) ## How it fits together Buddy is a relationship on the employee record, alongside manager, mentor and HRBP. Until it is set, a step addressed to **Buddy** has nobody to go to. So the programme has two halves: write the relationship (a form the manager fills in, or a buddy field synced from your HRIS), then use it. The **Buddy Assigned** trigger fires the moment the relationship appears, with the new starter as the principal, so the buddy is briefed on time however the nomination arrives. ## Before you start - Slack is connected. The buddy picker inside a form renders in Slack messages. - Your pre-boarding (or first-day) automation exists. If not, follow [Pre-boarding to a personal email](https://support.pynhq.com/flows/automations/tutorial-pre-boarding-to-a-personal-email/) first. - A short buddy guide is published in **Library** > **Content**, for example "Being a great onboarding buddy". ## Chapter 1: build the Buddy selection form 1. In Pyn, open **Flows** in the left navigation, then **Forms**, and add a form. Name it `Buddy selection`. 2. Add a field of type **Buddy**, label it `Buddy`, describe it as `Choose a buddy for your new starter` and make it required. This is the field that writes the relationship to the new starter's record when the form is submitted. 3. Publish the form. The [Forms](https://support.pynhq.com/flows/forms/) pages cover the editor in detail. ## Chapter 2: ask the manager to nominate 1. Open **Automations** and select your pre-boarding automation. 2. Select **Add a step**, then **Send Direct Message**. Set **To** to **Manager**, schedule it **1 week before** the start date at 09:00 in the **Recipient Timezone**, and title it `Choose a buddy`: > @principal.preferredName joins your team on @principal.startDate. Please pick an onboarding buddy below: someone on or near the team, a year or more in, who enjoys showing people round. Pyn will brief them and introduce them on day one. 3. In the editor toolbar, open the widgets menu and choose **Embed Form**, search for `Buddy selection` and select it. 4. Open the **Reminders** tab and add a reminder **2 days after send**, so a manager who has not nominated is nudged once. Open **Escalations** and add one **4 days after send** to the **HRBP** so a new starter never arrives buddy-less unnoticed. 5. Select **Publish**. > **Note:** The manager receives the message and submits the form, so the manager is the form's submitter. The nominated person is written as the buddy of the new starter, the principal of the enrollment, which is why the next chapter triggers on **Buddy Assigned** rather than on the form submission. ## Chapter 3: brief the buddy the moment they are chosen 1. On **Automations**, select **Create New**, then **Team and Org Changes**, then **Buddy Assigned** ("An employee was assigned a buddy."). Title the automation `Buddy briefing`. 2. On **Audience**, set **Lifecycle** to **Joiner** and **Current**: the principal is the new starter, who is a joiner until their start date. 3. Select **Add a step**, then **Send Direct Message**. Set **To** to **Buddy**, schedule it **on the day of** at 09:00 in the **Recipient Timezone**, and title it `You're a buddy`: > Hi! @manager.preferredName has asked you to be the onboarding buddy for @principal.preferredName, who starts on @principal.startDate as @principal.jobTitle. > > Being a buddy takes about an hour a week for the first month: a hello on day one, a coffee in the first week, and being the person they can ask the small questions. Here is our short guide. Add a **Link To Library Content** button pointing at your buddy guide. 4. Select **Publish**, then the mode button, **Change Mode**, **Automated**. The trigger fires once per assignment, so there is little to verify. 5. Select **Details** on the right-hand rail and set **Moment** to **Pre-onboarding** so the automation sits with the rest of your onboarding on the journey map. ## Chapter 4: introduce and check in during the first month These steps live in your first-day or first-weeks automation, because by then the relationship exists. 1. Open your **Start of Onboarding** automation. 2. Add a **Send Direct Message** step to **Buddy**, **on the day of** at 09:00: `@principal.preferredName starts today. Say hello this morning and book a coffee this week.` 3. Add a **Send Direct Message** step to **Buddy**, **2 weeks after** at 09:00: `Two weeks in with @principal.preferredName. Anything they are stuck on that we should know about? Reply here or tell @manager.preferredName.` 4. Add a **Send Direct Message** step to **Employee**, **1 month after** at 10:00, embedding a short poll: `How has your buddy, @principal.buddy.preferredName, been for you this first month?` 5. Select **Publish**. > **Caution:** Tokens resolve against the principal, the new starter, even when the recipient is the buddy. `@principal.preferredName` is the new starter; `@principal.buddy.preferredName` is the buddy. Use the preview and **Send a test to yourself** before publishing. ## What you should see A week before a start date the manager receives the nomination with the buddy picker. When they submit, the new starter's profile shows the buddy, **Buddy briefing** enrols the new starter and the buddy's direct message shows as delivered within the hour. On day one and two weeks later the buddy hears from Pyn again, and at a month the new starter is asked how it went. ## Next steps - If your HRIS carries a buddy field (HiBob does), the same **Buddy briefing** fires when HR sets it there; no form needed. - Add a **Mentor** field and a **Mentor** recipient the same way for a mentoring programme. ## Related - [Forms](https://support.pynhq.com/flows/forms/) for the Buddy and Mentor field types. - [Configure a team change trigger](https://support.pynhq.com/flows/automations/configure-a-team-change-trigger/) for Buddy Assigned. - [Trigger a flow from a form submission](https://support.pynhq.com/flows/automations/trigger-a-flow-from-a-form-submission/) for when the submitter is the person you want to reach. - [Steps and messages](https://support.pynhq.com/flows/steps/) for embedding forms, reminders and escalations. ## Related Intercom articles - [Set up a buddy automation (Pyn 2)](https://intercom.help/pyn/en/articles/16304943-set-up-a-buddy-automation-pyn-2) — replaces - [Gather Quick Feedback with a Poll (Pyn 2)](https://intercom.help/pyn/en/articles/12159628-gather-quick-feedback-with-a-poll-pyn-2) — draws on - [Automating Buddy Pyns (Pyn 1)](https://intercom.help/pyn/en/articles/6023188-automating-buddy-pyns-pyn-1) — Pyn 1 article, kept for reference - [Getting Started with Buddy](https://intercom.help/pyn/en/articles/6023205-getting-started-with-buddy) — Pyn 1 article, kept for reference - [Personalize your Buddy Pyns with Tokens](https://intercom.help/pyn/en/articles/6023197-personalize-your-buddy-pyns-with-tokens) — Pyn 1 article, kept for reference --- # Tutorial: new-manager flow Source: https://support.pynhq.com/flows/automations/tutorial-new-manager-flow/ > Support a first-time manager through their first four weeks with a sequence triggered by their first direct report, and brief their own manager on how to help. **Goal:** the week someone gains their first direct report, they know what is expected of them, and their own manager knows how to coach them. **Time:** about 45 minutes. **You will end up with** one automation, **New manager**, with four weekly emails to the new manager, two to their manager, and an acknowledgement that they have joined manager training. [Video: New manager: Promoted to Manager trigger and the first weekly email.](https://support.pynhq.com/media/flows/automations/flows-automations-tutorial-new-manager.mp4) ## Before you start - Reporting lines are synced from your HRIS. The **Promoted to Manager** trigger fires when an employee goes from zero direct reports to one, after the first HRIS load, so existing managers are not swept in. - Four short pieces of content are published in **Library** > **Content**: what we expect of managers, running 1:1s, giving and receiving feedback, and career conversations. The emails link to them rather than carry them, so you can revise the content without republishing the flow. - An email sender is connected. ## Chapter 1: create the automation 1. In Pyn, open **Flows** in the left navigation, then **Automations**, and select **Create New**. 2. Under **Team and Org Changes**, select **Promoted to Manager** ("An employee moves from zero to one or more reports."). Title the automation `New manager`. 3. On the trigger's **Configure** tab, read "This flow runs the first time an employee gains a direct report." There is no offset: the day the first report appears is the reference date. 4. On **Audience**, keep **Lifecycle** at **Current**. > **Tip:** The catalogue has a ready-made version. **Add from Template** > **Promoted to manager** gives you four weekly emails that each send a piece of library content; **Join new manager training** and **Check in with new manager** sit beside it. This tutorial builds the same shape by hand so you know every setting. ## Chapter 2: four weeks for the new manager Each step is **Send Email to Employee** to **Employee**, at 09:00 in the **Recipient Timezone**. Keep each one to a few lines and a link. 1. **On the day of**, `Congratulations, and what we expect`: > Congratulations, @principal.preferredName. Your first direct report means you are a manager at @company.name, and we want to make the step a good one. > > Most new managers tell us they mainly want to know what is expected. So that is where we start: the linked page sets out your responsibilities, the decisions that are yours and the ones to bring to @manager.preferredName. Over the next four weeks you will get three more short emails on 1:1s, feedback and career conversations. Your manager has a copy of the plan. Add a **Link To Library Content** button to your expectations page. 2. **1 week after**, `Running a great 1:1`: the cadence you want (weekly, 30 minutes), who owns the agenda, and the two questions to ask every time. Link to the 1:1 guide. 3. **2 weeks after**, `Giving and receiving feedback`: how to give feedback the same week, how to ask for it, and that the first one is awkward for everyone. Link to the feedback guide. 4. **4 weeks after** (choose the custom offset of 28 days), `Career conversations`: why to have one in the first quarter, how it differs from a performance conversation, and the template to use. Link to the career conversations guide. ## Chapter 3: brief the new manager's manager Set **To** to **Manager**; relative to the principal, that is the new manager's own manager. 1. **On the day of** at 09:00, `@principal.preferredName is now a manager`: > @principal.preferredName has their first direct report from today. The transition from individual contributor to manager is where most of the difficulty is, and you are the person best placed to make it smooth. > > This week: tell them you are pleased, and agree a weekly 1:1 of your own for the first quarter. Pyn is sending them our four-week series on expectations, 1:1s, feedback and career conversations, so you can refer to it. 2. **3 weeks after** at 09:00, `Check in on the transition`: ask whether the new manager has held their 1:1s, given one piece of feedback, and what they are finding hard. Add an acknowledgement button and a reminder **3 days after send**. ## Chapter 4: training acknowledgement 1. Select **Add a step**, then **Acknowledgement**. Set **To** to **Employee**, schedule it **2 weeks after** at 10:00, title it `Join new manager training`, and write the dates and the sign-up link. The step is complete when they press the button. 2. Open **Reminders** and add **5 days after send**. Open **Escalations** and add **10 days after send** to **Manager**, so an unacknowledged invitation reaches their manager. 3. Select **Publish**, then the mode button, **Change Mode**, **Verification**. Promotions are infrequent; review the first two in **Needs Review**, then switch to **Automated**. ## What you should see The day a reporting line makes someone a manager for the first time, they appear under **Enrollments** with that date as **Reference Date**, the first two emails delivered within the hour and the rest scheduled over four weeks. **Activity** > **Actions** shows whether the training acknowledgement has been pressed. ## Next steps - Add a **Change of Manager** automation for the people whose reporting line changed, with a short note to each of them introducing the new manager. - Attach **New manager** to the **Promotion** or **New manager** moment on your [Journey](https://support.pynhq.com/journey/) map. ## Related - [Configure a team change trigger](https://support.pynhq.com/flows/automations/configure-a-team-change-trigger/) for Promoted to Manager and Change of Manager. - [Create an automation](https://support.pynhq.com/flows/automations/create-an-automation/) for the template catalogue. - [Content](https://support.pynhq.com/library/content/) for the pages the emails link to. - [Steps and messages](https://support.pynhq.com/flows/steps/) for acknowledgements, reminders and escalations. ## Related Intercom articles - [How to customize the new manager packet](https://intercom.help/pyn/en/articles/6024074-how-to-customize-the-new-manager-packet) — Pyn 1 article, kept for reference --- # Tutorial: offboarding flow Source: https://support.pynhq.com/flows/automations/tutorial-offboarding-flow/ > Build an offboarding automation from the termination date that briefs the manager, walks the leaver through their last two weeks, raises the access ticket and follows up after they have gone. **Goal:** every leaver has a clear, kind last two weeks, their manager has a checklist, IT gets the ticket on time, and the person hears from you once more after they have left. **Time:** about 45 minutes. **You will end up with** one automation, **Offboarding**, with six steps spanning two weeks before the last day to a week after. [Video: Offboarding: Off-boarding trigger, two weeks before, audience of Current and Terminated.](https://support.pynhq.com/media/flows/automations/flows-automations-tutorial-offboarding.mp4) ## Before you start - Your HRIS sync provides **Termination Date**. The **Off-boarding** trigger runs on it. - **Personal Email Address** is synced, so the post-exit message has somewhere to go once the work mailbox is closed. - Optional: the Jira integration is connected if you want Pyn to raise the access-removal ticket. Otherwise the step is an email to IT's mailbox. - You are an admin or owner. ## Chapter 1: create the automation two weeks out 1. In Pyn, open **Flows** in the left navigation, then **Automations**, and select **Create New**. 2. Under **Employee Lifecycle**, select **Off-boarding** ("Triggers when an employee is departing the organization."). Title the automation `Offboarding`. 3. On the trigger's **Configure** tab, change **This flow starts** from **the day before** to **2 weeks before**. The termination date stays the reference date, so steps are scheduled "before" and "after" the last day. 4. On **Audience**, set **Lifecycle** to **Current** and **Terminated**. The person is current until their last day and terminated after it; both stages have to be eligible for the whole sequence to reach them. > **Note:** When a resignation is entered with a last day less than two weeks away, the enrollment is late: the steps that are already due send at once, and the rest run on schedule. For a same-day exit, turn on **Skip if overdue at enrollment** on the steps that would be out of place, as in [Handle late enrollments](https://support.pynhq.com/flows/automations/handle-late-enrollments/). ## Chapter 2: brief the manager 1. Select **Add a step**, then **Send Email to Employee**. Set **To** to **Manager**, schedule it **2 weeks before** at 09:00 in the **Recipient Timezone**, and title it `@principal.preferredName's last day is @date.reference`: > @principal.preferredName's last day with us is @date.reference. Here is what to do over the next two weeks: > > 1. Agree a handover plan this week: open work, documents, and who picks up each client or system. > 2. Book a farewell with the team for the last day. > 3. Make sure their final expenses are submitted a week before. > > Pyn will tell them about final pay, benefits and equipment return, and will raise the access ticket with IT. Anything sensitive about the departure, talk to the People team rather than reply here. 2. Add an acknowledgement button and a reminder **2 days after send**. ## Chapter 3: walk the leaver through their last two weeks 1. Add a **Send Email to Employee** step to **Employee**, **10 days before** at 09:00, titled `What happens before your last day`: > Hi @principal.preferredName, > > Your last day is @date.reference. We want the next two weeks to be straightforward, so here is what to expect: > > - Final pay and accrued leave are paid in the next pay run after your last day. > - Your benefits continue to the end of the month; details are on the linked page. > - Please return your laptop and pass on your last day, or use the courier label we will send if you work remotely. > - Your work accounts close at the end of your last day. Download anything personal before then. > > Thank you for everything you have done here. If you have questions, reply to this email. Add a **Link To Library Content** button to your leaver FAQ. 2. Add an **Acknowledgement** step to **Employee**, **1 week before** at 09:00, titled `Confirm your personal email and address`, asking them to check the details on their profile are right for final documents, with the button to confirm. Add a reminder **2 days after send**. 3. Add a **Send Email to Employee** step to **Employee**, **on the day of** at 15:00, titled `Thank you, and goodbye`: a short, warm note with no logistics, signed by the People team. ## Chapter 4: raise the access ticket 1. Select **Add a step**, then **Raise Ticket**. Choose your IT project and issue type, schedule the step **1 week before** at 09:00, and write the summary `Remove access for @principal.name on @date.reference` with the employee's job title, department and manager in the description. 2. No Jira? Use **Send Email to Mailbox** to your IT queue with the same subject and body instead. ## Chapter 5: follow up after they have gone 1. Add a **Send Email to Employee** step. Set **To** to **Employee (Personal)**, schedule it **1 week after** at 10:00, and title it `A last note from @company.name`: > Hi @principal.preferredName, > > It has been a week since your last day. If anything about final pay, benefits or documents is not right, reply to this email and we will fix it. > > We would value five minutes of your time on the exit survey below; it goes to the People team only. > > Wishing you all the best in what comes next. Embed your exit survey form, and on the step's **Audience** tab make sure **Terminated** is among the lifecycle stages. 2. Select **Publish**, then the mode button, **Change Mode**, **Verification**. Review the first few departures in **Needs Review**; departures vary, and this is the flow where you most want a human glance. Move to **Automated** when you are comfortable. ## What you should see When a termination date is set, the person appears under **Enrollments** two weeks before it with the termination date as **Reference Date**. The manager's email shows as delivered the same day, the leaver's messages are scheduled across the two weeks, the ticket shows under **Actions**, and the post-exit email is scheduled for a week after the last day, addressed to the personal email. ## Next steps - Add the catalogue's **Employee resigns** template, which has **No trigger**, for voluntary departures you want to handle by hand with **Manual Enroll** and **Verify Mode**. - Attach **Offboarding** to the **Exit** moment on your [Journey](https://support.pynhq.com/journey/) map. ## Related - [Configure a date trigger](https://support.pynhq.com/flows/automations/configure-a-date-trigger/) for the offset. - [Set the audience for an automation](https://support.pynhq.com/flows/automations/set-the-audience/) for Current and Terminated. - [Handle late enrollments](https://support.pynhq.com/flows/automations/handle-late-enrollments/) for short-notice exits. - [Steps and messages](https://support.pynhq.com/flows/steps/) for Raise Ticket, Send Email to Mailbox and acknowledgements. --- # Tutorial: pre-boarding to a personal email Source: https://support.pynhq.com/flows/automations/tutorial-pre-boarding-to-a-personal-email/ > Build a pre-boarding automation that reaches new starters at their personal address in the week before they begin, and nudges their manager to be ready on day one. **Goal:** every new starter hears from you before day one, at an address they can read, and their manager has a checklist in hand. **Time:** about 40 minutes. **You will end up with** one automation, **Pre-boarding**, with four email steps: three to the new starter's personal address and one to their manager. [Video: Pre-boarding: trigger, audience and the first email step.](https://support.pynhq.com/media/flows/automations/flows-automations-tutorial-pre-boarding.mp4) ## Before you start - Your HRIS sync provides **Personal Email Address** and **Start Date**. Open a recent joiner in **Directory** to check both fields are filled. Without a personal address, a step to **Employee (Personal)** has no valid recipient and is marked invalid. - An email sender is connected under **Settings** > **General** > **Senders**: your People team's Google Workspace or Microsoft 365 mailbox, or a verified email sender. - You are an admin or owner. ## Chapter 1: create the automation with the Pre-onboarding trigger The **Pre-onboarding** trigger runs on **Start Date**, starts **1 week before** and keeps watching through the start date itself. That window is what makes it reliable: a record that reaches your HRIS only three days before someone starts is still picked up, and the steps already due send straight away. 1. In Pyn, open **Flows** in the left navigation, then **Automations**, and select **Create New**. 2. Under **Employee Lifecycle**, select **Pre-onboarding** ("Prepare the employee prior to starting employment."). The editor opens with the trigger drawer on **Configure**. 3. Select the title **(Untitled)** at the top left and type `Pre-boarding`. 4. On **Configure**, leave **This flow starts** at **1 week before** and the recurrence at **just once**. The reference date for every step is the start date. ## Chapter 2: set the audience to joiners Before their start date, people are in the **Joiner** lifecycle stage, not **Current**. An audience without Joiner enrols nobody. 1. Select the **Audience** tab in the trigger drawer. 2. Under **Lifecycle**, select **Joiner**. Add **Current** too, so someone whose start date was corrected to today is still enrolled. 3. Under **Excluded**, add any groups that should not receive the sequence, for example a **Contractor** demographic group if your HRIS provides one. 4. Check **Audience Preview**. It lists everyone in those stages and groups today, which for a healthy workspace is your upcoming joiners. ## Chapter 3: write the three messages to the new starter Each step is **Send Email to Employee** with the recipient **Employee (Personal)**. That option appears only on email steps, because Pyn cannot reach a personal address over Slack or Teams. 1. Select **Add a step**, then **Send Email to Employee** under **Communication**. 2. In the step drawer, set the sender to your People team mailbox, set **To** to **Employee (Personal)**, and set the schedule to **1 week before** the reference date at **09:00** in the **Recipient Timezone**. 3. Title the step `Welcome and what to expect`. For the subject, type `Welcome to @company.name, @principal.preferredName`. A message a good People team would send: > Hi @principal.preferredName, > > We are so pleased you are joining us on @principal.startDate. Over the next week you will get a couple of short emails from us at this address: what to bring, where to go and who will meet you. > > Your manager is @manager.preferredName. They will be in touch before your first day, and they are the right person for any question about your role or team. > > If anything about your start date or paperwork changes, reply to this email and we will sort it out. > > See you soon, > The People Team 4. Add a second **Send Email to Employee** step to **Employee (Personal)**, scheduled **3 days before** at 09:00, titled `Your first day plan`. Cover the practical things: arrival time and address (or the video call link), what to bring for identity checks, dress code, where to collect equipment, and lunch. Open the step's **Advanced** tab and turn on **Skip if overdue at enrollment**: a first-day plan that arrives after the first day is noise, so a late enrollment skips it. 5. Add a third step to **Employee (Personal)**, scheduled **the day before** at 15:00, titled `See you tomorrow`. Keep it to four lines: the time, the place, the name of the person meeting them, and a warm sign-off. > **Tip:** Select the preview icon in the editor toolbar, pick an upcoming joiner, and use **Send a test to yourself**. The test uses that person's data, so you see exactly how the tokens resolve. ## Chapter 4: nudge the manager 1. Select **Add a step**, then **Send Email to Employee**. 2. Set **To** to **Manager**, schedule it **1 week before** at 09:00, and title it `@principal.preferredName starts in a week`. 3. Write the checklist, for example: > Hi @manager.preferredName, > > @principal.preferredName joins your team on @principal.startDate. Three things to do this week: > > 1. Confirm their laptop and accounts are requested. > 2. Book a 30-minute welcome for 9:30 on their first morning and a lunch with the team. > 3. Send them a short personal note; their personal address is on their profile in Pyn. > > Pyn has already sent them our welcome email and will send the first-day plan three days out. 4. Add a button or acknowledgement to the message and open **Reminders** to add a reminder **2 days after send**, so a manager who has not actioned it is nudged once. ## Chapter 5: publish, verify, then automate 1. Select **Publish**. 2. Select the mode button, then **Change Mode**, then **Verification**. 3. Over the next week, open **Activity** > **Enrollments** > **Needs Review** as joiners are enrolled. Open one, select **Verify**, read the four messages with their dates, and select **Unpause**. 4. When two or three have gone out as you intended, return to the automation, select the mode button, **Change Mode**, then **Automated**. ## What you should see Each upcoming joiner appears under **Enrollments** with their start date as **Reference Date** and four steps: three to their personal address and one to their manager. A joiner whose record arrived late shows the welcome delivered within minutes of enrollment, the first-day plan skipped, and the remaining steps on their dates. ## Next steps - Add a **Start of Onboarding** automation for the first day and first weeks, to the work address this time, and attach both to the **Pre-onboarding** and **First day** moments on your [Journey](https://support.pynhq.com/journey/) map. - Add the buddy nomination from the [Buddy programme](https://support.pynhq.com/flows/automations/tutorial-buddy-programme/) tutorial as a step to the manager. - Read [Handle late enrollments](https://support.pynhq.com/flows/automations/handle-late-enrollments/) for the other ways to treat overdue steps. ## Related - [Configure a date trigger](https://support.pynhq.com/flows/automations/configure-a-date-trigger/) for offsets and windows. - [Set the audience for an automation](https://support.pynhq.com/flows/automations/set-the-audience/) for lifecycle stages. - [Handle late enrollments](https://support.pynhq.com/flows/automations/handle-late-enrollments/) for Skip if overdue at enrollment. - [Steps and messages](https://support.pynhq.com/flows/steps/) for senders, tokens, reminders and previews. ## Related Intercom articles - [How to Set up the First Day (Onboarding) Flow (Pyn 2)](https://intercom.help/pyn/en/articles/12691830-how-to-set-up-the-first-day-onboarding-flow-pyn-2) — draws on - [When a start date changes after someone is enrolled (Pyn 2)](https://intercom.help/pyn/en/articles/16729197-when-a-start-date-changes-after-someone-is-enrolled-pyn-2) — draws on - [Send to Personal Email Address](https://intercom.help/pyn/en/articles/8563275-send-to-personal-email-address) — Pyn 1 article, kept for reference --- # Archive an automation Source: https://support.pynhq.com/flows/automations/archive-an-automation/ > Retire an automation so it enrols nobody and leaves the Automations list, while enrollments already in progress run to completion. Archiving sets the automation to **Inactive** and removes it from the list. Nobody new is enrolled; anyone already enrolled still receives their remaining steps. Use **Deactivate** instead when you expect to switch the flow back on. ## Before you start - Archiving needs the admin or owner role. - To stop messages that are already scheduled, stop each enrollment under [Enrollments](https://support.pynhq.com/activity/enrollments/) before or after archiving. Archiving alone does not cancel them. ## Steps 1. In Pyn, open **Flows** in the left navigation, then **Automations**. 2. Open the **...** menu at the right of the row and select **Archive**. Inside the editor, select the mode button, then **Change Mode**, then **Archive** ("Archive this flow. Archived flows are also considered inactive."). 3. Confirm. The row disappears from the table. > **Note:** An archived automation is restored the moment someone changes its mode again through the API or support, which sets a new mode and unarchives it in one step. If archiving fails, Pyn shows an error and leaves the automation as it was. ## What you should see The automation is gone from **Automations**. Its enrollments remain under [Enrollments](https://support.pynhq.com/activity/enrollments/) and finish on schedule. ## Related - [Change the mode of an automation](https://support.pynhq.com/flows/automations/change-the-mode/) for Deactivate, the reversible option. - [Automation and enrollment states](https://support.pynhq.com/flows/automations/automation-and-enrollment-states/) for what archived means. - [Enrollments](https://support.pynhq.com/activity/enrollments/) to stop anything still scheduled. --- # Assign an automation to a moment Source: https://support.pynhq.com/flows/automations/assign-an-automation-to-a-moment/ > Attach an automation to a moment on your journey map so it is grouped with that moment in the Automations table and listed on the moment's Flows tab. Every automation can belong to one moment on the [Journey](https://support.pynhq.com/journey/) map, such as **Pre-onboarding** or **First day**. The Automations table groups rows by moment in map order, and the moment's panel on the map lists its flows, so assigning the moment is how the two views stay in step. ## Before you start - The moment exists on your journey map. Templates added from the catalogue arrive already attached to their moment. ## Steps 1. In Pyn, open **Flows** in the left navigation, then **Automations**. 2. Open the **...** menu at the right of the row, select **Assign Moment** and choose a moment from the submenu. 3. Inside the editor, you can do the same: select **Details** on the right-hand rail, then under **Moment** select **Select a moment** and choose one. ![Details holds the automation's moment on the journey map.](https://support.pynhq.com/media/flows/automations/flows-automations-details-moment.png) > **Tip:** The moment is saved as soon as you pick it. It is not part of the published version, so you do not need to publish again. ## What you should see The row moves under the moment's heading in the table, with the table ordered by journey category and moment. On **Journey**, the moment's panel lists the automation on its **Flows** tab. ## Related - [Journey](https://support.pynhq.com/journey/) for categories and moments. - [Sort the Flows list](https://support.pynhq.com/flows/automations/sort-the-flows-list/) for the other orderings. - [Create an automation](https://support.pynhq.com/flows/automations/create-an-automation/) for templates that arrive with a moment. --- # Change the mode of an automation Source: https://support.pynhq.com/flows/automations/change-the-mode/ > Move an automation between Automated, Verification, Manual and Inactive, or archive it, from the mode button in the editor. The mode decides whether the trigger is allowed to enrol people and whether their steps send without review. A new automation starts in **Manual**; the usual path is **Verification** while you check the first few enrollments, then **Automated**. ## Before you start - Changing the mode needs the admin or owner role. - Publish first. The mode controls enrollment, but the steps that run come from the published version. An unpublished draft in **Automated** mode enrols people into the last published version. ![Change Mode decides whether the trigger enrols people and whether steps send without review.](https://support.pynhq.com/media/flows/automations/flows-automations-change-mode.png) ## Steps 1. In Pyn, open **Flows** in the left navigation, then **Automations**, and select the automation. 2. Select the mode button at the top (it reads **Draft**, **Automated**, **Verification**, **Manual** or **Inactive**), then **Change Mode**. An inactive automation shows **Use This** instead; select that. 3. In **Select how you would like this flow to operate:**, choose: - **Automated**: "This flow will be automated for the configured trigger. Once enrolled, steps will be scheduled and actioned." - **Verification**: "This flow will trigger based upon the configured trigger. However, steps will be put into a "verification" state. They will be not actioned or sent until verified by a user." - **Manual Only**: "This flow will not trigger automatically. The only way to add employees is via manually selecting and enrolling them." - **Deactivate**: "This flow will be inactive and no employees can be enrolled. Any existing enrollments will complete." - **Archive**: "Archive this flow. Archived flows are also considered inactive." 4. The dialog closes and the mode button updates. Choosing **Automated** shows "Congrats! Your automation is fully automated." > **Tip:** Use **Verification** for the first week of any new flow. Each enrollment waits in **Activity** > **Needs Review**, where you can open it, see every message with its scheduled date and select **Unpause** for the ones you want, or stop it. ## What you should see The **Status** chip in the Automations table matches the new mode. In **Verification**, new enrollments appear in **Needs Review** as paused. In **Automated**, they appear under **All Enrollments** as pending with their steps scheduled. In **Inactive**, no new rows appear and existing ones finish. ## Related - [Publish an automation](https://support.pynhq.com/flows/automations/publish-an-automation/) for versions and updating enrollments. - [Automation and enrollment states](https://support.pynhq.com/flows/automations/automation-and-enrollment-states/) for how the mode maps to enrollment state. - [Enrollments](https://support.pynhq.com/activity/enrollments/) to review and unpause. ## Related Intercom articles - [How to create an Automation Flow (Pyn 2)](https://intercom.help/pyn/en/articles/11612966-how-to-create-an-automation-flow-pyn-2) — draws on - [How to schedule Automations](https://intercom.help/pyn/en/articles/6023999-how-to-schedule-automations) — Pyn 1 article, kept for reference --- # Choose a trigger Source: https://support.pynhq.com/flows/automations/choose-a-trigger/ > Open the Select Trigger dialog, pick the family that matches the moment and swap the trigger on an existing automation. The trigger decides when an automation runs, who it runs for and what date the steps are scheduled against. Pick it by the moment you are designing for: a date in the employee record, a change in the org chart, a form someone submits, a property value or a timetable. ## Before you start - Decide what the reference date should be. Steps are scheduled relative to it, so "3 days after" means 3 days after the start date for a start-date trigger, but 3 days after the day the trigger fired for a Buddy Assigned or Group Change trigger. - If the automation already has enrollments, changing the trigger does not touch them. They keep their reference date and version. ## Which family to pick | You want the flow to start when... | Family | Trigger | | --- | --- | --- | | Someone appears in the HRIS with a future start date | Employee Lifecycle | **Will be joining** | | The start date is approaching | Employee Lifecycle | **Pre-onboarding** (fires any day in the week before, through the start date) | | Someone starts | Employee Lifecycle | **Start of Onboarding** | | A termination date is set and approaching | Employee Lifecycle | **Off-boarding** (the day before) | | A work anniversary comes round | Dates and Schedules | **Upcoming Anniversary**, **Upcoming Milestone Anniversary** | | A birthday comes round | Template catalogue | **Birthday celebration** or **Birthday opt-in** (see the note below) | | The same day each week, month or year | Dates and Schedules | **Recurring Trigger** | | A buddy is nominated | Team and Org Changes | **Buddy Assigned** | | Someone gets their first direct report | Team and Org Changes | **Promoted to Manager** | | Someone's manager changes | Team and Org Changes | **Change of Manager** | | Someone joins or leaves a group you choose | Team and Org Changes | **Group Change** | | Someone's country changes | Team and Org Changes | **Change of Location** | | Someone is matched to their Slack account | Team and Org Changes | **Connected to Slack** | | A published form is submitted | Form Submission | the form | | A date property such as Probation End Date is reached, or a text or yes/no property matches a value | Employee Properties | the property | | You will enrol people yourself | Other | **No trigger** | | An external system enrols people | Other | **Custom trigger** | ## Steps 1. In Pyn, open **Flows** in the left navigation, then **Automations**, and select the automation. For a new automation, select **Create New**; the picker opens straight away. 2. On an existing automation, select the trigger card at the top of the canvas to open the trigger drawer, then open the **...** menu in the drawer header and select **Change Trigger**. ![Select Trigger lists the categories on the left and each category's triggers with a one-line description.](https://support.pynhq.com/media/flows/automations/flows-automations-select-trigger.png) 3. Select a category on the left of **Select Trigger**. Each row shows the trigger's name and a one-line description. A greyed row cannot be selected: the **Leave Based**, **Sales Enablement** and **Support Enablement** categories carry the banner "Some triggers are only available with the associated integration and plan", and every trigger in them is inactive. 4. Select the trigger. For **Form Submission**, choose the form from the list that reads **No selection**, then select **Done**. For **Employee Properties**, choose the property, type the value to match for a text property, and select **Done**. 5. The drawer's **Configure** tab now shows the trigger's settings. Follow the guide for its family: [date trigger](https://support.pynhq.com/flows/automations/configure-a-date-trigger/), [recurring trigger](https://support.pynhq.com/flows/automations/configure-a-recurring-trigger/), [group change](https://support.pynhq.com/flows/automations/configure-a-group-change-trigger/), [team change](https://support.pynhq.com/flows/automations/configure-a-team-change-trigger/), [form submission](https://support.pynhq.com/flows/automations/trigger-a-flow-from-a-form-submission/), [employee property](https://support.pynhq.com/flows/automations/configure-an-employee-property-trigger/) or [no trigger](https://support.pynhq.com/flows/automations/use-a-flow-without-a-trigger/). 6. Select **Publish** so the new trigger is the one Pyn evaluates. > **Note:** The picker has no Birthday row. Choosing **Birthday** under **Employee Properties** creates a text-match trigger, because the birthday is stored as `MM-DD` text rather than a date. To run a flow on each birthday, add **Birthday celebration** or **Birthday opt-in** from the template catalogue; its trigger is the birthday date trigger with the recurrence **every year**. ## What you should see The trigger card at the top of the canvas shows the trigger's emoji and name. For a date trigger it also shows the offset and recurrence, for example **the day of** just once, or **1 week before** every year. ## Related - [Trigger catalogue](https://support.pynhq.com/flows/automations/trigger-catalogue/) for every trigger with its defaults. - [Configure a date trigger](https://support.pynhq.com/flows/automations/configure-a-date-trigger/) for offsets and recurrence. - [Configure a team change trigger](https://support.pynhq.com/flows/automations/configure-a-team-change-trigger/) for buddy, manager, location and Slack triggers. - [Trigger a flow from a form submission](https://support.pynhq.com/flows/automations/trigger-a-flow-from-a-form-submission/) for forms. ## Related Intercom articles - [Select the Right Trigger for your Flow (Pyn 2)](https://intercom.help/pyn/en/articles/11987518-select-the-right-trigger-for-your-flow-pyn-2) — replaces - [Using Triggers in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/12651319-using-triggers-in-pyn-pyn-2) — replaces --- # Configure a date trigger Source: https://support.pynhq.com/flows/automations/configure-a-date-trigger/ > Set when a date trigger fires relative to the employee's date, how often it repeats, and understand what the reference date will be. Date triggers run off a date on the employee record: **Start Date** for the lifecycle and anniversary triggers, **Termination Date** for Off-boarding, **Birthday** for the birthday templates, and any other date property you choose under **Employee Properties**. You set two things on the **Configure** tab: when the flow starts relative to that date, and how often it repeats. ## Before you start - The automation has a date trigger. The trigger card shows the trigger's emoji and a line such as **the day of** just once. - Decide whether you want the flow to start early. Starting a week before the date does not move the reference date: steps are still scheduled around the date itself. ![Configure sets when a date trigger starts and how often it repeats.](https://support.pynhq.com/media/flows/automations/flows-automations-trigger-configure.png) ## Steps 1. In Pyn, open **Flows** in the left navigation, then **Automations**, and select the automation. Select the trigger card at the top of the canvas if the drawer is not already open on **Configure**. 2. Read the first line: "This flow runs based on the employee's **Start Date**" (or the field you chose). For Birthday it adds "This is the birthday on the Employee Record." 3. Under **This flow starts**, open the menu and pick an offset: **2 weeks before**, **1 week before**, **the day before**, **on the day of**, **the day after**, **1 week after**, **2 weeks after**, **1 month after**, **2 months after**, **3 months after** or **6 months after**. The menu also lets you type a custom number of days, weeks or months. 4. Under **the Employee's Start Date** (the label names the field), choose the recurrence: **just once**, **every year**, **every year after the first**, **every other year**, **every 2 years**, **every 5 years** or **every 10 years**. A Birthday trigger offers **every year** only. 5. Select **Publish**. Date triggers are evaluated on every HRIS refresh and on a background pass about every six hours, so the first enrollments appear within a few hours of publishing when someone's date matches today. > **Note:** Recurring options count from the date's own year. **every year** fires on the first anniversary and each one after; the start date itself is year 0 and never fires. **every year after the first** skips year 1, so a joiner's welcome flow and an anniversary flow never land on the same day. **every other year** is years 1, 3, 5; **every 2 years** is years 2, 4, 6. ## What the reference date will be The reference date is the employee's date itself (projected to the matching year for a recurring trigger), not the day the trigger fired. A flow set to start **1 week before** an anniversary has the anniversary as its reference date, so a step scheduled **on the day of** lands on the anniversary and a step **7 days before** lands on the day the flow started. [Scheduling internals](https://support.pynhq.com/flows/automations/scheduling-internals/) explains the window and adjustment rules behind this. ## What you should see The trigger card summarises your choices, for example **1 week before** every year after the first. Once published, employees whose date matches appear under [Enrollments](https://support.pynhq.com/activity/enrollments/) with the matched date as their **Reference Date**. ## Related - [Trigger catalogue](https://support.pynhq.com/flows/automations/trigger-catalogue/) for the default offset and recurrence of each date trigger. - [Scheduling internals](https://support.pynhq.com/flows/automations/scheduling-internals/) for windows, adjustments and the one-day minimum between re-enrollments. - [Birthdays and anniversaries](https://support.pynhq.com/flows/automations/tutorial-birthdays-and-anniversaries/) for a complete worked example. - [Prevent repeat enrollments](https://support.pynhq.com/flows/automations/prevent-repeat-enrollments/) for what happens when a date is corrected. ## Related Intercom articles - [Select the Right Trigger for your Flow (Pyn 2)](https://intercom.help/pyn/en/articles/11987518-select-the-right-trigger-for-your-flow-pyn-2) — draws on - [Using Triggers in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/12651319-using-triggers-in-pyn-pyn-2) — draws on - [Enable the Birthday Moment Automation](https://intercom.help/pyn/en/articles/6024165-enable-the-birthday-moment-automation) — Pyn 1 article, kept for reference --- # Configure a group change trigger Source: https://support.pynhq.com/flows/automations/configure-a-group-change-trigger/ > Start an automation when an employee enters or leaves one of the groups you choose, such as a department, a location or a static list. A Group Change trigger watches the groups you pick. The moment an employee is added to one of them (or removed, if you choose **Employee leaves group**), Pyn enrols them with today as the reference date. It fits transfers between departments, moves to a new office, promotions tracked by a level group, or anyone you drop into a static group by hand. ## Before you start - The groups exist in **Directory** > **Employee Groups**. Demographic groups (one per department, location and so on) are created for you; filter and static groups you create. See [Employee groups](https://support.pynhq.com/directory/employee-groups/). - A Group Change trigger fires on changes after the first HRIS load of the workspace. Everyone who was already in the group when you connected your HRIS is not enrolled. ![Group Change watches the groups you pick for people entering or leaving.](https://support.pynhq.com/media/flows/automations/flows-automations-group-trigger.png) ## Steps 1. In Pyn, open **Flows** in the left navigation, then **Automations**. Select **Create New**, choose **Team and Org Changes**, then **Group Change**. On an existing automation, select the trigger card. 2. On **Configure**, under **Trigger when**, choose **Employee enters group** or **Employee leaves group**. 3. Under **Groups**, open the picker and tick each group to watch. The description reads "Select which groups this trigger monitors." You can pick several; the trigger fires for a change in any of them. 4. Open **Audience** if only some of the people who move should be enrolled, for example current employees only. 5. Select **Publish**. > **Tip:** To run a flow for anyone you choose at a time you choose, create a static group, point a Group Change trigger at it, and add people to the group. Each addition enrols them with that day as the reference date. Manual Enroll does the same without a group when you also want to set the reference date. ## What you should see When someone joins (or leaves) a watched group, they appear under [Enrollments](https://support.pynhq.com/activity/enrollments/) within the hour with today's date as **Reference Date**. The default **Prevent repeat enrollments** for this trigger is **1 month**. ## Related - [Employee groups](https://support.pynhq.com/directory/employee-groups/) to create the groups the trigger watches. - [Set the audience for an automation](https://support.pynhq.com/flows/automations/set-the-audience/) to narrow who is enrolled. - [Trigger catalogue](https://support.pynhq.com/flows/automations/trigger-catalogue/) for the trigger's defaults. ## Related Intercom articles - [Select the Right Trigger for your Flow (Pyn 2)](https://intercom.help/pyn/en/articles/11987518-select-the-right-trigger-for-your-flow-pyn-2) — draws on - [Using Triggers in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/12651319-using-triggers-in-pyn-pyn-2) — draws on --- # Configure a recurring trigger Source: https://support.pynhq.com/flows/automations/configure-a-recurring-trigger/ > Run an automation on a timetable, daily, weekly, monthly or yearly, from a start date and time in a time zone you choose, for everyone in the audience. A recurring trigger has nothing to do with any one employee's dates. On each tick of its schedule it enrols everyone in the audience, with that day as the reference date. Use it for a weekly pulse, a monthly reminder to book leave or a yearly compliance acknowledgement. ## Before you start - Set the audience before you publish. A recurring trigger with the default audience enrols every current employee on every run. See [Set the audience for an automation](https://support.pynhq.com/flows/automations/set-the-audience/). - Decide the time zone. The trigger keeps local time across daylight-saving changes in the zone you pick. ![A recurring trigger runs on a timetable and previews its upcoming runs.](https://support.pynhq.com/media/flows/automations/flows-automations-recurring-trigger.png) ## Steps 1. In Pyn, open **Flows** in the left navigation, then **Automations**. Select **Create New**, choose **Dates and Schedules**, then **Recurring Trigger**. On an existing automation, select the trigger card to open its drawer. 2. On **Configure**, set **Starting from Date (Inclusive)**. The first run is on this date if the time has not passed yet. 3. Set **Time** in five-minute steps and choose the zone under **In Time Zone**. 4. Under **Recurrence**, choose **Daily**, **Weekly**, **Monthly** or **Yearly**. Weekly repeats on the weekday of the start date; monthly and yearly repeat on its day of the month. 5. Check the list under "Based on the current configuration, scheduled times are:". It lists the upcoming runs in the trigger's zone. 6. Open **Audience** and set the lifecycle stages and groups. Then select **Publish**. > **Note:** Pyn checks recurring triggers once an hour, at 14 minutes past. A run scheduled for 09:00 produces its enrollments at the next check after 09:00. Steps scheduled **on the day of** at a later time still send at their own time. ## What you should see After the first run, [Enrollments](https://support.pynhq.com/activity/enrollments/) lists one enrollment per audience member with the run date as the reference date. Each later run adds a new set. The default **Prevent repeat enrollments** for this trigger is **1 day**, so a daily schedule still enrols each person once per day. ## Related - [Set the audience for an automation](https://support.pynhq.com/flows/automations/set-the-audience/) to decide who each run reaches. - [Trigger catalogue](https://support.pynhq.com/flows/automations/trigger-catalogue/) for the trigger's defaults. - [Scheduling internals](https://support.pynhq.com/flows/automations/scheduling-internals/) for the hourly cadence and time-zone rules. ## Related Intercom articles - [Select the Right Trigger for your Flow (Pyn 2)](https://intercom.help/pyn/en/articles/11987518-select-the-right-trigger-for-your-flow-pyn-2) — draws on - [Using Triggers in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/12651319-using-triggers-in-pyn-pyn-2) — draws on --- # Configure a team change trigger Source: https://support.pynhq.com/flows/automations/configure-a-team-change-trigger/ > Use the Buddy Assigned, Promoted to Manager, Change of Manager, Change of Location and Connected to Slack triggers, which fire the moment a relationship on the employee record changes. The **Team and Org Changes** triggers (other than Group Change) watch relationships: who someone's buddy is, who they report to, who reports to them, which country group they are in and which Slack account they are matched to. They fire as soon as the relationship is written, with that day as the reference date, and have no offset or recurrence to set. ## Before you start - Relationships come from your HRIS sync (manager, and buddy or HRBP where the HRIS provides them), from the Employee File, and from forms with a **Buddy** or **Mentor** field. The trigger fires whichever way the relationship arrives. - These triggers fire for changes after the first HRIS load. Existing managers are not treated as newly promoted when you connect your HRIS. ## Steps 1. In Pyn, open **Flows** in the left navigation, then **Automations**. Select **Create New** and choose **Team and Org Changes**. ![Team and Org Changes triggers fire the moment a relationship or group membership changes.](https://support.pynhq.com/media/flows/automations/flows-automations-team-trigger.png) 2. Select the trigger that matches the change: - **Buddy Assigned**: "An employee was assigned a buddy." The principal is the new hire; the buddy is reachable as the **Buddy** recipient on every step. - **Promoted to Manager**: "An employee moves from zero to one or more reports." Fires once, when the first direct report appears. The principal is the new manager. - **Change of Manager**: "The reporting line for an employee has changed." The principal is the employee whose manager changed. - **Change of Location**: "A change in the primary work location for the employee." Fires when the employee joins a different country group. - **Connected to Slack**: "An employee is matched to their Slack account." 3. On **Configure**, read the description. It also says "Only ... added after the first time the employee directory loads are included." 4. Open **Audience** to limit the lifecycle stages or groups. Promoted to Manager and Change of Manager both default to a lifecycle of **Current**. 5. Add steps and select **Publish**. > **Note:** Change of Location shows **Group change** in the drawer, because under the hood it watches the country groups. It is the same trigger. ## What you should see The day a relationship is written, the affected employee appears under [Enrollments](https://support.pynhq.com/activity/enrollments/) with that date as **Reference Date**. Steps scheduled **on the day of** send the same day at their scheduled time; a step whose time has already passed sends straight away. ## Related - [Buddy programme](https://support.pynhq.com/flows/automations/tutorial-buddy-programme/) for the Buddy Assigned trigger end to end. - [New-manager flow](https://support.pynhq.com/flows/automations/tutorial-new-manager-flow/) for Promoted to Manager. - [Trigger catalogue](https://support.pynhq.com/flows/automations/trigger-catalogue/) for defaults and the relation each trigger watches. - [Slack](https://support.pynhq.com/integrations/slack/) for how employees are matched to Slack accounts. ## Related Intercom articles - [Select the Right Trigger for your Flow (Pyn 2)](https://intercom.help/pyn/en/articles/11987518-select-the-right-trigger-for-your-flow-pyn-2) — draws on - [Using Triggers in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/12651319-using-triggers-in-pyn-pyn-2) — draws on --- # Configure an employee property trigger Source: https://support.pynhq.com/flows/automations/configure-an-employee-property-trigger/ > Start an automation from any date, text or yes/no property on the employee record, including custom fields synced from your HRIS. The **Employee Properties** category turns any suitable field on the employee record into a trigger. A date property such as **Probation End Date** or **Tenure Date** becomes a date trigger with the same offsets and recurrence as Start Date. A text property fires when its value matches text you enter; a yes/no property fires when it becomes true. ## Before you start - Check that the property is populated. Open an employee in [Directory](https://support.pynhq.com/directory/employees/) and look for the field. Properties come from your HRIS mapping, the Employee File or a form that writes to the record. - For a text match, know the exact value. The comparison is against the stored value, so "Contractor" and "contractor" are different. ## Steps 1. In Pyn, open **Flows** in the left navigation, then **Automations**, and select **Create New**. 2. Choose **Employee Properties** on the left. Under **Select a Property**, open the list. It shows every date, text and yes/no property in alphabetical order. ![Employee Properties turns any date, text or yes/no field into a trigger.](https://support.pynhq.com/media/flows/automations/flows-automations-property-trigger.png) 3. Select the property. For a text property a **Value** field appears, hinting "Enter the value to match"; type the value. 4. Select **Done**. 5. For a date property, the drawer's **Configure** tab offers **This flow starts** and the recurrence list exactly as for Start Date; follow [Configure a date trigger](https://support.pynhq.com/flows/automations/configure-a-date-trigger/). For a text or yes/no property, the tab reads "Triggered using property:" followed by the property name and there is nothing more to set. 6. Set the **Audience**, add steps and select **Publish**. > **Caution:** Birthday appears in this list as a text property, because it is stored as `MM-DD`. Picking it here makes a flow that fires only for people whose birthday equals the text you type. For a yearly birthday flow use the **Birthday celebration** template instead; see [Birthdays and anniversaries](https://support.pynhq.com/flows/automations/tutorial-birthdays-and-anniversaries/). ## What you should see Property triggers are evaluated on every HRIS refresh and on the six-hourly background pass. When a record matches, the employee appears under [Enrollments](https://support.pynhq.com/activity/enrollments/); for a text or yes/no match the reference date is the day of the match in the employee's time zone. Text and yes/no triggers default to **Never reenroll**, so a correction that flips the value away and back does not enrol the person twice. ## Related - [Configure a date trigger](https://support.pynhq.com/flows/automations/configure-a-date-trigger/) for the offset and recurrence settings a date property gets. - [Employees](https://support.pynhq.com/directory/employees/) to see which properties your records carry. - [Trigger catalogue](https://support.pynhq.com/flows/automations/trigger-catalogue/) for defaults. ## Related Intercom articles - [Select the Right Trigger for your Flow (Pyn 2)](https://intercom.help/pyn/en/articles/11987518-select-the-right-trigger-for-your-flow-pyn-2) — draws on - [Using Triggers in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/12651319-using-triggers-in-pyn-pyn-2) — draws on --- # Create an automation Source: https://support.pynhq.com/flows/automations/create-an-automation/ > Start a new automation from a trigger in the picker or from a ready-made template in the catalogue, then open it in the editor. You want a new automation in your workspace, either built from scratch around a trigger or copied from one of Pyn's templates so the trigger, timing and copy are already in place. Either way you end up in the editor with a draft you can shape and publish. ## Before you start - You are a power user, admin or owner. Creating, duplicating, archiving and publishing automations need the admin or owner role; power users can edit and manually enrol. - Know which moment the automation is for. The [Trigger catalogue](https://support.pynhq.com/flows/automations/trigger-catalogue/) maps moments to triggers. - On the free plan, one automation can be active at a time. The banner above the table says so and offers an upgrade. ![Flows > Automations lists every automation in the workspace.](https://support.pynhq.com/media/flows/automations/flows-automations-table.png) ## Steps 1. In Pyn, open **Flows** in the left navigation, then select **Automations**. 2. To start from a trigger, select **Create New**. The **Select Trigger** dialog opens with its categories on the left: **Employee Lifecycle**, **Dates and Schedules**, **Team and Org Changes**, **Form Submission**, **Employee Properties**, **Leave Based**, **Sales Enablement**, **Support Enablement** and **Other**. ![Select Trigger lists the categories on the left and each category's triggers with a one-line description.](https://support.pynhq.com/media/flows/automations/flows-automations-select-trigger.png) 3. Select a trigger. Pyn creates the automation in **Manual** mode (a Form Submission trigger starts in **Verification**) and opens the editor with the trigger drawer showing. 4. To start from a template instead, select the arrow beside **Create New**, then **Add from Template**. The **Add from Template** dialog lists automation and campaign templates grouped by journey category. Select one and Pyn copies it into your workspace, attached to its moment, and opens it. ![Add from Template copies a ready-made automation into your workspace.](https://support.pynhq.com/media/flows/automations/flows-automations-add-from-template.png) 5. In the editor, select the title field, which reads **(Untitled)**, at the top left and type a name. Titles save as you type. 6. Work through the trigger drawer tabs **Configure**, **Audience** and **Advanced**, then select **Add a step** to build the sequence. Each step opens its own drawer; the [Steps and messages](https://support.pynhq.com/flows/steps/) pages cover recipients, senders and schedules. 7. Select **Publish** when the draft is ready. Then open the mode button beside it and use **Change Mode** to move the automation to **Verification** or **Automated**. [Video: Create an automation and schedule its first step.](https://support.pynhq.com/media/flows/automations/flows-automations-create.mp4) > **Note:** A template added from the catalogue arrives **Inactive** with every step already published. Its mode button reads **Use This**; select it to pick the mode you want. ## What you should see The automation appears in the **Automations** table with your title, a **Status** chip showing its mode and an **Enrollments** count of 0. The **Publish** column reads **Required** while the draft has changes you have not published. ## Related - [Choose a trigger](https://support.pynhq.com/flows/automations/choose-a-trigger/) to pick the right family for the moment. - [Set the audience for an automation](https://support.pynhq.com/flows/automations/set-the-audience/) to limit who is enrolled. - [Change the mode of an automation](https://support.pynhq.com/flows/automations/change-the-mode/) to turn it on. - [Steps and messages](https://support.pynhq.com/flows/steps/) for everything inside a step. ## Related Intercom articles - [How to create an Automation Flow (Pyn 2)](https://intercom.help/pyn/en/articles/11612966-how-to-create-an-automation-flow-pyn-2) — replaces - [Configure Automations (Pyn 1)](https://intercom.help/pyn/en/articles/6024016-configure-automations-pyn-1) — Pyn 1 article, kept for reference --- # Duplicate an automation Source: https://support.pynhq.com/flows/automations/duplicate-an-automation/ > Copy an automation, with its trigger, audience, steps and journey moment, into a new inactive draft you can change independently. Duplicating is the quickest way to make a variant: the same onboarding sequence for a second country, or a copy of a working flow to experiment on without touching the live one. ## Before you start - Duplicating needs the admin or owner role. - The copy carries the steps and the moment but none of the published versions or enrollments. It starts **Inactive** with changes to publish. ![Each row's menu offers Duplicate, Archive and Assign Moment.](https://support.pynhq.com/media/flows/automations/flows-automations-row-menu.png) ## Steps 1. In Pyn, open **Flows** in the left navigation, then **Automations**. 2. Open the **...** menu at the right of the automation's row and select **Duplicate**. 3. Pyn creates a copy titled with **(copy)** after the original title and lists it under the same moment. Select it to open the editor. 4. Rename it, change what differs, then select **Publish** and use **Use This** to choose a mode. ## What you should see A new row whose title ends in **(copy)**, with the **Inactive** status chip and **Required** in the **Publish** column. The original is unchanged and keeps its enrollments. ## Related - [Publish an automation](https://support.pynhq.com/flows/automations/publish-an-automation/) to make the copy live. - [Change the mode of an automation](https://support.pynhq.com/flows/automations/change-the-mode/) to pick its mode. - [Archive an automation](https://support.pynhq.com/flows/automations/archive-an-automation/) to retire the original once the copy replaces it. --- # Enroll from a spreadsheet Source: https://support.pynhq.com/flows/automations/enroll-from-a-spreadsheet/ > Upload a mail merge spreadsheet to enrol many people at once, each with their own reference date and with extra columns available as custom tokens in the messages. A mail merge spreadsheet is a manual enrollment with data attached. Every row is one employee; a **Reference Date** column gives each row its own date, and any other column becomes a token such as `custom.startLocation` you can drop into a message. One upload can enrol a whole intake of new hires with different start dates, each greeted with the right office and the right laptop pickup time. ## Before you start - Build a `.csv`, `.xls` or `.xlsx` file with a header row. Only the first sheet of a workbook is read. - One column holds each person's primary work email. - An optional **Reference Date** column holds dates as `yyyy-MM-dd` (for example `2026-11-03`) or `yyyy/MM/dd`, or a real date-formatted cell in Excel or Google Sheets. Day-first and month-first text such as `03/11/2026` is rejected rather than guessed. The header can be `Reference Date`, `reference_date`, `ReferenceDate`, `Ref Date` or `ref-date` in any capitalisation; `Start Date` is treated as an ordinary token column. - Every other column becomes a token. The header is converted to camel case, so `Start Location` is `custom.startLocation`. The Reference Date column is never a token. - Steps that use the tokens exist and are published. See [Steps and messages](https://support.pynhq.com/flows/steps/) for inserting tokens. ## Steps 1. In Pyn, open **Flows** in the left navigation, then **Automations**, and select the automation. 2. Select the mode button, then **Manual Enroll**. 3. Set **Reference Date** in the dialog. Rows with a blank Reference Date cell use this date. 4. Select **Upload mail merge spreadsheet** and choose your file. (**Upload a CSV, XLS, or XLSX file of employee email addresses** also recognises a header row with extra columns and treats the file as a mail merge.) ![The Manual Enroll dialog lists Upload mail merge spreadsheet among the ways to add people.](https://support.pynhq.com/media/flows/automations/flows-automations-mail-merge.png) 5. Read the notices under the upload. "The following spreadsheet columns were converted to custom tokens you can use in this Flow's content:" lists the tokens. "Reference dates were taken from the spreadsheet's "Reference Date" column." confirms per-row dates. A list of emails that did not match current employees, and of rows with an invalid reference date, lets you fix and re-upload those rows; the valid rows are already in the selection. 6. Choose **Verify Mode** and **Flag as Test** as you need them, then select **Next**, review the list and select **Confirm**. > **Caution:** The confirmation list shows the people but not each person's date. Check the notice under the upload and your spreadsheet before you select **Confirm**. If an email appears twice, the first row wins. ## What you should see Each row becomes an enrollment under [Enrollments](https://support.pynhq.com/activity/enrollments/) with its own **Reference Date**. Open a message in an enrollment to see the custom tokens filled in with that row's values. Uploading a second file in the same dialog replaces a person's date with the new file's value, and a blank cell in the second file clears the date they had from the first. ## Related - [Manually enroll employees](https://support.pynhq.com/flows/automations/manually-enroll-employees/) for the other ways to add people. - [Steps and messages](https://support.pynhq.com/flows/steps/) for inserting `custom.` tokens in a message. - [Enrollments](https://support.pynhq.com/activity/enrollments/) to check each person's date and messages. ## Related Intercom articles - [Setting Per-Employee Reference Dates in a Mail Merge Spreadsheet (Pyn 2)](https://intercom.help/pyn/en/articles/16996083-setting-per-employee-reference-dates-in-a-mail-merge-spreadsheet-pyn-2) — replaces - [Manually Enroll Employees in a Flow (Pyn 2)](https://intercom.help/pyn/en/articles/11506664-manually-enroll-employees-in-a-flow-pyn-2) — draws on --- # Export the Flows list Source: https://support.pynhq.com/flows/automations/export-the-flows-list/ > Download the Automations table as a CSV file, with the columns and rows you see, from the view menu's Export Data action. An export gives you the list of automations as a spreadsheet for an audit, a stakeholder review or a migration plan. ## Before you start - Exports are generated in the background and delivered as a download only to the person who requested them. ## Steps 1. In Pyn, open **Flows** in the left navigation, then **Automations**. 2. Apply any **Filters** or **Sort** you want reflected in the file. 3. Select **Table** at the left of the toolbar to open the view menu, then **Export Data**. 4. Open **Notices** when the download notice arrives and select the file. ## What you should see A CSV with one row per automation and the table's columns. Downloads expire, so save the file. ## Related - [Sort the Flows list](https://support.pynhq.com/flows/automations/sort-the-flows-list/) to set the row order before exporting. - [Notices](https://support.pynhq.com/notices/) for where the download appears. - [Enrollments](https://support.pynhq.com/activity/enrollments/) for exporting enrollments rather than automations. --- # Handle late enrollments Source: https://support.pynhq.com/flows/automations/handle-late-enrollments/ > Decide what happens when someone is enrolled after one or more steps were already due, whether by sending them at once, skipping them or reviewing them by hand. A late enrollment is one created after some of its steps were already due. It happens most often in pre-boarding, when a new hire's record reaches your HRIS a few days before they start, and with backdated promotions, transfers entered after the fact and manual enrollments that catch people the trigger missed. Pyn gives you three ways to handle it. ## An example A pre-boarding flow has three messages: | Message | Timing | Matters if late? | | --- | --- | --- | | Welcome and paperwork | 14 days before start date | Yes | | Countdown and what to bring | 7 days before start date | No | | Your first day plan | 2 days before start date | Yes | Someone is enrolled 5 days before their start date. The first two messages are overdue; the third is still ahead. ## Option 1: send the overdue steps at once (default) A step whose scheduled time has passed when the enrollment is created is scheduled immediately and sends on the next delivery pass. In the example, the welcome and the countdown both go out within minutes of the enrollment, and the first-day plan sends two days before start as planned. Use this when every message is still useful on arrival. ## Option 2: skip steps that are overdue at enrollment On a step, open the **Advanced** tab and turn on **Skip if overdue at enrollment**. Such a step is created as complete, without sending, whenever the enrollment is created after its scheduled time. In the example, turning it on for the countdown means the welcome sends immediately, the countdown is skipped and the first-day plan sends on schedule. 1. In Pyn, open **Flows** in the left navigation, then **Automations**, and select the automation. 2. Select the step card, then the **Advanced** tab in the drawer. 3. Turn on **Skip if overdue at enrollment**. 4. Select **Publish**. The setting applies to enrollments created from now on; existing enrollments keep their steps. For a step scheduled in the recipient's time zone, Pyn resolves every recipient and skips the step only once all of their delivery times have passed. ## Option 3: decide per person with Verify Mode Enrol the person yourself with **Verify Mode** on, as described in [Manually enroll employees](https://support.pynhq.com/flows/automations/manually-enroll-employees/). The enrollment waits in **Activity** > **Needs Review**. Open it and select **Verify**; the dialog **Select messages to unpause** lists every step with its recipients and scheduled date. Untick the ones you do not want, then select **Unpause**. Overdue steps you leave ticked send straight away; the rest keep their dates. > **Tip:** Options 1 and 2 are rules that apply to every enrollment in the flow. Option 3 is for the one-off case where you would rather look at the list yourself. ## What you should see Under [Enrollments](https://support.pynhq.com/activity/enrollments/), a skipped step shows as complete with no delivery, an overdue step sent at once shows a delivered date close to the enrollment time, and a paused enrollment sits in **Needs Review** until you unpause it. ## Related - [Manually enroll employees](https://support.pynhq.com/flows/automations/manually-enroll-employees/) for Verify Mode. - [Move an enrollment to a new start date](https://support.pynhq.com/flows/automations/move-an-enrollment-to-a-new-start-date/) for the start-date-changed case. - [Steps and messages](https://support.pynhq.com/flows/steps/) for the rest of a step's Advanced tab. ## Related Intercom articles - [Handling late enrollments (Pyn 2)](https://intercom.help/pyn/en/articles/16729160-handling-late-enrollments-pyn-2) — replaces - [Does an employee still receive an automated Pyn if they're added to the HRIS after the messages were scheduled to go out?](https://intercom.help/pyn/en/articles/6024091-does-an-employee-still-receive-an-automated-pyn-if-they-re-added-to-the-hris-after-the-messages-were-scheduled-to-go-out) — Pyn 1 article, kept for reference --- # Manually enroll employees Source: https://support.pynhq.com/flows/automations/manually-enroll-employees/ > Put chosen employees into an automation yourself, with a reference date you set, by searching, pasting email addresses or uploading a file. Manual enrollment puts the people you choose straight into an automation's published version. It skips the trigger and the audience, so it is the tool for testing a flow on yourself, catching someone the trigger missed, running a training cohort or re-running a sequence against a new date. ## Before you start - The automation is published. If it has unpublished changes, Pyn warns "This automation has unpublished changes" and offers **Continue Anyway**, which enrols against the last published version. - Each person is matched by their primary work email and must be a current employee or an upcoming joiner. Terminated employees and people on leave are skipped. - Decide the reference date. Every step is scheduled relative to it, so for an onboarding flow it is the start date and for a training flow it is the day the course begins. ![Manual Enroll puts the people you choose into the published version with a reference date you set.](https://support.pynhq.com/media/flows/automations/flows-automations-manual-enroll.png) ## Steps 1. In Pyn, open **Flows** in the left navigation, then **Automations**, and select the automation. 2. Select the mode button at the top (for example **Manual** or **Automated**), then **Manual Enroll**. The full-page dialog **Manually enroll employees in this Flow** opens. 3. Add people in any of these ways: - Type a name in **Search for an employee to enroll** and select each match. - Select **Paste a list of employee email addresses** and paste addresses separated by commas, spaces or new lines. - Select **Upload a CSV, XLS, or XLSX file of employee email addresses** and choose a file with one address per row. - Select **Upload mail merge spreadsheet** for a file with a header row and extra columns; see [Enroll from a spreadsheet](https://support.pynhq.com/flows/automations/enroll-from-a-spreadsheet/). Up to 1,000 people can be enrolled in one go. Addresses that match nobody are listed so you can fix them. 4. Set **Reference Date**. People added by search or paste always use this date. 5. Turn on **Verify Mode** to create the enrollments paused ("Created enrollments will need verification to proceed."), so you can review each person's steps in **Needs Review** before anything sends. Leave it off for "Enrollments will be active immediately." 6. Turn on **Flag as Test** when enrolling yourself ("This is a test enrollment and is not included in metrics."). Test enrollments are excluded from the Enrollments count and from the Dashboard. 7. Select **Next**, check the list under **Confirm Manual Enrollments**, then select **Confirm**. [Video: Search for an employee, set the reference date and review before confirming.](https://support.pynhq.com/media/flows/automations/flows-automations-manual-enroll-video.mp4) > **Note:** A step whose scheduled time is already in the past at the moment you confirm sends straight away, unless the step has **Skip if overdue at enrollment** switched on. Turn on **Verify Mode** when you want to choose which overdue steps go out; see [Handle late enrollments](https://support.pynhq.com/flows/automations/handle-late-enrollments/). ## What you should see The confirmation screen reads "Congratulations. Your enrollments are ready." with a link to each enrollment. Under [Enrollments](https://support.pynhq.com/activity/enrollments/), each person has a row with your reference date; paused rows wait in **Needs Review** when you used Verify Mode. If Pyn reports "There was an error enrolling. Check the activity page to confirm enrollment status, or reach out to support.", open Enrollments before trying again so you do not enrol anyone twice. ## Related - [Enroll from a spreadsheet](https://support.pynhq.com/flows/automations/enroll-from-a-spreadsheet/) for per-row reference dates and custom tokens. - [Handle late enrollments](https://support.pynhq.com/flows/automations/handle-late-enrollments/) for what happens to overdue steps. - [Use a flow without a trigger](https://support.pynhq.com/flows/automations/use-a-flow-without-a-trigger/) for flows that only ever enrol by hand. - [Enrollments](https://support.pynhq.com/activity/enrollments/) to review, unpause or stop what you created. ## Related Intercom articles - [Manually Enroll Employees in a Flow (Pyn 2)](https://intercom.help/pyn/en/articles/11506664-manually-enroll-employees-in-a-flow-pyn-2) — replaces - [How to manually enroll an employee in an Automation (Pyn 1)](https://intercom.help/pyn/en/articles/6023214-how-to-manually-enroll-an-employee-in-an-automation-pyn-1) — Pyn 1 article, kept for reference --- # Move an enrollment to a new start date Source: https://support.pynhq.com/flows/automations/move-an-enrollment-to-a-new-start-date/ > When a start date changes after someone is enrolled, stop the current enrollment and re-enrol them against the new date without sending anything twice. Start dates move. Updating the date in your HRIS does not reschedule steps already queued against the old one, and the trigger will not enrol the person again while **Prevent repeat enrollments** is in force. To move someone, stop their current enrollment and re-enrol them manually against the new date, skipping the messages they already have. ## Before you start - Stopping an enrollment needs the admin or owner role. - Have the new start date to hand and know roughly which messages the person has already received. Messages already delivered stay delivered. - If the flow sent a calendar invite against the old date, cancel or move the event in the calendar yourself. Pyn does not withdraw an invite it has sent. ## Steps 1. In Pyn, open **Activity** in the left navigation, then **Enrollments** > **All Enrollments**, and find the person's enrollment in the flow. 2. Open the row's **...** menu and select **Stop**. Every step still to send is cancelled; anything already sent is unaffected, and the enrollment is marked complete. 3. Open **Flows** > **Automations**, select the automation, then the mode button, then **Manual Enroll**. 4. Set **Reference Date** to the new start date and turn on **Verify Mode**. Search for the employee, select them, select **Next**, then **Confirm**. 5. Back in **Activity** > **Enrollments** > **Needs Review**, select **Verify** in the new enrollment's row. 6. In **Select messages to unpause**, every message is ticked. Untick the ones the person already received, then select **Unpause**. ![Verify an enrollment to choose which messages to unpause.](https://support.pynhq.com/media/flows/automations/flows-automations-verify-unpause.png) > **Caution:** Everything you leave ticked runs against the new date, and anything already overdue on the new date sends at once. Message previews in the dialog are short, so if two look alike, check the delivery detail before unticking. ## What you should see Under **All Enrollments**, the old enrollment shows as complete with its remaining steps cancelled, and the new one shows the new **Reference Date** with only the unticked messages missing. The next scheduled message lands on its day relative to the new start date. ## Related - [Enrollments](https://support.pynhq.com/activity/enrollments/) for stopping, verifying and unpausing. - [Manually enroll employees](https://support.pynhq.com/flows/automations/manually-enroll-employees/) for the enrollment dialog. - [Handle late enrollments](https://support.pynhq.com/flows/automations/handle-late-enrollments/) when the new date is close. ## Related Intercom articles - [When a start date changes after someone is enrolled (Pyn 2)](https://intercom.help/pyn/en/articles/16729197-when-a-start-date-changes-after-someone-is-enrolled-pyn-2) — replaces --- # Prevent repeat enrollments Source: https://support.pynhq.com/flows/automations/prevent-repeat-enrollments/ > Read and understand the re-enrollment timeout on a trigger, which stops the same employee being enrolled again when data changes or a trigger fires twice. Every trigger carries a re-enrollment timeout. When a trigger fires for someone who has already been through the automation, Pyn compares the time since their last enrollment with the timeout and skips them if it is too soon. This is what stops a corrected start date, a re-synced manager or a second form submission from sending the whole sequence twice. ## Before you start - The setting lives on the trigger drawer's **Advanced** tab as **Prevent repeat enrollments**. Its description reads "Prevents an employee from being enrolled again for a period of time, e.g. when data is changed or corrected. Date and property triggers wait at least a day." - Pyn sets a default per trigger and the field is read-only in most workspaces. Contact support@pynhq.com to change a timeout. ![Advanced holds the re-enrollment timeout for the trigger.](https://support.pynhq.com/media/flows/automations/flows-automations-trigger-advanced.png) ## Steps 1. In Pyn, open **Flows** in the left navigation, then **Automations**, and select the automation. 2. Select the trigger card, then the **Advanced** tab. 3. Read the value under **Prevent repeat enrollments**. The options are **Always reenroll**, **1 hour**, **1 day**, **2 days** through **7 days**, **1 month**, **3 months**, **6 months**, **12 months** and **Never reenroll**. Date and property triggers hide **Always reenroll** and **1 hour**, because they are re-evaluated several times a day. 4. If your workspace can edit the value, choose a new one and select **Publish**. ## Defaults by trigger | Trigger | Default | | --- | --- | | Will be joining, Pre-onboarding, Start of Onboarding | Never reenroll | | Off-boarding, Upcoming Anniversary, Upcoming Milestone Anniversary, Birthday (template), date properties | 1 month | | Buddy Assigned, Promoted to Manager, Change of Manager, Group Change, Change of Location, Connected to Slack | 1 month | | Recurring Trigger | 1 day | | Form Submission, Custom trigger | Always reenroll | | Employee Property (text or yes/no), No trigger | Never reenroll | > **Note:** Manual Enroll has its own guard: the same person cannot be enrolled in the same automation twice within five minutes, unless **Flag as Test** is on. The trigger's timeout does not apply to manual enrollments. ## What you should see An employee who re-matches inside the timeout does not get a new row under [Enrollments](https://support.pynhq.com/activity/enrollments/). With **Never reenroll**, a person who has been enrolled once is never enrolled by the trigger again, including a rehire. To run them through again, use **Manual Enroll**. ## Related - [Trigger catalogue](https://support.pynhq.com/flows/automations/trigger-catalogue/) for every default. - [Scheduling internals](https://support.pynhq.com/flows/automations/scheduling-internals/) for the one-day minimum on polled triggers. - [Move an enrollment to a new start date](https://support.pynhq.com/flows/automations/move-an-enrollment-to-a-new-start-date/) for what to do when a date changes. --- # Publish an automation Source: https://support.pynhq.com/flows/automations/publish-an-automation/ > Publish a draft so the trigger runs against it, and choose whether enrollments still running on the previous version move to the new one. Edits to a trigger, audience or step are saved as a draft as you make them, but Pyn evaluates and sends from the last published version. Publishing takes a snapshot, a numbered version, and offers to move active enrollments onto it. ## Before you start - Publishing needs the admin or owner role. - The **Publish** button is disabled while there is nothing to publish. "Draft autosaved" under the title confirms your edits are stored. - Any step without a sender or recipient blocks publishing; the step card shows what is missing. ## Steps 1. In Pyn, open **Flows** in the left navigation, then **Automations**, and select the automation. Make your changes. 2. Select **Publish** at the top. To throw the draft away instead, open the arrow beside it and select **Discard**. 3. If enrollments are still running on the previous version, the **Update Enrollments** dialog opens: "*n* enrollments are still active on the previous version. Select which ones to update to the latest published version." Each row shows the **Enrollment** and its **Reference Date**. ![Publishing a change offers to update enrollments still running on the previous version.](https://support.pynhq.com/media/flows/automations/flows-automations-update-enrollments.png) 4. Every enrollment is ticked. Untick any you want to leave on the old version, then select **Update Enrollments**. Close the dialog to leave every enrollment on its old version. > **Note:** Updating an enrollment adds steps that are new in the version, rewrites steps that have not sent yet and removes steps you deleted. Anything already sent, sending or in error is left alone, so nobody receives a message twice. ## What you should see The **Publish** button is disabled again and **Required** disappears from the Automations table's **Publish** column. Under [Enrollments](https://support.pynhq.com/activity/enrollments/), updated enrollments show the new steps; enrollments you left behind keep running the old version to completion. ## Related - [Change the mode of an automation](https://support.pynhq.com/flows/automations/change-the-mode/) to turn the published flow on. - [Automation and enrollment states](https://support.pynhq.com/flows/automations/automation-and-enrollment-states/) for how versions relate to enrollments. - [Enrollments](https://support.pynhq.com/activity/enrollments/) to check what each person will receive. ## Related Intercom articles - [How to create an Automation Flow (Pyn 2)](https://intercom.help/pyn/en/articles/11612966-how-to-create-an-automation-flow-pyn-2) — draws on - [If I turn on or add a Pyn in an enabled Automation, will employees already enrolled in the Automation receive that Pyn?](https://intercom.help/pyn/en/articles/6024094-if-i-turn-on-or-add-a-pyn-in-an-enabled-automation-will-employees-already-enrolled-in-the-automation-receive-that-pyn) — Pyn 1 article, kept for reference --- # Set the audience for an automation Source: https://support.pynhq.com/flows/automations/set-the-audience/ > Limit who a trigger enrols by lifecycle stage and by included and excluded groups, and preview the people who match before you publish. The audience is the filter between the trigger and an enrollment. When the trigger fires for someone, Pyn checks their lifecycle stage and group membership against the audience; only a match is enrolled. Use it to keep contractors out of onboarding, run a flow for one country, or send a recurring message to a single department. ## Before you start - Groups come from **Directory** > **Employee Groups**: demographic groups for each department, location and other HRIS values, plus filter, static and relationship groups you create. See [Employee groups](https://support.pynhq.com/directory/employee-groups/). - Steps have their own **Audience** tab that narrows further for that step only. The trigger audience decides who is enrolled at all. ![Audience narrows the trigger to lifecycle stages and groups, with a preview of who matches.](https://support.pynhq.com/media/flows/automations/flows-automations-trigger-audience.png) ## Steps 1. In Pyn, open **Flows** in the left navigation, then **Automations**, and select the automation. 2. Select the trigger card at the top of the canvas, then the **Audience** tab in the drawer. 3. Under **Lifecycle**, pick the stages that are eligible: **Current**, **Joiner**, **On leave**, **Terminated**. The description reads "Only employees in these lifecycle stages will be eligible." A flow that sends before the start date needs **Joiner**. 4. Under **Included**, pick the groups the flow runs for ("This trigger will only run for employees in the included groups."). Leave it empty to include everyone in the chosen stages. When you need more than 500 groups, the picker searches as you type. 5. Under **Excluded**, pick the groups the flow never runs for ("This trigger never runs for employees in the excluded groups."). An exclusion wins over an inclusion. 6. Check **Audience Preview** below the fields. It lists the employees who match the audience today, without regard to whether the trigger would fire for them. 7. Select **Publish**. > **Note:** Included groups with the same parent combine with OR, and different parents combine with AND. Including **Department: Engineering**, **Country: Australia** and **Country: USA** means `Engineering AND (Australia OR USA)`. Groups without a parent, such as static groups, each count as their own condition. See [How audiences match](https://support.pynhq.com/directory/employee-groups/how-audiences-match/). ## What you should see After publishing, only employees who match the audience appear under [Enrollments](https://support.pynhq.com/activity/enrollments/) when the trigger fires. A step whose own audience excludes everyone shows the warning "The audience is empty, so this step is never sent." A step scheduled before the start date whose audience lacks **Joiner** shows "Sent before the start date but the joiner isn't in the audience." ## Related - [How audiences match](https://support.pynhq.com/directory/employee-groups/how-audiences-match/) for the full rule with worked examples. - [Employee groups](https://support.pynhq.com/directory/employee-groups/) to create and inspect the groups you filter by. - [Steps and messages](https://support.pynhq.com/flows/steps/) for the per-step audience. - [Choose a trigger](https://support.pynhq.com/flows/automations/choose-a-trigger/) for what fires in the first place. ## Related Intercom articles - [Choose the Audience for your Flow (Pyn 2)](https://intercom.help/pyn/en/articles/11987525-choose-the-audience-for-your-flow-pyn-2) — replaces - [Add Filters to Your Automation](https://intercom.help/pyn/en/articles/7856462-add-filters-to-your-automation) — Pyn 1 article, kept for reference - [Create and save recipient filters](https://intercom.help/pyn/en/articles/6005739-create-and-save-recipient-filters) — Pyn 1 article, kept for reference --- # Sort the Flows list Source: https://support.pynhq.com/flows/automations/sort-the-flows-list/ > Reorder the Automations table by journey order, by what needs publishing, by status or by title for the rest of your session. By default the table follows your journey map: categories and moments in map order, and within a moment the modes **Verification**, **Manual**, **Automated**, **Inactive**. Other orders help when you are tidying up, for example bringing every automation with unpublished changes to the top. ![Sort reorders the Automations table for your session.](https://support.pynhq.com/media/flows/automations/flows-automations-sort.png) ## Steps 1. In Pyn, open **Flows** in the left navigation, then **Automations**. 2. Select **Sort** in the toolbar above the table. 3. Choose **Journey order, then status**, **Status, then journey order**, **Title A to Z**, **Newest first** or **Needs publishing first, then journey order**. ## What you should see The rows reorder at once. The choice lasts for your session; the table returns to journey order the next time you open Pyn. Use **Filters** and **Find** in the same toolbar to narrow the rows, and **Metrics** to pick the date range for the **Enrollments** column, which counts enrollments in that range and leaves out test enrollments. ## Related - [Export the Flows list](https://support.pynhq.com/flows/automations/export-the-flows-list/) to take the table into a spreadsheet. - [Assign an automation to a moment](https://support.pynhq.com/flows/automations/assign-an-automation-to-a-moment/) to change where a row sits in journey order. - [Publish an automation](https://support.pynhq.com/flows/automations/publish-an-automation/) to clear a row from "Needs publishing". --- # Trigger a flow from a form submission Source: https://support.pynhq.com/flows/automations/trigger-a-flow-from-a-form-submission/ > Start an automation the moment a published form is submitted, with the person who answered it as the principal. A Form Submission trigger ties an automation to one published form. Each completed submission enrols the employee who submitted it, with the submission date as the reference date, so you can follow up on an answer the same day: thank someone for a pulse response, send resources after an interest form, or route a request to the right team. ## Before you start - The form is published. A form in draft does not appear in the list. See [Forms](https://support.pynhq.com/flows/forms/). - Polls do not trigger flows; only forms do. Test submissions (sent to yourself from the editor) are ignored. - The principal is the submitter, the person who received the message with the form and answered it. In a manager-facing form the manager is the principal, not the employee the form is about. ## Steps 1. In Pyn, open **Flows** in the left navigation, then **Automations**, and select **Create New**. 2. Choose **Form Submission** on the left, open the list that reads **No selection** and select the form. ![Form Submission ties the automation to one published form.](https://support.pynhq.com/media/flows/automations/flows-automations-form-trigger.png) 3. Select **Done**. Pyn creates the automation in **Verification** mode and titles the trigger **Submission:** *form name*. 4. On **Configure**, the drawer reads "Triggered when a submission is completed for:" followed by the form name. There is nothing else to set on the trigger. 5. Open **Audience** if only some submitters should be enrolled. 6. Add steps, select **Publish**, then use **Change Mode** to move to **Automated** when you have checked a few enrollments in **Needs Review**. > **Note:** The default **Prevent repeat enrollments** for this trigger is **Always reenroll**: every submission creates a new enrollment, even from the same person on the same day. ## What you should see Each new submission creates an enrollment under [Enrollments](https://support.pynhq.com/activity/enrollments/) titled after the automation, with the submitter as the employee and the submission date as **Reference Date**. In **Verification** mode it waits in **Needs Review** until you select **Unpause**. ## Related - [Forms](https://support.pynhq.com/flows/forms/) to build and publish the form. - [Change the mode of an automation](https://support.pynhq.com/flows/automations/change-the-mode/) to move from Verification to Automated. - [Buddy programme](https://support.pynhq.com/flows/automations/tutorial-buddy-programme/) for why buddy confirmation uses Buddy Assigned rather than the form trigger. ## Related Intercom articles - [Set up a buddy automation (Pyn 2)](https://intercom.help/pyn/en/articles/16304943-set-up-a-buddy-automation-pyn-2) — draws on - [Select the Right Trigger for your Flow (Pyn 2)](https://intercom.help/pyn/en/articles/11987518-select-the-right-trigger-for-your-flow-pyn-2) — draws on - [Using Triggers in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/12651319-using-triggers-in-pyn-pyn-2) — draws on --- # Use a flow without a trigger Source: https://support.pynhq.com/flows/automations/use-a-flow-without-a-trigger/ > Build an automation that only runs when you enrol people yourself, or one that an external system enrols through the API. Not every sequence hangs off employee data. A training cohort, a one-off announcement with follow-ups, or a flow fed by another system all start better with **No trigger** or **Custom trigger** from the **Other** category. ## Before you start - With **No trigger**, the only way in is **Manual Enroll**. The **Audience** and **Advanced** tabs are switched off because there is nothing for them to filter. - **Custom trigger** marks the automation as fed by an external system. Enrollments arrive through the API or an integration that Pyn sets up with you; the editor shows "This automation is triggered by an external system. Employees are enrolled via API or integration." ## Steps 1. In Pyn, open **Flows** in the left navigation, then **Automations**, and select **Create New**. 2. Choose **Other** on the left, then **No trigger** ("Will not trigger automatically. Employees can be manually enrolled.") or **Custom trigger** ("Triggered by an external system via custom code or integration."). 3. The automation opens in **Manual** mode. On **Configure** the drawer confirms the choice; with No trigger it also offers a link to **configure a trigger for this flow** if you change your mind. 4. Add the steps, each scheduled relative to the reference date you will supply at enrollment time. 5. Select **Publish**. Leave the mode as **Manual**. 6. Select the mode button, then **Manual Enroll**, and follow [Manually enroll employees](https://support.pynhq.com/flows/automations/manually-enroll-employees/). > **Tip:** Running the same programme every month? Keep one automation with No trigger and upload a fresh spreadsheet each time with that cohort's reference date. The messages are reused; only the people and the date change. ## What you should see The trigger card reads **No Trigger** (or **Custom Trigger**). Nobody is enrolled until you run **Manual Enroll**, after which each person appears under [Enrollments](https://support.pynhq.com/activity/enrollments/) with the reference date you set. ## Related - [Manually enroll employees](https://support.pynhq.com/flows/automations/manually-enroll-employees/) for search, paste and upload. - [Enroll from a spreadsheet](https://support.pynhq.com/flows/automations/enroll-from-a-spreadsheet/) for per-row reference dates and custom tokens. - [Trigger catalogue](https://support.pynhq.com/flows/automations/trigger-catalogue/) for the Other category. ## Related Intercom articles - [Select the Right Trigger for your Flow (Pyn 2)](https://intercom.help/pyn/en/articles/11987518-select-the-right-trigger-for-your-flow-pyn-2) — draws on - [Using Triggers in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/12651319-using-triggers-in-pyn-pyn-2) — draws on --- # Automation and enrollment states Source: https://support.pynhq.com/flows/automations/automation-and-enrollment-states/ > The modes an automation can be in, how versions work, and the states an enrollment, an enrollment step and a delivery pass through from creation to completion. An automation has a mode and a set of published versions. Each enrollment belongs to one version and holds one enrollment step per step in that version; each enrollment step holds one delivery per recipient. The tables below give every state and what moves it on. ## Automation modes The mode is the **Status** column in the Automations table and the button beside **Publish** in the editor. | Mode | Shown as | Trigger enrols people? | New enrollments start as | Notes | | --- | --- | --- | --- | --- | | Automated | **Automated** | Yes | Pending: steps scheduled at once | The normal running state. | | Verification | **Verification** | Yes | Paused: nothing sends until unpaused | Review in **Activity** > **Needs Review**. | | Manual | **Manual** | No | Set per manual enrollment | The default for a new automation. | | Inactive | **Inactive** | No | None | Existing enrollments complete. The mode button reads **Use This**. | | Archived | Not listed | No | None | Set to Inactive, then hidden. Changing the mode restores it. | A never-published automation shows **Draft** on the mode button. The trigger is evaluated against the latest published version even for an automation in Manual or Inactive mode; the mode is what stops the enrollment being created. ## Versions | Term | Meaning | | --- | --- | | Draft | The current editable trigger, audience and steps. Autosaved as you type; "Draft autosaved" confirms it. | | Version | A published snapshot: "A published snapshot of an automation, capturing the steps that enrollments run against". **Publish** creates one; **Discard** throws the draft away. | | Published version | The newest version. Triggers and manual enrollments use it. | | Update Enrollments | After publishing, the offer to move enrollments still running on the previous version. Adds new steps, rewrites unsent steps, removes deleted steps; sent, sending and errored steps are untouched. | | Restore | Returns the editor to an earlier version's content as a new draft. | ## Enrollment states An enrollment is one employee's run through one version. **Activity** > **Enrollments** lists them. | State | Meaning | Moves on when | | --- | --- | --- | | Paused | Created by a Verification-mode automation or with **Verify Mode** on. Steps exist as drafts and nothing sends. Listed under **Needs Review**. | **Verify** then **Unpause**, which schedules the selected steps; or scheduling any step, which also unpauses. | | Pending | Running. Steps are scheduled and send at their times. | Every step has finished. | | Complete | "Every step of the enrollment has finished sending". Also the end state after **Stop**. | Terminal. | Other facts recorded on an enrollment: its **Reference Date**, whether it was enrolled by the trigger or by hand, whether it is a test enrollment (excluded from counts and the Dashboard), its custom tokens from a mail merge, and the time it was stopped. **Stop** (admin or owner, from the enrollment's menu) cancels every delivery still in draft, paused or scheduled, including reminders and escalations, marks every unsent step complete and completes the enrollment. A delivery already sending finishes. **Archive** is offered for paused enrollments only; it stops the enrollment and hides it. ## Enrollment step states | State | Meaning | | --- | --- | | Draft | Created but not scheduled. The state of every step in a paused enrollment. | | Scheduled | Waiting for its send time. A step whose time has already passed is scheduled and sends on the next pass. | | Sending | At least one delivery for the step is being sent. A step with recipients in several time zones is sending until the last one goes. | | Complete | "All deliveries for the step have been sent". Also the state of a step skipped as overdue or completed by **Stop**. | | Error | "The step failed and will not be sent", for example because its sender could not be attached. | A step set to **Disabled** in the editor is never created on an enrollment at all. ## Delivery statuses A delivery is one message to one recipient. The step pages in Activity show these labels. | Status | Meaning | | --- | --- | | Draft | Created, waiting for the enrollment to be unpaused. | | Scheduled | Will send at its time. | | Sending | In flight. | | Delivered | Sent. For email, accepted by the recipient's mail server; for Slack and Teams, posted. | | Clicked | The recipient opened a link or button. | | Actioned / Unactioned | Whether the recipient pressed the acknowledgement or completed the form. | | Bounced | Email rejected by the receiving server. Resend from the delivery once the address is fixed. | | Invalid | No deliverable recipient: no address, no channel, the calendar or Jira integration inactive, or the principal no longer in the lifecycle. | | Skipped | Not sent, for example a step skipped as overdue or cancelled by **Stop**. | ## Related - [Change the mode of an automation](https://support.pynhq.com/flows/automations/change-the-mode/) to move between modes. - [Publish an automation](https://support.pynhq.com/flows/automations/publish-an-automation/) for versions and Update Enrollments. - [Enrollments](https://support.pynhq.com/activity/enrollments/) to see these states for real people. ## Related Intercom articles - [How to schedule Automations](https://intercom.help/pyn/en/articles/6023999-how-to-schedule-automations) — Pyn 1 article --- # Scheduling internals Source: https://support.pynhq.com/flows/automations/scheduling-internals/ > How Pyn turns a trigger and a reference date into enrollments and send times, including trigger windows, reference date adjustment, recurrence years, cadence, minimums and time zones. For the person who wants to know exactly when something will fire. The trigger and step pages describe the same rules from the task side. ## When triggers are evaluated | Trigger kind | Evaluated | Reference date | | --- | --- | --- | | Date, Employee Property (date, text, yes/no) | On every HRIS or Employee File refresh for the employees that changed, and on a background pass for everyone roughly every six hours (at 7 minutes past 00:00, 06:00, 12:00 and 18:00 UTC) | The matched date, or for text and yes/no the current day in the employee's time zone | | Recurring | Hourly at 14 minutes past | The run's date | | Group Change, Will be joining | The moment a group membership is added or removed | The current day | | Buddy Assigned, Promoted to Manager, Change of Manager, Change of Location, Connected to Slack | The moment the relation is set | The current day | | Form Submission | The moment a submission completes | The current day in the submitter's time zone | Relation and group triggers are suppressed until the first HRIS load has finished, and relation triggers on messaging sources until the first messaging load has finished. When the workspace becomes ready, each published relation trigger is stamped with a "from" date of the following day and ignores changes before it. ## Date triggers A date trigger has five settings. The editor exposes two (**This flow starts** and the recurrence); templates can set the rest. | Setting | Default | Effect | | --- | --- | --- | | Trigger date adjustment (**This flow starts**) | 0 days (**on the day of**) | Shifts the day the trigger fires relative to the reference date. Never moves the reference date. | | Recurrence (year modulo) | None (**just once**) | Which anniversary years fire. | | Excluded years | None | Exact years that never fire; **every year after the first** excludes year 1. | | Trigger date window | On-edge | On-edge fires on exactly one day, the adjusted date. Within-window fires on every day between the reference date and the adjusted date, inclusive. **Pre-onboarding** uses within-window with a one-week adjustment, so it catches records that arrive late. | | Reference date adjustment | 0 days | Shifts the reference date itself away from the employee's date. The **90-day check-in** template sets 90 days, so its steps schedule around day 90. | The order of operations: reference date = employee's date + reference date adjustment; fire day = reference date + trigger date adjustment (or the window ending there); recurrence decides which years count. Time of day plays no part; a matching day fires whether the check runs at 00:00 or 23:59. ### Recurrence years With years counted from the employee's date (year 0 is the date itself): | Option | Years | | --- | --- | | just once | Only the original date, in its own year | | every year | 1, 2, 3, ... | | every year after the first | 2, 3, 4, ... | | every other year | 1, 3, 5, ... | | every 2 years | 2, 4, 6, ... | | every 5 years | 5, 10, 15, ... | | every 10 years | 10, 20, 30, ... | Year 0 never fires for a recurring option, which is why an anniversary flow and a start-date flow never coincide. A recurring trigger looks at the anniversary in the current year and one year either side, so adjustments on a recurring trigger must total less than a year. Birthdays are stored as month and day, with no year to count from, so they offer **every year** only. ### Leap days A 29 February date fires on 28 February in non-leap years and on 29 February in leap years, for every recurrence option. ## Re-enrollment timeouts Each trigger carries **Prevent repeat enrollments**. When a trigger fires for someone it has fired for before, Pyn skips them unless the timeout has passed since the last time. | Rule | Detail | | --- | --- | | Always reenroll | Every firing enrols. Default for Form Submission and Custom trigger. | | Never reenroll | One enrollment per person, ever, including rehires. Default for the onboarding triggers, text and yes/no properties and No trigger. | | Duration | 1 hour, 1 to 7 days, 1, 3, 6 or 12 months. | | One-day minimum | Date and property triggers are re-checked several times a day, so Always reenroll and 1 hour are raised to 1 day for them and hidden from the list. | | Manual enrollments | Ignore the trigger's timeout. The same person cannot be manually enrolled in the same automation twice within five minutes unless **Flag as Test** is on. | The "has fired before" record is written even when the automation is in Manual or Inactive mode and nobody is enrolled. Switching such an automation to Automated later does not enrol the people whose dates passed while it was switched off. ## From enrollment to send time 1. The enrollment is created with its reference date (a calendar date, no time or zone). 2. For each **Enabled** step in the version, an enrollment step is created: as draft in a paused enrollment, otherwise scheduled. A **Disabled** step is skipped. A step with **Skip if overdue at enrollment** whose send time is already past is created complete. 3. Send time = reference date + the step's offset, at the step's hour and minute, in the step's time zone: an explicit zone, or **Recipient Timezone** (the recipient's profile time zone, falling back to the workspace zone). For a Slack channel, the channel has no zone and the workspace zone applies. 4. If the resulting day is not one of the step's **Deliver on** weekdays, the skipped-day rule applies: deliver anyway, move to the previous delivery day, or move to the next delivery day. 5. A send time already in the past is sent on the next delivery pass. 6. When a delivery is sent, its reminders and escalations are created as children of the delivery and scheduled from the send time. Updating an enrollment to a new version repeats step 2 for new steps, recalculates steps still in draft or scheduled, and removes steps the version no longer has. ## Related - [Trigger catalogue](https://support.pynhq.com/flows/automations/trigger-catalogue/) for each trigger's defaults. - [Configure a date trigger](https://support.pynhq.com/flows/automations/configure-a-date-trigger/) for the two settings you edit. - [Prevent repeat enrollments](https://support.pynhq.com/flows/automations/prevent-repeat-enrollments/) for the timeout. - [Steps and messages](https://support.pynhq.com/flows/steps/) for Deliver on, skipped days and time zones on a step. ## Related Intercom articles - [Editing Enrollment Rule: Timing](https://intercom.help/pyn/en/articles/8279902-editing-enrollment-rule-timing) — Pyn 1 article --- # Trigger catalogue Source: https://support.pynhq.com/flows/automations/trigger-catalogue/ > Every trigger in the Select Trigger dialog and the template catalogue, with its description as shown in the app, what it watches, its default offset, recurrence, window and re-enrollment timeout. A trigger is the rule that enrols an employee into an automation. The tables below list each trigger by the category it appears under in **Select Trigger**, with the description shown beside it, the data it watches, the reference date an enrollment gets, and the defaults you can change on the trigger's **Configure** and **Advanced** tabs. Triggers fall into four kinds under the hood. **Date** triggers compare a date on the employee record with today and are re-checked on every HRIS refresh and every six hours. **Relation** and **group** triggers fire the moment a relationship or group membership changes. **Form submission** triggers fire when a form is completed. **Recurring** triggers fire on a timetable, checked hourly. ## Employee Lifecycle | Trigger | Description in the app | Watches | Default start | Default recurrence | Reference date | Repeat enrollments | | --- | --- | --- | --- | --- | --- | --- | | **Will be joining** | An employee first appears in the HRIS with a future start date, however far out. | The employee entering the **Upcoming Employees** (Joiner) lifecycle group | At the moment of entry | Not applicable | The day the record appeared | Never reenroll | | **Pre-onboarding** | Prepare the employee prior to starting employment. | **Start Date** | **1 week before**, within-window (fires on any day from a week before through the start date) | just once | The start date | Never reenroll | | **Start of Onboarding** | Steps to take at the commencement of employment. | **Start Date** | **on the day of** | just once | The start date | Never reenroll | | **Off-boarding** | Triggers when an employee is departing the organization. | **Termination Date** | **the day before** | just once | The termination date | 1 month | **Will be joining** is a group trigger on the seeded Joiner lifecycle group, so it has no offset or recurrence and its **Configure** tab is the Group Change form with that group preselected. It is greyed out until the workspace's lifecycle groups exist. ## Dates and Schedules | Trigger | Description in the app | Watches | Default start | Default recurrence | Reference date | Repeat enrollments | | --- | --- | --- | --- | --- | --- | --- | | **Upcoming Anniversary** | The upcoming anniversary of a start date. | **Start Date** | **on the day of** | every year | The anniversary in the matching year | 1 month | | **Upcoming Milestone Anniversary** | A significant anniversary (e.g. 5 or 10 years) | **Start Date** | **on the day of** | every 5 years | The anniversary in the matching year | 1 month | | **Recurring Trigger** | A trigger that runs on a recurring, periodic schedule | A timetable: **Starting from Date (Inclusive)**, **Time**, **In Time Zone**, **Recurrence** | Today at 10:00 in your browser's time zone | Weekly | The run date | 1 day | ### Offsets available on every date trigger **This flow starts**: **2 weeks before**, **1 week before**, **the day before**, **on the day of**, **the day after**, **1 week after**, **2 weeks after**, **1 month after**, **2 months after**, **3 months after**, **6 months after**, or a custom number of days, weeks or months. Moving the start does not move the reference date. ### Recurrence options on every date trigger | Option | Fires in years | | --- | --- | | **just once** | The date itself, once | | **every year** | 1, 2, 3, ... | | **every year after the first** | 2, 3, 4, ... | | **every other year** | 1, 3, 5, ... | | **every 2 years** | 2, 4, 6, ... | | **every 5 years** | 5, 10, 15, ... | | **every 10 years** | 10, 20, 30, ... | Year 0, the date itself, never fires for a recurring option. A **Birthday** trigger offers **every year** only. ## Team and Org Changes | Trigger | Description in the app | Watches | Reference date | Repeat enrollments | | --- | --- | --- | --- | --- | | **Buddy Assigned** | An employee was assigned a buddy. | The employee's buddy relation being set. The principal is the employee who received a buddy. | The day of the change | 1 month | | **Promoted to Manager** | An employee moves from zero to one or more reports. | The first direct report being added under an employee. The principal is the new manager. | The day of the change | 1 month | | **Change of Manager** | The reporting line for an employee has changed. | The employee's manager relation being set or changed. The principal is the employee whose manager changed. | The day of the change | 1 month | | **Group Change** | An employee joins or leaves a group. | Membership of the groups you pick, with **Trigger when** set to **Employee enters group** or **Employee leaves group** | The day of the change | 1 month | | **Change of Location** | A change in the primary work location for the employee. | The employee joining a country group. The drawer titles it **Group change**. | The day of the change | 1 month | | **Connected to Slack** | An employee is matched to their Slack account. | The employee's Slack source being connected. The drawer titles it **Source connected**. | The day of the change | 1 month | Every trigger in this category ignores changes that arrive during the first load of your HRIS or messaging integration, so connecting a system does not treat every existing manager, buddy or Slack member as new. The drawer says "Only ... added after the first time the employee directory loads are included." ## Form Submission | Trigger | Description in the app | Watches | Reference date | Repeat enrollments | | --- | --- | --- | --- | --- | | A published form, titled **Submission:** *form name* | Triggered when a submission is completed for: *form name*. | Completed, non-test submissions of that form. The principal is the submitter. Polls do not trigger. | The submission day in the submitter's time zone | Always reenroll | A Form Submission automation is created in **Verification** mode. ## Employee Properties | Property type | What you set | Behaves as | Reference date | Repeat enrollments | | --- | --- | --- | --- | --- | | Date (for example **Probation End Date**, **Tenure Date**, **Termination Date**, **Start Date**) | The property | A date trigger with the full offset and recurrence options | The property date | 1 month | | Text (for example **Birthday**, which is `MM-DD` text, or a custom field) | The property and a **Value** to match | Fires when the stored value equals the text | The day of the match in the employee's time zone | Never reenroll | | Yes/no | The property | Fires when the value becomes true | The day of the match in the employee's time zone | Never reenroll | ## Template catalogue triggers Some triggers are reachable only by adding a template through **Add from Template**. They use the same date machinery. | Template | Trigger | Default start | Recurrence | Repeat enrollments | | --- | --- | --- | --- | --- | | **Birthday celebration**, **Birthday opt-in** | **Birthday** ("This is the birthday on the Employee Record.") | **1 week before** | every year | 1 month | | **90-day check-in** | **Start Date** with the reference date moved 90 days after the start | **2 weeks before** the shifted date | just once | Never reenroll | | **Check in with new manager** | Promoted to Manager with the reference date moved 3 months after the promotion | At the shifted date | Not applicable | 1 month | ## Other | Trigger | Description in the app | Behaviour | Repeat enrollments | | --- | --- | --- | --- | | **Custom trigger** | Triggered by an external system via custom code or integration. | Enrollments arrive through the API or an integration Pyn sets up with you. The drawer reads "This automation is triggered by an external system. Employees are enrolled via API or integration." | Always reenroll | | **No trigger** | Will not trigger automatically. Employees can be manually enrolled. | Only **Manual Enroll** adds people. The **Audience** and **Advanced** tabs are switched off. | Never reenroll | ## Listed but not selectable The **Leave Based** (**Leave Requested**, **High Leave Balance**, **Departing on Leave**, **Returning from Leave**), **Sales Enablement** (**Increase stalled opportunities**, **Increase in no-show meetings**, **Drop in Email open rate**) and **Support Enablement** (**First 100 tickets**, **Increase repeat escalations**, **Drop in CSAT**) categories show the banner "Some triggers are only available with the associated integration and plan". Every row in them is inactive and cannot be chosen. ## Related - [Choose a trigger](https://support.pynhq.com/flows/automations/choose-a-trigger/) to pick one and swap it on an existing automation. - [Scheduling internals](https://support.pynhq.com/flows/automations/scheduling-internals/) for windows, adjustments, cadence and time zones. - [Prevent repeat enrollments](https://support.pynhq.com/flows/automations/prevent-repeat-enrollments/) for the timeout column. ## Related Intercom articles - [Using Triggers in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/12651319-using-triggers-in-pyn-pyn-2) — draws on - [Select the Right Trigger for your Flow (Pyn 2)](https://intercom.help/pyn/en/articles/11987518-select-the-right-trigger-for-your-flow-pyn-2) — draws on --- # Campaign Templates Source: https://support.pynhq.com/flows/campaign-templates/ > Dated communications that run on a calendar rather than on an employee's lifecycle: campaign templates you enrol people into, and campaigns you build directly on the Activity calendar. An automation runs for one employee at a time, timed from their start date or anniversary. A campaign runs for many people at once, timed from a date on the calendar: the day open enrolment opens, a public holiday, the start of a review cycle. Campaigns live on the **Campaigns** calendar under [Activity](https://support.pynhq.com/activity/), and campaign templates in **Flows** are ready-made sets of them you enrol people into. ![Activity, Campaigns is the calendar of campaigns and their steps.](https://support.pynhq.com/media/flows/campaign-templates/flows-campaign-templates-calendar.png) ## Concepts - **Campaign**: one dated programme with a title, an emoji, a colour, a **Reference Date** and a list of steps, each on its own calendar date. Its steps are the same email, Slack and channel steps as an automation's, sent to the recipients you list rather than to one enrolled employee. See [Steps and messages](https://support.pynhq.com/flows/steps/). - **Campaign template**: a blueprint of **milestones**, each with a date, an emoji and colour, and steps. The catalogue holds a set of them, such as the public holidays of a country for the year. Enrolling a template turns each milestone you pick into a campaign for the recipients you choose. - **Verify Mode**: an enrolment option that creates each campaign paused, with its steps held as drafts, so you can read every message on the calendar before anything sends. - **The calendar**: **Activity**, **Campaigns** shows a year at a glance, or one month; campaigns are the coloured dates and their steps the dots. The sidebar lists campaigns for the period shown and lets you add steps. Drag a step to another day to move it. ## What you can do here - [Add a campaign template](https://support.pynhq.com/flows/campaign-templates/add-a-campaign-template/) from the catalogue, then [Enroll employees in a campaign](https://support.pynhq.com/flows/campaign-templates/enroll-employees-in-a-campaign/) from it. - [Create a campaign](https://support.pynhq.com/flows/campaign-templates/create-a-campaign/) from scratch on the calendar and add steps to it. - [Duplicate a campaign](https://support.pynhq.com/flows/campaign-templates/duplicate-a-campaign/) for next year, with its step dates shifted. - [Reschedule a step on the calendar](https://support.pynhq.com/flows/campaign-templates/reschedule-a-step-on-the-calendar/) by dragging it. - [Tutorial: holidays and observances for the year](https://support.pynhq.com/flows/campaign-templates/tutorial-holidays-and-observances/): A year of holiday greetings and observance notes from the catalogue and your own list. About 45 minutes. - [Tutorial: a performance review cycle](https://support.pynhq.com/flows/campaign-templates/tutorial-performance-review-cycle/): Eight messages over three and a half weeks that walk employees and managers through a review cycle. About an hour. - [Reference: campaign states](https://support.pynhq.com/flows/campaign-templates/reference-campaign-states/): What a campaign and each of its steps can be, from Draft to Complete. ## Where it is in the app Open `/flows/home` in Pyn and select **Campaign Templates** to see the templates added to your workspace, grouped by journey moment; select one to open it and enrol people. Open `/activity/home` and select **Campaigns** for the calendar of campaigns themselves, where you also create one from scratch. Both need the Power User role or above. ![Flows, Campaign Templates lists the templates added to the workspace, grouped by moment.](https://support.pynhq.com/media/flows/campaign-templates/flows-campaign-templates-table.png) ## Related - [Automations](https://support.pynhq.com/flows/automations/) for communications timed from an employee's own dates. - [Steps and messages](https://support.pynhq.com/flows/steps/) for the step drawer the campaign step shares. - [Activity](https://support.pynhq.com/activity/) for the Campaigns calendar and the messages each campaign sends. - [Journey](https://support.pynhq.com/journey/) to attach a campaign template to a moment. ## Related Intercom articles - [Set Up a Campaign (Pyn 2)](https://intercom.help/pyn/en/articles/12119560-set-up-a-campaign-pyn-2) - [Create a Campaign (Pyn 1)](https://intercom.help/pyn/en/articles/6024163-create-a-campaign-pyn-1) — Pyn 1 article, kept for reference - [Setting Per-Employee Reference Dates in a Mail Merge Spreadsheet (Pyn 2)](https://intercom.help/pyn/en/articles/16996083-setting-per-employee-reference-dates-in-a-mail-merge-spreadsheet-pyn-2) - [Pyn Holidays and Observances content (Pyn 1)](https://intercom.help/pyn/en/articles/6024190-pyn-holidays-and-observances-content-pyn-1) — Pyn 1 article, kept for reference - [HR Calendar](https://intercom.help/pyn/en/articles/6825617-hr-calendar) — Pyn 1 article, kept for reference - [How to customize the performance reviews packet](https://intercom.help/pyn/en/articles/6024079-how-to-customize-the-performance-reviews-packet) — Pyn 1 article, kept for reference --- # Holidays and observances for the year Source: https://support.pynhq.com/flows/campaign-templates/tutorial-holidays-and-observances/ > Build next year's calendar of holiday greetings and observance notes in about 45 minutes: public holidays from the catalogue, your own observances as one campaign, and a manager note for the days that need one. **Goal:** every public holiday gets a short note the working day before, and the observances your company marks get a message on the day, all set up once in December and left to run. **Time:** about 45 minutes, plus whatever you spend on wording. **You will end up with:** - the public holidays for each country you operate in, enrolled from the catalogue to the right regional group; - one campaign of your own, "Observances", holding a step per date you mark; - a manager note before the observances where managers are asked to do something. ## Before you start - You are an Admin. - Groups exist for each region, for example **US employees**, **UK employees**, **Australia employees**, and one for **People managers**. See [Employee Groups](https://support.pynhq.com/directory/employee-groups/). - An email sender exists, or Slack is connected if you want these in Slack. - A list of the observances your company marks. The one below is a starting point; dates that move each year are marked. [Video: From the catalogue to the calendar: add a holidays template, enrol a group, and see each holiday as a campaign.](https://support.pynhq.com/media/flows/campaign-templates/flows-campaign-templates-tutorial-holidays.mp4) ## 1. Add the public holidays for each country 1. In Pyn, open **Flows** in the left navigation, select **Automations**, then the arrow next to **Create New** and **Add from Template**. 2. Pick the category that holds the holiday templates and select the one for your largest country, for example **2026 US Holidays**. It opens on its calendar. 3. Read the milestones on the left. Expand one, for example **Memorial Day**, to see its steps: a note to everyone and, on some holidays, a short note for managers. Untick any holiday you do not observe. 4. Select **Use this**. Turn **Verify Mode** on, search for the regional group (**US employees**) and select it, then **Next** and **Confirm**. 5. Select **Enroll more employees** if the same holidays apply to another group; otherwise **Close** and **Exit**. 6. Repeat from step 1 for each other country, enrolling each template to its own regional group. Each milestone is now a paused campaign on **Activity**, **Campaigns**, with its message held as **Manual**. ## 2. Edit the wording and release them 1. Open **Activity**, select **Campaigns**, and select a month to open it. Select the first holiday campaign in the sidebar and expand it. 2. Select its step. On **Configure**, read the message with **Preview** for someone in the group. Make the greeting yours: name the office, say whether the office is closed, and who to call if something breaks. Keep it to three or four sentences. 3. Check **Scheduled date**: the catalogue sends on the holiday itself. For a "the office is closed on Monday" note, move it to the working day before, at 09:00 in the **Recipient Time Zone**. 4. Select the state button, then **Automated**. 5. Repeat for each campaign. Most take under a minute once the first is right. > **Tip:** A note to managers belongs with a holiday that has a manager's job attached, such as approving early finishes before a long weekend. Where a template has one, it is a second step on the milestone; delete the ones you do not need from the step's menu. ## 3. Create an Observances campaign Observances are not days off, so they need a different voice: why the day matters, what the company is doing, where to learn more. Put them in one campaign with a step per date. 1. On **Activity**, **Campaigns**, select **Create new**. Title it `Observances 2027`, set the **Date** to 1 January, pick a colour and an emoji, and select **Create**. 2. Under the campaign in the sidebar, select **Add Step**, then **Send Email to Employee**. 3. Set **Scheduled date** to the first date on your list, **at** 09:00, **in** the **Recipient Time Zone**. Under **From**, choose the sender. Under **To**, select **Everyone**, or the regional group the day applies to. 4. Write it. For International Women's Day, for example: > **Subject:** International Women's Day > > Today is International Women's Day. This year's theme is on the IWD site, and our women's network is hosting a lunch at 12:30 in the Seattle kitchen and on the usual video link. Everyone is welcome. > > If you manage a team, make the time easy to take. 5. Select **Preview**, then **Send a test to yourself**. Set the step to **Automated**. 6. Add the next date: open the step's menu, select **Duplicate**, set the new **Scheduled date**, keep the recipients, and select **Duplicate**. Rewrite the subject and body for that day. Repeat down your list. A starting list, with the dates that are fixed. Dates marked "moves" change each year; check them when you build the campaign. | Date | Observance | Note | | --- | --- | --- | | 1 Jan | New Year's Day | A public holiday almost everywhere; usually covered by the country templates. | | 26 Jan | Australia Day | Australia. Some companies offer a swap day; say so. | | Feb | Black History Month | US. One note at the start of the month. | | moves (Jan/Feb) | Lunar New Year | Worldwide; in the **holidays and events celebrated worldwide** template. | | moves (Feb/Mar) | Ramadan begins | Worldwide; a note to managers about fasting colleagues helps most. | | 8 Mar | International Women's Day | Worldwide. | | 21 Mar | Harmony Day | Australia. | | moves (Mar/Apr) | Easter, Passover | In the worldwide template. | | 25 Apr | Anzac Day | Australia and New Zealand. | | May | Asian Pacific American Heritage Month, Jewish American Heritage Month | US. | | Jun | Pride Month | Worldwide; a manager note on inclusive language is worth adding. | | 19 Jun | Juneteenth | US; a public holiday in the US template. | | moves (Jul) | NAIDOC Week | Australia. | | 15 Sep to 15 Oct | Hispanic Heritage Month | US. | | Oct | Disability Employment Awareness Month | US; a manager note on adjustments. | | 11 Oct | National Coming Out Day | US. | | moves (Oct/Nov) | Diwali | Worldwide. | | Nov | Native American Heritage Month | US. | | moves (Nov) | Transgender Awareness Week | US; a manager note. | | 10 Dec | Human Rights Day | Worldwide. | | moves (Dec) | Hanukkah | Worldwide. | | 26 Dec to 1 Jan | Kwanzaa | US. | ## 4. Add the manager notes 1. For an observance that asks something of managers, open its step, select the menu, then **Duplicate**, and set the **Scheduled date** two working days earlier. 2. In the copy, change **To** to **People managers** and rewrite it as a request. For Ramadan: > **Subject:** Ramadan starts this week > > Some of your team will be fasting from dawn to sunset for the next month. Two things help: ask before booking lunch meetings, and be relaxed about earlier starts and finishes. If someone needs a quiet room for prayer, the booking link is on the intranet. 3. Set it to **Automated**. ## What you should see On **Activity**, **Campaigns**, the year view shows a coloured date for every holiday campaign and a dot for every step; the **Observances 2027** campaign shows one date with dots spread across the year. As each date arrives, the step's deliveries appear under **All Messages** as **Delivered**. Next December, duplicate the **Observances** campaign with **Recalculate Step Dates** on and a reference date of 1 January, then fix the dates that move. ## Next steps - [Duplicate a campaign](https://support.pynhq.com/flows/campaign-templates/duplicate-a-campaign/) when next year comes round. - [Create a conditional sender](https://support.pynhq.com/flows/steps/create-a-conditional-sender/) so each region's note comes from its own HR lead. - [Add reminders](https://support.pynhq.com/flows/steps/add-reminders/) is not available on campaign steps; use a duplicated step on a later date instead. ## Related - [Add a campaign template](https://support.pynhq.com/flows/campaign-templates/add-a-campaign-template/) and [Enroll employees in a campaign](https://support.pynhq.com/flows/campaign-templates/enroll-employees-in-a-campaign/) for chapter 1 in detail. - [Create a campaign](https://support.pynhq.com/flows/campaign-templates/create-a-campaign/) for chapter 3 in detail. - [Employee Groups](https://support.pynhq.com/directory/employee-groups/) for the regional groups. ## Related Intercom articles - [Pyn Holidays and Observances content (Pyn 1)](https://intercom.help/pyn/en/articles/6024190-pyn-holidays-and-observances-content-pyn-1) — Pyn 1 article, kept for reference - [HR Calendar](https://intercom.help/pyn/en/articles/6825617-hr-calendar) — Pyn 1 article, kept for reference --- # A performance review cycle Source: https://support.pynhq.com/flows/campaign-templates/tutorial-performance-review-cycle/ > Run a review cycle as one campaign: eight short messages over three and a half weeks that tell employees what to do and when, give managers what they need, and thank everyone at the end. About an hour. **Goal:** everyone in the cycle knows what is asked of them a few days before it is due, managers hear first, and nobody gets more than two messages a week. **Time:** about an hour to build; the campaign then runs for three and a half weeks. **You will end up with:** one campaign, `Mid-year reviews`, with a reference date of the day the cycle opens and eight steps: three to managers, four to everyone, one to both, each with a button to the right page. ## Before you start - You are a Power User, Admin or Owner, and an email sender exists. - Two groups exist: everyone in the cycle (for example **Everyone**) and **People managers**. See [Employee Groups](https://support.pynhq.com/directory/employee-groups/). - Your review tool's links: the self-review form, the 360 request page, the manager review form and the calibration guide. If some of these are documents, publish them in [Library](https://support.pynhq.com/library/content/) first. - The cycle's dates. The plan below uses day 0 as the day self-reviews open. [Video: Create a review-cycle campaign and its first step on the Campaigns calendar.](https://support.pynhq.com/media/flows/campaign-templates/flows-campaign-templates-tutorial-reviews.mp4) ## 1. Create the campaign 1. In Pyn, open **Activity** in the left navigation, then select **Campaigns**. 2. Select **Create new**. Title it `Mid-year reviews`, set the **Date** to the day the cycle opens, pick a colour and an emoji, and select **Create**. 3. In the sidebar the campaign appears with **Add Step** beneath it. ## 2. Tell managers first (day -1) 1. Select **Add Step**, then **Send Email to Employee**. 2. Set **Scheduled date** to the day before the cycle opens, **at** 09:00, **in** the **Recipient Time Zone**. Under **From**, choose your sender; under **To**, select **People managers**. 3. Write it: > **Subject:** Mid-year reviews open tomorrow > > Hi @recipient.preferredName. Self-reviews open tomorrow and close in two weeks; manager reviews are due a week after that, and conversations happen in the final week. The calendar, the rating scale and what good looks like are in the guide below. > > Two asks today: tell your team the dates in your next team meeting, and block an hour per report in week three for the conversation. 4. Select **Insert widget**, **Link To Library Content**, choose your manager guide, label it `Read the manager guide`, keep **Track Action** ticked, and **Save**. 5. Select **Preview**, **Send a test to yourself**, then set the state button to **Automated**. ## 3. Open the cycle for everyone (day 0) 1. Open the step you made, select its menu, then **Duplicate**. Set the **Scheduled date** to day 0, turn **Keep Recipients** off, and select **Duplicate**. 2. In the copy, set **To** to **Everyone** and rewrite it: > **Subject:** Your self-review is open > > Hi @recipient.preferredName. Mid-year reviews start today. Your part is a self-review: three questions, about 30 minutes, due on [date]. Write about what you did, what you learned and what you want next; your manager reads it before they write theirs. > > After you submit, you can ask up to three colleagues for feedback from the same page. 3. Replace the content button with a **Link Button** to the self-review form, labelled `Start your self-review`, with **Track Action** on. Set it to **Automated**. ## 4. Help managers write well (day 3) 1. Duplicate the day -1 step to day 3, keeping the recipients (**People managers**). 2. Rewrite it: > **Subject:** Writing reviews that land > > Self-reviews are coming in. Before you write yours, two reminders: rate against the role, not against the strongest person on the team, and give one specific example for every rating. Managers who do this get fewer questions in the conversation. > > Manager reviews are due on [date]. Here is the form. 3. Point the button at the manager review form, labelled `Open the manager review`. Set it to **Automated**. ## 5. Nudge before the deadlines (days 10 and 17) 1. Duplicate the day 0 step to day 10 (**Everyone**): > **Subject:** Self-reviews close on Friday > > A reminder that self-reviews close on [date]. If yours is done, thank you; if not, 30 minutes this week is all it takes. Anyone you asked for feedback has until the same day. 2. Duplicate the day 3 step to day 17 (**People managers**): > **Subject:** Manager reviews due Friday > > Manager reviews close on [date], and calibration is the following Tuesday. Please have every review submitted before then; a review that misses calibration cannot change afterwards. 3. Set both to **Automated**. > **Tip:** A campaign step cannot carry reminders of its own, which is why the nudges are steps in their own right. Everyone receives them, including people who have finished; the wording above acknowledges that. ## 6. Prepare the conversations (days 20 and 21) 1. Duplicate a manager step to day 20: > **Subject:** Before your review conversations > > Conversations start Monday. Open with their self-review, not your rating; spend most of the time on the next six months; and end with one thing you will do for them. The guide has a one-page plan for the hour. Point the button at the calibration and conversation guide. 2. Duplicate an everyone step to day 21: > **Subject:** Your review conversation this week > > Your manager will book an hour with you this week. Bring your self-review and one question about where you want to go next. Ratings are shared in the conversation, not by email. 3. Set both to **Automated**. ## 7. Close the loop (day 24) 1. Duplicate an everyone step to day 24 and set **To** to both **Everyone** and **People managers**: > **Subject:** Thank you, and what happens next > > That is the mid-year cycle done. Thank you for the time you put in. Any pay changes that come out of it are confirmed in writing by [date] and take effect from [date]. If something in your review did not sit right, talk to your manager first, then to your HR partner. 2. Set it to **Automated**. ## What you should see On **Activity**, **Campaigns**, the campaign shows eight dots across three and a half weeks. Select a date to confirm which message sends that day and to whom. As the cycle runs, **Activity**, **Actions** lists each tracked button with **Actioned**, **Clicked** or **Unactioned** per person, which is your live picture of who has started their self-review. When the campaign reads **Complete**, duplicate it for the next cycle with **Recalculate Step Dates** on. ## Next steps - [Duplicate a campaign](https://support.pynhq.com/flows/campaign-templates/duplicate-a-campaign/) for the year-end cycle. - [Add a button to a message](https://support.pynhq.com/flows/steps/add-a-button-to-a-message/) for Link Button versus Link To Library Content. - [Actions](https://support.pynhq.com/activity/actions/) to export who has and has not submitted. ## Related - [Create a campaign](https://support.pynhq.com/flows/campaign-templates/create-a-campaign/) for the step panel in detail. - [Library](https://support.pynhq.com/library/content/) for publishing the guides the buttons point to. - [Employee Groups](https://support.pynhq.com/directory/employee-groups/) for the **People managers** group. ## Related Intercom articles - [How to customize the performance reviews packet](https://intercom.help/pyn/en/articles/6024079-how-to-customize-the-performance-reviews-packet) — Pyn 1 article, kept for reference --- # Add a campaign template Source: https://support.pynhq.com/flows/campaign-templates/add-a-campaign-template/ > Add a ready-made campaign template from the catalogue, such as a country's public holidays for the year, so it appears under Campaign Templates ready to enrol people into. The catalogue holds campaign templates written for you: the public holidays of Australia, Canada, China, France, India, Israel, Japan, the UK and the US for the year, cultural and religious observances for several of those, days celebrated worldwide, and lighter employee-appreciation days. Each is a set of dated milestones with a message ready to edit. You add one to the workspace, then enrol people into the milestones you want. ## Before you start - You are an Admin. Power Users see the templates once added but the catalogue button only appears for admins. ![Add from Template, from the arrow next to Create New, lists the catalogue's automations and campaign templates by category.](https://support.pynhq.com/media/flows/campaign-templates/flows-campaign-templates-add-from-template.png) ## Steps 1. In Pyn, open **Flows** in the left navigation, then select **Automations**. 2. Select the arrow next to **Create New** in the top-right corner (its label is **More create options**), then **Add from Template**. 3. In the **Add from Template** dialog, pick a journey category on the left. Campaign templates show a calendar icon and their number of milestones; automations show a lightning icon and their trigger. 4. Select the template, for example **2026 US Holidays**. Pyn adds it and opens it at `/flows/campaign-template/...`. 5. Read the calendar: each milestone is a coloured date, and the list on the left names them with their dates. Expand a milestone to see the message steps it carries. 6. When you are ready to use it, follow [Enroll employees in a campaign](https://support.pynhq.com/flows/campaign-templates/enroll-employees-in-a-campaign/). Select **Exit** to go back to **Flows**. > **Note:** A template can be added as many times as you like; each copy is listed separately under **Campaign Templates**. You can also add one from a journey moment's **Flows** tab, under **Templates**, which attaches it to that moment at the same time. See [Attach a flow or content to a moment](https://support.pynhq.com/journey/attach-a-flow-to-a-moment/). ## What you should see Under **Flows**, **Campaign Templates**, the template is listed with its title and, if added from a moment, that moment in the **Moment** column. Selecting the row opens the template's calendar page with **Use this** in the top-right corner. Nothing is sent and nobody is enrolled until you use it. ![A campaign template shows its milestones beside a year calendar; tick milestones, then Use this.](https://support.pynhq.com/media/flows/campaign-templates/flows-campaign-templates-editor.png) ## Related - [Enroll employees in a campaign](https://support.pynhq.com/flows/campaign-templates/enroll-employees-in-a-campaign/) to turn milestones into campaigns. - [Attach a flow or content to a moment](https://support.pynhq.com/journey/attach-a-flow-to-a-moment/) to add a template from the journey map. - [Create an automation](https://support.pynhq.com/flows/automations/create-an-automation/) for the same dialog's automation templates. ## Related Intercom articles - [Set Up a Campaign (Pyn 2)](https://intercom.help/pyn/en/articles/12119560-set-up-a-campaign-pyn-2) — draws on --- # Create a campaign Source: https://support.pynhq.com/flows/campaign-templates/create-a-campaign/ > Build a campaign from scratch on the Activity calendar: name and date it, add email, Slack or channel steps on their own dates, choose the recipients for each, and set the steps to Automated. An all-hands next month, a benefits window, a new policy with a deadline: a one-off message or a short series on fixed dates. Create the campaign on the calendar, add a step per message, and give each step its own date, time and recipients. ## Before you start - You are a Power User, Admin or Owner. - A sender exists for the medium you will use; see [Choose a sender](https://support.pynhq.com/flows/steps/choose-a-sender/). - The recipients exist as employee groups, or you will pick people one by one. ![Create new asks for a title, a reference date, a colour and an emoji.](https://support.pynhq.com/media/flows/campaign-templates/flows-campaign-templates-create-dialog.png) ## Steps 1. In Pyn, open **Activity** in the left navigation, then select **Campaigns**. 2. Select **Create new** in the top-right corner. In the **Create new Campaign** dialog, enter the **Campaign title**, set the **Date** (the campaign's reference date, today by default), pick a **Color** swatch and an **Emoji**, then select **Create**. The campaign opens in the panel on the right and appears in the sidebar list. 3. In the sidebar, under the campaign, select **Add Step**, then a step type in the **Add Step** dialog, for example **Send Email to Employee**. The step is created on the campaign's date and opens in the panel. 4. On **Configure**, set the **Scheduled date**, the time **at** which it sends and the time zone **in** which that is read. Under **From**, choose the sender. 5. Under **To**, select every recipient: employee groups, individual employees, or relative recipients. Everyone listed receives the step. 6. Write the **Subject** (email) and the message, using tokens such as `@recipient.preferredName`. Select **Preview**, then **Send a test to yourself**. 7. Select the state button in the panel header, which reads **Draft**, and choose **Automated**. The step is scheduled. Choose **Manual** instead to hold it. 8. Repeat from step 3 for each further message. To copy a step to another date, open it, select its menu, then **Duplicate**, and set the new **Scheduled date**. > **Caution:** A scheduled step is read-only and the panel reads **This message is scheduled.** Switch it to **Manual** to make changes, then back to **Automated**. A step that has started sending cannot be changed or moved. ## What you should see The campaign is a coloured date on the calendar and each step a dot on its send date; hover a step in the sidebar to highlight its date. Select a date to see what sends that day. As each step sends, its deliveries appear under **Activity**, **All Messages**, one per recipient, and the campaign moves to **Complete** when every step has finished. Reminders and escalations are not offered on campaign steps. ## Related - [Steps and messages](https://support.pynhq.com/flows/steps/) for everything in the step panel. - [Choose a sender](https://support.pynhq.com/flows/steps/choose-a-sender/) if **From** is empty. - [Duplicate a campaign](https://support.pynhq.com/flows/campaign-templates/duplicate-a-campaign/) to run it again next year. - [Campaign states](https://support.pynhq.com/flows/campaign-templates/reference-campaign-states/) for Draft, Manual, Automated and Complete. ## Related Intercom articles - [Set Up a Campaign (Pyn 2)](https://intercom.help/pyn/en/articles/12119560-set-up-a-campaign-pyn-2) — replaces - [Create a Campaign (Pyn 1)](https://intercom.help/pyn/en/articles/6024163-create-a-campaign-pyn-1) — Pyn 1 article, kept for reference --- # Duplicate a campaign Source: https://support.pynhq.com/flows/campaign-templates/duplicate-a-campaign/ > Run last year's campaign again: copy it with a new title and reference date, shift every step to match, and choose whether to keep the recipients. A review cycle, an open enrolment window or a holiday calendar comes round every year with the same shape and new dates. Duplicating the campaign keeps the messages and spacing and moves everything to the new reference date. ## Before you start - The campaign exists on **Activity**, **Campaigns**, in any state, including **Complete**. ## Steps 1. In Pyn, open **Activity** in the left navigation, then select **Campaigns**. 2. Use the calendar arrows to reach the period of the original campaign, then select it in the sidebar (or the pencil next to it) to open its panel. 3. Select the menu in the panel header, then **Duplicate**. The **Duplicate Campaign Enrollment** dialog opens with the **Title** set to the original's title followed by an asterisk. 4. Edit the **Title**, for example `Mid-year reviews 2027`, and set the new **Reference Date**. 5. Leave **Recalculate Step Dates** on (**Step dates will shift to match the new reference date**) so a step that was three days after the old date is three days after the new one. Turn it off to copy the dates as they are. 6. Set **Keep Recipients**: on copies the recipients of every step from the original; off (**No recipients will be copied**) leaves each step's **To** empty for you to fill. 7. Select **Duplicate**. The new campaign opens in the panel. > **Note:** The copy is created paused with every step in **Draft**, whatever state the original was in, and nothing it sent is copied. Open each step, check the date and recipients, and set it to **Automated** when you are ready. ## What you should see The new campaign appears on the calendar at its new reference date with the same colour and emoji, its steps spaced as before. A step can also be duplicated on its own: open it, select its menu, then **Duplicate**, and set the **Scheduled date** and **Keep Recipients** in the **Duplicate Step** dialog. ## Related - [Create a campaign](https://support.pynhq.com/flows/campaign-templates/create-a-campaign/) for the step panel and setting steps to Automated. - [Campaign states](https://support.pynhq.com/flows/campaign-templates/reference-campaign-states/) for what a paused copy means. - [Reschedule a step on the calendar](https://support.pynhq.com/flows/campaign-templates/reschedule-a-step-on-the-calendar/) to move one date after copying. --- # Enroll employees in a campaign Source: https://support.pynhq.com/flows/campaign-templates/enroll-employees-in-a-campaign/ > Use a campaign template: pick its milestones and steps, choose the employees and groups, decide whether to verify first, and confirm. Each milestone becomes a campaign on the Activity calendar. A campaign template does nothing on its own. Enrolling it is where you decide which milestones apply to your company, who should receive them, and whether to check every message before it goes. ## Before you start - The template is under **Flows**, **Campaign Templates**; see [Add a campaign template](https://support.pynhq.com/flows/campaign-templates/add-a-campaign-template/). - The audience exists as an employee group, for example **Everyone** or **US employees**. See [Employee Groups](https://support.pynhq.com/directory/employee-groups/). You can also pick individual employees. ![Use this opens the enrolment page: choose Verify Mode and the employees or groups.](https://support.pynhq.com/media/flows/campaign-templates/flows-campaign-templates-enroll.png) ## Steps 1. In Pyn, open **Flows** in the left navigation, select **Campaign Templates**, then the template. 2. In the list on the left, tick the milestones to run. Tick the header checkbox (**Select all**) for every milestone, or expand a milestone and tick only some of its steps. **Use this** in the top-right corner becomes available once a milestone is ticked. 3. Select **Use this**. The **Enroll employees in this Campaign** page opens. 4. Decide on **Verify Mode**. Off, it reads **Enrollments will be active immediately.**; on, **Created enrollments will need verification to proceed.** Turn it on the first time you run a template. 5. Under **Search for a recipient or group to enroll**, type a group or person's name and select them. Repeat for each; they are listed under the search, with **clear all** to start again. 6. Select **Next**. The **Confirm Campaign Enrollments** page lists the recipients and, under **Selected Milestones**, what you ticked. 7. Select **Confirm**. Pyn shows **Congratulations. Your campaign is ready.** with **Go back to the campaign**, **View in activity** and **Enroll more employees**. > **Note:** Every milestone you ticked becomes its own campaign, named after the milestone, with the milestone's date as its **Reference Date** and the steps you ticked scheduled on their own dates. The whole recipient list applies to every one of them; enrol twice with different groups if some milestones are for a region only. ## What you should see Open **Activity** and select **Campaigns**: each milestone appears on the calendar on its date, in the template's colour, with its steps as dots on their send dates. Without Verify Mode the steps read **Automated** and are scheduled. With Verify Mode each campaign is paused and its steps read **Manual**; open each step, read it with its tokens filled in, and set it to **Automated** to release it. See [Campaign states](https://support.pynhq.com/flows/campaign-templates/reference-campaign-states/). ## Related - [Add a campaign template](https://support.pynhq.com/flows/campaign-templates/add-a-campaign-template/) to get a template into the workspace. - [Create a campaign](https://support.pynhq.com/flows/campaign-templates/create-a-campaign/) when no template fits. - [Campaign states](https://support.pynhq.com/flows/campaign-templates/reference-campaign-states/) for Manual, Automated and Complete. - [Employee Groups](https://support.pynhq.com/directory/employee-groups/) for the groups you enrol. ## Related Intercom articles - [Set Up a Campaign (Pyn 2)](https://intercom.help/pyn/en/articles/12119560-set-up-a-campaign-pyn-2) — draws on - [Setting Per-Employee Reference Dates in a Mail Merge Spreadsheet (Pyn 2)](https://intercom.help/pyn/en/articles/16996083-setting-per-employee-reference-dates-in-a-mail-merge-spreadsheet-pyn-2) — draws on --- # Reschedule a step on the calendar Source: https://support.pynhq.com/flows/campaign-templates/reschedule-a-step-on-the-calendar/ > Move a campaign step to another day by dragging it on the month calendar, or change its date, time and time zone in the step panel. The all-hands moved a day; the benefits deadline slipped a week. On the month view of the calendar you drag a step to its new day, and the panel does the rest of the schedule. ## Before you start - The step has not started sending. A step that is **Sending** or **Complete** cannot be moved. ## Steps 1. In Pyn, open **Activity** in the left navigation, then select **Campaigns**. 2. Select a month name on the year calendar to open that month. The steps for the month show inside their days. 3. Drag the step from its day and drop it on the new day. The step's **Scheduled date** changes; its time and time zone stay as they were. 4. To change the time as well, select the step to open its panel. If it reads **This message is scheduled.**, select the state button and choose **Manual**. 5. On **Configure**, set the **Scheduled date**, **at** and **in**, then set the state back to **Automated**. ![A campaign step has a calendar date and a list of recipients; the header's state button moves it from Draft to Automated.](https://support.pynhq.com/media/flows/campaign-templates/flows-campaign-templates-step-panel.png) 6. Select the month name or **Today** to return to the year view. > **Tip:** Hover a step in the sidebar to ring its date on the calendar, and hover a campaign to ring every date it touches. Select a date to list everything sending that day. ## What you should see The step's dot moves to the new day on both the month and year views, and its row in the sidebar shows the new date. If the step has deliveries already scheduled, they are rescheduled with it; under **Activity**, **All Messages**, each shows the new date. ## Related - [Create a campaign](https://support.pynhq.com/flows/campaign-templates/create-a-campaign/) for the step panel. - [Schedule a step](https://support.pynhq.com/flows/steps/schedule-a-step/) for how the time and time zone are read. - [Campaign states](https://support.pynhq.com/flows/campaign-templates/reference-campaign-states/) for which states can be edited. --- # Campaign states Source: https://support.pynhq.com/flows/campaign-templates/reference-campaign-states/ > What a campaign and each of its steps can be: a campaign is paused, pending or complete, and a step is Draft, Manual, Automated, Sending or Complete. A campaign has a state of its own and a state on each step. The step state is what you set from the state button in the step panel; the campaign state follows from how it was created and whether its steps have finished. ## Campaign | State | Meaning | How it gets there | | --- | --- | --- | | Paused | Created for verification; nothing sends until its steps are released. | Enrolling a template with **Verify Mode** on, or duplicating a campaign. | | Pending | Active: its steps are scheduled and sent on their dates. | Enrolling with **Verify Mode** off, or creating a campaign on the calendar. | | Complete | Every step has finished sending. | Pyn moves it here on its own. | A campaign can also be archived from its panel menu, which removes it from the calendar. ## Step The state button in a step's panel header shows one of these; the menu under it offers the other. | Button reads | Stored state | Meaning | Can you edit it? | | --- | --- | --- | --- | | **Draft** | initial | Newly created, neither held nor scheduled. | Yes | | **Manual** | draft | Held. It will not send until you choose **Automated**. | Yes | | **Automated** | scheduled | Scheduled to send on its date. The panel reads **This message is scheduled.** | No; switch to **Manual** first | | **Sending** | sending | At least one delivery is going out. | No | | **Complete** | complete | Every delivery has been sent. | No | Only a step in **Draft** or **Manual** can be deleted; the menu item is hidden otherwise. A step in **Sending** or **Complete** cannot be dragged on the calendar. ## Deliveries Each step produces one delivery per recipient when it runs, with the statuses in [Delivery statuses](https://support.pynhq.com/flows/steps/reference-delivery-statuses/): **Scheduled**, **Delivered**, **Clicked**, **Actioned**, **Bounced** and so on. ## Related - [Enroll employees in a campaign](https://support.pynhq.com/flows/campaign-templates/enroll-employees-in-a-campaign/) for Verify Mode. - [Create a campaign](https://support.pynhq.com/flows/campaign-templates/create-a-campaign/) for setting a step to Automated. - [Delivery statuses](https://support.pynhq.com/flows/steps/reference-delivery-statuses/) for the messages a step produces. --- # Cohort Templates Source: https://support.pynhq.com/flows/cohort-templates/ > Rules that decide which employees an automation enrols and when. A cohort template describes who an automation is for: the lifecycle stage, the groups and the reference date. Automations reuse cohort templates so you define an audience once. ## What you can do here - Create a cohort template - Choose the reference date an automation counts from - Preview who a cohort matches today ## Where it is in the app Open `/flows/home` in Pyn and select **Cohort Templates**, or open **Flows** in the primary navigation on the left of every page. ## Related - [Flows](https://support.pynhq.com/flows/) - [Automations](https://support.pynhq.com/flows/automations/) - [Employee groups](https://support.pynhq.com/directory/employee-groups/) ## Related Intercom articles - [Choose the Audience for your Flow (Pyn 2)](https://intercom.help/pyn/en/articles/11987525-choose-the-audience-for-your-flow-pyn-2) — draws on --- # Forms Source: https://support.pynhq.com/flows/forms/ > Structured questions you put inside a message: text, checkboxes, Likert scales, a buddy or mentor picker. Answers are recorded against the employee, exportable, able to start a flow, and acceptable from another system through a webhook. A form asks an employee, or someone around them, for an answer Pyn can keep: a manager naming a buddy, a new starter rating their first week, anyone confirming they have read a policy. You build it once in **Flows**, **Forms**, embed it in any message step, and every submission lands against the employee's record. ![The form editor: fields in order, Add Field, Preview, Publish, and the Activity and Settings drawers.](https://support.pynhq.com/media/flows/forms/flows-forms-editor.png) ## Concepts - **Fields**: up to ten per form, from two groups. **Common** fields are **Text**, **Checkbox**, **Likert Scale** and **Content** (a block of text shown inside the form). **Employee Fields** are **Buddy** and **Mentor**, pickers that write a relationship onto the employee's record when submitted. See [Form field types](https://support.pynhq.com/flows/forms/reference-form-field-types/). - **Publishing**: a form is edited as a draft and sent only once published. Editing a published form marks it dirty again and **Publish** re-enables. - **Submission**: one person's answers to one delivery of the form. Submissions are listed under the form's **Activity** drawer, newest first, and exported as CSV. A tracked form also counts as **Actioned** on the message and in [Actions](https://support.pynhq.com/activity/actions/). - **Principal and submitter**: the submitter is the person who answered; the principal is the employee the enrollment is about. A Buddy field writes to the principal's record, so a manager answering a form in the new starter's onboarding flow sets the starter's buddy. - **Form Submission trigger**: an automation can start from a completed submission, enrolling the submitter. See [Trigger a flow from a submission](https://support.pynhq.com/flows/forms/trigger-a-flow-from-a-submission/). - **Webhook**: another system can post a submission for an employee it identifies by HRIS id. See [Create a webhook](https://support.pynhq.com/flows/forms/create-a-webhook/). ## What you can do here - [Build a form](https://support.pynhq.com/flows/forms/build-a-form/) and publish it. - [Embed a form in a message](https://support.pynhq.com/flows/forms/embed-a-form-in-a-message/) in an automation or campaign step. - [Review and export submissions](https://support.pynhq.com/flows/forms/review-and-export-submissions/). - [Trigger a flow from a submission](https://support.pynhq.com/flows/forms/trigger-a-flow-from-a-submission/). - [Create a webhook](https://support.pynhq.com/flows/forms/create-a-webhook/) so another system can submit. - [Tutorial: a buddy selection form that triggers a flow](https://support.pynhq.com/flows/forms/tutorial-buddy-selection-form/): A manager picks a buddy from a Slack message; the starter's record is updated and a thank-you flow runs. About 40 minutes. - [Reference: form field types](https://support.pynhq.com/flows/forms/reference-form-field-types/): Each field, what it collects, how it renders in Slack, email and on the respond page. - [Reference: webhook API](https://support.pynhq.com/flows/forms/reference-webhook-api/): Endpoint, authentication, body, idempotency, responses and the log codes. ## Where it is in the app Open `/flows/home` in Pyn and select **Forms** under the **Forms** group, or open **Flows** in the primary navigation on the left of every page. Power Users and above create, publish and read forms; webhooks need an Admin. ![The Forms table lists every form with whether it is published.](https://support.pynhq.com/media/flows/forms/flows-forms-table.png) ## Related - [Polls](https://support.pynhq.com/flows/polls/) for a one-click question instead of a form. - [Add a button to a message](https://support.pynhq.com/flows/steps/add-a-button-to-a-message/) for the Embed Form widget. - [Trigger a flow from a form submission](https://support.pynhq.com/flows/automations/trigger-a-flow-from-a-form-submission/) for the automation side of the trigger. - [Actions](https://support.pynhq.com/activity/actions/) to see who has and has not submitted. ## Related Intercom articles - [Create and Use Forms (Pyn 2)](https://intercom.help/pyn/en/articles/16857779-create-and-use-forms-pyn-2) - [Embed a Google Form](https://intercom.help/pyn/en/articles/6005821-embed-a-google-form) — Pyn 1 article, kept for reference - [Set up a buddy automation (Pyn 2)](https://intercom.help/pyn/en/articles/16304943-set-up-a-buddy-automation-pyn-2) - [Create a Webhook (Pyn 2)](https://intercom.help/pyn/en/articles/16858360-create-a-webhook-pyn-2) --- # A buddy selection form that triggers a flow Source: https://support.pynhq.com/flows/forms/tutorial-buddy-selection-form/ > In about 40 minutes: build a form with a Buddy field, send it to the manager in Slack a week before a start date, write the buddy onto the new starter's record, thank the manager through a form-triggered flow, and brief the buddy the moment they are chosen. **Goal:** a manager names a buddy with two clicks in Slack, the new starter's record is updated, the manager hears back, and the buddy is briefed, with nobody in HR in the loop. **Time:** about 40 minutes. **You will end up with:** a published `Buddy selection` form; a nomination step in your pre-boarding automation; a small `Thanks for choosing a buddy` automation on the **Form Submission** trigger; and a `Buddy briefing` automation on the **Buddy Assigned** trigger. The [buddy programme tutorial](https://support.pynhq.com/flows/automations/tutorial-buddy-programme/) extends this with check-ins through the first month. ## Before you start - Slack is connected, so the buddy picker renders inside the manager's message. - A pre-boarding or first-day automation exists and is published. - A short buddy guide is published in **Library**, **Content**. [Video: Build a buddy selection form and embed it in the manager's message.](https://support.pynhq.com/media/flows/forms/flows-forms-tutorial-buddy.mp4) ## 1. Build the form 1. In Pyn, open **Flows** in the left navigation, select **Forms**, then **Add Form**. 2. Name it `Buddy selection`. 3. Select **Add Field**, then **Employee Fields**, **Buddy**. Set **Label** to `Buddy`, **Description** to `Someone on or near the team, a year or more in, who enjoys showing people round`, tick **Required**, and **Save**. 4. Select **Add Field**, then **Common**, **Text**. Label it `Anything the buddy should know?` with the description `Optional: working pattern, first project, a shared interest`. Leave **Required** unticked and **Save**. 5. Select **Preview** to read it, then **Publish**. The Buddy field is the one that matters: when the form is submitted inside an enrollment, Pyn writes the chosen person as the buddy of that enrollment's principal, the new starter. ## 2. Ask the manager, in Slack, a week out 1. Select **Automations** and open your pre-boarding automation. 2. Select **Add a step**, then **Send Direct Message**. Title it `Choose a buddy`. 3. Under **Schedule**, choose **1 week before**, **at** 09:00, **in** the **Recipient Time Zone**. Under **From**, choose **Pyn Bot**. Under **To**, choose **Manager**. 4. Write the message: > Hi @recipient.preferredName. @principal.preferredName joins your team on @principal.startDate as @principal.jobTitle. Please pick an onboarding buddy below. Pyn will brief them and introduce them on day one. 5. On a new line, select **Insert widget**, **Embed Form**, choose **Buddy selection** under **Form**, keep **Track Action** ticked, and **Save**. 6. Select the **Reminders** tab and **Add reminder**, set to **2 days after send**. Scroll to **Escalations**, select **Add escalation**, and set it to 4 days, **Skip-level Manager**. 7. Select **Preview**, pick an upcoming joiner under **Preview for principal**, and check the recipient shown is their manager. Select **Send a test to yourself**, then **Publish**. > **Note:** In this step the manager is the recipient and the new starter is the principal, so `@recipient` is the manager and `@principal` the starter. The form follows the same rule: the manager submits, the starter gets the buddy. ## 3. Thank the manager through a form-triggered flow This is the flow the form itself starts. Its principal is the submitter, the manager, which is exactly who you want to thank. 1. On **Automations**, select **Create New**, then **Form Submission**, choose **Buddy selection** from the list, then **Done**. Title the automation `Thanks for choosing a buddy`. 2. Select **Add a step**, then **Send Direct Message**. Under **Schedule**, choose **on the day of**; under **To**, **Employee** (the submitter). 3. Write it: > Thanks @recipient.preferredName, that's done. We'll brief the buddy today and introduce them on day one. If you'd like to change the choice, reply here and the People team will sort it. 4. Select **Publish**, then **Use This**, and choose **Automated**. There is nothing to verify: it sends once per submission. ## 4. Brief the buddy the moment they are chosen The buddy relationship exists only after the form is submitted, and it belongs to the new starter. The **Buddy Assigned** trigger fires for the starter when the relationship appears, so a step addressed to **Buddy** reaches the right person however the buddy was set. 1. On **Automations**, select **Create New**, then **Buddy Assigned** under **Team and Org Changes**, then **Done**. Title it `Buddy briefing`. 2. Select the trigger card, open **Audience**, and under **Lifecycle** keep **Current** and add **Joiner**: the principal is the starter, who is a joiner until their first day. 3. Select **Add a step**, then **Send Direct Message**. Under **Schedule**, **on the day of**, 09:00, **Recipient Time Zone**; under **To**, **Buddy**. 4. Write it: > Hi @recipient.preferredName. @principal.managerPreferredName has asked you to be the onboarding buddy for @principal.preferredName, who starts on @principal.startDate. It's about an hour a week for the first month: a hello on day one, a coffee in week one, and being the person for the small questions. Here's our short guide. 5. Select **Insert widget**, **Link To Library Content**, choose the buddy guide, label it `Read the buddy guide`, and **Save**. 6. Select **Publish**, then **Use This** and **Automated**. ## What you should see A week before each start date, the manager gets the Slack message with a user picker under it. When they choose and submit: the starter's profile in [Directory](https://support.pynhq.com/directory/employees/) shows the buddy; the submission appears in the form's **Activity** drawer; the manager's step reads **Actioned** and its reminder and escalation are cancelled; `Thanks for choosing a buddy` enrols the manager and sends; and `Buddy briefing` enrols the starter and messages the buddy within the hour. A manager who does not respond is reminded after two days and their skip-level manager hears after four. ## Next steps - Follow the [buddy programme tutorial](https://support.pynhq.com/flows/automations/tutorial-buddy-programme/) to add the day-one introduction and the two-week and one-month check-ins. - Add a **Mentor** field and a **Mentor** recipient the same way for a mentoring scheme. - If your HRIS carries a buddy field, `Buddy briefing` fires when HR sets it there too. ## Related - [Build a form](https://support.pynhq.com/flows/forms/build-a-form/) and [Embed a form in a message](https://support.pynhq.com/flows/forms/embed-a-form-in-a-message/) for chapters 1 and 2 in detail. - [Trigger a flow from a form submission](https://support.pynhq.com/flows/automations/trigger-a-flow-from-a-form-submission/) for chapter 3's trigger. - [Configure a team change trigger](https://support.pynhq.com/flows/automations/configure-a-team-change-trigger/) for Buddy Assigned. ## Related Intercom articles - [Set up a buddy automation (Pyn 2)](https://intercom.help/pyn/en/articles/16304943-set-up-a-buddy-automation-pyn-2) — draws on --- # Build a form Source: https://support.pynhq.com/flows/forms/build-a-form/ > Create a form in Flows, add and configure its fields, preview it as a respondent will see it, and publish it so it can be embedded in a message. You want a few answers from people at a moment in their journey, in a shape you can report on. A form is a titled list of up to ten fields, each with a label, a description and, where it makes sense, a **Required** flag. ## Before you start - You are a Power User, Admin or Owner. - You know the questions. Short forms get answered; three to five fields is typical. ## Steps 1. In Pyn, open **Flows** in the left navigation, then select **Forms**. 2. Select **Add Form** in the top-right corner. A form titled **New Form** opens at `/flows/form/...`. 3. Select the title (**Enter a Form Title**) and name it after the task, for example `First week check-in`. The name is what you pick from the **Form** list when embedding it, so make it specific. 4. Select **Add Field**. In **Select Field**, choose a **Common** field (**Checkbox**, **Content**, **Likert Scale**, **Text**) or an **Employee Field** (**Buddy**, **Mentor**). The field is added and its settings open. ![Add Field opens Select Field: Common fields and Employee Fields.](https://support.pynhq.com/media/flows/forms/flows-forms-select-field.png) 5. Enter the **Label** (the question) and a **Description** (shown with the field as a hint). Tick **Required** if the person must answer before submitting; checkboxes and content blocks cannot be required. Select **Save**. 6. Repeat for each field. Fields appear in the order you add them; select a field's row to edit it again, or its cross to remove it. A removed field can be put back from the **Undo** toast for eight seconds. 7. Select **Preview** to see the form as a respondent sees it on the respond page, then close the preview. 8. Select **Publish**. The button is enabled whenever there are unpublished changes. > **Note:** A **Content** field is a block of formatted text, with images and links, shown between questions; it collects nothing. The **Confirmation Message** box in a field's settings is disabled. ## What you should see The form is listed under **Forms** with a tick in the **Publish** column. The rail on the right of the editor opens the **Activity** drawer (submissions) and the **Settings** drawer (the webhook). You can now embed it in a step: see [Embed a form in a message](https://support.pynhq.com/flows/forms/embed-a-form-in-a-message/). Changes you make later are drafts until you select **Publish** again; a Buddy or Mentor field stays on the employee record once published, even if you later remove it from the form. ## Related - [Form field types](https://support.pynhq.com/flows/forms/reference-form-field-types/) for what each field collects and how it renders. - [Embed a form in a message](https://support.pynhq.com/flows/forms/embed-a-form-in-a-message/) to send it. - [Review and export submissions](https://support.pynhq.com/flows/forms/review-and-export-submissions/) once answers arrive. ## Related Intercom articles - [Create and Use Forms (Pyn 2)](https://intercom.help/pyn/en/articles/16857779-create-and-use-forms-pyn-2) — replaces --- # Create a webhook Source: https://support.pynhq.com/flows/forms/create-a-webhook/ > Let another system submit a form on an employee's behalf: add a webhook to the form, choose which HRIS id identifies the employee, mint the secret once, and read the log of what arrived. Some answers already exist in another system: a completed training in your LMS, an equipment request in a ticketing tool, a signed document. A webhook on a form lets that system post the answer into Pyn as a submission, recorded against the employee it names. ## Before you start - You are an Admin. - The form is built and published, with field labels your other system can map to. See [Build a form](https://support.pynhq.com/flows/forms/build-a-form/). - The other system can send each employee's id from your HRIS, the same id Pyn has from that integration. ![A form's webhook: the endpoint, the header to send, the subject source system and the example body.](https://support.pynhq.com/media/flows/forms/flows-forms-webhook-drawer.png) ## Steps 1. In Pyn, open **Flows** in the left navigation, select **Forms**, then the form. 2. Select **Settings** on the rail at the right of the editor. The drawer reads **Add a webhook to let another system submit this form on an employee's behalf.** Select **Add Webhook**. 3. Under **Subject**, select the source system whose id the other system will send, for example **BambooHR Employee ID** or **Workday Worker ID**. The description reads **The submission is recorded against the employee holding this id.** 4. Copy the **URL** and note the header: `Authorization: Bearer `. 5. Select **Create Secret**. The drawer reads **Copy this secret now. It is shown once and cannot be retrieved later.** Copy it into the other system, then select **Done**. 6. Read the example under **Post a body of this shape.** It names each field by its alias (the label in camel case) with a sample value, plus `subject_id`. 7. Send a test payload from the other system and read the log at the foot of the drawer (**Payloads this webhook has taken, and what became of them.**). A green entry reads **Recorded a submission for the ... identifier ...**; a red one names the problem. > **Caution:** A lost secret cannot be recovered. Select **Replace Secret** to mint a new one; the drawer warns **The current secret stops working immediately. Anything calling this webhook will need the new one.** ## Rotating the secret and reading the log - **Replace Secret** rotates the secret in one step and the old one stops working at once; update the calling system before you confirm. - The log shows the most recent entries; the export icon beside it downloads the whole log as CSV (`receivedAt`, `outcome`, `action`, `code`, `message`, `eventId`, `subjectId`, `submissionId`). - A dropped payload also raises a notice in [Notices](https://support.pynhq.com/notices/) keyed by its code, so the same mistake repeated keeps one notice current rather than many. The workspace's notification settings decide whether every admin is emailed or the owner alone. - Archiving the webhook from its panel menu stops it accepting anything. ## What you should see Accepted payloads appear as submissions in the form's **Activity** drawer, and the employee's record carries any Buddy or Mentor value. Each employee can be submitted once per webhook; a repeat is logged as `already-submitted`. [Webhook API](https://support.pynhq.com/flows/forms/reference-webhook-api/) lists the endpoint, headers, body, responses and every log code. ## Related - [Webhook API](https://support.pynhq.com/flows/forms/reference-webhook-api/) for the exact request and responses. - [Build a form](https://support.pynhq.com/flows/forms/build-a-form/) for the fields a payload fills. - [Notices](https://support.pynhq.com/notices/) for where failures surface. ## Related Intercom articles - [Create a Webhook (Pyn 2)](https://intercom.help/pyn/en/articles/16858360-create-a-webhook-pyn-2) — replaces --- # Embed a form in a message Source: https://support.pynhq.com/flows/forms/embed-a-form-in-a-message/ > Put a published form or poll into an email, Slack direct message or channel post from the editor's Widgets menu, with a button style and action tracking. A form reaches people inside a message, not as a separate link you have to remember to send. Embedding it in a step ties every submission to that step's enrollment, so Pyn knows who was asked, who answered and who still has not. ## Before you start - The form is published. Drafts do not appear in the list. See [Build a form](https://support.pynhq.com/flows/forms/build-a-form/). - The step is a **Send Direct Message**, **Send Email to Employee** or **Post to Channel** step in an automation or campaign. ![Embed Form, from the Widgets menu, lists published forms and polls under Form.](https://support.pynhq.com/media/flows/forms/flows-forms-embed-form-dialog.png) ## Steps 1. In Pyn, open the automation from **Flows**, **Automations**, and select the step to open it in the drawer. 2. Write the message around the form first: what you are asking, why, and by when. 3. Place the cursor where the form goes, select **Insert widget** (the puzzle icon) in the toolbar, then **Embed Form**. 4. Under **Form**, open the list that reads **No selection** and select the form. Polls appear in the same list. 5. Choose a **Button Style** (**Default**, **Primary**, **Danger**) and keep **Track Action** ticked so a submission marks the step actioned. 6. Select **Save**. The form appears in the editor as a pill named after the form. 7. Select **Preview**, pick an employee under **Preview for principal**, then **Send a test to yourself** and answer the test. Select **Publish** on the automation. > **Note:** A test submission is recorded as a test: it is excluded from the submission list and export, and it never triggers a flow. ## How it renders - **Email**: a button that opens the form on a page of its own (the respond page, `/respond/...`), with the fields, **Submit** and then **Submitted. Your response has been recorded.** The link is personal to the recipient and does not expire. - **Slack**: the fields render inside the message. A **Buddy** or **Mentor** field is a Slack user picker; a Likert scale is a row of buttons. - A form answered once reads as answered; a second visit to the link shows the recorded answers. ## What you should see Under [Enrollments](https://support.pynhq.com/activity/enrollments/), the step's delivery reads **Delivered**, then **Actioned** once the person submits. The submission appears in the form's **Activity** drawer with the respondent's name. Add a reminder on the step so people who have not answered are nudged: see [Add reminders](https://support.pynhq.com/flows/steps/add-reminders/). ## Related - [Build a form](https://support.pynhq.com/flows/forms/build-a-form/) to create and publish the form. - [Add a button to a message](https://support.pynhq.com/flows/steps/add-a-button-to-a-message/) for the other widgets. - [Add reminders](https://support.pynhq.com/flows/steps/add-reminders/) to chase unanswered forms. - [Review and export submissions](https://support.pynhq.com/flows/forms/review-and-export-submissions/) to read the answers. ## Related Intercom articles - [Create and Use Forms (Pyn 2)](https://intercom.help/pyn/en/articles/16857779-create-and-use-forms-pyn-2) — draws on - [Embed a Google Form](https://intercom.help/pyn/en/articles/6005821-embed-a-google-form) — Pyn 1 article, kept for reference --- # Review and export submissions Source: https://support.pynhq.com/flows/forms/review-and-export-submissions/ > Read the answers to a form or poll in its Activity drawer, open any submission, and download every non-test submission as a CSV with one row per person. Answers are only useful once you read them. Every submission to a form or poll is listed on the form itself, newest first, and the whole set exports as a spreadsheet for analysis or for your HRIS. ## Before you start - You are a Power User, Admin or Owner. ![The Activity drawer lists submissions newest first, with Export to CSV.](https://support.pynhq.com/media/flows/forms/flows-forms-activity-drawer.png) ## Steps 1. In Pyn, open **Flows** in the left navigation, select **Forms** (or **Polls**), then the form. 2. Select **Activity** on the rail at the right of the editor. The drawer lists submissions, newest first, 50 to a page, each named after the person who answered. 3. Select a submission to open it and read the answers. 4. Select **Export to CSV** at the top of the drawer. A file named after the form's id and title downloads. 5. Open the file. Each row is one submission with `employeeId` (the person's HRIS id), `submissionId`, and one column per field. > **Note:** Test submissions, the ones you make from **Send a test to yourself**, are left out of the list and the export. The export stops at 1,000 rows; a form busier than that is better read through an integration. ## What you should see The list grows as messages with the form are answered. For who has *not* answered, open [Actions](https://support.pynhq.com/activity/actions/), filter by the step, and look for **Unactioned**; that view also exports with its filters applied. Buddy and Mentor answers also appear on the employee's profile in [Directory](https://support.pynhq.com/directory/employees/) as their relationships. ## Related - [Build a form](https://support.pynhq.com/flows/forms/build-a-form/) to change the questions. - [Actions](https://support.pynhq.com/activity/actions/) for who has and has not responded. - [Views, filters, search and export](https://support.pynhq.com/getting-started/views-filters-search-and-export/) for exports elsewhere in Pyn. ## Related Intercom articles - [Create and Use Forms (Pyn 2)](https://intercom.help/pyn/en/articles/16857779-create-and-use-forms-pyn-2) — draws on --- # Trigger a flow from a submission Source: https://support.pynhq.com/flows/forms/trigger-a-flow-from-a-submission/ > Make a form the start of an automation: when someone submits it, they are enrolled with the submission date as the reference date, so you can thank them, route a request or follow up. A form answered is a moment in itself. An interest form deserves resources the same day; a request form should land with the team that handles it. The **Form Submission** trigger starts an automation for the person who submitted a given form. ## Before you start - The form is published. See [Build a form](https://support.pynhq.com/flows/forms/build-a-form/). - You know who submits it. The enrolled person is the submitter, so a form the manager fills in enrols the manager. ## Steps 1. In Pyn, open **Flows** in the left navigation, select **Forms**, and confirm the form shows a tick under **Publish**. 2. Select **Automations**, then **Create New**. In **Select Trigger**, choose **Form Submission**, choose the form from the list, then **Done**. 3. Add the steps that should follow a submission, with **To** set to **Employee** (the submitter) or whoever should hear about it. Schedule them **on the day of** or shortly after. 4. Select **Publish**, then set the mode. [Trigger a flow from a form submission](https://support.pynhq.com/flows/automations/trigger-a-flow-from-a-form-submission/) covers the trigger's settings. 5. Embed the form in a message step elsewhere, or send its respond link, so people can submit it: see [Embed a form in a message](https://support.pynhq.com/flows/forms/embed-a-form-in-a-message/). > **Note:** Polls never trigger a flow, and test submissions are ignored. Each completed submission creates a new enrollment, even from the same person, unless you change the trigger's repeat-enrolment setting. ## When the trigger is the wrong tool If what you care about is the *relationship* the form writes, not the submission, trigger on that instead. A Buddy field in a manager's form sets the new starter's buddy; the **Buddy Assigned** trigger then fires for the new starter, who is the person your buddy flow is about. See [Configure a team change trigger](https://support.pynhq.com/flows/automations/configure-a-team-change-trigger/) and the [buddy selection tutorial](https://support.pynhq.com/flows/forms/tutorial-buddy-selection-form/). ## What you should see Each submission creates an enrollment under [Enrollments](https://support.pynhq.com/activity/enrollments/) with the submitter as the employee and the submission date as the **Reference Date**; its steps schedule from there. The form's **Activity** drawer and the enrollment both show the same submission. ## Related - [Trigger a flow from a form submission](https://support.pynhq.com/flows/automations/trigger-a-flow-from-a-form-submission/) for the automation side. - [A buddy selection form that triggers a flow](https://support.pynhq.com/flows/forms/tutorial-buddy-selection-form/) for a worked example. - [Configure a team change trigger](https://support.pynhq.com/flows/automations/configure-a-team-change-trigger/) for Buddy Assigned. ## Related Intercom articles - [Set up a buddy automation (Pyn 2)](https://intercom.help/pyn/en/articles/16304943-set-up-a-buddy-automation-pyn-2) — replaces --- # Form field types Source: https://support.pynhq.com/flows/forms/reference-form-field-types/ > The six field types a form or poll can hold, what each collects, whether it can be required, and how it renders in Slack, in email and in the CSV export. **Add Field** in the form or poll editor opens **Select Field**, with two categories. Every field has a **Label** (the question), a **Description** (a hint shown with it) and, where allowed, **Required**. A form or poll holds up to ten fields. ## Common | Field | Collects | Required? | In Slack | On the respond page (email) | | --- | --- | --- | --- | --- | | **Text** | A free-text answer. | Yes | A text input | A text input | | **Checkbox** | True or false. | No; an unticked box is a valid answer | A checkbox; in a poll, **Yes** and **No** buttons | A checkbox; in a poll, **Yes** and **No** buttons | | **Likert Scale** | A number from 1 to 5: **Very Dissatisfied**, **Dissatisfied**, **Neutral**, **Satisfied**, **Very Satisfied**. | Yes | Five buttons | Radio buttons; in a poll, five buttons | | **Content** | Nothing. Formatted text, with images and links, shown between fields. | No | The text | The text | ## Employee Fields | Field | Collects | Required? | In Slack | On the respond page (email) | Written to | | --- | --- | --- | --- | --- | --- | | **Buddy** | One employee from the directory. | Yes | A Slack user picker | A picker | The **buddy** relationship on the principal's record | | **Mentor** | One employee from the directory. | Yes | A Slack user picker | A picker | The **mentor** relationship on the principal's record | The principal is the employee the enrollment is about. In a form answered outside an enrollment, such as a webhook submission or a campaign step, it is the person the form was sent to or the employee the payload names. ## Polls A poll uses the same picker but no field can be required, and the respond page submits a poll field the moment it is clicked, one answer per field. Text fields are not shown on a poll's respond page; keep a poll to Likert scales and checkboxes. See [Polls](https://support.pynhq.com/flows/polls/). ## In the export **Export to CSV** writes `employeeId`, `submissionId`, then one column per field, headed by the field's description where one is set and by its key otherwise. Content fields are left out. A Likert answer exports as its number; a checkbox as `true` or `false`; a Buddy or Mentor as the chosen employee's id. ## Keys and aliases A field added in the editor carries a generated key. For a webhook, a payload names a field by its **alias**, the label in camel case (`Job Title` becomes `jobTitle`), or by the key. Two fields whose labels produce the same alias cannot be told apart by a webhook. See [Webhook API](https://support.pynhq.com/flows/forms/reference-webhook-api/). ## Related - [Build a form](https://support.pynhq.com/flows/forms/build-a-form/) to add and configure fields. - [Polls](https://support.pynhq.com/flows/polls/) for the one-click variant. - [Webhook API](https://support.pynhq.com/flows/forms/reference-webhook-api/) for naming fields in a payload. ## Related Intercom articles - [Create and Use Forms (Pyn 2)](https://intercom.help/pyn/en/articles/16857779-create-and-use-forms-pyn-2) — draws on --- # Webhook API Source: https://support.pynhq.com/flows/forms/reference-webhook-api/ > The inbound webhook on a form: endpoint, bearer secret, JSON body with subject_id and fields, idempotency key, the two responses, the once-per-employee rule and every code the log can record. A webhook belongs to one form. Another system posts a JSON body to it with a bearer secret; Pyn accepts the payload, then separately turns it into a submission on the form for the employee it names, logging the outcome on the webhook. [Create a webhook](https://support.pynhq.com/flows/forms/create-a-webhook/) covers the setup in the app. ## Request ``` POST https:///api/webhook/ Authorization: Bearer Content-Type: application/json Idempotency-Key: (optional) { "subject_id": "E1234", "fields": { "jobTitle": "Account Executive", "startedOnboarding": true, "firstWeekRating": 4 } } ``` - `webhookId` and the secret come from the form's **Settings** drawer. The secret is shown once when minted. - `subject_id` is the employee's id in the source system chosen under **Subject** on the form (for example a BambooHR Employee ID). Pyn finds the employee holding that id from that system; the same id from another system does not match. - `fields` holds one entry per form field, named by the field's alias (its label in camel case) or its key. Every key must name a field on the form, and every value must be one the field can hold: a string for **Text**, `true` or `false` for **Checkbox**, an integer 1 to 5 for **Likert Scale**, an employee id for **Buddy** and **Mentor**. **Content** fields take no value. - The body must be a JSON object. Nesting values under `fields` keeps field names from colliding with `subject_id`. ## Responses | Status | Meaning | | --- | --- | | `202` | Accepted. The payload was taken and will be processed; this does not mean the submission succeeded. Read the log. | | `404` | Rejected: the id is malformed or unknown, the webhook is archived, or the bearer secret does not match. The cases are not distinguished, so the endpoint cannot be probed. | A request that reaches the endpoint with a body that is not JSON, or during a fault on Pyn's side, is answered with the usual `4xx` or `5xx`; a `5xx` can be retried. ## Idempotency Send an `Idempotency-Key` header and a repeat of the same key to the same webhook is acknowledged with `202` and processed no further. The key is hashed with the webhook's id, so the same key sent to a different webhook is a separate delivery. Without the header every post is processed. The key itself is not stored; the log's `eventId` is the handle for tracing a delivery. ## Processing rules - A webhook submits for an employee at most once. Once a subject's submission is complete, later payloads for the same `subject_id` are dropped with `already-submitted`. A form that needs repeat answers from one person cannot use a webhook for them. - A payload is taken whole or not at all: a missing required field or a value of the wrong type drops the whole payload rather than recording a partial submission. - A form with no **Subject** set accepts nothing (`no-subject`). - An accepted submission behaves like any other: it appears in the form's **Activity** drawer and export, writes Buddy or Mentor values to the employee, and starts any automation with a **Form Submission** trigger on the form. ## Log codes Every payload leaves one entry in the webhook's log (the form's **Settings** drawer, with a CSV export of the whole log). | Code | Outcome | Meaning | | --- | --- | --- | | `submitted` | Processed | Recorded a submission for the identifier. | | `no-subject` | Dropped | The form has no webhook subject configured. | | `invalid-payload` | Dropped | The body did not parse as `{ subject_id, fields }`; the message names the field and reason. | | `unknown-subject` | Dropped | No employee holds that identifier in the chosen source system. | | `already-submitted` | Dropped | This webhook has already submitted for that identifier. | | `ambiguous-fields` | Dropped | A name matched more than one field, or a field was named twice (by key and alias). | | `missing-fields` | Dropped | A required field was not supplied. | | `invalid-fields` | Dropped | A key names no field on the form, or a value is the wrong type for its field. | Each dropped payload also raises a notice in [Notices](https://support.pynhq.com/notices/), keyed by its code, so a caller repeating one mistake updates a single notice. ## Secrets | Action | Effect | | --- | --- | | **Create Secret** | Mints the secret for a webhook that has none. A webhook without a secret accepts nothing. | | **Replace Secret** | Mints a new secret; the old one stops working immediately. | Secrets are shown once and cannot be read back. Both actions need an Admin. ## Related - [Create a webhook](https://support.pynhq.com/flows/forms/create-a-webhook/) for the steps in the app. - [Form field types](https://support.pynhq.com/flows/forms/reference-form-field-types/) for the values each field accepts. - [Notices](https://support.pynhq.com/notices/) for where dropped payloads surface. ## Related Intercom articles - [Create a Webhook (Pyn 2)](https://intercom.help/pyn/en/articles/16858360-create-a-webhook-pyn-2) — draws on --- # Polls Source: https://support.pynhq.com/flows/polls/ > A one-click question inside a message: a Likert scale or a yes/no that records the moment it is clicked, for a weekly pulse or a quick reaction to an event. A poll is the lightest thing you can ask. Where a form has fields, required answers and a **Submit** button, a poll records an answer the instant someone clicks a button: **Satisfied**, **Yes**. Use it for a pulse after the first week, a reaction to an all-hands, or a read on how a change landed. ![Open a poll to edit its questions and answer scale.](https://support.pynhq.com/media/flows/polls/flows-polls-editor.png) ## Concepts - **Fields**: a poll uses the same **Select Field** picker as a form, but nothing can be required and each field is answered on its own. Keep a poll to a **Likert Scale** or a **Checkbox** (shown as **Yes** and **No**); a **Text** field is not shown on the poll's respond page. See [Form field types](https://support.pynhq.com/flows/forms/reference-form-field-types/). - **Publishing**: a poll is sent only once published; later edits re-enable **Publish**. - **Submissions**: each click is recorded against the person and listed, newest first, in the poll's **Activity** drawer, with **Export to CSV**. A poll never triggers an automation. - **Where it renders**: in Slack the buttons are in the message; in email the message carries a button to a respond page with the same buttons. ## What you can do here - [Run a quick poll](https://support.pynhq.com/flows/polls/run-a-quick-poll/): create, publish, embed and read it. - [Review and export submissions](https://support.pynhq.com/flows/forms/review-and-export-submissions/), which works the same for polls. - [Form field types](https://support.pynhq.com/flows/forms/reference-form-field-types/): What a Likert scale and a checkbox collect and how they render in a poll. ## Where it is in the app Open `/flows/home` in Pyn and select **Polls** under the **Forms** group, or open **Flows** in the primary navigation on the left of every page. Power Users and above create and publish polls and read the results. ![The Polls table lists every poll with whether it is published.](https://support.pynhq.com/media/flows/polls/flows-polls-table.png) ## Related - [Forms](https://support.pynhq.com/flows/forms/) when you need more than one click. - [Run a quick poll](https://support.pynhq.com/flows/polls/run-a-quick-poll/) for the steps. - [Review and export submissions](https://support.pynhq.com/flows/forms/review-and-export-submissions/) to read the answers. ## Related Intercom articles - [Gather Quick Feedback with a Poll (Pyn 2)](https://intercom.help/pyn/en/articles/12159628-gather-quick-feedback-with-a-poll-pyn-2) --- # Run a quick poll Source: https://support.pynhq.com/flows/polls/run-a-quick-poll/ > Create a one-question poll, publish it, drop it into a Slack or email step, and read the results as they arrive. You want to know how the first week went, or how an announcement landed, without asking anyone to fill in a form. A poll is one question with a row of buttons; the click is the answer. ## Before you start - You are a Power User, Admin or Owner. - The step that will carry the poll exists in an automation or campaign. ## Steps 1. In Pyn, open **Flows** in the left navigation, then select **Polls**. 2. Select **Add Poll** in the top-right corner. A poll titled **New Poll** opens; select the title (**Enter a Poll Title**) and name it, for example `First week pulse`. 3. Select **Add Field**, then **Likert Scale**. Set **Label** to the question, `How was your first week?`, and **Description** to a nudge such as `One click; nobody but the People team sees your answer.` Select **Save**. 4. Select **Preview** to see the five buttons, then **Publish**. ![Preview shows a poll question as the row of buttons respondents click.](https://support.pynhq.com/media/flows/polls/flows-polls-preview.png) 5. Open the automation from **Automations**, select the step that goes out at the end of week one, place the cursor under your message, and select **Insert widget**, **Embed Form**. Under **Form**, choose the poll from the list, keep **Track Action** ticked, and **Save**. 6. Select **Preview**, then **Send a test to yourself**, and click an answer in the test. Select **Publish** on the automation. > **Tip:** Put the question and the reason in the message itself, in two short lines, and let the poll be the whole reply. A poll with two fields asks for two clicks; one is better. ## What you should see In Slack the buttons sit under the message and the clicked one highlights; in email the message carries a button to a page with the same row of buttons. Each click appears in the poll's **Activity** drawer (select **Activity** on the rail in the poll editor) against the person's name, and **Export to CSV** gives one row per answer with the score as a number. Under [Actions](https://support.pynhq.com/activity/actions/), the step reads **Actioned** for everyone who clicked and **Unactioned** for everyone who did not. Your own test click is excluded from the list and the export. ## Related - [Polls](https://support.pynhq.com/flows/polls/) for how polls differ from forms. - [Embed a form in a message](https://support.pynhq.com/flows/forms/embed-a-form-in-a-message/) for the widget in detail. - [Review and export submissions](https://support.pynhq.com/flows/forms/review-and-export-submissions/) for the Activity drawer and export. ## Related Intercom articles - [Gather Quick Feedback with a Poll (Pyn 2)](https://intercom.help/pyn/en/articles/12159628-gather-quick-feedback-with-a-poll-pyn-2) — replaces --- # Steps and messages Source: https://support.pynhq.com/flows/steps/ > Anatomy of a step in an automation or campaign: the step types you can add, the drawer's Configure, Audience, Reminders and Advanced tabs, and how a step becomes a delivery. A step is one thing Pyn does for one enrolled employee: send an email, post to a Slack channel, invite someone to a calendar event, raise a Jira ticket. Automations and campaigns are lists of steps. Each step has its own schedule, sender, recipient, audience and message, and when it runs Pyn turns it into one **delivery** per recipient, which you follow in [Messages](https://support.pynhq.com/activity/messages/). ![A step's Configure tab holds its schedule, sender, recipient and message.](https://support.pynhq.com/media/flows/steps/flows-steps-drawer-configure.png) ## Step types Select **Add a step** on an automation, or **Add Step** on a campaign, to open the **Add Step** dialog. Its categories are **Communication**, **AI & Context**, **Tasks & Activities**, **Documents & Forms** and **Integrations**. The rows you can add are: | Step | Category | What it does | | --- | --- | --- | | **Send Direct Message** | Communication | A Slack direct message to the employee or someone around them. [Add a direct message step](https://support.pynhq.com/flows/steps/add-a-direct-message-step/). | | **Send Email to Employee** | Communication | An email to the employee, their manager, buddy, HRBP or a custom address. [Add an email step](https://support.pynhq.com/flows/steps/add-an-email-step/). | | **Post to Channel** | Communication | A post in a public Slack channel. [Post to a channel](https://support.pynhq.com/flows/steps/post-to-a-channel/). | | **Invite to Calendar Event** | Tasks & Activities | An invitation to a Google or Outlook calendar event. [Invite to a calendar event](https://support.pynhq.com/flows/steps/invite-to-a-calendar-event/). | | **Add to Channel** | Tasks & Activities | Adds the employee to a Slack channel. [Add to a channel](https://support.pynhq.com/flows/steps/add-to-a-channel/). | | **Raise Ticket** | Tasks & Activities | Creates a Jira issue. [Raise a ticket](https://support.pynhq.com/flows/steps/raise-a-ticket/). | | **Add Message to Employee Context** and the other **AI & Context** rows | AI & Context | Write to the employee's AI context in workspaces with the AI area. See [AI](https://support.pynhq.com/ai/). | Rows that appear greyed in the dialog, such as **Send Teams Message**, **Send Email to Mailbox**, **Send In-App Notification**, **Create Task** and everything under **Documents & Forms** and **Integrations**, cannot be selected. A banner on **Integrations** reads **Some steps are only available with the associated integration and plan.** To email a shared mailbox, add a **Send Email to Employee** step and choose a custom email recipient under **To**; see [Choose recipients and Cc](https://support.pynhq.com/flows/steps/choose-recipients-and-cc/). **Post to Channel**, **Add to Channel** and **Raise Ticket** need Slack or Jira connected and enabled for the workspace. There is no separate acknowledgement or content step. A button in the message does that job: see [Add a button to a message](https://support.pynhq.com/flows/steps/add-a-button-to-a-message/). ## Anatomy of a step Select a step card to open it in the drawer on the right. The header holds the step's title, which you edit with the pencil, and a state button that reads **Enabled** or **Disabled**; a disabled step stays in the automation but never sends. | Tab | What you set there | Pages | | --- | --- | --- | | **Configure** | **Schedule** (when, **at** what time, **in** which time zone), **From** (the sender), **To** (the recipient) and **Cc**, the **Subject** on an email, and the message itself with its toolbar, **Preview** and **Send a test to yourself**. Calendar, channel and ticket steps show their own fields here instead of a message. | [Schedule a step](https://support.pynhq.com/flows/steps/schedule-a-step/), [Choose a sender](https://support.pynhq.com/flows/steps/choose-a-sender/), [Choose recipients and Cc](https://support.pynhq.com/flows/steps/choose-recipients-and-cc/), [Format a message](https://support.pynhq.com/flows/steps/format-a-message/), [Preview and send a test](https://support.pynhq.com/flows/steps/preview-and-send-a-test/) | | **Audience** | **Lifecycle**, **Included** and **Excluded** groups that narrow which enrolled employees receive this step, with an **Audience Preview**. | [Set a step audience](https://support.pynhq.com/flows/steps/set-a-step-audience/) | | **Reminders** | Up to three follow-ups to the recipient, and under them up to three **Escalations** to someone else. Shown on message steps only. | [Add reminders](https://support.pynhq.com/flows/steps/add-reminders/), [Add escalations](https://support.pynhq.com/flows/steps/add-escalations/) | | **Advanced** | **Days of Week**, **On Non-Delivery Days**, **Skip if overdue at enrollment**, the Slack unfurling switches and, on an email, the **Email body** choice between **Composed message** and **Raw HTML**. | [Schedule a step](https://support.pynhq.com/flows/steps/schedule-a-step/), [Deactivate link and media unfurling](https://support.pynhq.com/flows/steps/deactivate-unfurling/) | ## From step to delivery When an enrollment reaches a step, Pyn works out the recipients (the step's **To** resolved for that employee, filtered by the step's audience), picks the sender, fills in the tokens for each recipient and creates one delivery per recipient, scheduled for the step's time in the chosen time zone. A step with nobody to send to is skipped. Each delivery then moves through the statuses in [Delivery statuses](https://support.pynhq.com/flows/steps/reference-delivery-statuses/). A new step starts with sensible defaults: **on the day of** the reference date at 10:00 in the **Recipient Time Zone**, Monday to Friday, moved to the previous delivery day when it lands on a weekend, **To** set to **Employee**, audience **Current**, and **Enabled**. ## Managing steps - Drag the handle at the left of a card to reorder steps; the list shows them in schedule order. - The copy icon on a card duplicates the step directly below it as a draft; the cross removes it. - Titles save as you type. A step without a title shows its type, for example **Send Email**. - Changes to a published automation's steps take effect when you **Publish** again; see [Publish an automation](https://support.pynhq.com/flows/automations/publish-an-automation/). - [Reference: tokens](https://support.pynhq.com/flows/steps/reference-tokens/): Every token the editor offers, what it resolves to and the text it falls back to. - [Reference: delivery statuses](https://support.pynhq.com/flows/steps/reference-delivery-statuses/): What Draft, Scheduled, Delivered, Clicked, Actioned, Bounced and Invalid mean. - [Reference: step options](https://support.pynhq.com/flows/steps/reference-step-options/): Every field a step can carry, in plain words. ## Where it is in the app Steps live inside an automation (open `/flows/home` in Pyn, select **Automations**, then an automation) or a campaign (open `/activity/home`, select **Campaigns**, then a campaign). The step drawer is the same in both places, except that a campaign step has an absolute **Scheduled date** and a list of recipients rather than one relative recipient. ## Related - [Automations](https://support.pynhq.com/flows/automations/) for the trigger and audience the steps hang off. - [Campaign templates](https://support.pynhq.com/flows/campaign-templates/) for steps on a calendar date. - [Step options](https://support.pynhq.com/flows/steps/reference-step-options/) for every field in one table. - [Messages](https://support.pynhq.com/activity/messages/) to follow each delivery a step produced. ## Related Intercom articles - [Send to Slack Channel (Pyn 2)](https://intercom.help/pyn/en/articles/16755625-send-to-slack-channel-pyn-2) - [Send to a Slack channel (Pyn 1)](https://intercom.help/pyn/en/articles/6185396-send-to-a-slack-channel-pyn-1) — Pyn 1 article, kept for reference - [Send to a Teams channel (Pyn 1)](https://intercom.help/pyn/en/articles/9621416-send-to-a-teams-channel-pyn-1) — Pyn 1 article, kept for reference - [Integrating Pyn with Google Calendar (Pyn 2)](https://intercom.help/pyn/en/articles/13401726-integrating-pyn-with-google-calendar-pyn-2) - [Create a Jira Ticket in Pyn Automations](https://intercom.help/pyn/en/articles/9359078-create-a-jira-ticket-in-pyn-automations) — Pyn 1 article, kept for reference - [Choosing your message add-on](https://intercom.help/pyn/en/articles/7157050-choosing-your-message-add-on) — Pyn 1 article, kept for reference - [Custom Email Recipients in Workflows (Pyn 2)](https://intercom.help/pyn/en/articles/13930364-custom-email-recipients-in-workflows-pyn-2) - [Send messages to a Skip-level Manager in Automations](https://intercom.help/pyn/en/articles/9260298-send-messages-to-a-skip-level-manager-in-automations) — Pyn 1 article, kept for reference - [Custom Recipients in Automation Messages](https://intercom.help/pyn/en/articles/8491211-custom-recipients-in-automation-messages) — Pyn 1 article, kept for reference - [Send to Personal Email Address](https://intercom.help/pyn/en/articles/8563275-send-to-personal-email-address) — Pyn 1 article, kept for reference - [Schedule Messages (Pyn 2)](https://intercom.help/pyn/en/articles/16857955) — Pyn 1 article, kept for reference - [Time and schedule your Pyn](https://intercom.help/pyn/en/articles/6005691-time-and-schedule-your-pyn) — Pyn 1 article, kept for reference - [Format Your Message (Pyn 2)](https://intercom.help/pyn/en/articles/16814757-format-your-message-pyn-2) - [Mention the Principal in Slack Messages and Channels (Pyn 2)](https://intercom.help/pyn/en/articles/16814823-mention-the-principal-in-slack-messages-and-channels-pyn-2) - [Embed a YouTube Video (Pyn 2)](https://intercom.help/pyn/en/articles/16857906-embed-a-youtube-video-pyn-2) - [Add visual content to your message (Pyn 2)](https://intercom.help/pyn/en/articles/13872876-add-visual-content-to-your-message-pyn-2) - [Format your Pyn (Pyn 1)](https://intercom.help/pyn/en/articles/6005675-format-your-pyn-pyn-1) — Pyn 1 article, kept for reference - [Embed a YouTube video (Pyn 1)](https://intercom.help/pyn/en/articles/6010960-embed-a-youtube-video-pyn-1) — Pyn 1 article, kept for reference - [Add a mailto link](https://intercom.help/pyn/en/articles/8214468-add-a-mailto-link) — Pyn 1 article, kept for reference - [Preview and Send Your Pyn](https://intercom.help/pyn/en/articles/6005696-preview-and-send-your-pyn) — Pyn 1 article, kept for reference - [Set up Reminders for Messages (Pyn 2)](https://intercom.help/pyn/en/articles/13642436-set-up-reminders-for-messages-pyn-2) - [Add a reminder to your message (Pyn 1)](https://intercom.help/pyn/en/articles/6011030-add-a-reminder-to-your-message-pyn-1) — Pyn 1 article, kept for reference - [Deactivating Link & Media Unfurling in Slack Messages (Pyn 2)](https://intercom.help/pyn/en/articles/13930400-deactivating-link-media-unfurling-in-slack-messages-pyn-2) - [Configure Conditional Senders](https://intercom.help/pyn/en/articles/9312783-configure-conditional-senders) — Pyn 1 article, kept for reference - [Create Conditional Sections](https://intercom.help/pyn/en/articles/6005747-create-conditional-sections) — Pyn 1 article, kept for reference - [Use filters and conditional sections to target your content](https://intercom.help/pyn/en/articles/6005722-use-filters-and-conditional-sections-to-target-your-content) — Pyn 1 article, kept for reference - [List of supported tokens](https://intercom.help/pyn/en/articles/6024180-list-of-supported-tokens) — Pyn 1 article, kept for reference - [Add personalization tokens](https://intercom.help/pyn/en/articles/6010962-add-personalization-tokens) — Pyn 1 article, kept for reference - [Personalize your content using tokens and custom senders](https://intercom.help/pyn/en/articles/6005713-personalize-your-content-using-tokens-and-custom-senders) — Pyn 1 article, kept for reference - [Personalize your Buddy Pyns with Tokens](https://intercom.help/pyn/en/articles/6023197-personalize-your-buddy-pyns-with-tokens) — Pyn 1 article, kept for reference - [Excluded messages](https://intercom.help/pyn/en/articles/7138026-excluded-messages) — Pyn 1 article, kept for reference --- # Add a button to a message Source: https://support.pynhq.com/flows/steps/add-a-button-to-a-message/ > Make a message actionable with a Link Button, a Link To Library Content button or an embedded form, and track who acts on it so reminders and escalations can follow. A message that asks for something needs a button: "Read the handbook", "Confirm your equipment", "Pick a buddy". A button with **Track Action** turned on tells Pyn whether the recipient acted, which is what reminders, escalations and the [Actions](https://support.pynhq.com/activity/actions/) view are built on. ## Before you start - The step is a **Send Direct Message** or **Send Email to Employee** step. Channel posts take buttons too, but nobody in particular is asked to act. - For a content button, the content is published in [Library](https://support.pynhq.com/library/content/). For a form button, the form is published in [Forms](https://support.pynhq.com/flows/forms/). ![Insert widget opens the Widgets menu for buttons, forms, custom tokens and the avatar.](https://support.pynhq.com/media/flows/steps/flows-steps-editor-widgets.png) ## Steps 1. In Pyn, open the automation from **Flows**, **Automations**, and select the step to open it in the drawer. 2. Place the cursor in the message where the button goes, then select **Insert widget** (the puzzle icon) in the toolbar. The **Widgets** menu opens. 3. Choose the kind of button: - **Link Button**: enter the **Link** (a web address or an email address) and a **Label** of up to 32 characters. - **Link To Library Content**: search for and select the **Library Content**, then set the **Label**. The recipient opens the content on a page of its own. - **Embed Form**: choose the **Form** from the list (forms and polls both appear). The label is the form's title. 4. Choose a **Button Style**: **Default**, **Primary** or **Danger**. 5. Leave **Track Action** ticked so clicking the button counts as actioning the step. Untick it only for a link you do not need to follow up on. 6. Select **Save**. The button appears in the editor as a pill you can select to edit again. 7. Select **Preview** and then **Send a test to yourself** to check the button opens the right thing, then **Publish** the automation. > **Note:** Only a step with a tracked button or form is actionable. On a step without one, the **Reminders** tab reads **This step has no actionable content such as buttons or forms**, and every reminder you add would send regardless. ## What you should see In Slack the button renders as a Slack button; in email it is a styled button in your theme colours. Once sent, the delivery under [Messages](https://support.pynhq.com/activity/messages/) reads **Delivered**, then **Clicked** when any link is opened, and **Actioned** once a tracked button or form is used. The [Actions](https://support.pynhq.com/activity/actions/) view lists every tracked ask with **Actioned**, **Clicked** or **Unactioned**. ## Related - [Use content in a step](https://support.pynhq.com/library/content/use-content-in-a-step/) for the content behind a Link To Library Content button. - [Embed a form in a message](https://support.pynhq.com/flows/forms/embed-a-form-in-a-message/) for form buttons and the Slack picker. - [Add reminders](https://support.pynhq.com/flows/steps/add-reminders/) to follow up when nobody clicks. - [Actions](https://support.pynhq.com/activity/actions/) to see who has acted and export the list. ## Related Intercom articles - [Choosing your message add-on](https://intercom.help/pyn/en/articles/7157050-choosing-your-message-add-on) — Pyn 1 article, kept for reference --- # Add a direct message step Source: https://support.pynhq.com/flows/steps/add-a-direct-message-step/ > Send a Slack direct message from an automation or campaign: choose the sender, the person it goes to and the time, then write it with tokens. You want a message to land in Slack, where the person already is: a welcome on day one, a nudge to a manager, a note to a buddy. A **Send Direct Message** step sends a Slack DM to one person worked out from the enrolled employee. ## Before you start - Slack is connected to the workspace. See [Slack](https://support.pynhq.com/integrations/slack/). - You are a Power User, Admin or Owner, and the automation or campaign exists. ![Add a step opens the Add Step dialog; rows you cannot add in this workspace appear greyed.](https://support.pynhq.com/media/flows/steps/flows-steps-add-step-dialog.png) ## Steps 1. In Pyn, open **Flows** in the left navigation, select **Automations**, then the automation. 2. Select **Add a step**. In the **Add Step** dialog, on **Communication**, select **Send Direct Message**. The step appears in the list and opens in the drawer. 3. Select the pencil next to the title and name the step, for example `Day one hello`. 4. Under **Schedule**, choose when it sends relative to the reference date, the time **at** which it sends and the time zone **in** which that time is read. [Schedule a step](https://support.pynhq.com/flows/steps/schedule-a-step/) explains each option. 5. Under **From**, choose **Pyn Bot** or a connected Slack user. The sender's name and avatar appear above the editor, so you can see how the message will look. 6. Under **To**, choose who receives it: **Employee**, **Buddy**, **HRBP**, **Manager** or **Skip-level Manager**. 7. Write the message. Type `@` to insert a token such as `@principal.preferredName`, and use **Insert widget** for a button, a form or a **Mention Principal** pill. See [Format a message](https://support.pynhq.com/flows/steps/format-a-message/). 8. Select **Preview**, pick an employee under **Preview for principal**, then **Send a test to yourself**. When it reads right, select **Publish** in the top-right corner of the automation. > **Note:** A direct message goes to the Slack account matched to the recipient's work email. A recipient who is not in the connected Slack workspace gets an **Invalid** delivery rather than a message; see [Delivery statuses](https://support.pynhq.com/flows/steps/reference-delivery-statuses/). ## What you should see The step card shows your title and its schedule, and the drawer header reads **Enabled**. Your test arrives in Slack from Pyn Bot with the tokens filled in for you. Once the automation is published, each enrollment lists the step under [Enrollments](https://support.pynhq.com/activity/enrollments/) with a **Scheduled** delivery until it sends. ## Related - [Choose a sender](https://support.pynhq.com/flows/steps/choose-a-sender/) for Pyn Bot, personal Slack senders and auth links. - [Format a message](https://support.pynhq.com/flows/steps/format-a-message/) for tokens, mentions, buttons and media. - [Post to a channel](https://support.pynhq.com/flows/steps/post-to-a-channel/) when the message is for a whole channel. - [Slack](https://support.pynhq.com/integrations/slack/) to connect the workspace. --- # Add an email step Source: https://support.pynhq.com/flows/steps/add-an-email-step/ > Send an email from an automation or campaign: pick the mailbox it comes from, the recipient and Cc, the subject and the body, then test it on yourself. Email reaches people before they have Slack, reaches managers who live in their inbox, and leaves a record. A **Send Email to Employee** step sends one email per recipient from a mailbox you have connected, with the employee's details filled in. ## Before you start - A sender exists under **Settings**, **Senders**: a Google Workspace or Microsoft 365 mailbox, or a verified email address on your domain. See [Email](https://support.pynhq.com/integrations/email/). - You are a Power User, Admin or Owner. ![A step's Configure tab holds its schedule, sender, recipient and message.](https://support.pynhq.com/media/flows/steps/flows-steps-drawer-configure.png) ## Steps 1. In Pyn, open **Flows** in the left navigation, select **Automations**, then the automation. 2. Select **Add a step**, then **Send Email to Employee** under **Communication**. The step opens in the drawer. 3. Name the step with the pencil next to its title, for example `Before you start`. 4. Under **Schedule**, choose the day relative to the reference date, the time and the time zone. For an email that must be read before the first day, choose a weekday morning in the **Recipient Time Zone**. 5. Under **From**, choose the mailbox or a conditional sender. See [Choose a sender](https://support.pynhq.com/flows/steps/choose-a-sender/). 6. Under **To**, choose the recipient. **Employee (Personal)** sends to the personal address from your HRIS, which is the one to use before someone's work mailbox exists. Add up to three **Cc** recipients, including custom email recipients such as a team inbox. 7. Type the **Subject**. It takes the name and date tokens, so `Welcome, @principal.preferredName` reads naturally. 8. Write the body. Headings, lists, images, buttons and tokens are all in the toolbar; see [Format a message](https://support.pynhq.com/flows/steps/format-a-message/). 9. Select **Preview** to read it as a particular employee, then **Send a test to yourself**. Select **Publish** on the automation when you are done. > **Tip:** Pyn applies your workspace **Theme** (logo, colours, font) to every composed email. For a fully designed template that Pyn must send exactly as written, switch **Email body** to **Raw HTML** on the step's **Advanced** tab; see [Format a message](https://support.pynhq.com/flows/steps/format-a-message/). ## What you should see The test arrives in your inbox from the sender you chose, with your own name in place of the tokens and the theme applied. In the step list the card shows the title and schedule. After you publish, each enrollment shows the email under [Messages](https://support.pynhq.com/activity/messages/) as **Scheduled**, then **Delivered**, and **Clicked** once a link is opened. ## Related - [Choose recipients and Cc](https://support.pynhq.com/flows/steps/choose-recipients-and-cc/) for personal addresses, custom email recipients and Cc. - [Choose a sender](https://support.pynhq.com/flows/steps/choose-a-sender/) for mailboxes, verified senders and conditional senders. - [Format a message](https://support.pynhq.com/flows/steps/format-a-message/) for the editor, tokens and raw HTML. - [Email](https://support.pynhq.com/integrations/email/) to connect a mailbox or verify your domain. --- # Add escalations Source: https://support.pynhq.com/flows/steps/add-escalations/ > When an actionable message is still not actioned after a number of days, notify someone else, such as the recipient's manager, with a short notice that says what is outstanding and since when. Reminders nudge the person who was asked. An escalation tells somebody else, so a new starter without a buddy or an unsigned policy does not go unnoticed. The escalation recipient gets a generated notice, not a copy of the message, naming who has not completed what and when it was sent. ## Before you start - The step is an email or Slack direct message with a tracked button or embedded form. Channel posts cannot be escalated, because anyone in the channel can act on them. ![An escalation notifies someone other than the recipient when the step is still not actioned.](https://support.pynhq.com/media/flows/steps/flows-steps-escalations.png) ## Steps 1. In Pyn, open the automation from **Flows**, **Automations**, and select the step. 2. Select the **Reminders** tab and scroll to **Escalations**, under the reminders. It reads **No escalations configured.** 3. Select **Add escalation**. A row appears reading **3 days after send, notify Manager**. 4. Change the number of days (1 to 90). Place it after your last reminder, so the person has had every chance to act first. 5. Select the recipient to change who is notified: under **Relative to the employee**, **Employee**, **Buddy**, **Manager** or **Skip-level Manager**; under **People**, a specific employee; on an email step, under **Email addresses**, a custom email recipient; on a Slack step, under **Channels**, a channel. 6. Add up to three escalations, for example the manager after 3 days and the skip-level manager after 7. Close the drawer and **Publish** the automation. > **Note:** An escalation goes out with the step's own sender in the step's medium, so a Slack step escalates in Slack and an email step by email. One that resolves to the original recipient is treated as a reminder and skipped. ## What the notice says The notice is fixed when the original is delivered. In Slack or email it reads, for example: > ⏰ **Jane Doe** hasn't completed **Sign the handbook** in *New hire onboarding*. It was sent on 3 Oct (5 days ago). > > *You're getting this as Jane's manager.* When the step is about someone other than its recipient, the notice adds "for" and the employee's name. The email subject is **Not yet completed: Sign the handbook (Jane Doe)**. ## What you should see Under [Enrollments](https://support.pynhq.com/activity/enrollments/), the escalation appears beneath the original delivery, **Scheduled** for its day, and is cancelled if the recipient acts first or the enrollment is stopped. Where the step cannot be escalated the section says why: **Add a button or form to this step to escalate it.** or **This step is posted to a channel, where anyone can action it, so it can't be escalated.** ## Related - [Add reminders](https://support.pynhq.com/flows/steps/add-reminders/) for follow-ups to the recipient. - [Add a button to a message](https://support.pynhq.com/flows/steps/add-a-button-to-a-message/) to make the step actionable. - [Choose recipients and Cc](https://support.pynhq.com/flows/steps/choose-recipients-and-cc/) for custom email recipients as escalation targets. --- # Add reminders Source: https://support.pynhq.com/flows/steps/add-reminders/ > Send up to three follow-ups to the recipient of an actionable message, a chosen number of days after it was delivered, that stop the moment they act. A manager asked to pick a buddy, an employee asked to sign the handbook: most people act on the second ask if not the first. A reminder sends the same message again a set number of days after the original was delivered, and only while the original is still unactioned. ## Before you start - The step is a **Send Direct Message** or **Send Email to Employee** step with a tracked button or embedded form; see [Add a button to a message](https://support.pynhq.com/flows/steps/add-a-button-to-a-message/). ![Add reminder adds a follow-up a chosen number of days after the message is delivered.](https://support.pynhq.com/media/flows/steps/flows-steps-reminders-tab.png) ## Steps 1. In Pyn, open the automation from **Flows**, **Automations**, and select the step. 2. Select the **Reminders** tab. It reads **No reminders configured.** on a new step. 3. Select **Add reminder**. A row appears reading **2 days after send**. 4. Change the number of days if you want: any whole number from 1 to 90. One reminder two or three days after the original suits most asks; a week later suits a longer task. 5. Select **Add reminder** again for a second or third follow-up, each with its own delay. Three is the maximum. 6. Close the drawer. Reminders are saved with the step and take effect when you **Publish** the automation. > **Caution:** On a step with nothing to action, the tab warns **This step has no actionable content such as buttons or forms.** Any reminders you add there always send, because nothing can mark the step actioned. ## How reminders behave - Pyn creates the reminders when the original delivery is delivered, so each delay counts from the moment the recipient got the message, at the same time of day. - A reminder is a copy of the original message from the same sender in the same medium. - Once the recipient clicks a tracked button or submits the form, every remaining reminder is cancelled. Stopping the enrollment cancels them too. - Calendar invitations, channel invitations and tickets have no reminders. ## What you should see Under [Enrollments](https://support.pynhq.com/activity/enrollments/), a delivered step lists its reminders beneath it, each **Scheduled** for its day and then **Delivered** or cancelled. The [Actions](https://support.pynhq.com/activity/actions/) view shows the original ask as **Unactioned** until the person acts, whichever message they act from. ## Related - [Add a button to a message](https://support.pynhq.com/flows/steps/add-a-button-to-a-message/) to make the step actionable. - [Add escalations](https://support.pynhq.com/flows/steps/add-escalations/) to tell someone else when reminders are not enough. - [Actions](https://support.pynhq.com/activity/actions/) to see who has acted. ## Related Intercom articles - [Set up Reminders for Messages (Pyn 2)](https://intercom.help/pyn/en/articles/13642436-set-up-reminders-for-messages-pyn-2) — replaces - [Add a reminder to your message (Pyn 1)](https://intercom.help/pyn/en/articles/6011030-add-a-reminder-to-your-message-pyn-1) — Pyn 1 article, kept for reference --- # Add to a channel Source: https://support.pynhq.com/flows/steps/add-to-a-channel/ > Put the employee into a Slack channel automatically on a day of their journey, for example #new-starters on day one or #managers when they are promoted. Channels are where a cohort finds each other. An **Add to Channel** step invites the employee (or their manager or buddy) to a public Slack channel when they reach that step, so nobody has to remember to add them. ## Before you start - Slack is connected and **Add to Channel** is enabled for your workspace. If the row is greyed in the **Add Step** dialog, contact Pyn support. - The sender you will choose is a member of the channel, since the invitation is issued by that sender. ## Steps 1. In Pyn, open **Flows** in the left navigation, select **Automations**, then the automation. 2. Select **Add a step**, then **Add to Channel** under **Tasks & Activities**. 3. Under **Schedule**, choose the day and time relative to the reference date. 4. Under **From**, choose **Pyn Bot** or a personal Slack sender. 5. Under **To**, choose who is added: **Employee**, **Buddy**, **HRBP**, **Manager** or **Skip-level Manager**. 6. Under **Channel**, pick the channel from the list of channels the sender can see. 7. Next to **Test by adding yourself to a channel:**, select **Test**. Pyn adds you to the chosen channel and shows **Test message sent**. 8. Select **Publish** on the automation. > **Note:** As with a channel post, changing the sender clears the channel: a sender in another Slack workspace cannot see it. Pick the channel again before publishing. ## What you should see The step card shows the channel. When an employee reaches it, they appear in the channel's member list and the delivery under [Enrollments](https://support.pynhq.com/activity/enrollments/) reads **Add** followed by their name and **to channel**. Reminders are not offered on this step. ## Related - [Post to a channel](https://support.pynhq.com/flows/steps/post-to-a-channel/) to announce them once they are in. - [Configure a team change trigger](https://support.pynhq.com/flows/automations/configure-a-team-change-trigger/) to add new managers to a managers' channel. - [Slack](https://support.pynhq.com/integrations/slack/) to connect Slack. --- # Choose a sender Source: https://support.pynhq.com/flows/steps/choose-a-sender/ > Pick the identity a step sends from: Pyn Bot or a personal Slack account, a Google Workspace or Microsoft 365 mailbox, a verified email address on your domain, or a conditional sender that picks one per recipient. Who a message comes from changes how it lands. A welcome from the CEO's own address, a nudge from Pyn Bot and a policy update from `people@` are all right in their place. Every message step has a **From** field that chooses one of the workspace's senders. ## Before you start - You are an Admin to add senders under **Settings**. Power Users pick from the senders that exist. ![Settings, Senders lists every sender; Add offers each kind you can connect.](https://support.pynhq.com/media/flows/steps/flows-steps-senders-settings.png) ## Steps 1. In Pyn, open the automation from **Flows**, **Automations**, and select the step. 2. On **Configure**, select **From** (it reads **Choose sender** until you pick one). The list shows the senders that match the step's medium: Slack senders on a Slack step, mailboxes and verified addresses on an email step. When conditional senders exist, the list has two sections, **Senders** and **Conditional Senders**. 3. Select the sender. On a Slack step the editor shows the sender's avatar and name above the message. 4. If the sender you need is missing, open **Settings**, select **Senders**, and select **Add** in the top-right corner. The menu offers **Add Google Email Sender**, **Add Microsoft 365 Email Sender**, **Add Slack Sender** (one entry per connected Slack workspace), **Add Email Sender** for an address on a verified domain, and **Create Google Auth Link** or **Create Slack Auth Link**. 5. For a sender that belongs to someone else, such as the CEO, choose an auth link. Pyn gives you a link, valid for three days, that the person opens to connect their own Google or Slack account as a sender without signing in to Pyn. 6. Back on the step, select **From** again and pick the new sender. > **Note:** **Pyn Bot** is the Slack app itself and needs no connection beyond the Slack integration. A personal Slack sender can only post to channels it has joined, and a channel step loses its channel when you change sender. ## Sender types | Sender | Medium | Where it comes from | | --- | --- | --- | | **Pyn Bot** | Slack | Installed with the [Slack](https://support.pynhq.com/integrations/slack/) integration. | | A Slack user | Slack | **Add Slack Sender** by that user, or a Slack auth link. | | Google Workspace mailbox | Email | **Add Google Email Sender** by the mailbox owner, or a Google auth link. See [Google Workspace](https://support.pynhq.com/integrations/google-workspace/). | | Microsoft 365 mailbox | Email | **Add Microsoft 365 Email Sender**. See [Microsoft 365](https://support.pynhq.com/integrations/microsoft-365/). | | Verified email sender | Email | **Add Email Sender**: an address on a domain you have verified with DNS records. See [Email](https://support.pynhq.com/integrations/email/). | | Conditional sender | Email, Slack or Teams | Rules that pick one of the above per recipient. See [Create a conditional sender](https://support.pynhq.com/flows/steps/create-a-conditional-sender/). | ## What you should see The step shows the sender under **From**, and a test from **Preview** arrives from that identity. A sender that needs reconnecting is flagged under **Settings**, **Needs Attention**, and steps that use it fail to send until it is fixed. Archiving a sender warns **Sends on these steps will fail once this sender is archived:** with the list of steps. ## Related - [Create a conditional sender](https://support.pynhq.com/flows/steps/create-a-conditional-sender/) to send from different people by audience. - [Email](https://support.pynhq.com/integrations/email/) for mailboxes and verified domains. - [Slack](https://support.pynhq.com/integrations/slack/) for Pyn Bot and personal Slack senders. - [Settings, General](https://support.pynhq.com/settings/general/) for the Senders and Needs Attention views. --- # Choose recipients and Cc Source: https://support.pynhq.com/flows/steps/choose-recipients-and-cc/ > Pick who a step goes to: the employee at their work or personal address, their manager, skip-level manager, buddy or HRBP, a group, a channel or a custom email address, plus up to three Cc recipients. Every step in an automation runs for one employee, the **principal**, but the person who receives it is often someone around them. The **To** field names that person relative to the principal, so one step reaches the right manager or buddy for every enrollment. ## Before you start - To email a shared inbox or someone outside Pyn, add them first under **Settings**, **Custom Email Recipients** and verify the address. See [Settings, General](https://support.pynhq.com/settings/general/). - Buddy and HRBP come from your HRIS or from a form; a step addressed to a relationship nobody has set is skipped for that employee. ![To lists the people relative to the enrolled employee, then the workspace's custom email recipients.](https://support.pynhq.com/media/flows/steps/flows-steps-recipient-menu.png) ## Steps 1. In Pyn, open the automation from **Flows**, **Automations**, and select the step to open it on **Configure**. 2. Under **To**, choose the recipient: - **Employee**: the principal, at their work email or Slack account. - **Employee (Personal)**: the principal at the personal email address from your HRIS. Email steps only; use it before the start date. - **Buddy**, **HRBP**, **Manager**, **Skip-level Manager**: the person in that relationship to the principal. - Under **Custom Email Recipients**, a verified address such as `people@yourcompany.com`. Email steps only. 3. On an email step, add up to three **Cc** recipients from the same list. A new **Cc** row appears after you fill the last one; select **(Clear)** in a row to remove it. 4. On a **Post to Channel** step, **To** is the channel, chosen from the channels the sender is a member of. On an **Add to Channel** step, **To** is the person added and **Channel** is the channel. 5. Select **Preview** and pick an employee under **Preview for principal** to confirm who the step resolves to for them. The preview header shows the resolved recipient. > **Note:** Tokens follow the roles, not the field. `@principal.preferredName` is always the enrolled employee; `@recipient.preferredName` is whoever receives the message. In a message to the manager, "Hi @recipient.preferredName, @principal.preferredName starts on @principal.startDate" reads correctly. ## Groups and lists of people A campaign step has a **To** multi-select instead of a single recipient: pick employee groups, individual employees and the relative recipients together, and every member receives it. See [Create a campaign](https://support.pynhq.com/flows/campaign-templates/create-a-campaign/). In an automation, narrow who gets a step with its [audience](https://support.pynhq.com/flows/steps/set-a-step-audience/) rather than by listing people. ## What you should see The step card shows the recipient, for example **Manager**. Under [Enrollments](https://support.pynhq.com/activity/enrollments/), each enrollment's step lists the resolved person by name, or reads **Unknown recipient** when the relationship is empty for that employee. A custom email recipient removed from **Settings** disappears from every step that used it. ## Related - [Settings, General](https://support.pynhq.com/settings/general/) for Custom Email Recipients. - [Set a step audience](https://support.pynhq.com/flows/steps/set-a-step-audience/) to send a step to only some enrolled employees. - [Tokens](https://support.pynhq.com/flows/steps/reference-tokens/) for `principal` versus `recipient` tokens. - [Create a campaign](https://support.pynhq.com/flows/campaign-templates/create-a-campaign/) for steps sent to groups. ## Related Intercom articles - [Custom Email Recipients in Workflows (Pyn 2)](https://intercom.help/pyn/en/articles/13930364-custom-email-recipients-in-workflows-pyn-2) — replaces - [Send messages to a Skip-level Manager in Automations](https://intercom.help/pyn/en/articles/9260298-send-messages-to-a-skip-level-manager-in-automations) — Pyn 1 article, kept for reference - [Custom Recipients in Automation Messages](https://intercom.help/pyn/en/articles/8491211-custom-recipients-in-automation-messages) — Pyn 1 article, kept for reference - [Send to Personal Email Address](https://intercom.help/pyn/en/articles/8563275-send-to-personal-email-address) — Pyn 1 article, kept for reference --- # Create a conditional sender Source: https://support.pynhq.com/flows/steps/create-a-conditional-sender/ > Send one step from different senders depending on who receives it, with ordered audience rules and a fallback, so regional HR leads sign their own region's messages. One onboarding flow, three countries, three HR partners who want to sign their own welcome. A conditional sender is a named list of rules, "if the recipient is in this group, send from this sender", with a fallback for everyone else. A step uses it in **From** like any other sender. ## Before you start - You are an Admin. - The senders you will route to exist under **Settings**, **Senders**, and they all send through the same medium (email, Slack or Teams). - The groups you will match on exist in [Employee Groups](https://support.pynhq.com/directory/employee-groups/). ![A conditional sender is a medium, a fallback sender and ordered audience rules.](https://support.pynhq.com/media/flows/steps/flows-steps-conditional-sender-dialog.png) ## Steps 1. In Pyn, open **Settings** in the left navigation, then select **Conditional Senders** under **General**. 2. Select **Add** in the top-right corner. The **Create Conditional Sender** dialog opens. 3. Enter a **Name**, for example `Regional HR leads`, and choose the **Medium**: **Email**, **Slack** or **Teams**. The medium cannot be changed once the conditional sender exists. 4. Under **Fallback sender**, choose the sender used when no rule matches. 5. Open **Rule 1**. Set its audience (**Lifecycle**, **Included**, **Excluded**) and, under **Send from**, the sender for that audience. The **Audience Preview** shows who matches. 6. Select **Add rule** for each further case, up to 20. Use the arrows to move a rule up or down: rules are tried in order and the first match wins. 7. Select **Save**. The button stays disabled until the name, the fallback and every rule's sender and lifecycle are set. 8. Open a step in an automation, select **From**, and choose the conditional sender under **Conditional Senders**. > **Note:** Rules match employee recipients only. A channel post or a custom email recipient always goes from the fallback sender. ## What you should see The **Conditional Senders** table lists the name, medium and number of rules; it also appears in **All senders** as a row marked **Conditional**. On a step, **From** shows the conditional sender's name and, on hover, each rule and the fallback. In **Preview**, choosing an employee under **Preview for principal** shows the sender the rules pick for them, and **Send a test to yourself** sends from the sender picked for you. ## Related - [Choose a sender](https://support.pynhq.com/flows/steps/choose-a-sender/) for the senders a rule can route to. - [Employee Groups](https://support.pynhq.com/directory/employee-groups/) for the groups rules match on. - [Settings, General](https://support.pynhq.com/settings/general/) for where Conditional Senders lives. ## Related Intercom articles - [Configure Conditional Senders](https://intercom.help/pyn/en/articles/9312783-configure-conditional-senders) — Pyn 1 article, kept for reference --- # Deactivate link and media unfurling Source: https://support.pynhq.com/flows/steps/deactivate-unfurling/ > Stop Slack expanding links and media into previews under a step's message, so a direct message or channel post keeps the layout you wrote. Slack unfurls: it expands a link into a card with a title, image and description, and shows an image or video link inline. That is helpful for a shared article and unhelpful under a carefully laid out welcome with a banner and three buttons, or a link to an internal page that previews as a login screen. ## Before you start - The step is a **Send Direct Message** or **Post to Channel** step. Email has no unfurling, so the switches are not shown there. ![On a Slack step the Advanced tab adds the two unfurling switches to the fields shown here.](https://support.pynhq.com/media/flows/steps/flows-steps-advanced-tab.png) ## Steps 1. In Pyn, open the automation from **Flows**, **Automations**, and select the Slack step. 2. Select the **Advanced** tab. 3. Tick **Deactivate link unfurling** to stop link previews. 4. Tick **Deactivate media unfurling** to stop images and videos linked in the text from showing inline. 5. Close the drawer, then **Publish** the automation. > **Tip:** Images you insert with **Insert media** are part of the message and are not affected. The switches only govern previews Slack generates from URLs in the text. ## What you should see Select **Preview**, then **Send a test to yourself**: the test in Slack shows the links as plain links with no card beneath them. The settings apply to reminders of the step as well, since a reminder is a copy of the original. ## Related - [Add a direct message step](https://support.pynhq.com/flows/steps/add-a-direct-message-step/) and [Post to a channel](https://support.pynhq.com/flows/steps/post-to-a-channel/) for the steps these switches apply to. - [Format a message](https://support.pynhq.com/flows/steps/format-a-message/) for inserting media rather than linking it. ## Related Intercom articles - [Deactivating Link & Media Unfurling in Slack Messages (Pyn 2)](https://intercom.help/pyn/en/articles/13930400-deactivating-link-media-unfurling-in-slack-messages-pyn-2) — replaces --- # Format a message Source: https://support.pynhq.com/flows/steps/format-a-message/ > Use the message editor: headings, lists, links and alignment, tokens that fill in names and dates, images, files and video, the Mention Principal pill in Slack, and Raw HTML for a designed email. The same editor writes every email, direct message and channel post. It shows the message roughly as the recipient will see it, with a Slack avatar and timestamp on a Slack step, and keeps formatting that the medium supports: Slack has no alignment or headings, so those tools are hidden there. ![Insert widget opens the Widgets menu for buttons, forms, custom tokens and the avatar.](https://support.pynhq.com/media/flows/steps/flows-steps-editor-widgets.png) ## Text Select text and use the toolbar for bold, italic and underline, headings and quotes, bulleted and numbered lists, links (a web address or `mailto:`) and, on email, left, centre and right alignment. Undo and redo are in the toolbar too. Select **Expand editor** (the arrows icon above the editor) to write in a full-screen editor and close it to return. ## Tokens 1. Type `@` where the value goes. A list of tokens opens; keep typing to filter it, for example `@pref` for `principal.preferredName`. 2. Select the token. It appears as a pill. `principal` tokens are about the enrolled employee; `recipient` tokens are about whoever receives the message; `date.reference` is the enrollment's reference date. 3. For a field that is not in the list, select **Insert token** in the toolbar, then **Employee Field**: choose the field, whether it applies to the **Principal of automation** or the **Recipient of message**, and an optional **Fallback** shown when the field is empty. 4. For a column from a mail-merge spreadsheet, select **Insert widget**, then **Custom Token**, and type the column name, for example `startLocation`. **Custom Token Block** renders a multi-line value as its own paragraph or list. [Tokens](https://support.pynhq.com/flows/steps/reference-tokens/) lists every token with the text Pyn falls back to when the value is missing, for example `Employee` for a missing name. ## Media Select **Insert media** (the picture icon) to upload an image, GIF or video from your computer or pick one from [Media](https://support.pynhq.com/library/media/). Select an inserted image to align or resize it. Paste a YouTube link on its own line and it becomes an embedded player. A banner image renders best at 1200 by 250 pixels, or 1200 by 500 for a taller retina banner; see [Insert media in a message](https://support.pynhq.com/library/media/insert-media-in-a-message/). ## Widgets **Insert widget** (the puzzle icon) holds the interactive pieces: **Avatar** (the principal's photo), **Custom Token** and **Custom Token Block**, **Embed Form**, **Link Button**, **Mention Principal** and **Link To Library Content**. Buttons and forms are covered in [Add a button to a message](https://support.pynhq.com/flows/steps/add-a-button-to-a-message/). **Mention Principal** is offered on Slack steps only. It inserts an **@Principal** pill that becomes a live Slack mention of the enrolled employee when the message sends, so "Please welcome @Principal to the team" notifies them. ## Raw HTML for email For a fully designed template that Pyn must send exactly as written, open the step's **Advanced** tab and set **Email body** to **Raw HTML**. The body becomes an **HTML** field; write your markup there with Liquid output tags for tokens, for example `{{ principal.preferredName }}`. Pyn applies no theme or styling, the HTML is limited to 200,000 characters, invalid Liquid stops the automation publishing, and a name Pyn cannot resolve is left in the email as typed. **Preview** renders the HTML for the employee you pick, and **Send a test to yourself** sends it as a real send would. > **Tip:** Switching between **Composed message** and **Raw HTML** replaces the body, so copy anything you want to keep first. ## Related - [Tokens](https://support.pynhq.com/flows/steps/reference-tokens/) for every token and its fallback. - [Insert media in a message](https://support.pynhq.com/library/media/insert-media-in-a-message/) for image sizes and the virus scan. - [Add a button to a message](https://support.pynhq.com/flows/steps/add-a-button-to-a-message/) for Link Button, Link To Library Content and Embed Form. - [Preview and send a test](https://support.pynhq.com/flows/steps/preview-and-send-a-test/) to check the result before publishing. ## Related Intercom articles - [Format Your Message (Pyn 2)](https://intercom.help/pyn/en/articles/16814757-format-your-message-pyn-2) — replaces - [Mention the Principal in Slack Messages and Channels (Pyn 2)](https://intercom.help/pyn/en/articles/16814823-mention-the-principal-in-slack-messages-and-channels-pyn-2) — replaces - [Embed a YouTube Video (Pyn 2)](https://intercom.help/pyn/en/articles/16857906-embed-a-youtube-video-pyn-2) — replaces - [Add visual content to your message (Pyn 2)](https://intercom.help/pyn/en/articles/13872876-add-visual-content-to-your-message-pyn-2) — draws on - [Format your Pyn (Pyn 1)](https://intercom.help/pyn/en/articles/6005675-format-your-pyn-pyn-1) — Pyn 1 article, kept for reference - [Embed a YouTube video (Pyn 1)](https://intercom.help/pyn/en/articles/6010960-embed-a-youtube-video-pyn-1) — Pyn 1 article, kept for reference - [Add a mailto link](https://intercom.help/pyn/en/articles/8214468-add-a-mailto-link) — Pyn 1 article, kept for reference --- # Invite to a calendar event Source: https://support.pynhq.com/flows/steps/invite-to-a-calendar-event/ > Add the employee, or their manager or buddy, to a recurring Google or Outlook calendar event from a step, such as the weekly new-starter welcome or a 1:1. Every new starter is meant to join the Thursday welcome session, and every new manager the monthly managers' forum. An **Invite to Calendar Event** step sends the calendar invitation for you, to the right occurrence, when the employee reaches that point in the flow. ## Before you start - A calendar is connected under **Settings**, **Calendars**, through [Google Workspace](https://support.pynhq.com/integrations/google-workspace/) or [Microsoft 365](https://support.pynhq.com/integrations/microsoft-365/). Pyn lists the recurring events on that calendar. - The event already exists on the connected calendar. ## Steps 1. In Pyn, open **Flows** in the left navigation, select **Automations**, then the automation. 2. Select **Add a step**, then **Invite to Calendar Event** under **Tasks & Activities**. 3. Under **Schedule**, choose when the invitation is sent, relative to the reference date. This is when the invite goes out, not when the meeting is. 4. Under **To**, choose who is invited: **Employee**, **Buddy**, **HRBP**, **Manager** or **Skip-level Manager**. 5. Under **Event**, select **Select a calendar event** and pick the event from the connected calendar. 6. Under **Invite to:**, choose which occurrence they are invited to: **Next occurrence after the scheduled send time**, **Next occurrence after the reference date**, or **All occurrences**. 7. Select **Publish** on the automation. > **Tip:** For an onboarding session, **Next occurrence after the reference date** invites the starter to the first session on or after their start date even if the invitation is sent a week early. For an ongoing forum, **All occurrences** adds them to the series. ## What you should see The step card shows the event's name. When it runs, the invitation arrives in the recipient's calendar from the connected account and the event on that calendar lists them as a guest. Under [Enrollments](https://support.pynhq.com/activity/enrollments/) the step's delivery reads **Invite To:** with the event and the occurrence. If the series has been deleted from the calendar, the delivery reports **Event Not Found**. ## Related - [Google Workspace](https://support.pynhq.com/integrations/google-workspace/) and [Microsoft 365](https://support.pynhq.com/integrations/microsoft-365/) to connect a calendar and choose which one Pyn uses. - [Schedule a step](https://support.pynhq.com/flows/steps/schedule-a-step/) for the send-time options. - [Delivery statuses](https://support.pynhq.com/flows/steps/reference-delivery-statuses/) for what each status means. ## Related Intercom articles - [Integrating Pyn with Google Calendar (Pyn 2)](https://intercom.help/pyn/en/articles/13401726-integrating-pyn-with-google-calendar-pyn-2) — replaces --- # Post to a channel Source: https://support.pynhq.com/flows/steps/post-to-a-channel/ > Announce a new starter, an anniversary or an event in a public Slack channel from a step, with the employee mentioned by name. Some messages are for everyone: "Please welcome Priya, who starts in Sales today." A **Post to Channel** step posts once to a public Slack channel on the enrolled employee's behalf, so the whole team hears about the moment. ## Before you start - Slack is connected and **Post to Channel** is enabled for your workspace. If the row is greyed in the **Add Step** dialog, contact Pyn support. - The sender is a member of the channel. **Pyn Bot** has to be invited to a channel before it can post there (`/invite @Pyn` in Slack); a personal sender has to have joined it. ## Steps 1. In Pyn, open **Flows** in the left navigation, select **Automations**, then the automation. 2. Select **Add a step**, then **Post to Channel** under **Communication**. 3. Under **Schedule**, choose the day and time. A team announcement usually goes **on the day of** at a time when the team is online, so choose the workspace time zone rather than the recipient's. 4. Under **From**, choose **Pyn Bot** or a personal Slack sender. The **To** list is the channels that sender can see. 5. Under **To**, choose the channel. If the list reads **No results**, the sender is in no channel Pyn has synced; invite it to one and wait for the hourly refresh. 6. Write the post. Select **Insert widget**, then **Mention Principal** to insert an **@Principal** pill that becomes a real Slack mention of the employee when it posts. 7. Select **Preview**, then **Send a test to yourself**: the test comes to you as a direct message rather than to the channel. Select **Publish** on the automation. > **Note:** Changing the sender clears the channel, because channels belong to one Slack workspace and one sender's membership. The drawer then reads **Changing the sender cleared the channel. Pick one to publish this step.** ## What you should see The step card shows the channel name with a `#`. Each time an employee reaches the step, one post appears in the channel from the sender you chose, with the employee mentioned. Under [Messages](https://support.pynhq.com/activity/messages/) the delivery's recipient is the channel. Reminders and escalations are not offered on a channel post, because anyone in the channel can act on it. ## Related - [Add a direct message step](https://support.pynhq.com/flows/steps/add-a-direct-message-step/) for a message to one person. - [Add to a channel](https://support.pynhq.com/flows/steps/add-to-a-channel/) to put the employee into the channel first. - [Deactivate link and media unfurling](https://support.pynhq.com/flows/steps/deactivate-unfurling/) to keep a channel post compact. - [Slack](https://support.pynhq.com/integrations/slack/) for connecting Slack and inviting Pyn Bot. ## Related Intercom articles - [Send to Slack Channel (Pyn 2)](https://intercom.help/pyn/en/articles/16755625-send-to-slack-channel-pyn-2) — replaces - [Send to a Slack channel (Pyn 1)](https://intercom.help/pyn/en/articles/6185396-send-to-a-slack-channel-pyn-1) — Pyn 1 article, kept for reference - [Send to a Teams channel (Pyn 1)](https://intercom.help/pyn/en/articles/9621416-send-to-a-teams-channel-pyn-1) — Pyn 1 article, kept for reference --- # Preview and send a test Source: https://support.pynhq.com/flows/steps/preview-and-send-a-test/ > Read a step as a particular employee, with tokens, sender and recipient resolved, then send it to yourself in Slack or email before you publish. A message that reads well in the editor can still surprise you once the tokens are filled in. **Preview** shows the step for a real employee, and **Send a test to yourself** delivers it to your own inbox or Slack exactly as a real send would. ## Before you start - The step has a sender under **From**. Without one the test button is disabled and reads **Set a sender to send a test** on hover. - Your own user is matched to an employee record (same work email), because the test is sent to that employee. ![Preview renders the step for an employee you pick, and sends a test to you.](https://support.pynhq.com/media/flows/steps/flows-steps-preview-modal.png) ## Steps 1. In Pyn, open the automation from **Flows**, **Automations**, and select the step. 2. Select **Preview** (the eye icon in the toolbar, or the **Preview** button under a raw HTML body). Pyn waits for your latest edit to save, then opens the **Preview** dialog. 3. Under **Preview for principal**, select an employee. Current employees and upcoming joiners are offered, so you can check a pre-start message against someone who has not started. The header shows the resolved recipient, for example the manager, and the sender a conditional sender picks for them. 4. Read the message with that employee's tokens filled in. Select **Clear recipient** to go back to the raw template. 5. Select **Send a test to yourself**. A toast reads **Test sent** when it is on its way, or **Could not send test** if the sender cannot send. 6. Open your inbox or Slack and read it as the recipient would. > **Note:** A Slack test always comes from **Pyn Bot**, whichever Slack sender the step uses, unless the step uses a conditional sender, in which case it comes from the sender the rules pick for you. An email test comes from the step's sender. ## What you should see The test is marked as a test: it does not appear in [Messages](https://support.pynhq.com/activity/messages/) counts and never triggers a flow from a form inside it. If an email preview reads **Could not preview this email for the employee**, the raw HTML has Liquid that fails for that person; fix it before publishing. To test timing as well as content, enrol yourself with **Flag as Test**: see [Manually enroll employees](https://support.pynhq.com/flows/automations/manually-enroll-employees/). ## Related - [Choose a sender](https://support.pynhq.com/flows/steps/choose-a-sender/) if the test button is disabled. - [Manually enroll employees](https://support.pynhq.com/flows/automations/manually-enroll-employees/) for a test enrollment that runs the whole flow. - [Tokens](https://support.pynhq.com/flows/steps/reference-tokens/) for the fallback text you see when a value is missing. ## Related Intercom articles - [Preview and Send Your Pyn](https://intercom.help/pyn/en/articles/6005696-preview-and-send-your-pyn) — Pyn 1 article, kept for reference --- # Raise a ticket Source: https://support.pynhq.com/flows/steps/raise-a-ticket/ > Create a Jira issue from a step, such as an IT equipment request a week before a start date or an access-removal ticket on someone's last day. IT, facilities and security often work from tickets rather than messages. A **Raise Ticket** step creates a Jira issue in a project of your choice when the employee reaches it, with the employee's details written into the summary and description. ## Before you start - Jira is connected under **Settings**, **Integrations**, and the project you want has issue type sync turned on. Only those projects appear in the step. See [Jira](https://support.pynhq.com/integrations/jira/). - **Raise Ticket** is enabled for your workspace. If the row is greyed in the **Add Step** dialog, contact Pyn support. ## Steps 1. In Pyn, open **Flows** in the left navigation, select **Automations**, then the automation. 2. Select **Add a step**, then **Raise Ticket** under **Tasks & Activities**. 3. Under **Schedule**, choose when the issue is created. For equipment, **1 week before** the start date gives IT time; for offboarding, **on the day of** the end date. 4. Under **Project**, choose the Jira project. Under **Issue type**, choose the type; the list comes from the project you picked. 5. In **Summary**, write a single line such as `Laptop for @principal.name, starting @principal.startDate`. Type `@` to insert tokens; only `principal` tokens are offered, because a ticket has no recipient. 6. In **Description**, write what the assignee needs: the employee's role, location and manager, using tokens such as `@principal.jobTitle`, `@principal.location` and `@principal.managerName`. Lists and links are kept; images are not. 7. Select **Publish** on the automation. > **Note:** A ticket step has no **To** and no audience of its own beyond the step's **Audience** tab. If the step's audience excludes the employee, no issue is created. ## What you should see The step card shows the project and issue type. When it runs, the issue appears in Jira with the summary and description filled in, and the delivery under [Enrollments](https://support.pynhq.com/activity/enrollments/) links to it. There is nothing to click or action, so no reminders or escalations are offered. ## Related - [Jira](https://support.pynhq.com/integrations/jira/) to connect Jira and turn on issue type sync for a project. - [Schedule a step](https://support.pynhq.com/flows/steps/schedule-a-step/) for the timing options. - [Tokens](https://support.pynhq.com/flows/steps/reference-tokens/) for the `principal` tokens you can use. ## Related Intercom articles - [Create a Jira Ticket in Pyn Automations](https://intercom.help/pyn/en/articles/9359078-create-a-jira-ticket-in-pyn-automations) — Pyn 1 article, kept for reference --- # Schedule a step Source: https://support.pynhq.com/flows/steps/schedule-a-step/ > Set when a step sends: the offset from the reference date, the time of day, the recipient's or the workspace's time zone, the days of the week, what happens on a weekend and whether an overdue step is skipped. In an automation every step is timed from the enrollment's **reference date**, the start date, anniversary or other date the trigger anchors on. In a campaign a step has a calendar date instead. Either way you also choose a time of day, a time zone and the days on which Pyn is allowed to deliver. ## Before you start - You know the automation's reference date. [Configure a date trigger](https://support.pynhq.com/flows/automations/configure-a-date-trigger/) explains how the trigger sets it. - Employees have a time zone in [Directory](https://support.pynhq.com/directory/employees/) if you plan to use **Recipient Time Zone**; without one Pyn uses the workspace time zone for that person. ![The Schedule menu offers presets relative to the reference date, and Custom for any other offset.](https://support.pynhq.com/media/flows/steps/flows-steps-schedule-menu.png) ## Steps 1. In Pyn, open the automation from **Flows**, **Automations**, and select the step. On **Configure**, the first row is the schedule. 2. Select **Schedule** and choose an offset: **14 days before**, **7 days before**, **3 days before**, **1 day before**, **on the day of**, **1 day after**, **7 days after**, **14 days after**, **30 days after**, **60 days after**, **90 days after** or **180 days after**. For anything else choose **Custom** and enter an amount, a unit (**Days**, **Weeks**, **Months**, **Years**) and **Before** or **After**. 3. In **at**, set the time of day. The picker moves in 5-minute steps; 10:00 is the default. 4. In **in**, choose **Recipient Time Zone** or a named time zone. Recipient time zone means a 10:00 email reaches London at 10:00 London time and Austin at 10:00 Austin time. 5. Select the **Advanced** tab. Under **Days of Week**, keep **Weekdays Only** or select **All Days**, or tick the days yourself. 6. Under **On Non-Delivery Days**, choose what happens when the computed day is not one you ticked: **Deliver anyway**, **Deliver on previous delivery day** (the default) or **Deliver on next delivery day**. 7. Tick **Skip if overdue at enrollment** if a step whose day has already passed when someone enrols should be skipped rather than sent straight away. > **Caution:** A step scheduled before the start date only reaches people whose record arrives in Pyn before that day, and only if the step's audience includes **Joiner**. The card warns **Sent before the start date but the joiner isn't in the audience.** when it does not. See [Handle late enrollments](https://support.pynhq.com/flows/automations/handle-late-enrollments/). ## How Pyn works out the send time Pyn adds the offset to the reference date, moves the day backwards or forwards if it falls on a day you did not tick, then sets the time of day in the chosen time zone. "Previous delivery day" walks back to the nearest allowed day even when that is still after the reference date; if no allowed day exists within a week either side, the step is delivered anyway. The reference date itself is a calendar date with no time, so the step's **at** time is the only clock involved. ## What you should see The step card shows the offset, for example **7 days before**. Under [Enrollments](https://support.pynhq.com/activity/enrollments/), each enrollment's step shows the exact date and time Pyn computed for that person, and its delivery reads **Scheduled** until then. On a campaign, the same fields appear as **Scheduled date**, **at** and **in**; drag the step on the calendar to move the date, see [Reschedule a step on the calendar](https://support.pynhq.com/flows/campaign-templates/reschedule-a-step-on-the-calendar/). ## Related - [Configure a date trigger](https://support.pynhq.com/flows/automations/configure-a-date-trigger/) for where the reference date comes from. - [Handle late enrollments](https://support.pynhq.com/flows/automations/handle-late-enrollments/) for records that arrive after a step's day. - [Reschedule a step on the calendar](https://support.pynhq.com/flows/campaign-templates/reschedule-a-step-on-the-calendar/) for campaign steps. ## Related Intercom articles - [Schedule Messages (Pyn 2)](https://intercom.help/pyn/en/articles/16857955) — replaces - [Time and schedule your Pyn](https://intercom.help/pyn/en/articles/6005691-time-and-schedule-your-pyn) — Pyn 1 article, kept for reference --- # Set a step audience Source: https://support.pynhq.com/flows/steps/set-a-step-audience/ > Send one step to only some of the people enrolled in an automation, for example a benefits email to US employees only, without splitting the flow in two. An automation's audience decides who enrols. A step's audience decides which of those people get that particular step. Use it when most of a flow is the same for everyone and one or two steps are not. ## Before you start - The groups you want to include or exclude exist in [Employee Groups](https://support.pynhq.com/directory/employee-groups/). ![The Audience tab narrows which enrolled employees receive this step.](https://support.pynhq.com/media/flows/steps/flows-steps-audience-tab.png) ## Steps 1. In Pyn, open the automation from **Flows**, **Automations**, and select the step. 2. Select the **Audience** tab. 3. Under **Lifecycle**, keep the stages the recipient can be in: **Current**, **Joiner**, **On leave**, **Terminated**. A new step starts with **Current** only. Add **Joiner** on any step that sends before the start date. 4. Under **Included**, add groups so that only their members get this step. Groups with the same parent match any one of them, and groups with different parents must all match; see [How audiences match](https://support.pynhq.com/directory/employee-groups/how-audiences-match/). Leave it empty to include everyone enrolled. 5. Under **Excluded**, add groups whose members never get this step. Exclusion wins over inclusion. 6. Read the **Audience Preview** under the fields to see who matches today, then close the drawer. The step saves as you go. > **Note:** The audience filters employee recipients only. A channel post or a custom email recipient is sent whatever the audience says, because it is not about one employee. ## What you should see The step card carries a filter badge when it has an audience narrower than the automation's. If you empty **Lifecycle**, the card warns **The audience is empty, so this step is never sent.** Under [Enrollments](https://support.pynhq.com/activity/enrollments/), an enrolled employee outside the step's audience shows the step as skipped with no delivery; someone who leaves an included group while the step is still scheduled has it stopped. ## Related - [Set the audience](https://support.pynhq.com/flows/automations/set-the-audience/) for the automation-level audience that decides who enrols. - [Employee Groups](https://support.pynhq.com/directory/employee-groups/) to create the groups you include or exclude. - [Schedule a step](https://support.pynhq.com/flows/steps/schedule-a-step/) for the Joiner warning on pre-start steps. ## Related Intercom articles - [Create Conditional Sections](https://intercom.help/pyn/en/articles/6005747-create-conditional-sections) — Pyn 1 article, kept for reference - [Use filters and conditional sections to target your content](https://intercom.help/pyn/en/articles/6005722-use-filters-and-conditional-sections-to-target-your-content) — Pyn 1 article, kept for reference --- # Delivery statuses Source: https://support.pynhq.com/flows/steps/reference-delivery-statuses/ > What each status on a message, a step and an enrollment means, from Draft and Scheduled through Delivered, Clicked and Actioned to Bounced, Invalid and Skipped, and what you can do about each. A step in an enrollment produces one **delivery** per recipient. The delivery carries the status you see in [Messages](https://support.pynhq.com/activity/messages/) and on an enrollment's step list; the step and the enrollment summarise their deliveries. ![Every delivery carries a status chip in Activity, All Messages.](https://support.pynhq.com/media/flows/steps/flows-steps-delivery-statuses.png) ## Delivery statuses | Status | Meaning | What to do | | --- | --- | --- | | **Draft** | Created but held, because the enrollment is paused for verification or the step was paused. | Unpause the enrollment in **Needs Review**, or schedule the step. | | **Scheduled** | Waiting for its send time. | Nothing. Open it to see the date and time computed for this recipient. | | **Sending** | Being handed to Slack, the mailbox or the calendar right now. | Nothing. | | **Delivered** | Sent and accepted by the channel. | Nothing. | | **Clicked** | Delivered, and the recipient opened a link or button in it. | Nothing. | | **Actioned** | Delivered, and the recipient used a tracked button or submitted the embedded form. Reminders and escalations stop. | Nothing. | | **Bounced** | The mailbox or Slack rejected it, for example an unknown address. | Fix the address in your HRIS or [Directory](https://support.pynhq.com/directory/employees/), then select **Resend** on the delivery. | | **Bounced*** | Bounced and since resent. | Follow the resent delivery. | | **Invalid** | There is no deliverable address or account for this recipient, the recipient left the step's audience, or the enrollment was stopped. | Check the recipient's email or Slack membership; an invalid delivery is never sent. | | **Paused** | Held by a pause on the step. | Schedule the step again from the enrollment. | | **None** | No status; the delivery was never scheduled. | Open the enrollment to see why. | A bounced delivery also shows a banner, **This message bounced when sending**, with the **Resend** button. ## Statuses in the Actions view [Actions](https://support.pynhq.com/activity/actions/) shows only deliveries with a tracked button or form, and reads them from the recipient's point of view: **Actioned** once they acted, **Clicked** when they opened something without completing it, **Unactioned** until then. ## Step statuses On an enrollment's step list each step summarises its deliveries: | Status | Meaning | | --- | --- | | **Draft** | The step is held unscheduled. | | **Scheduled** | Deliveries are waiting for their send time. | | **Sending** | At least one delivery is going out. | | **Sent** | Every delivery is complete. | | **Bounced** | At least one delivery bounced. | | **Error** | The step failed; the enrollment shows the reason. | | **Skipped** | The step came due with nobody to send to, or its deliveries were cancelled when the enrollment stopped. | | **Invalid** | The step's date cannot be worked out, usually a relative schedule with no reference date. | | **No recipient** | Before its due date, when no recipient resolves for this employee so far, for example a buddy who has not been assigned. | ## Enrollment banners An enrollment with trouble carries a tooltip on its progress bar: **This enrollment has bounced messages**, **This enrollment has invalid messages**, or **This enrollment has bounced and invalid messages**. A finished enrollment with a bounce reads **Completed with bounces**. ## Related - [Messages](https://support.pynhq.com/activity/messages/) for every delivery in one table. - [Actions](https://support.pynhq.com/activity/actions/) for who has acted on a tracked ask. - [Enrollments](https://support.pynhq.com/activity/enrollments/) for unpausing, stopping and resending. - [Add reminders](https://support.pynhq.com/flows/steps/add-reminders/) for what Actioned switches off. ## Related Intercom articles - [Excluded messages](https://intercom.help/pyn/en/articles/7138026-excluded-messages) — Pyn 1 article --- # Step options Source: https://support.pynhq.com/flows/steps/reference-step-options/ > Every field a step can carry, by step type, in plain words: schedule, audience, recipient, sender, message, reminders, escalations and the type-specific settings for calendar, channel and ticket steps. A step is stored as a small document inside its automation version or campaign. The tables name each field as the app labels it, with the value it holds. The same shape is what the MCP tools and exports use, so it is also the reference for anyone automating Pyn. ## Fields on every step | Field | Label in the app | Values | | --- | --- | --- | | `id` | | A unique id Pyn assigns. | | `title` | Step title | Free text; empty shows the step type. | | `type` | Chosen in **Add Step** | `send-message`, `send-channel-message`, `invite-to-calendar-event`, `send-channel-invite`, `raise-ticket`, `add-message-to-context`; see below. | | `state` | **Enabled** / **Disabled** | `enabled` or `disabled`. A disabled step never sends. | | `schedule.type` | | `relative` in an automation, `absolute` in a campaign. | | `schedule.offset` | **Schedule** | For `relative`: a duration such as `{ "days": -7 }` or `{ "weeks": 2 }`; negative is before the reference date. | | `schedule.date` | **Scheduled date** | For `absolute`: a calendar date, `2026-03-02`. | | `schedule.hour`, `schedule.minute` | **at** | 0 to 23 and 0 to 59. | | `schedule.timezone` | **in** | `recipient`, or a time zone name such as `Australia/Sydney`. | | `schedule.deliverOn` | **Days of Week** | One or more of `MONDAY` to `SUNDAY`. | | `schedule.onSkippableDate` | **On Non-Delivery Days** | `deliver-anyway`, `deliver-before` (previous delivery day) or `deliver-after` (next delivery day). | | `audience` | **Audience** tab | `lifecycle` (any of `current`, `joiner`, `leave`, `terminated`), `includeGroups`, `excludeGroups` (group ids). Absent means current employees only. | | `skipIfOverdue` | **Skip if overdue at enrollment** | `true` to skip a step whose date has passed when someone enrols. | | `reminders` | **Reminders** | Up to three in the step drawer (**Add reminder** disappears at three), each with `offset` (days after send) and `enabled`. The schema accepts up to ten, so a step written through the API or an MCP server can carry more. | ## Message steps `send-message` (a direct message or email) and `send-channel-message` (a channel post) add: | Field | Label | Values | | --- | --- | --- | | `medium` | Fixed by the step type | `slack` or `email`. `teams` and `sms` exist in the schema but no step in the dialog creates them. | | `sender` | **From** | A sender id. Absent means the workspace default. | | `conditionalSender` | **From** | A conditional sender id. A step has one of `sender` or `conditionalSender`, never both. | | `recipient` | **To** | A recipient, see below. A channel post's recipient is a channel. | | `ccRecipients` | **Cc** | Up to three recipients. | | `subject` | **Subject** | A single-line document, email only. | | `message` | The editor | The composed message. | | `body`, `html` | **Email body** | `body: "html"` with the Liquid HTML in `html` for a Raw HTML email; otherwise the composed `message` is the body. Email only. | | `deactivateUnfurlLinks`, `deactivateUnfurlMedia` | **Advanced** | `true` to switch off Slack previews. | | `escalations` | **Escalations** | Up to three, each with `offset` (days after send), `recipient` (any recipient except a group) and `enabled`. | ## Recipients | Shape | Label | Fields | | --- | --- | --- | | Relative | **Employee**, **Manager**, **Skip-level Manager**, **Buddy**, **HRBP** | `type: "relative"`, `recipient` one of `employee`, `manager`, `skip-manager`, `buddy`, `hrbp`; optional `address` of `primary` or `personal`. | | A person | **People** | `type: "employee"`, `recipient` the employee id, optional `address`. | | A group | **Groups** (campaign steps) | `type: "group"`, `recipient` the group id. Every member receives the step. | | A channel | **Channels** | `type: "channel"`, `recipient` the channel id. | | A custom email address | **Custom Email Recipients** | `type: "custom-email"`, `recipient` the custom email recipient id. | ## Other step types | Type | Label in **Add Step** | Extra fields | | --- | --- | --- | | `invite-to-calendar-event` | **Invite to Calendar Event** | `recipient`; `eventId` (the calendar event); `inviteTo` of `next-occurrence`, `next-occurrence-reference-date` or `all-occurrences`. | | `send-channel-invite` | **Add to Channel** | `sender`; `recipient` (who is added); `channel` (the channel id); `medium: "slack"`. | | `raise-ticket` | **Raise Ticket** | `integration` (the Jira connection), `project`, `issueType`, `summary` (single line), `description`; `medium: "jira"`. No recipient. | | `add-message-to-context` | **Add Message to Employee Context** and the other **AI & Context** rows | `recipient` (whose context). | | `send-acknowledgement`, `send-content`, `send-content-link` | Not offered | Older message types still accepted in existing automations; new steps use buttons in a `send-message` step instead. | ## Campaign template milestones A campaign template is a list of milestones, each with `id`, `title`, `emoji`, `color` (a hex colour), `date` (a calendar date) and `steps` (steps as above, with absolute schedules). Enrolling a milestone turns it into a campaign with that date as its reference date. See [Campaign templates](https://support.pynhq.com/flows/campaign-templates/). ## Related - [Schedule a step](https://support.pynhq.com/flows/steps/schedule-a-step/) for the schedule fields as the app shows them. - [Choose recipients and Cc](https://support.pynhq.com/flows/steps/choose-recipients-and-cc/) for the recipient shapes. - [Tokens](https://support.pynhq.com/flows/steps/reference-tokens/) for what goes inside `message` and `html`. - [For agents](https://support.pynhq.com/for-agents/) for the machine-readable outputs of this site. --- # Tokens Source: https://support.pynhq.com/flows/steps/reference-tokens/ > Every token you can put in a message, what Pyn fills it with, the text it falls back to when the value is missing, and how dates and names are formatted. A token is a marker Pyn replaces when a message is formatted for one recipient. Type `@` in the editor to insert one; in a Raw HTML email write it as a Liquid tag, `{{ principal.preferredName }}`. `principal` tokens are about the enrolled employee, `recipient` tokens about the person receiving the message; in a message to the employee the two are the same person. When a value is missing, the token renders its fallback text, shown in the tables below, unless you set your own fallback on the token. Names, departments and job titles come from the employee record in [Directory](https://support.pynhq.com/directory/employees/). ## Tokens in the editor | Token | Value | Fallback | | --- | --- | --- | | `date.reference` | The enrollment's reference date | reference date | | `principal.preferredName` | Preferred name, else the first word of the display name | Employee | | `principal.firstName` | First word of the display name (or legal name) | Employee | | `principal.preferredFullName` | Preferred name plus the surname from the display name | Employee | | `principal.legalName` | Legal name, else display name | Employee | | `principal.jobTitle` | Job title | Job Title | | `principal.department` | Department | department | | `principal.location` | Location | location | | `principal.startDate` | Start date | start date | | `principal.startDate.dayAfter` | The day after the start date | start date | | `principal.startDate.nextBusinessDay` | The next weekday after the start date | start date | | `principal.tenure` | Whole years since the tenure date (or start date) at send time: "1 year", "3 years" | tenure | | `principal.birthday` | Birthday as day and month, for example "28 Jul" | Birthday | | `principal.nextBirthday` | The next birthday on or after the reference date | next Birthday | | `principal.nextAnniversary` | The next start-date anniversary on or after the reference date | next Anniversary | | `principal.managerName` | Manager's display name | Manager | | `principal.managerPreferredName` | Manager's preferred name | Manager | | `principal.managerEmail` | Manager's work email | manager email | | `principal.buddy.name` | Buddy's display name | Buddy | | `principal.buddy.preferredName` | Buddy's preferred name | Buddy | | `principal.buddy.preferredFullName` | Buddy's preferred name and surname | Buddy | | `principal.buddy.email` | Buddy's work email | buddy email | | `principal.buddy.startDate.nextBusinessDay` | The weekday after the buddy's start date | start date | | `principal.hrbp.name` | HR business partner's display name | HRBP | | `principal.hrbp.preferredName` | HR business partner's preferred name | HRBP | | `principal.hrbp.preferredFullName` | HR business partner's preferred name and surname | HRBP | | `principal.hrbp.email` | HR business partner's work email | HRBP email | | `recipient.preferredName`, `recipient.firstName`, `recipient.preferredFullName`, `recipient.legalName` | As above, for the recipient | Employee | | `recipient.department`, `recipient.location` | As above, for the recipient | department, location | | `recipient.startDate` | The recipient's start date | start date | | `recipient.birthday`, `recipient.nextBirthday`, `recipient.nextAnniversary` | As above, for the recipient | Birthday, next Birthday, next Anniversary | | `recipient.surveyLink` | A link stored on the recipient's record; renders as a link, or nothing | | The **Subject** of an email offers a smaller set: the preferred name, birthday, next birthday and next anniversary of the principal and the recipient. A Jira ticket's **Summary** and **Description** offer `principal` tokens only. ## Tokens for Raw HTML A Raw HTML email resolves every token above by its Liquid name, plus these: | Token | Value | Fallback | | --- | --- | --- | | `company.name` | The workspace's company name | company | | `date.today` | The send date | today | | `date.tomorrow` | The day after the send date | tomorrow | | `principal.name`, `recipient.name` | Display name | Employee | | `principal.email`, `recipient.email` | Work email | email address | | `principal.personalEmail`, `recipient.personalEmail` | Personal email | personal email address | | `principal.endDate`, `recipient.endDate` | Termination date | end date | | `principal.city`, `principal.country`, `recipient.city`, `recipient.country` | City and country | city, country | A Liquid name Pyn does not know is left in the email as typed. ## Custom and employee-field tokens - `custom.`: a column from the mail-merge spreadsheet used to enrol the person, named in camel case (`Start Location` becomes `custom.startLocation`). Insert it with **Insert widget**, **Custom Token**. Falls back to the column name. See [Enroll from a spreadsheet](https://support.pynhq.com/flows/automations/enroll-from-a-spreadsheet/). - Employee field tokens: any field on the employee record, chosen with **Insert token**, **Employee Field**, applied to the principal or the recipient, with an optional fallback you type. Without one, a missing value renders as nothing. ## Formatting - Dates render in the recipient's locale as weekday, day, month and year, for example "Thu, 22 Oct 2026". Birthdays render as day and month. - `date.today` and `date.tomorrow` are taken from the delivery's scheduled time; in a preview with no send time they show their fallback. - Tenure is rounded to whole years, so someone eleven months in reads "1 year". - A token inside a bold or coloured run keeps that formatting. ## Names Pyn no longer fills The following names from Pyn Classic are accepted but render as nothing: `date.nextBusinessDay`, every `manager.*` token (use `principal.managerName`, `principal.managerPreferredName` and `principal.managerEmail`), `principal.homeAddress`, `principal.employeeNumber`, `principal.employmentType`, `principal.mobilePhone`, `principal.brand`, `principal.buddy.jobTitle`, `principal.buddy.location`, `principal.buddy.startDate`, `principal.buddy.startDate.dayAfter`, `principal.returnsFromLeaveOn`, the `recipient` equivalents of those, and `recipient.startDate.dayAfter` and `recipient.startDate.nextBusinessDay`. ## Related - [Format a message](https://support.pynhq.com/flows/steps/format-a-message/) for inserting tokens, custom tokens and employee fields. - [Choose recipients and Cc](https://support.pynhq.com/flows/steps/choose-recipients-and-cc/) for who principal and recipient are on each step. - [Enroll from a spreadsheet](https://support.pynhq.com/flows/automations/enroll-from-a-spreadsheet/) for custom token columns. ## Related Intercom articles - [List of supported tokens](https://intercom.help/pyn/en/articles/6024180-list-of-supported-tokens) — Pyn 1 article - [Add personalization tokens](https://intercom.help/pyn/en/articles/6010962-add-personalization-tokens) — Pyn 1 article - [Personalize your content using tokens and custom senders](https://intercom.help/pyn/en/articles/6005713-personalize-your-content-using-tokens-and-custom-senders) — Pyn 1 article - [Personalize your Buddy Pyns with Tokens](https://intercom.help/pyn/en/articles/6023197-personalize-your-buddy-pyns-with-tokens) — Pyn 1 article --- # Activity Source: https://support.pynhq.com/activity/ > Activity is the record of what Pyn has sent and what it is about to send: every enrollment, every step, every delivery, and the actions people were asked to complete. Flows decide what Pyn does; Activity shows what it did. When an automation enrols someone, Activity gets an enrollment with one step per message. When a step sends, each recipient gets a delivery with its own status, from Scheduled through Delivered to Clicked or Actioned. Open Activity to check that a new starter is getting their welcome sequence, to see who has not finished a form, or to fix a message that bounced. Everyone in the workspace can open Activity. Stopping an enrollment needs the Admin or Owner role. ![Activity > Enrollments shows who is in each automation and how far along they are.](https://support.pynhq.com/media/activity/enrollments/activity-enrollments-table.png) ## Concepts - **Enrollment**: one employee in one automation, or one run of a campaign. It carries a **Reference** date that every step is scheduled from, and a status of **Paused**, **Pending** or **Complete**. - **Step**: one message or action inside an enrollment, in the order it sends. A step is **Draft**, **Scheduled**, **Sending**, **Complete** or **Error**. - **Delivery**: one step reaching one recipient on one channel: an email, a Slack or Teams message, a calendar invite, a channel invite or a Jira ticket. Deliveries carry the engagement: **Delivered**, **Clicked**, **Actioned**, **Bounced**. - **Needs Review**: enrollments created in Verify Mode wait here, paused, until you unpause their messages. - **Actions**: deliveries that asked the recipient to do something, such as acknowledge a message or complete a form, with whether they have done it. ## Views | View | What it lists | | --- | --- | | **Dashboard** | Delivered count, click rate and action rate for a date range, grouped by automation or step. Shown when the Dashboard is enabled for your workspace. | | **Enrollments** > **All Enrollments** | Every automation and campaign enrollment, newest first, with its progress. | | **Enrollments** > **Needs Review** | Paused enrollments waiting to be verified. | | **Enrollments** > **Campaigns** | A calendar of campaign enrollments and their steps. | | **Messages** > **All Messages** | Every step, with its sender, recipients, status and date. | | **Messages** > **Actions** | Every delivery that asked for an action, with whether it was actioned. | ## What you can do here - Check progress: [Open an enrollment](https://support.pynhq.com/activity/enrollments/open-an-enrollment/), [Read the Dashboard](https://support.pynhq.com/activity/read-the-dashboard/). - Fix things: [Review and unpause enrollments](https://support.pynhq.com/activity/enrollments/review-and-unpause-enrollments/), [Stop an enrollment](https://support.pynhq.com/activity/enrollments/stop-an-enrollment/), [Resend a bounced message](https://support.pynhq.com/activity/messages/resend-a-bounced-message/), [Pause a scheduled message](https://support.pynhq.com/activity/messages/pause-a-scheduled-message/). - Trace a message: [Read a message as it was sent](https://support.pynhq.com/activity/messages/read-a-message-as-sent/), [Reschedule a campaign step](https://support.pynhq.com/activity/enrollments/reschedule-a-campaign-step/). - Follow up: [Track actions](https://support.pynhq.com/activity/actions/track-actions/) and export them. - [Reference: statuses](https://support.pynhq.com/activity/enrollments/reference-enrollment-statuses/): What Paused, Pending, Scheduled, Bounced, Clicked and every other status means, and what moves one to the next. - [Enrollments](https://support.pynhq.com/activity/enrollments/): All Enrollments, Needs Review and the Campaigns calendar. ## Where it is in the app Open **Activity** in the primary navigation on the left of every page, or open `/activity/home`. The views are listed down the left under **Dashboard**, **Enrollments** and **Messages**; it lands on **All Enrollments**. ## Related - [Enrollments](https://support.pynhq.com/activity/enrollments/) for who is in each flow and how far along they are. - [Messages](https://support.pynhq.com/activity/messages/) for each step and delivery. - [Actions](https://support.pynhq.com/activity/actions/) for what people were asked to do. - [Automations](https://support.pynhq.com/flows/automations/) for the flows that create enrollments. ## Related Intercom articles - [Manually Enroll Employees in a Flow (Pyn 2)](https://intercom.help/pyn/en/articles/11506664-manually-enroll-employees-in-a-flow-pyn-2) - [Manage Bounced Messages in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/12045027-manage-bounced-messages-in-pyn-pyn-2) - [Analyze your Employee Journey with Metrics (Pyn 2)](https://intercom.help/pyn/en/articles/12062347-analyze-your-employee-journey-with-metrics-pyn-2) --- # Actions Source: https://support.pynhq.com/activity/actions/ > Every delivery that asked someone to do something, with who was asked, what for, and whether they have done it. Some steps only inform; others ask. An acknowledgement button, a form to complete or a poll to answer turns a delivery into an action, and Pyn records whether it was done. The Actions view lists those deliveries and nothing else, so you can see at a glance which managers have not confirmed their new starter's first day. ![The Actions view, one row per delivery that asked for something.](https://support.pynhq.com/media/activity/actions/activity-actions-table.png) ## The table | Column | What it shows | | --- | --- | | **Employee** | Who was asked. | | **Action** | The message text, and the enrollment it belongs to. | | **Status** | **Unactioned**, **Clicked** (a link was opened but the action is not done) or **Actioned**. | | **Delivered** | When the message reached them. | | **Actioned** | When they completed it, if they have. | **Filters** offers **Employee**, **Status** and a **Delivered** date range. Informational messages, reminders and test deliveries carry no action and are not listed; an empty workspace reads **No deliveries yet**. ## What you can do here - [Track actions](https://support.pynhq.com/activity/actions/track-actions/): filter to what is outstanding and export the table with those filters. - [Forms](https://support.pynhq.com/flows/forms/) and polls are what most actions ask people to complete. ## Where it is in the app Open **Activity** in the left navigation and select **Actions** under **Messages**. Selecting a row opens the delivery on its step page at `/activity/step//`. ## Related - [Track actions](https://support.pynhq.com/activity/actions/track-actions/) for the filters and the CSV export. - [Forms](https://support.pynhq.com/flows/forms/) for what people are asked to complete. - [Messages](https://support.pynhq.com/activity/messages/) for every step, not only the ones with an action. --- # Track actions Source: https://support.pynhq.com/activity/actions/track-actions/ > List the actions people have been asked to complete, narrow to the ones still outstanding, and export the list with your filters applied. You asked forty managers to confirm a first-day plan and want to know who has not. The Actions view answers that and gives you a CSV to chase from. ![The Actions view, one row per delivery that asked for something.](https://support.pynhq.com/media/activity/actions/activity-actions-table.png) ## Steps 1. In Pyn, open **Activity** in the left navigation, then select **Actions** under **Messages**. 2. Select **Filters**, then **Status**, and tick **Unactioned**. The list narrows to deliveries whose action is not done, including ones where a link was clicked. 3. To look at one person, select **Employee** in **Filters** and pick them. To look at a period, select **Delivered** and choose **Last 30 Days**, **Upcoming 30 Days** or a custom range. 4. Select a row to open the delivery. The step page shows the message they received and, once they act, what they submitted. 5. Back on the list, open the view-type menu (the button that reads **Table**) and select **Export Data**. Pyn downloads a CSV named after the view, containing the rows that match your filters and sort. > **Tip:** A person's outstanding actions are also on their profile: open [Directory](https://support.pynhq.com/directory/employees/read-an-employee-profile/), select them and open the **Activity** tab, where **Outstanding** lists what they have still to do. ## What you should see A table with **Unactioned** and **Clicked** rows only, and a CSV in your downloads with the same rows. When a recipient completes the action, their row's status changes to **Actioned** and the **Actioned** column fills with the time; a reminder on the step, if the flow has one, stops. ## Related - [Read a message as it was sent](https://support.pynhq.com/activity/messages/read-a-message-as-sent/) for the delivery page. - [Read an employee profile](https://support.pynhq.com/directory/employees/read-an-employee-profile/) for one person's outstanding actions. - [Enrollment, step and delivery statuses](https://support.pynhq.com/activity/enrollments/reference-enrollment-statuses/) for Unactioned, Clicked and Actioned. --- # Enrollments Source: https://support.pynhq.com/activity/enrollments/ > An enrollment is one employee in one automation, or one run of a campaign. Open it to see every step, what has sent and what is still to come. When an automation's trigger fires for an employee, or you enrol people by hand, Pyn creates an enrollment: a copy of the automation's steps scheduled from that person's **Reference** date. The enrollment is where you check that the right messages are lined up for the right person, and where you intervene when they are not. ![An enrollment's panel lists its details and every step with a status and date.](https://support.pynhq.com/media/activity/enrollments/activity-enrollments-panel.png) ## The three views - **All Enrollments** lists every automation and campaign enrollment, newest first. Columns: **Moment**, **Principal** (the employee), **Automation** (the published version it runs), **Progress** (sent steps over total, red when a message bounced) and **Reference**. **Filters** narrows by **Automation** or **Moment**. - **Needs Review** lists enrollments that are **Paused** because they were created in Verify Mode. Each row has a **Verify** button in place of its progress bar. - **Campaigns** is a calendar of campaign enrollments and their steps, by month or year. ## What you can do here - [Open an enrollment](https://support.pynhq.com/activity/enrollments/open-an-enrollment/) to read its steps and dates. - [Review and unpause enrollments](https://support.pynhq.com/activity/enrollments/review-and-unpause-enrollments/) that are waiting in Needs Review. - [Stop an enrollment](https://support.pynhq.com/activity/enrollments/stop-an-enrollment/) so nothing more is sent. - [Reschedule a campaign step](https://support.pynhq.com/activity/enrollments/reschedule-a-campaign-step/) by dragging it on the calendar. - [Enrollment, step and delivery statuses](https://support.pynhq.com/activity/enrollments/reference-enrollment-statuses/) explains every status. ## Where it is in the app Open **Activity** in the left navigation; it lands on **All Enrollments**. **Needs Review** and **Campaigns** are listed under **Enrollments** on the left. An enrollment opens in a panel on the right at `/activity/home`; a step opens its own page at `/activity/step/`. ## Related - [Automations](https://support.pynhq.com/flows/automations/) for the triggers that create enrollments and the Update Enrollments prompt after a republish. - [Messages](https://support.pynhq.com/activity/messages/) to look at steps across every enrollment. - [Employees](https://support.pynhq.com/directory/employees/) for the Enrollments list on an employee's profile. ## Related Intercom articles - [Automation Activity](https://intercom.help/pyn/en/articles/6177195-automation-activity) — Pyn 1 article, kept for reference - [Manually Enroll Employees in a Flow (Pyn 2)](https://intercom.help/pyn/en/articles/11506664-manually-enroll-employees-in-a-flow-pyn-2) - [Excluded messages](https://intercom.help/pyn/en/articles/7138026-excluded-messages) — Pyn 1 article, kept for reference --- # Open an enrollment Source: https://support.pynhq.com/activity/enrollments/open-an-enrollment/ > Find one person's enrollment in Activity and read its steps: what has sent, what is scheduled and for when. A new starter asks what they will receive, or a manager says they never got the day-one nudge. The enrollment answers both: it lists each step with its status and the day it sends. ## Steps 1. In Pyn, open **Activity** in the left navigation. It opens on **All Enrollments**. 2. Narrow the list. Select **Filters** and pick an **Automation** or a **Moment**, or select **Find** and type the person's name. 3. Read the row. **Progress** shows how many steps have sent out of the total; hover it when it is red to read **This enrollment has bounced messages** or **This enrollment has invalid messages**. **Reference** is the date the steps count from. 4. Select the row. The enrollment opens in a panel on the right. 5. On **Details**, read **Reference Date**, **Automation**, **Moment** and **Principal**. A test enrollment carries the banner **Hey, this is a test enrollment.** 6. Under **Enrollment Steps**, read each step: its title, a status such as **Scheduled** or **Complete**, and its date. A completed step whose message bounced for someone shows a red status with the tooltip **Completed with bounces**. ![An enrollment's panel lists its details and every step with a status and date.](https://support.pynhq.com/media/activity/enrollments/activity-enrollments-panel.png) 7. Select a step to open it on its own page, where you can read the message as each recipient saw it. [Read a message as it was sent](https://support.pynhq.com/activity/messages/read-a-message-as-sent/) continues from there. > **Tip:** The same list is on the employee's profile: open [Directory](https://support.pynhq.com/directory/employees/read-an-employee-profile/), select the person and open the **Activity** tab for their **Enrollments**, **Deliveries** and **Outstanding** actions. ## What you should see A panel with the enrollment's details and its steps in schedule order, and a step page when you select one. Steps that read **Draft** belong to a paused enrollment: [Review and unpause enrollments](https://support.pynhq.com/activity/enrollments/review-and-unpause-enrollments/) explains how to release them. ## Related - [Read a message as it was sent](https://support.pynhq.com/activity/messages/read-a-message-as-sent/) for the step page and each delivery. - [Enrollment, step and delivery statuses](https://support.pynhq.com/activity/enrollments/reference-enrollment-statuses/) for what each status means. - [Read an employee profile](https://support.pynhq.com/directory/employees/read-an-employee-profile/) for the same enrollments from the person's side. --- # Reschedule a campaign step Source: https://support.pynhq.com/activity/enrollments/reschedule-a-campaign-step/ > Move a campaign message to another day by dragging it on the Campaigns calendar, or move the whole campaign by dragging its reference date. A campaign is a set of dated messages enrolled against a reference date. When a date moves, the Campaigns calendar lets you drag the message, or the campaign itself, to the new day. ## Before you start - A campaign has been created and enrolled from [Campaign Templates](https://support.pynhq.com/flows/campaign-templates/), or with **Create new** on the Campaigns view. ![The Campaigns calendar shows each campaign and its steps on the days they send.](https://support.pynhq.com/media/activity/enrollments/activity-enrollments-campaign-calendar.png) ## Steps 1. In Pyn, open **Activity** in the left navigation, then select **Campaigns** under **Enrollments**. 2. Use the controls at the top to move between months, or select a month in the year view to open it. Each day lists the campaigns that start on it and the steps that send on it, milestones first and then messages in sending order. 3. Drag a step from its day and drop it on the new day. A step that is **Sending** or **Complete** cannot be dragged. 4. To move a whole campaign, drag the campaign entry itself. Its reference date changes to the day you drop it on. 5. Select a step to open its panel. Its state button reads **Automated** (it will send on its date) or **Manual** (it is held). Choose the other to switch; a step that reads **Draft** has not been scheduled yet. > **Note:** Dragging a step changes only that step's date. Dragging the campaign changes its reference date; whether its steps follow depends on how each step is scheduled. Check the calendar after the drop. ## What you should see The step appears under its new day as soon as you drop it, and its panel shows the new date. A **Manual** step keeps its date but does not send until you set it back to **Automated**. To copy a campaign to a new date, open the campaign's panel and choose **Duplicate**: the dialog takes a **Title** and **Reference Date** and offers **Recalculate Step Dates** and **Keep Recipients**. ## Related - [Campaign Templates](https://support.pynhq.com/flows/campaign-templates/) for how campaigns are built and enrolled. - [Pause a scheduled message](https://support.pynhq.com/activity/messages/pause-a-scheduled-message/) for holding a step in an automation enrollment. --- # Review and unpause enrollments Source: https://support.pynhq.com/activity/enrollments/review-and-unpause-enrollments/ > Check the messages of a paused enrollment in Needs Review and release some or all of them, one enrollment at a time or in bulk. When you enrol people with **Verify Mode** on, Pyn creates their enrollments **Paused**: every step is held as a **Draft** and nothing sends until you release it. Needs Review is where those enrollments wait. ## Before you start - There is at least one paused enrollment. Manual enrolment with **Verify Mode** switched on creates them; [Automations](https://support.pynhq.com/flows/automations/) covers the enrolment dialog. ![Needs Review lists paused enrollments, each with a Verify button.](https://support.pynhq.com/media/activity/enrollments/activity-enrollments-needs-review.png) ## Steps 1. In Pyn, open **Activity** in the left navigation, then select **Needs Review** under **Enrollments**. 2. Find the enrollment. Each row shows the **Principal**, the **Automation** and the **Reference** date, and a **Verify** button where the progress bar would be. 3. Select the row to open the enrollment in the panel and read its **Enrollment Steps**. Select a step to preview the message as it will send. Close the panel. 4. Select **Verify** on the row. The dialog **Select messages to unpause** lists every step with its **Recipients**, the **Delivery** text and when it is **Scheduled**. A step with nobody to send to reads **No valid recipients**. 5. Every step is ticked. Untick any you do not want to send, then select **Unpause**. > **Tip:** To release several enrollments at once, tick their rows in **Needs Review** (or the header checkbox for the page) and select **Verify selected enrollments** in the banner that appears. That schedules every step of each selected enrollment. ## What you should see The enrollment leaves **Needs Review** and appears in **All Enrollments** as **Pending**. The steps you ticked move from **Draft** to **Scheduled** and send on their dates; a step whose date has passed sends straight away unless the automation set it to skip when overdue. Steps you left unticked stay **Draft**; scheduling one of them later, from its step page, also moves the enrollment to **Pending**. To cancel a paused enrollment instead, open its panel and select **Archive** from its menu. ## Related - [Stop an enrollment](https://support.pynhq.com/activity/enrollments/stop-an-enrollment/) to cancel an enrollment that is already pending. - [Enrollment, step and delivery statuses](https://support.pynhq.com/activity/enrollments/reference-enrollment-statuses/) for Paused, Pending and Draft. - [Automations](https://support.pynhq.com/flows/automations/) for Verify Mode and manual enrolment. ## Related Intercom articles - [Manually Enroll Employees in a Flow (Pyn 2)](https://intercom.help/pyn/en/articles/11506664-manually-enroll-employees-in-a-flow-pyn-2) — draws on --- # Stop an enrollment Source: https://support.pynhq.com/activity/enrollments/stop-an-enrollment/ > Cancel everything an enrollment has still to send. Messages already sent stay as they are. Someone was enrolled by mistake, has left, or no longer needs the rest of the sequence. Stopping the enrollment cancels its scheduled steps and marks it **Complete**; nothing further sends. ## Before you start - You are a workspace admin or owner. Other roles do not see **Stop**. ## Steps 1. In Pyn, open **Activity** in the left navigation. It opens on **All Enrollments**. 2. Find the enrollment with **Filters** or **Find**, and select its row to open the panel. 3. In the panel's actions menu (the **...** button), select **Stop**. 4. In the confirmation, **Stop this enrollment? Anything still to be sent will be cancelled.**, select **OK**. > **Caution:** Stopping cannot be undone. To hold a single message rather than the whole enrollment, [Pause a scheduled message](https://support.pynhq.com/activity/messages/pause-a-scheduled-message/) instead. ## What you should see The enrollment's status becomes **Complete** and its **Progress** stops where it was. Steps that were **Scheduled** or **Draft** are completed without sending; steps that had already sent keep their deliveries, so the recipient still has their messages and can still complete any action. The enrollment stays in **All Enrollments**. An enrollment that is still **Paused** can be removed instead: its menu offers **Archive**, which stops it and takes it off the list. ## Related - [Review and unpause enrollments](https://support.pynhq.com/activity/enrollments/review-and-unpause-enrollments/) for enrollments that have not started. - [Pause a scheduled message](https://support.pynhq.com/activity/messages/pause-a-scheduled-message/) to hold one step. - [Enrollment, step and delivery statuses](https://support.pynhq.com/activity/enrollments/reference-enrollment-statuses/) for what Complete means for a stopped enrollment. --- # Enrollment, step and delivery statuses Source: https://support.pynhq.com/activity/enrollments/reference-enrollment-statuses/ > What every status in Activity means, for an enrollment, a step and a delivery, and what moves one to the next. Activity shows status at three levels. An enrollment is one person's run through a flow; a step is one message in it; a delivery is that message reaching one recipient on one channel. Each level has its own statuses, and a parent's status is read from its children: a step is **Complete** once every delivery has sent, an enrollment once every step is complete. ## Enrollment | Status | Meaning | Leaves when | | --- | --- | --- | | **Paused** | Created in Verify Mode. Every step is **Draft** and nothing sends. Listed in **Needs Review** with a **Verify** button. | You **Unpause** messages or **Verify selected enrollments**, or a step is scheduled from its page. The enrollment becomes **Pending**. **Archive** stops and removes it instead. | | **Pending** | Live. Steps are scheduled and send on their dates. | Every step has sent, or an admin selects **Stop**. | | **Complete** | Every step has finished, or the enrollment was stopped. Steps still to send were cancelled. | Final. | The **Progress** column counts complete steps over the total and turns red when any delivery bounced or was invalid (**This enrollment has bounced messages**, **...invalid messages**, or both). ## Step | Status | Meaning | | --- | --- | | **Draft** | Held without a date, awaiting verification or scheduling. **Schedule** on the step page moves it on. | | **Scheduled** | Will send when due. **Pause** on the step page returns it to **Draft**. | | **Sending** | At least one delivery is being sent right now. | | **Complete** | Every delivery has sent. Red with the tooltip **Completed with bounces** when one of them bounced. | | **Error** | The step failed and will not be sent. | A step in a campaign enrollment shows the same statuses, with a state button that reads **Draft**, **Manual** (draft, held) or **Automated** (scheduled). ## Delivery | Status | Meaning | | --- | --- | | **Draft** | Not scheduled. | | **Scheduled** | Will send at the scheduled time. | | **Paused** | Held. | | **Sending** | Being sent. | | **Delivered** | Reached the recipient. | | **Clicked** | Delivered, and the recipient opened a link in it. | | **Actioned** | Delivered, and the recipient completed its action (acknowledged it or submitted its form). | | **Bounced** | Could not be sent. The step page shows **This message bounced when sending** with a **Resend** button; a bounce notice appears in [Notices](https://support.pynhq.com/notices/). | | **Bounced\*** | Bounced and then resent. The resend is a new delivery; a delivery can be resent once. | | **Invalid** | Could not be attempted, for example because the recipient had no address on that channel. | ### In the Actions view The **Actions** view shows only deliveries that asked for something, with a status that ignores everything but the ask: **Unactioned** (delivered, not done), **Clicked** (a link was opened but the action is not done) or **Actioned**. Informational messages, reminders and test deliveries have no action and do not appear. ## Related - [Review and unpause enrollments](https://support.pynhq.com/activity/enrollments/review-and-unpause-enrollments/) for moving Paused to Pending. - [Resend a bounced message](https://support.pynhq.com/activity/messages/resend-a-bounced-message/) for Bounced and Bounced\*. - [Track actions](https://support.pynhq.com/activity/actions/track-actions/) for Unactioned and Actioned. ## Related Intercom articles - [Excluded messages](https://intercom.help/pyn/en/articles/7138026-excluded-messages) — Pyn 1 article - [Automation Activity](https://intercom.help/pyn/en/articles/6177195-automation-activity) — Pyn 1 article --- # Messages Source: https://support.pynhq.com/activity/messages/ > Every step Pyn has scheduled or sent, across all enrollments, with its sender, recipients, status and date. Open one to read it as each recipient did. Enrollments are organised by person; Messages is organised by step. **All Messages** lists every step from every automation and campaign enrollment, so you can see what went out this week, what is queued for tomorrow and what is stuck. Each step opens on its own page with the rendered message, the list of recipients and each delivery's status. ![Activity > All Messages lists every step with its sender, recipients, status and date.](https://support.pynhq.com/media/activity/messages/activity-messages-table.png) ## The table | Column | What it shows | | --- | --- | | **From** | The sender's avatar. | | **Recipients** | The people or channel the step sends to. | | **Delivery** | The message text, and the enrollment it belongs to. | | **Status** | **Draft**, **Scheduled**, **Sending** or **Complete**; red with **Completed with bounces** when a delivery bounced. | | **Date** | When it sent, or when it is scheduled to. | **Filters** offers **Status**; **Find** searches the text. A **Complete** step's menu offers **Archive**, which hides it from the list. ## What you can do here - [Read a message as it was sent](https://support.pynhq.com/activity/messages/read-a-message-as-sent/): the step page, with a recipient selector and an export of its deliveries. - [Resend a bounced message](https://support.pynhq.com/activity/messages/resend-a-bounced-message/) from the step page or from a notice. - [Pause a scheduled message](https://support.pynhq.com/activity/messages/pause-a-scheduled-message/) or schedule a draft one. - [Actions](https://support.pynhq.com/activity/actions/) narrows the same deliveries to the ones that asked for something. ## Where it is in the app Open **Activity** in the left navigation and select **All Messages** under **Messages**. A step opens at `/activity/step/`, and a delivery at `/activity/step//`. ## Related - [Enrollments](https://support.pynhq.com/activity/enrollments/) for the same steps grouped by person. - [Actions](https://support.pynhq.com/activity/actions/) for deliveries that asked for an action. - [Enrollment, step and delivery statuses](https://support.pynhq.com/activity/enrollments/reference-enrollment-statuses/) for every status. ## Related Intercom articles - [Manage Bounced Messages in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/12045027-manage-bounced-messages-in-pyn-pyn-2) - [Troubleshoot Bounced Emails (Pyn 1)](https://intercom.help/pyn/en/articles/8909330-troubleshoot-bounced-emails-pyn-1) — Pyn 1 article, kept for reference --- # Pause a scheduled message Source: https://support.pynhq.com/activity/messages/pause-a-scheduled-message/ > Hold one step of an enrollment so it does not send, and schedule it again when you are ready. One message in a sequence is wrong for one person: the date moved, or the content needs a word changed before it goes. Pausing the step holds it as a **Draft** without touching the rest of the enrollment. ## Steps 1. In Pyn, open **Activity** in the left navigation, then select **All Messages** under **Messages**. 2. Select **Filters**, then **Status**, and tick **Scheduled**. 3. Select the row of the step to hold. It opens on its own page with **Scheduled** in the header. 4. Select **Pause** at the top right. The status changes to **Draft** and the button now reads **Schedule**. 5. When you are ready for it to send, open the step again and select **Schedule**. If its date has passed, it sends straight away. > **Note:** Pausing a step does not pause the enrollment: its other steps keep their dates. To hold everything, [Stop an enrollment](https://support.pynhq.com/activity/enrollments/stop-an-enrollment/); to hold a whole enrollment before it starts, enrol with Verify Mode and release it from Needs Review. ## What you should see In **All Messages**, the step reads **Draft** and has no date to send. In the enrollment's panel it is listed with **Draft** too. Once scheduled again it reads **Scheduled** with its date, and the enrollment, if it was paused, moves to **Pending**. ## Related - [Stop an enrollment](https://support.pynhq.com/activity/enrollments/stop-an-enrollment/) to cancel the rest of a sequence. - [Review and unpause enrollments](https://support.pynhq.com/activity/enrollments/review-and-unpause-enrollments/) for releasing a whole paused enrollment. --- # Read a message as it was sent Source: https://support.pynhq.com/activity/messages/read-a-message-as-sent/ > Open a step in Activity, switch between its recipients to read exactly what each one received, and export the deliveries as CSV. A manager says the check-in email never arrived, or you want to see how a token rendered for one person. The step page shows the message as it was sent to each recipient, with the status of every delivery. ![A step page shows the enrollment it belongs to, the sender and recipient, and the message; once sent, it renders each recipient's copy.](https://support.pynhq.com/media/activity/messages/activity-messages-step-page.png) ## Steps 1. In Pyn, open **Activity** in the left navigation, then select **All Messages** under **Messages**. 2. Select **Filters**, then **Status**, to narrow to **Complete** steps; or select **Find** and type a word from the message. 3. Select the row. The step opens on its own page. The banner at the top reads **This is part of the enrollment** (or **the campaign**) with a link back to it. A sent step shows its status chip on the right; a scheduled step shows **Pause** there instead. 4. Use the recipient selector above the message to switch between recipients. The page loads with the last delivery selected; each choice shows that person's rendered message, with the sender, the recipient and the time. 5. A bounced delivery shows the banner **This message bounced when sending**. [Resend a bounced message](https://support.pynhq.com/activity/messages/resend-a-bounced-message/) explains the **Resend** button on it. 6. Select **Activity** in the rail on the right to open the drawer. It lists every delivery for the step with its status. 7. In the drawer's header, select **Export deliveries** to download `pyn-deliveries.csv` with each recipient's name, email, status, delivered time, first click and first action. > **Note:** A step that has not sent yet shows the message template with tokens unfilled, and no recipient selector until it has deliveries. A campaign step shows its template until it is at least **Sending**. ## What you should see The message rendered for the chosen recipient, their delivery's status (**Delivered**, **Clicked**, **Actioned** or **Bounced**) and, in the drawer, the same for everyone else. **Back** at the top left returns you to the list you came from. ## Related - [Open an enrollment](https://support.pynhq.com/activity/enrollments/open-an-enrollment/) for the person's whole sequence. - [Resend a bounced message](https://support.pynhq.com/activity/messages/resend-a-bounced-message/) when a delivery failed. - [Enrollment, step and delivery statuses](https://support.pynhq.com/activity/enrollments/reference-enrollment-statuses/) for what each delivery status means. --- # Resend a bounced message Source: https://support.pynhq.com/activity/messages/resend-a-bounced-message/ > Find out why a delivery bounced, fix the cause, and resend it from the step page or from the bounce notice. A bounce is a delivery Pyn could not complete: the address was wrong, the Slack account was not active yet, or the sender was in an error state. Pyn marks the delivery **Bounced**, turns the enrollment's progress red and raises a notice. Once the cause is fixed, you resend. ## Before you start - Fix what caused the bounce first, or the resend bounces too. Bounce reasons include an inactive integration, a sender in error, a misconfigured sender and raw HTML email not being enabled; a wrong address is fixed in [Directory](https://support.pynhq.com/directory/employees/fix-missing-details/), a sender in **Settings**. ## Steps 1. In Pyn, open **Activity** in the left navigation. In **All Enrollments**, a red **Progress** bar marks the enrollments with bounces; hover it to read **This enrollment has bounced messages**. 2. Select the enrollment, then under **Enrollment Steps** select the step whose status is red with **Completed with bounces**. 3. On the step page, use the recipient selector to pick the recipient whose delivery reads **Bounced**. The banner **This message bounced when sending** appears above the message. 4. Select **Resend** in the banner. > **Note:** A delivery can be resent once. After that the status reads **Bounced\*** and the banner is gone; if it bounces again, fix the cause and send the message another way, for example by enrolling the person again. ## Resend every bounce at once A bounce raises a notice in [Notices](https://support.pynhq.com/notices/) titled **Delivery bounced**, attached to the sender. Its **Resend** button opens **Resend Bounced Deliveries**, which counts the bounced deliveries on that notice and resends them all in one go, then archives the notice. [Resend bounced deliveries from a notice](https://support.pynhq.com/notices/resend-bounced-deliveries/) walks through it. ## What you should see Pyn creates a new delivery for the recipient and sends it; the original reads **Bounced\***. In the drawer's delivery list the new delivery appears with its own status, and the enrollment's progress stays red until you check the other bounces. ## Related - [Resend bounced deliveries from a notice](https://support.pynhq.com/notices/resend-bounced-deliveries/) to resend in bulk. - [Fix a missing manager, time zone or email](https://support.pynhq.com/directory/employees/fix-missing-details/) when the address was the cause. - [Enrollment, step and delivery statuses](https://support.pynhq.com/activity/enrollments/reference-enrollment-statuses/) for Bounced and Invalid. ## Related Intercom articles - [Manage Bounced Messages in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/12045027-manage-bounced-messages-in-pyn-pyn-2) — replaces - [Troubleshoot Bounced Emails (Pyn 1)](https://intercom.help/pyn/en/articles/8909330-troubleshoot-bounced-emails-pyn-1) — Pyn 1 article, kept for reference --- # Read the Dashboard Source: https://support.pynhq.com/activity/read-the-dashboard/ > See how many messages Pyn delivered in a period, how many were clicked and how many were actioned, grouped by automation or by step. You want one number for how much Pyn sent last month and how much of it landed. The Dashboard totals deliveries for a date range and breaks them down by automation or by step. ## Before you start - The Dashboard is enabled for your workspace. When it is, **Dashboard** is the first view under **Activity**; when it is not, the list starts at **Enrollments**. ![The Dashboard totals deliveries for the chosen range, with Group by and the date button in the top-right corner.](https://support.pynhq.com/media/activity/dashboard/activity-dashboard-summary.png) ## Steps 1. In Pyn, open **Activity** in the left navigation, then select **Dashboard**. 2. Read the tiles: **Delivered** is the number of deliveries that reached a recipient in the range, **Click Rate** is the share of those with a clicked link, and **Action Rate** is the share whose action was completed. Action Rate appears once more than three deliveries in the range were actioned. 3. Select the date button (it reads **Last 30 days** when the page opens) and choose **Last 7 days**, **Last 30 days**, **Last 90 days**, **Last 12 months**, **Year to date** or a custom range. 4. Select **Group by:** and choose **Automation** for one row per automation or campaign, or **Step** to expand each automation into its steps. 5. Read the table. Each row shows **Delivered**, **Clicked** and **Click Rate**, plus **Actioned** and **Action Rate** when actions exist in the range. A rate shows **-** when the row has no deliveries. > **Note:** Test enrollments are not counted. The Dashboard reads deliveries, so a step that bounced for everyone shows no row. ## What you should see Tiles with numbers and a table with one row per automation (or per automation and step). An empty range reads **No delivery data for this period.** For the same numbers laid over the lifecycle, open [Read journey metrics](https://support.pynhq.com/journey/read-journey-metrics/). ## Related - [Messages](https://support.pynhq.com/activity/messages/) for the individual steps behind a row. - [Actions](https://support.pynhq.com/activity/actions/) for who has and has not completed an action. - [Read journey metrics](https://support.pynhq.com/journey/read-journey-metrics/) for deliveries, clicks and actions per moment. ## Related Intercom articles - [Analyze your Employee Journey with Metrics (Pyn 2)](https://intercom.help/pyn/en/articles/12062347-analyze-your-employee-journey-with-metrics-pyn-2) — draws on - [Understanding Your Dashboard Analytics](https://intercom.help/pyn/en/articles/6710405-understanding-your-dashboard-analytics) — Pyn 1 article, kept for reference - [How to check readership stats (and what they mean)](https://intercom.help/pyn/en/articles/6024170-how-to-check-readership-stats-and-what-they-mean) — Pyn 1 article, kept for reference --- # Addons Source: https://support.pynhq.com/addons/ > The Addons gallery lists fourteen optional capabilities with what each adds, whether it is Installed, Upgrade Available or Enterprise Tier, and a way to request it. Owners and Admins see it. **Addons** is a gallery of the optional capabilities Pyn offers beyond the fundamentals: forms and polls, channel membership, calendar invitations, a buddy programme, a manager digest, ticketing, SMS and more. Each tile says what the add-on does and whether your workspace has it. Opening a tile explains it in more detail and, where it is not on, offers **Upgrade** or **Request Demo**. ![Addons shows every capability as a tile with its availability in the footer.](https://support.pynhq.com/media/addons/overview/addons-gallery.png) ## The tiles Every tile carries a footer: | Footer | Meaning | | --- | --- | | **Installed** | The add-on is on in this workspace. Opening it reads **Congratulations! This Addon is installed and working in this Workspace.** | | **Upgrade Available** | Part of the Team tier and not on here. Opening it offers **Upgrade**, which puts your workspace on the waitlist. | | **Enterprise Tier** | Part of the Enterprise tier. Opening it offers **Request Demo**. | Once you have asked for an add-on, its panel reads **Addon Requested! We'll be in touch soon with next steps.** and the button is gone. [Plans and what each unlocks](https://support.pynhq.com/getting-started/plans/) explains the tiers and the **Compare plans** dialog; the catalogue below says what each add-on does. ## The catalogue | Add-on | Tier | What it adds | | --- | --- | --- | | **Pyn fundamentals** | Free | The base product: journey, library, automations, campaigns, email and chat delivery. Installed in every workspace. | | **Forms and Polls** | Team | Acknowledgements, forms and polls inside Slack, Teams and email messages, with tracking and reminders, and flows that trigger on a submission. See [Forms](https://support.pynhq.com/flows/forms/). | | **Buddy Program** | Team | A buddy nomination form for managers, the **Buddy Assigned** trigger and the messages that brief the buddy. See [Buddy programme](https://support.pynhq.com/flows/automations/tutorial-buddy-programme/). | | **JIRA, Asana, ServiceNow** | Team | A **Raise Ticket** step that creates a ticket in the connected project. See [Raise a ticket](https://support.pynhq.com/flows/steps/raise-a-ticket/). | | **Culture Amp** | Team | Survey and performance review communications scheduled from Pyn, triggered at moments such as onboarding, promotion or exit. Listed for registering interest. | | **Security Compliance** | Team | Security and compliance education for the whole company (SOC 2, GDPR, ISO 27001 and more). | | **Slack/Teams #Channels** | Enterprise | An **Add to Channel** step that adds people to a Slack or Teams channel when they become an employee or a manager, or change location. See [Add to a channel](https://support.pynhq.com/flows/steps/add-to-a-channel/). | | **Calendar Meetings** | Enterprise | An **Invite to Calendar Event** step that adds someone to a Google Calendar or Outlook event. See [Invite to a calendar event](https://support.pynhq.com/flows/steps/invite-to-a-calendar-event/). | | **Manager Digest** | Enterprise | One **Your Week Ahead** message for managers who would otherwise receive several nudges in a week, with their team's updates and tasks. | | **LMS Integration** | Enterprise | Enrolling employees in Docebo, Sana or Workramp courses at a chosen moment. | | **SMS** | Enterprise | SMS as a delivery channel, for people before day one or without a desk. | | **Mentor Program** | Enterprise | Mentor matching, communication and reminders, on the same pattern as the buddy programme. | | **Personalized Note** | Enterprise | A section of a message written by a named contributor, requested from them through Slack. | | **Custom Code** | Enterprise | Changes to Pyn's standard automation, data and integrations beyond what the editor offers. | Whether a tile reads **Installed** is a property of the add-on in your workspace, set by Pyn; **Pyn fundamentals**, **Forms and Polls**, **Calendar Meetings**, **Buddy Program** and **JIRA, Asana, ServiceNow** are installed by default in a new workspace. - [Request an addon](https://support.pynhq.com/addons/request-an-addon/): Open a tile and select Upgrade or Request Demo. - [Plans and what each unlocks](https://support.pynhq.com/getting-started/plans/): Free, Team and Enterprise, and the Compare plans dialog. ## Where it is in the app Open `/addons/all` in Pyn, or select **Addons** in the left navigation. The item is shown to Owners and Admins. The page header reads **Add-ons** and its one view, **All**, shows every add-on, installed or not; **Request Demo** at the top of the view opens a request without choosing a tile. ## Related - [Request an addon](https://support.pynhq.com/addons/request-an-addon/) for the steps. - [Plans and what each unlocks](https://support.pynhq.com/getting-started/plans/) for what each plan enforces. - [Forms](https://support.pynhq.com/flows/forms/) and [Steps and messages](https://support.pynhq.com/flows/steps/) for the features several add-ons unlock. --- # Request an addon Source: https://support.pynhq.com/addons/request-an-addon/ > Ask Pyn for an add-on your workspace does not have by opening its tile in Addons and selecting Upgrade or Request Demo; the tile then shows the request as made. You want a capability that shows as **Upgrade Available** or **Enterprise Tier**, such as calendar meetings or SMS. The request goes to Pyn's team from the add-on's own panel, and the panel remembers that you asked. ## Before you start - You are a workspace Owner or Admin; **Addons** is in your left navigation. ![An add-on's panel with the Upgrade button for a Team-tier capability.](https://support.pynhq.com/media/addons/catalogue/addons-panel-upgrade.png) ## Steps 1. In Pyn, open **Addons** in the left navigation. 2. Select the tile. Its panel opens with the add-on's title, description and a longer explanation of what it does. 3. Read the banner at the top of the panel. For a Team-tier add-on it explains that this is a feature of the upgraded plan and offers **Upgrade**; for an Enterprise-tier add-on it explains that the add-on is part of the Enterprise plans and offers **Request Demo**. 4. Select **Upgrade** or **Request Demo**. > **Note:** The buttons record the request and who made it; they do not switch the add-on on. Pyn's team follows up. **Request Demo** at the top of the gallery and **Contact Sales** in your profile menu open the same request without naming an add-on. ## What you should see The banner changes to **Addon Requested! We'll be in touch soon with next steps.** and the button disappears. Selecting the tile again shows the same, so a second request is not sent. The tile's footer is unchanged until Pyn turns the add-on on, when it reads **Installed**. ## Related - [Addons](https://support.pynhq.com/addons/) for what each add-on does and its tier. - [Plans and what each unlocks](https://support.pynhq.com/getting-started/plans/) for the plan behind each tier. --- # Notices Source: https://support.pynhq.com/notices/ > Notices is Pyn's inbox for things that need a person: a bounced delivery, an integration that needs re-authenticating, a webhook that rejected a payload, an export that is ready to download. Most of what Pyn does needs nobody's attention. When something does, Pyn raises a notice: it appears under **Notices** in the left navigation with a count on the badge, and, for the kinds you choose, as an email to admins. A notice names what happened, points at the item it concerns, and carries the action that resolves it: **Resend** for a bounce, **Download** for a file, **Archive** for anything you have dealt with. Everyone sees the notices addressed to them. Notices about re-authentication and webhooks go to admins and owners; bounce notices go to the workspace owner and, when the setting is on, to every admin; a download goes to the person who asked for it. ![Notices > Open lists each notice with its title, the item it concerns, the date and an action.](https://support.pynhq.com/media/notices/overview/notices-overview-open.png) ## Concepts - **Notice**: a title and a message, raised by an integration, a sender or an export, with a **Date** of when it last happened. The same problem recurring updates the existing notice rather than adding another. - **Item**: what the notice is about: the sender whose delivery bounced, the integration whose credentials expired, the view that was exported. Shown in the **Item** column and linked from the notice's panel. - **Open and Archived**: a notice stays in **Open** until you archive it or its action resolves it; **Archived** keeps the history. - **Email**: three workspace settings decide which notices are also emailed, to admins and owners, from `notifications@pynhq.com`. ## What you can do here - [Read and archive notices](https://support.pynhq.com/notices/read-and-archive-notices/) to work through Open. - [Resend bounced deliveries from a notice](https://support.pynhq.com/notices/resend-bounced-deliveries/) in one go. - [Download an export](https://support.pynhq.com/notices/download-an-export/) before it expires. - [Choose which notices are emailed](https://support.pynhq.com/notices/set-notice-emails/) to admins. - [Reference: notice types](https://support.pynhq.com/notices/reference-notice-types/): Every notice Pyn raises, what causes it, who receives it and what resolves it. ## Where it is in the app Open **Notices** in the primary navigation on the left of every page, or open `/notifications/home`. The page header reads **Notifications**. It lands on **Open**; **Archived** is beside it. The table has **Title**, **Item**, **Date** and an action column. The gear button at the top right, shown to admins, holds the email settings. ## Related - [Read and archive notices](https://support.pynhq.com/notices/read-and-archive-notices/) for the everyday routine. - [Notice types](https://support.pynhq.com/notices/reference-notice-types/) for what each one means. - [Resend a bounced message](https://support.pynhq.com/activity/messages/resend-a-bounced-message/) for the Activity side of a bounce. - [Settings](https://support.pynhq.com/settings/) for the senders and integrations notices point at. ## Related Intercom articles - [Manage Integrations or Senders That Need Attention (Pyn 2)](https://intercom.help/pyn/en/articles/12062401-manage-integrations-or-senders-that-need-attention-pyn-2) — draws on - [Manage Bounced Messages in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/12045027-manage-bounced-messages-in-pyn-pyn-2) — draws on --- # Download an export Source: https://support.pynhq.com/notices/download-an-export/ > Collect a CSV that Pyn built for you from Notices before it expires. Exporting a table view does not download a file straight away. Pyn builds the CSV in the background and tells you through Notices when it is ready. ## Before you start - You selected **Export** in the view-type menu of a table view, for example **Directory** > **Active**. [Export employees](https://support.pynhq.com/directory/employees/export-employees/) walks through it. ## Steps 1. In Pyn, open **Notices** in the left navigation. 2. Find the row that reads **[view title]_[date].csv is ready to download**, for example **Active_2026-10-22.csv is ready to download**, with **Expires** and the time left underneath. 3. Select **Download**. The file saves through your browser. 4. Select the dropdown beside the action and choose **Close** to archive the notice once you have the file. > **Note:** Only the person who started the export can download it, and the file is kept for seven days. An export holds at most 1,000 rows; a larger view is cut off at that point. ## What you should see A CSV in your downloads with one column per column of the exported view and one row per item. The notice stays in **Open** until you close it, and the file can be downloaded again until it expires. ## Related - [Export employees](https://support.pynhq.com/directory/employees/export-employees/) for starting an export. - [Read and archive notices](https://support.pynhq.com/notices/read-and-archive-notices/) for the rest of the inbox. --- # Read and archive notices Source: https://support.pynhq.com/notices/read-and-archive-notices/ > Work through Open: read what each notice says, open the item it concerns, and archive it once you have dealt with it. The badge on **Notices** says something needs you. Each row is one problem or one file; read it, fix what it points at, and archive it so the badge goes back to zero. ![Notices > Open lists each notice with its title, the item it concerns, the date and an action.](https://support.pynhq.com/media/notices/overview/notices-overview-open.png) ## Steps 1. In Pyn, open **Notices** in the left navigation. It opens on **Open**, newest first. 2. Read the row. **Title** names the notice, for example **Re-authentication required** or **Delivery bounced**, with its message underneath; **Item** is the sender, integration or view it concerns; **Date** is when it last happened. 3. Select the row to open the notice's panel. **Details** shows the full message, its **Type** (**Temporary** or **Permanent**) and **Level** (**Warning** or **Error**), when it was **Last triggered at**, and the items under **Subject**, for example each bounced delivery. 4. Fix the cause where it lives: open the sender or integration from **Item** and reconnect it in **Settings**, or correct the address in **Directory**. [Notice types](https://support.pynhq.com/notices/reference-notice-types/) says what resolves each kind. 5. Back on the row, select **Archive**. The notice moves to **Archived**; the dropdown beside the button offers **Close**, which does the same. > **Note:** A notice with its own action, **Resend** on a bounce or **Download** on a file, shows that instead of **Archive**; use the dropdown beside it to close the notice without acting. Resending from a bounce notice archives it for you. ## What you should see The row is gone from **Open** and listed under **Archived**, and the badge count drops. If the same problem happens again, Pyn raises the notice again as a new row. The email, if the setting is on, links to the same notice. ![Archived keeps every notice you have dealt with.](https://support.pynhq.com/media/notices/overview/notices-overview-archived.png) ## Related - [Notice types](https://support.pynhq.com/notices/reference-notice-types/) for what each notice means and who gets it. - [Resend bounced deliveries from a notice](https://support.pynhq.com/notices/resend-bounced-deliveries/) for the Resend action. - [Choose which notices are emailed](https://support.pynhq.com/notices/set-notice-emails/) to get them in your inbox too. --- # Resend bounced deliveries from a notice Source: https://support.pynhq.com/notices/resend-bounced-deliveries/ > Resend every delivery that bounced for a sender in one action, from the bounce notice, once the cause is fixed. A sender lost its connection overnight and twenty emails bounced before anyone noticed. Rather than resend them one by one in Activity, the **Delivery bounced** notice collects them and resends them together. ## Before you start - Fix the cause first. The notice's message gives the recipient, message, flow and **Reason**; a sender problem is fixed in **Settings**, a wrong address in **Directory**. A resend before the fix bounces again, and each delivery can be resent only once. ## Steps 1. In Pyn, open **Notices** in the left navigation. 2. Find the row titled **Delivery bounced**. **Item** names the sender it bounced from. 3. Select the row to open the panel and read **Subject**: every bounced delivery attached to the notice, each opening in Activity if you want to check it. 4. Back on the row, select **Resend**. The dialog **Resend Bounced Deliveries** reads **You are about to resend N deliveries. Are you sure you want to continue?** 5. Select **Resend**. > **Note:** Pyn resends only the deliveries on the notice that are still **Bounced** and have not been resent; one you already resent from its step page is skipped. The notice is closed and archived as part of the action. ## What you should see The notice leaves **Open**. In **Activity**, each original delivery reads **Bounced\*** and a new delivery for the same recipient reads **Scheduled**, then **Delivered**. If a resend bounces too, a new **Delivery bounced** notice appears; fix the cause and resend that delivery another way, for example by enrolling the person again. ## Related - [Resend a bounced message](https://support.pynhq.com/activity/messages/resend-a-bounced-message/) for a single delivery, and the bounce reasons. - [Notice types](https://support.pynhq.com/notices/reference-notice-types/) for who receives bounce notices. - [Settings](https://support.pynhq.com/settings/) for reconnecting a sender. ## Related Intercom articles - [Manage Bounced Messages in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/12045027-manage-bounced-messages-in-pyn-pyn-2) — draws on --- # Choose which notices are emailed Source: https://support.pynhq.com/notices/set-notice-emails/ > Turn on an email to admins when a delivery bounces, when a sender or integration needs re-authenticating, or when a webhook cannot take a payload. Nobody checks Notices every hour. Three settings send the notices that matter most to admins' inboxes as well, so a bounced welcome email or an expired Slack token is seen the same day. ## Before you start - You are a workspace admin. Other roles do not see the gear. ![The gear on Notices holds the three email settings.](https://support.pynhq.com/media/notices/overview/notices-overview-settings.png) ## Steps 1. In Pyn, open **Notices** in the left navigation. 2. Select the gear button at the top right of the view. 3. Tick the emails you want: **Send email when a delivery bounces**, **Email admins and owners when re-authentication is required**, **Email admins when a webhook cannot take a payload**. Each saves as you tick it. 4. Select anywhere outside the popover to close it. > **Note:** A re-authentication or webhook notice always reaches the workspace owner in Notices; the setting widens it to every admin (and owner) and adds the email. The bounce email goes to every admin and carries the recipient, message, flow and reason. ## What you should see The next matching notice arrives as an email from `Pyn ` with the notice's title as the subject and a link that opens the notice in Pyn. The settings apply to the whole workspace, not only to you. ## Related - [Notice types](https://support.pynhq.com/notices/reference-notice-types/) for which notices each setting covers. - [Read and archive notices](https://support.pynhq.com/notices/read-and-archive-notices/) for the inbox the email links to. --- # Notice types Source: https://support.pynhq.com/notices/reference-notice-types/ > Every notice Pyn raises: what causes it, who receives it, whether it can be emailed, and what resolves it. A notice is raised by the integration, sender or export it concerns, carries a **Type** (**Temporary** for a passing failure, **Permanent** for one that needs a change) and a **Level** (**Warning** or **Error**), and is addressed to particular people. The same cause repeating updates the existing notice's **Last triggered at** rather than adding a row. ## Delivery and sender notices | Title | Raised by | Cause | Who sees it | Resolves with | | --- | --- | --- | --- | --- | | **Delivery bounced** | Slack, SendGrid email, Google Workspace, Microsoft 365, Teams | A delivery could not be sent: an inactive integration, a sender in error, a temporary or permanent error from the channel, a misconfigured sender, or raw HTML email not being enabled. The message lists **Recipient**, **Message**, **Flow** and **Reason**. | The workspace owner; every admin as well, with an email, when **Send email when a delivery bounces** is on. | **Resend** on the notice, or **Resend** on each delivery in Activity. | | **Ticket bounced** | Jira | A ticket step could not create its ticket. | The workspace owner. | Fix the Jira connection, then resend. | | **Re-authentication required** | Slack, Google Workspace, Microsoft 365, Teams, Jira | The integration's or a sender's credentials stopped working (**The credentials for the Slack sender are not valid**, and so on). | Admins and owners, with an email, when **Email admins and owners when re-authentication is required** is on; otherwise the owner. | Reconnect the sender or integration in **Settings**; it is listed under **Needs Attention** there. | | **Slack connection error**, **Google Workspace connection error**, **Jira connection error**, **SendGrid connection error** | The named integration | Pyn's connection to the service failed. | The workspace owner. | Usually clears on its own; reconnect if it repeats. | | **Mailbox unavailable** | Microsoft 365 | The sender's mailbox could not be reached. | The workspace owner. | Check the mailbox in Microsoft 365. | ## HRIS and ATS notices | Title | Cause | Who sees it | Resolves with | | --- | --- | --- | --- | | **HiBob Reauthentication Required**, **BambooHR Reauthentication Required**, **Workday Reauthentication Required**, **Rippling Reauthentication Required**, **ADP Reauthentication Required**, **Greenhouse Reauthentication Required**, **Ashby Reauthentication Required** | The connector's credentials were rejected during a sync. | The workspace owner. | Reconnect the integration in **Settings**. | | **HiBob Insufficient Permissions**, **BambooHR Insufficient Permissions**, **Rippling Insufficient Permissions**, **ADP Insufficient Permissions**, **Greenhouse Insufficient Permissions**, **Ashby Insufficient Permissions** | The credentials work but lack access to a field or endpoint Pyn reads. | The workspace owner. | Grant the permission in the HRIS, then refresh. | | **BambooHR Reconnect Required**, **Rippling Reconnect Required**, **ADP Reconnect Required** | The connection must be made again. | The workspace owner. | Reconnect in **Settings**. | The message on each carries the connector's own error text; the integration's **History** tab in **Settings** has the full log. ## Webhook and export notices | Title | Cause | Who sees it | Resolves with | | --- | --- | --- | --- | | **[Webhook name] rejected a payload** | An inbound webhook received a request it could not accept: a bad secret, an unknown employee, a payload the form did not take. The message carries the reason. | The workspace owner; every admin, with an email, when **Email admins when a webhook cannot take a payload** is on. | Fix the caller; **Archive** the notice. | | **[File name] is ready to download** | An export you started has finished. | You only. | **Download** within seven days. | ## States A notice is **open** when raised. **Archive** or **Close** moves it to **closed** and into the **Archived** view; **Resend** on a bounce notice closes it as part of the action. A notice can also be marked **acknowledged** (seen but not resolved) by other parts of Pyn; it still shows under **Open** until closed. ## Related - [Choose which notices are emailed](https://support.pynhq.com/notices/set-notice-emails/) for the three email settings named above. - [Resend bounced deliveries from a notice](https://support.pynhq.com/notices/resend-bounced-deliveries/) for the Resend action. - [Enrollment, step and delivery statuses](https://support.pynhq.com/activity/enrollments/reference-enrollment-statuses/) for Bounced and Bounced\* in Activity. --- # Settings Source: https://support.pynhq.com/settings/ > Where admins configure the workspace: the General settings for senders, calendars, users, recipients, webhooks and MCP servers, and the Integrations that connect Pyn to your other systems. Settings is where admins configure the workspace. The left rail has two groups. **General** holds the workspace's own settings and the things flows send with: Account Settings, Theme, Senders, Conditional Senders, Calendars, Current Users, Inactive Users, Custom Email Recipients, Webhooks and MCP Servers. **Integrations** connects Pyn to your HRIS, Slack, email, calendars, ATS and identity provider. Each group starts with a **Needs Attention 🚨** view. It is empty when everything is healthy and lists any sender, calendar, recipient or integration in an error state, with a **Reconnect** action beside it. ![Settings > General > Account Settings holds the time zone, company name and pause control.](https://support.pynhq.com/media/settings/account/settings-account-settings.png) ## What you can do here - Set the company name and default time zone, or pause the workspace, under [Account Settings](https://support.pynhq.com/settings/account/); set the logo, colours and font of the emails Pyn sends under [Theme](https://support.pynhq.com/settings/account/theme-your-emails/) - Add, test and archive the [senders](https://support.pynhq.com/settings/senders/) that messages come from, and route by audience with [conditional senders](https://support.pynhq.com/settings/conditional-senders/) - Connect a [Google or Outlook calendar](https://support.pynhq.com/settings/calendars/) for calendar-invite steps - Invite teammates and set their roles under [Users](https://support.pynhq.com/settings/users/) - Keep external inboxes in the loop with [custom email recipients](https://support.pynhq.com/settings/custom-email-recipients/) - Manage the [webhooks](https://support.pynhq.com/settings/webhooks/) other systems post to and the [MCP servers](https://support.pynhq.com/settings/mcp-servers/) AI clients connect to - Install and maintain [integrations](https://support.pynhq.com/integrations/) ## Where it is in the app Open **Settings** at the bottom of the primary navigation on the left of every page. It opens on `/settings/integrations/installed`; the General views are at `/settings/general/`, for example `/settings/general/senders`. Only admins and owners see Settings. Some views depend on what is switched on for your workspace: Theme, Calendars, Custom Email Recipients and MCP Servers appear only in workspaces where that feature is enabled. ## Related - [General](https://support.pynhq.com/settings/general/) for the list of General views and what each holds. - [Integrations](https://support.pynhq.com/settings/integrations/) for the Needs Attention, Installed and Available views. - [Account Settings](https://support.pynhq.com/settings/account/) for the time zone, company name and pause control. - [Integrations guides](https://support.pynhq.com/integrations/) for one page per integration. ## Related Intercom articles - [Manage Your Settings (Pyn 2)](https://intercom.help/pyn/en/articles/12044902-manage-your-settings-pyn-2) — replaces - [Set up a Google Email Sender (Pyn 2)](https://intercom.help/pyn/en/articles/11518211-set-up-a-google-email-sender-pyn-2) - [Configure a Custom Email Sender (Pyn 2)](https://intercom.help/pyn/en/articles/16729512-configure-a-custom-email-sender-pyn-2) - [Set Up a Personal Slack Sender (Pyn 2)](https://intercom.help/pyn/en/articles/16755550-set-up-a-personal-slack-sender-pyn-2) - [Set Up a Slack Sender in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/11518173-set-up-a-slack-sender-in-pyn-pyn-2) - [Set up a Custom Slack Sender/Slack Bot (Pyn 2)](https://intercom.help/pyn/en/articles/16755898-set-up-a-custom-slack-sender-slack-bot-pyn-2) - [Integrating Pyn with Google Calendar (Pyn 2)](https://intercom.help/pyn/en/articles/13401726-integrating-pyn-with-google-calendar-pyn-2) - [Add/Remove a User to Your Pyn Account (Pyn 2)](https://intercom.help/pyn/en/articles/11518130-add-remove-a-user-to-your-pyn-account-pyn-2) - [Manage Pyn Permission Types (Pyn 2)](https://intercom.help/pyn/en/articles/12044706-manage-pyn-permission-types-pyn-2) - [Custom Email Recipients in Workflows (Pyn 2)](https://intercom.help/pyn/en/articles/13930364-custom-email-recipients-in-workflows-pyn-2) - [Create a Webhook (Pyn 2)](https://intercom.help/pyn/en/articles/16858360-create-a-webhook-pyn-2) - [Connect to your HRIS (Pyn 2)](https://intercom.help/pyn/en/articles/16755703-connect-to-your-hris-pyn-2) - [Manage Integrations or Senders That Need Attention (Pyn 2)](https://intercom.help/pyn/en/articles/12062401-manage-integrations-or-senders-that-need-attention-pyn-2) --- # Account Settings Source: https://support.pynhq.com/settings/account/ > The company name, default time zone and paused state of your workspace, and the Theme page beside it that sets how the emails Pyn sends look. Account Settings holds the details that apply to the whole workspace: the time zone Pyn schedules in when an employee has none, the company name the `company.name` token inserts, and whether the workspace is paused. Theme, next to it under General, sets the logo, colours and font of the emails Pyn sends. ![Settings > General > Account Settings holds the time zone, company name and pause control.](https://support.pynhq.com/media/settings/account/settings-account-settings.png) ## What you can do here - Set the workspace **Time Zone**. The page explains it: "Employees without timezone data get messages in this default timezone." Pick a zone from the list; the field shows **Not Set** until you do. - Change the **Company Name**. It is "Used by the company.name token. Defaults to the workspace name." The change saves when you leave the field. - **Pause workspace** to stop Pyn sending messages, running flows and syncing integrations, and **Resume workspace** when you are ready. See [Pause your workspace](https://support.pynhq.com/settings/account/pause-your-workspace/). - In **Theme**, upload the **Logo**, choose whether to **Show Logo in Emails**, and set the **CTA Color**, **CTA Text Color**, **Link Color**, **Font Family** and **Font Size**, with a live preview. See [Theme your emails](https://support.pynhq.com/settings/account/theme-your-emails/). Every change saves on its own; there is no Save button on either page. Only admins and owners can change these fields. ## Where it is in the app Open `/settings/general/account-settings` in Pyn, or open **Settings** in the primary navigation and select **Account Settings** under **General**. Theme is `/settings/general/theme`, in workspaces that have it. ## Related - [Pause your workspace](https://support.pynhq.com/settings/account/pause-your-workspace/) to stop and restart sending. - [Theme your emails](https://support.pynhq.com/settings/account/theme-your-emails/) for the logo and colours. - [General](https://support.pynhq.com/settings/general/) for senders, calendars, users and webhooks. - [Settings](https://support.pynhq.com/settings/) for everything else admins configure. ## Related Intercom articles - [Manage Your Settings (Pyn 2)](https://intercom.help/pyn/en/articles/12044902-manage-your-settings-pyn-2) — draws on - [Set Your Company Theme](https://intercom.help/pyn/en/articles/6002210-set-your-company-theme) — Pyn 1 article, kept for reference - [Customize emails with your company's logo](https://intercom.help/pyn/en/articles/6010976-customize-emails-with-your-company-s-logo) — Pyn 1 article, kept for reference --- # Pause your workspace Source: https://support.pynhq.com/settings/account/pause-your-workspace/ > Stop Pyn sending messages, running flows and syncing integrations while you make changes, then resume from the same page. You want everything to stop for a while: a reorganisation is landing, a sender has to be swapped out, or you are cleaning up the directory. Pausing the workspace stops messages, flows and integration syncing in one action, and resuming starts them again. ## Before you start - You are an admin or owner. The pause control only shows for those roles. - A workspace that Pyn paused can only be resumed by Pyn; the page tells you if that is the case. ![Settings > General > Account Settings holds the time zone, company name and pause control.](https://support.pynhq.com/media/settings/account/settings-account-settings.png) ## Steps 1. In Pyn, open **Settings** in the left navigation, then **Account Settings** under **General**. 2. Read the status under the fields. An active workspace says "Your workspace is active. Pausing stops messages, flows and integration syncing. You can still sign in and resume anytime from here." 3. Select **Pause workspace**. 4. The confirmation explains that Pyn stops sending messages, running flows and syncing integrations right away, and that you can resume at any time from the same place. Select **Pause workspace** to confirm. 5. The button reads **Pausing...** while Pyn works, then changes to **Resume workspace**. 6. When you are ready, select **Resume workspace** and confirm. The dialog says "Pyn will start sending messages to your employees, running flows and syncing your integrations again." > **Note:** Pyn pauses a workspace itself when nobody has signed in for a month. The page then says so and **Resume workspace** starts everything again. A workspace paused by Pyn's team shows "Your workspace was paused by Pyn. To resume it, contact support@pynhq.com" and the button is disabled. ## What you should see While paused, the status reads "Your workspace is paused. Pyn is not sending messages to your employees, running flows or syncing your integrations. Resume it to start them again." Nothing new appears under [Enrollments](https://support.pynhq.com/activity/enrollments/) and integration refresh times stop moving. After you resume, scheduled steps pick up again and integrations refresh on their normal cadence. ## Related - [Account Settings](https://support.pynhq.com/settings/account/) for the other workspace-wide fields. - [Enrollments](https://support.pynhq.com/activity/enrollments/) to check what resumes once the workspace is active. - [Integrations](https://support.pynhq.com/integrations/) for what each integration syncs when it runs again. --- # Theme your emails Source: https://support.pynhq.com/settings/account/theme-your-emails/ > Upload a logo and set the colours and font that every email Pyn sends from this workspace uses. You want the emails Pyn sends to look like they came from your company. Theme sets the logo, the colour of buttons and links, and the font, and shows a preview as you change them. The page describes itself as "Branding applied to outbound emails for this workspace." ## Before you start - You are an admin or owner. - Theme shows under **General** only in workspaces where themes are enabled. If you do not see it, ask Pyn support. - Have a logo image ready. It is picked from [Media](https://support.pynhq.com/library/media/), so upload it there first or from the picker. ![Settings > General > Theme sets the logo, colours and font of the emails Pyn sends, with a live preview.](https://support.pynhq.com/media/settings/account/settings-theme.png) ## Steps 1. In Pyn, open **Settings** in the left navigation, then **Theme** under **General**. 2. Next to **Logo**, select **Upload** (or **Replace** if one is set) and choose an image from Media. The logo appears beside the button once saved. 3. Turn on **Show Logo in Emails**. The toggle is disabled until a logo exists. 4. Set **CTA Color** and **CTA Text Color** for buttons, and **Link Color** for links. Pick a swatch or enter a value; the preview updates as you drag and saves when you let go. 5. Choose a **Font Family** from the email-safe list and a **Font Size**. 6. Check the **Preview** on the right. It renders a sample welcome email with your logo, link colour, button and footer. > **Note:** Each change saves as you make it. If a save fails the page shows "Something went wrong. Please try again." and puts the previous value back. ## What you should see The preview matches what recipients get: the logo at the top when the toggle is on, links and the **Get started** button in your colours, and body text in the chosen font. The next email any flow sends uses the theme; emails already sent do not change. ## Related - [Account Settings](https://support.pynhq.com/settings/account/) for the company name and time zone. - [Media](https://support.pynhq.com/library/media/) to upload or replace the logo image. - [Automations](https://support.pynhq.com/flows/automations/) to send a test email and see the theme applied. ## Related Intercom articles - [Set Your Company Theme](https://intercom.help/pyn/en/articles/6002210-set-your-company-theme) — Pyn 1 article, kept for reference - [Customize emails with your company's logo](https://intercom.help/pyn/en/articles/6010976-customize-emails-with-your-company-s-logo) — Pyn 1 article, kept for reference --- # Calendars Source: https://support.pynhq.com/settings/calendars/ > Google and Outlook calendars connected to the workspace, which the Invite to calendar event step uses to add employees to recurring events such as orientation or a weekly 1:1. A calendar connection lets a flow invite someone to a real event: the new-starter orientation on their first Monday, the all-hands, a manager's recurring 1:1. Pyn syncs the events from one calendar you choose and the **Invite to calendar event** step picks from them. The Calendars view lists each connected calendar with its status and the events Pyn has synced. ![Settings > General > Calendars, with the Add menu open.](https://support.pynhq.com/media/settings/calendars/settings-calendars-add.png) ## What you can do here - [Connect a calendar](https://support.pynhq.com/settings/calendars/connect-a-calendar/) with **Add > Add Google Calendar** or **Add Outlook Calendar** - Open a calendar to see its synced events, each with its next occurrence - **Refresh Events** from the **...** menu to pull changes now - **Reconnect** when the calendar shows **Requires reauth** - **Archive** a calendar you no longer need ## How syncing works Pyn syncs recurring events from the selected calendar and stores each series with its start, recurrence and time zone. New events appear after the next refresh; use **Refresh Events** to bring them in sooner. When a series is deleted at the source, steps that used it report **Event Not Found**. A calendar that was connected but never had a calendar selected shows **Inactive** and the notice "This calendar needs to be configured. Click below to select which calendar to sync." ## Where it is in the app Open `/settings/general/calendars` in Pyn, or open **Settings** in the primary navigation and select **Calendars** under **General**. The view appears only in workspaces where calendars are enabled; **Add Outlook Calendar** also needs Microsoft 365 enabled. ## Related - [Connect a calendar](https://support.pynhq.com/settings/calendars/connect-a-calendar/) for the steps. - [Google Workspace](https://support.pynhq.com/integrations/google-workspace/) for the Google side and its permissions. - [Microsoft 365](https://support.pynhq.com/integrations/microsoft-365/) for Outlook. - [Automations](https://support.pynhq.com/flows/automations/) to add an Invite to calendar event step. ## Related Intercom articles - [Integrating Pyn with Google Calendar (Pyn 2)](https://intercom.help/pyn/en/articles/13401726-integrating-pyn-with-google-calendar-pyn-2) - [Create an iCalendar Feed (Pyn 1)](https://intercom.help/pyn/en/articles/8909326-create-an-icalendar-feed-pyn-1) — Pyn 1 article, kept for reference --- # Connect a calendar Source: https://support.pynhq.com/settings/calendars/connect-a-calendar/ > Connect a Google or Outlook calendar, pick which calendar Pyn syncs, and check its events are ready for the Invite to calendar event step. You want new starters added to the orientation event automatically. Connecting a calendar is a sign-in to Google or Microsoft followed by one choice: which calendar Pyn should read events from. A shared team calendar with only company events is the usual pick. ## Before you start - You are an admin or owner, and the account you sign in with can see and edit the calendar you want to use. - Pyn asks Google for `calendar.calendarlist.readonly` and `calendar.events.owned`, or Microsoft for `User.Read` and `Calendars.ReadWrite`, plus your email and profile. - The events you want to invite people to exist on that calendar as recurring series. ![Settings > General > Calendars, with the Add menu open.](https://support.pynhq.com/media/settings/calendars/settings-calendars-add.png) ## Steps **Google Calendar** 1. In Pyn, open **Settings** in the left navigation, then **Calendars** under **General**. 2. Select **Add**, then **Add Google Calendar**. 3. Google opens. Choose the account and select **Allow**. 4. Pyn opens **Setup your Google Calendar** with the heading **Select your calendar**: "You're connected! Select the calendar that events will be picked from. Make sure it's a calendar with only public events." Select the calendar. 5. You return to the Calendars view. Open the new row; it reads "Pyn is syncing this calendar. This can take a few minutes." until the events arrive. **Outlook Calendar** 1. In Pyn, open **Settings** in the left navigation, then **Calendars** under **General**. 2. Select **Add**, then **Add Outlook Calendar**. 3. Microsoft opens. Sign in and accept the permissions. 4. Pyn opens **Setup your Outlook Calendar** with the heading **Select your calendar**. Select the calendar to sync. 5. You return to the Calendars view. Open the new row; it reads "Pyn is syncing this calendar. This can take a few minutes." until the events arrive. > **Note:** If you close the selection page without choosing, the calendar is listed as **Inactive** with the notice "This calendar needs to be configured." Open it and select **Setup Calendar** to finish. If selecting fails, the page says "Could not select calendar. Try again, or reach out to Pyn support." ## What you should see The row shows **Active** and the calendar's name and owner. Its panel lists the synced events sorted by next occurrence, each with its day and time. In [Automations](https://support.pynhq.com/flows/automations/), add an **Invite to calendar event** step and the events appear in its picker. If the list stays empty after a few minutes, open the **...** menu and select **Refresh Events**; if the row shows **Requires reauth**, select **Reconnect** and sign in again with the same account. ## Related - [Calendars](https://support.pynhq.com/settings/calendars/) for how syncing works. - [Google Workspace](https://support.pynhq.com/integrations/google-workspace/) for the integration behind Google calendars and senders. - [Microsoft 365](https://support.pynhq.com/integrations/microsoft-365/) for Outlook calendars and senders. ## Related Intercom articles - [Integrating Pyn with Google Calendar (Pyn 2)](https://intercom.help/pyn/en/articles/13401726-integrating-pyn-with-google-calendar-pyn-2) — replaces - [Create an iCalendar Feed (Pyn 1)](https://intercom.help/pyn/en/articles/8909326-create-an-icalendar-feed-pyn-1) — Pyn 1 article, kept for reference --- # Conditional Senders Source: https://support.pynhq.com/settings/conditional-senders/ > A conditional sender picks a real sender by audience rule, in order, with a fallback, so one step can send from the right regional or departmental identity. A conditional sender is a sender made of rules. Each rule pairs an audience with a sender; Pyn walks the rules in order and the first one the recipient matches decides who the message comes from. If no rule matches, the fallback sender is used. On a step, a conditional sender appears in the **From** list like any other sender. ![Create Conditional Sender: a name, a medium, a fallback and ordered rules.](https://support.pynhq.com/media/settings/conditional-senders/settings-conditional-senders-create.png) ## How matching works - A rule's audience is the same shape as a step audience: lifecycle stages, plus included and excluded groups. Included groups with the same parent match any one of them, groups with different parents must all match, and exclusions win. See [How audiences match](https://support.pynhq.com/directory/employee-groups/how-audiences-match/). - Rules are checked top to bottom; the first match sends. Use **Move rule up** and **Move rule down** to set the order. - The **Fallback sender** is required and is used when nothing matches. - A conditional sender has one **Medium** (Email, Slack or Teams), chosen when you create it and fixed afterwards. Every rule and the fallback use senders of that medium. - Up to 20 rules per conditional sender. ## What you can do here - [Create a conditional sender](https://support.pynhq.com/settings/conditional-senders/create-a-conditional-sender/) - Select a row to edit its name, rules and fallback - Archive one from its **...** menu The table shows **Name**, **Medium** and the number of **Rules**. Conditional senders also appear in the main **Senders** view, labelled "Conditional · email" (or slack, teams), always with status **Active**. ## Where it is in the app Open `/settings/general/conditional-senders` in Pyn, or open **Settings** in the primary navigation and select **Conditional Senders** under **General**. ## Related - [Create a conditional sender](https://support.pynhq.com/settings/conditional-senders/create-a-conditional-sender/) for the steps. - [Senders](https://support.pynhq.com/settings/senders/) for the senders rules point to. - [Employee groups](https://support.pynhq.com/directory/employee-groups/) to build the audiences rules use. ## Related Intercom articles - [Configure Conditional Senders](https://intercom.help/pyn/en/articles/9312783-configure-conditional-senders) — Pyn 1 article, kept for reference --- # Create a conditional sender Source: https://support.pynhq.com/settings/conditional-senders/create-a-conditional-sender/ > Build a sender that routes by audience, for example the UK People team for UK employees and the US team for everyone else. Your onboarding flow sends one welcome email, but you want it to come from the People partner for the recipient's region. A conditional sender does that with ordered rules and a fallback, and you pick it on the step like any other sender. ## Before you start - You are an admin or owner. - The real senders exist and are **Active** under [Senders](https://support.pynhq.com/settings/senders/), all for the same medium. - The [employee groups](https://support.pynhq.com/directory/employee-groups/) you want to route by exist. ![Create Conditional Sender: a name, a medium, a fallback and ordered rules.](https://support.pynhq.com/media/settings/conditional-senders/settings-conditional-senders-create.png) ## Steps 1. In Pyn, open **Settings** in the left navigation, then **Conditional Senders** under **General**. 2. Select **Add**. The **Create Conditional Sender** dialog opens. 3. Enter a **Name** and choose the **Medium**: **Email**, **Slack** or **Teams**. The medium cannot be changed once the conditional sender exists. 4. Choose the **Fallback sender**. It is used when no rule matches and is required. 5. Open **Rule 1**. Set its audience (lifecycle stages, included and excluded groups) and choose **Send from**. The **Audience Preview** underneath shows who the rule covers. 6. Select **Add rule** for each further case. Use **Move rule up**, **Move rule down** and **Remove rule** to order them; the first matching rule wins. 7. Select **Save**. The button stays disabled until the name, fallback and every rule's sender and lifecycle are set. > **Tip:** Put the most specific rule first. A broad rule such as "Current employees" at the top matches everyone and the rules below it never run. ## What you should see The new row lists the name, medium and rule count. Open a step in [Automations](https://support.pynhq.com/flows/automations/), choose the same medium and the conditional sender appears in the **From** list. Enrol a test employee and check [Activity](https://support.pynhq.com/activity/) to confirm the delivery shows the sender the rule chose. If saving fails the dialog shows "Could not save conditional sender" or the server's reason; check that every rule's sender is still active. ## Related - [Conditional Senders](https://support.pynhq.com/settings/conditional-senders/) for how matching works. - [Senders](https://support.pynhq.com/settings/senders/) to add the senders rules point to. - [Automations](https://support.pynhq.com/flows/automations/) to use the conditional sender on a step. ## Related Intercom articles - [Configure Conditional Senders](https://intercom.help/pyn/en/articles/9312783-configure-conditional-senders) — Pyn 1 article, kept for reference --- # Custom Email Recipients Source: https://support.pynhq.com/settings/custom-email-recipients/ > Verified email addresses outside the directory, such as a legal inbox or an agency partner, that a step can send or Cc to. A custom email recipient is an address that is not an employee but should still get a message: the Legal department when a contract changes, the IT desk when someone starts, an external payroll partner. Once verified it can be chosen as a step's recipient, added to **Cc**, or named as an escalation target. The address gets the email only; it gets no access to Pyn. ![Add new custom recipient asks for a Name and an Email.](https://support.pynhq.com/media/settings/custom-email-recipients/settings-custom-email-recipients-add.png) ## What you can do here - [Add a custom email recipient](https://support.pynhq.com/settings/custom-email-recipients/add-a-custom-email-recipient/) and verify it - Set a recipient's **Time Zone**, used when a step is scheduled in the recipient's time zone; left as **Not Set** it falls back to the workspace time zone - **Send Verification Email** again from the **...** menu - **Archive** a recipient; steps that referenced it drop it ## Statuses | Status | Meaning | | --- | --- | | **Pending** | The verification link has not been opened. | | **Active** | Verified and available on steps. | | **Error** | A delivery to this address failed in a way that needs attention; it also appears under Needs Attention 🚨. | ## Where it is in the app Open `/settings/general/custom-email-recipients` in Pyn, or open **Settings** in the primary navigation and select **Custom Email Recipients** under **General**. The view appears only in workspaces where custom email recipients are enabled. ## Related - [Add a custom email recipient](https://support.pynhq.com/settings/custom-email-recipients/add-a-custom-email-recipient/) for the steps. - [Senders](https://support.pynhq.com/settings/senders/) for the other side of an email: who it comes from. - [Automations](https://support.pynhq.com/flows/automations/) to choose the recipient or Cc on a step. ## Related Intercom articles - [Custom Email Recipients in Workflows (Pyn 2)](https://intercom.help/pyn/en/articles/13930364-custom-email-recipients-in-workflows-pyn-2) - [Custom Recipients in Automation Messages](https://intercom.help/pyn/en/articles/8491211-custom-recipients-in-automation-messages) — Pyn 1 article, kept for reference - [Create an Asana task via Pyn Automations (Pyn 1)](https://intercom.help/pyn/en/articles/9347018-create-an-asana-task-via-pyn-automations-pyn-1) — Pyn 1 article, kept for reference --- # Add a custom email recipient Source: https://support.pynhq.com/settings/custom-email-recipients/add-a-custom-email-recipient/ > Add an external or team address, verify it from its inbox, and set the time zone steps should use for it. You want the facilities inbox copied on every new-starter email. A custom email recipient is added with a name and address, verified by a link sent to that inbox, and is then available on steps. ## Before you start - You are an admin or owner. - Someone can open the inbox to confirm the verification link within 24 hours. ![Add new custom recipient asks for a Name and an Email.](https://support.pynhq.com/media/settings/custom-email-recipients/settings-custom-email-recipients-add.png) ## Steps 1. In Pyn, open **Settings** in the left navigation, then **Custom Email Recipients** under **General**. 2. Select **Add**. The **Add new custom recipient** dialog opens. 3. Enter a **Name** (for example "Legal Department") and the **Email**. Select **Add**. 4. The recipient's panel opens with "This recipient email address has not been verified." Select **Send Verification Email**; the notice becomes "Verification email sent! Check your inbox and click the link to verify." 5. Ask the inbox owner to open the email from `Pyn ` and confirm the link. 6. In the panel, set **Time Zone** if steps scheduled in the recipient's time zone should use a particular zone for this address. > **Note:** Verification protects the inbox owner: Pyn sends nothing to the address until someone with access to it has confirmed. ## What you should see The row's status changes from **Pending** to **Active** and the panel's **Verified** field reads `true`. In [Automations](https://support.pynhq.com/flows/automations/), open an email step: the recipient appears in the recipient list and in **Cc**. If the link does not arrive, check spam and shared-inbox filters, then use **Send Verification Email** in the **...** menu to send a fresh one. ## Related - [Custom Email Recipients](https://support.pynhq.com/settings/custom-email-recipients/) for statuses and the time zone field. - [Automations](https://support.pynhq.com/flows/automations/) to Cc the recipient on a step. - [Add an email sender](https://support.pynhq.com/settings/senders/add-an-email-sender/) when the address should send instead. ## Related Intercom articles - [Custom Email Recipients in Workflows (Pyn 2)](https://intercom.help/pyn/en/articles/13930364-custom-email-recipients-in-workflows-pyn-2) — replaces - [Custom Recipients in Automation Messages](https://intercom.help/pyn/en/articles/8491211-custom-recipients-in-automation-messages) — Pyn 1 article, kept for reference - [Create an Asana task via Pyn Automations (Pyn 1)](https://intercom.help/pyn/en/articles/9347018-create-an-asana-task-via-pyn-automations-pyn-1) — Pyn 1 article, kept for reference --- # General Source: https://support.pynhq.com/settings/general/ > The General group in Settings: Needs Attention, Account Settings, Theme, Senders, Conditional Senders, Calendars, Current and Inactive Users, Custom Email Recipients, Webhooks and MCP Servers. General holds the workspace-wide plumbing: who messages come from, which calendars Pyn can invite people to, who can sign in, and the webhooks and MCP servers other systems use to talk to Pyn. It is the first group in the Settings rail. ![Settings > General > Senders lists every sender with its status.](https://support.pynhq.com/media/settings/senders/settings-general-senders.png) ## What each view holds | View | What it lists | Guide | | --- | --- | --- | | **Needs Attention 🚨** | Senders, calendars and custom email recipients in an error state, each with a Reconnect or verification action. Empty when everything is healthy. | [Fix a sender or integration that needs attention](https://support.pynhq.com/integrations/needs-attention/) | | **Account Settings** | Time zone, company name and the pause control. | [Account Settings](https://support.pynhq.com/settings/account/) | | **Theme** | Logo, colours and font for the emails Pyn sends. | [Theme your emails](https://support.pynhq.com/settings/account/theme-your-emails/) | | **Senders** | Every sender: Google Workspace, Microsoft 365, verified email, Slack, Teams and conditional senders, with status. | [Senders](https://support.pynhq.com/settings/senders/) | | **Conditional Senders** | Rules that pick a sender by audience, with a fallback. | [Conditional Senders](https://support.pynhq.com/settings/conditional-senders/) | | **Calendars** | Connected Google and Outlook calendars and their synced events. | [Calendars](https://support.pynhq.com/settings/calendars/) | | **Current Users** | Everyone who can sign in, with role, status and last seen. | [Users](https://support.pynhq.com/settings/users/) | | **Inactive Users** | Deactivated accounts. | [Users](https://support.pynhq.com/settings/users/) | | **Custom Email Recipients** | Verified addresses outside the directory that steps can send or Cc to. | [Custom Email Recipients](https://support.pynhq.com/settings/custom-email-recipients/) | | **Webhooks** | Inbound webhooks created on forms, with their endpoint, secret and log. | [Webhooks](https://support.pynhq.com/settings/webhooks/) | | **MCP Servers** | Servers that expose workspace operations to AI clients. | [MCP Servers](https://support.pynhq.com/settings/mcp-servers/) | Theme, Calendars, Custom Email Recipients and MCP Servers appear only when that feature is enabled for your workspace. ## Where it is in the app Open `/settings/general/senders` in Pyn, or open **Settings** in the primary navigation and pick a view under **General**. Each view has its own route, for example `/settings/general/current-users`. ## Related - [Settings](https://support.pynhq.com/settings/) for the whole Settings area. - [Senders](https://support.pynhq.com/settings/senders/) for sender types and states. - [Users](https://support.pynhq.com/settings/users/) for roles and invitations. - [Account Settings](https://support.pynhq.com/settings/account/) for the workspace's own details. ## Related Intercom articles - [Manage Your Settings (Pyn 2)](https://intercom.help/pyn/en/articles/12044902-manage-your-settings-pyn-2) — draws on --- # Integrations Source: https://support.pynhq.com/settings/integrations/ > The Integrations group in Settings: the Needs Attention, Installed and Available views, what each tile status means, and the actions every integration panel shares. The Integrations group in Settings lists what is connected, what needs attention and what you can add. Each integration has its own guide under [Integrations](https://support.pynhq.com/integrations/) on this site; the sections below cover the views and the actions they share. ![Settings > Integrations > Installed lists every connected integration with its status.](https://support.pynhq.com/media/integrations/overview/integrations-installed-list.png) ## The three views | View | Route | What it shows | | --- | --- | --- | | **Needs Attention 🚨** | `/settings/integrations/attention` | Integrations in the error state, such as one whose credentials were revoked. Empty when everything is healthy. | | **Installed** | `/settings/integrations/installed` | Every integration that has been installed, whether active, in error or inactive. | | **Available** | `/settings/integrations/available` | Integrations you can install, plus early-access and waitlist tiles. | ## Tile statuses | Status | Meaning | | --- | --- | | **Not Installed** / **Click to Install** | Shown on Available tiles; selecting the tile starts the connection. | | **Ready to Connect** | The integration exists in the workspace but has no credentials yet. Open it and select **Connect Now**. | | **Connecting** | The connection is in progress. | | **Active** | Connected and operating. | | **Error** | Something needs attention, usually re-authentication. The tile also appears under Needs Attention. | | **Inactive** | Installed but deactivated. Nothing syncs or sends until you activate it. | | **Early Access** | Available on request. Selecting the tile opens a form to ask Pyn to set it up with you. | | **Waitlist** | Planned. Selecting the tile registers your interest. | ## Actions every panel shares Select an installed tile to open its panel. The **...** menu holds **Activate** and **Deactivate**, and most integrations add **Reconnect**, **Test Connection** and **Archive**. The panel's tabs are **Details** (the connection's properties, including **Last Refresh**), **History** (a log of every refresh, newest first) and, for HRIS integrations, **Advanced**, which lists the **Fields in Report** Pyn received from the source. Deactivating stops syncing and sending while keeping the credentials; activating starts them again. Archiving removes the integration from Installed. Senders that depend on an archived integration stop working, so archive the senders first or expect their steps to fail. ## Where it is in the app Open `/settings/integrations/installed` in Pyn, or open **Settings** in the primary navigation; it lands on Installed. Select **Available** to add an integration. ## Related - [Integrations](https://support.pynhq.com/integrations/) for one guide per integration. - [Fix a sender or integration that needs attention](https://support.pynhq.com/integrations/needs-attention/) when a tile shows Error. - [Settings](https://support.pynhq.com/settings/) for the General group. ## Related Intercom articles - [Connect to your HRIS (Pyn 2)](https://intercom.help/pyn/en/articles/16755703-connect-to-your-hris-pyn-2) — draws on - [Manage Integrations or Senders That Need Attention (Pyn 2)](https://intercom.help/pyn/en/articles/12062401-manage-integrations-or-senders-that-need-attention-pyn-2) — draws on --- # MCP Servers Source: https://support.pynhq.com/settings/mcp-servers/ > An MCP server exposes chosen workspace operations to AI clients such as Claude or Cursor, limited by a minimum role and by what each connecting person is already allowed to do. An MCP server is an address an AI client connects to so it can call a set of Pyn operations you have chosen, such as searching the directory or reading an employee's enrolments. Each server has a name, a title and description the client shows, a **Minimum role**, and up to 100 operations. Offering an operation never grants access: whoever connects can call only what their own Pyn role already allows, and the same check runs on every call. ![Add MCP server: the details step, before choosing operations.](https://support.pynhq.com/media/settings/mcp-servers/settings-mcp-servers-add.png) ## What you can do here - [Add an MCP server](https://support.pynhq.com/settings/mcp-servers/add-an-mcp-server/) and pick its operations - **Edit** a server's title, description, role and operations; the name cannot change - **Disable** a server to refuse every connection, and **Enable** it again - **Archive** a server; its name becomes available again ## The MCP Servers table Columns are **Server**, **Endpoint**, **Minimum Role** and **Status**. A server is **Active** or **Disabled**; a disabled server's panel says "This server is disabled. AI clients are refused until it is enabled again." Each operation is tagged **Reads** or **Changes data**. A connection is a grant between one person and one AI client, so Claude Desktop and Cursor connect, and are revoked, separately. ## Where it is in the app Open `/settings/general/mcp-servers` in Pyn, or open **Settings** in the primary navigation and select **MCP Servers** under **General**. The view appears only in workspaces where MCP servers are enabled. ## Related - [Add an MCP server](https://support.pynhq.com/settings/mcp-servers/add-an-mcp-server/) for the steps. - [AI](https://support.pynhq.com/ai/) for Pyn's own agents and context. - [Users](https://support.pynhq.com/settings/users/) for the roles the minimum role refers to. --- # Add an MCP server Source: https://support.pynhq.com/settings/mcp-servers/add-an-mcp-server/ > Create a server, choose who may connect and which operations it offers, then share its endpoint with the people who will use it from an AI client. You want the People team to ask their AI assistant about who starts next week without giving it the whole workspace. An MCP server is a named bundle of operations with a minimum role; you create it in two steps, details then operations, and hand out its endpoint. ## Before you start - You are an admin or owner, and MCP servers are enabled for your workspace. - Pick a name that will not change: lowercase letters, numbers and hyphens, starting with a letter, up to 63 characters. - Know which operations you want to offer. The picker lists only operations you can call yourself. ![Add MCP server: the details step, before choosing operations.](https://support.pynhq.com/media/settings/mcp-servers/settings-mcp-servers-add.png) ## Steps 1. In Pyn, open **Settings** in the left navigation, then **MCP Servers** under **General**. 2. Select **Add**. The **Add MCP server** page opens. 3. Enter the **Name** (for example `people-directory`). The field explains "Lowercase letters, numbers and hyphens. It cannot be changed later." 4. Enter a **Title** and a **Description**: "Tells people, and their AI client, what this server is for." 5. Choose the **Minimum role**: **Owner**, **Admin**, **Power User** or **User**. "Only people with this role, or one above it, can connect." Select **Next**. 6. Under **Operations**, search to add each operation. The list shows "(changes data)" after any mutation and counts "n / 100 selected". Remove one with the bin icon beside it. 7. Select **Add**. The server's panel opens on the right. > **Note:** If saving fails the page shows "The server could not be saved. If you are adding a server, its name may already be in use." An archived server frees its name. ## What you should see The panel shows the **URL** under "AI clients connect to this address.", the description, minimum role and the operations list with each one marked **Reads** or **Changes data**. Copy the URL into the AI client's MCP settings; the client signs in as the person using it and is offered only the operations their role allows. The server row shows **Active**; use **Disable** in its **...** menu to pause it. ## Related - [MCP Servers](https://support.pynhq.com/settings/mcp-servers/) for how access is decided. - [Users](https://support.pynhq.com/settings/users/) for what each role can do. - [AI](https://support.pynhq.com/ai/) for Pyn's built-in agents. --- # Set notification emails Source: https://support.pynhq.com/settings/notifications/ > Choose whether Pyn emails you when a delivery bounces, when a sender or integration needs re-authentication, and when a webhook cannot take a payload. Every bounce, expired token and rejected webhook payload lands in [Notices](https://support.pynhq.com/notices/). Three workspace settings decide which of those also reach your inbox. They live behind the gear on the Notices page rather than under Settings. ## Before you start - You are an admin or owner; the gear only shows for those roles. ![The Settings gear on Notices holds the three notification email options.](https://support.pynhq.com/media/settings/notifications/settings-notices-settings.png) ## Steps 1. In Pyn, open **Notices** in the left navigation. 2. Select the **Settings** gear in the top right of the view. 3. Tick or untick each option: - **Send email when a delivery bounces** - **Email admins and owners when re-authentication is required** - **Email admins when a webhook cannot take a payload** 4. Close the popover. Each change saves as you make it. > **Note:** With the webhook option off, the first occurrence of each failure code still emails the workspace owner, the same way a re-authentication notice does. Turning it on emails every admin. ## What you should see The notices themselves keep arriving in the **Open** view regardless of these settings; the options only add email. The next bounce, re-authentication or webhook failure after you tick an option sends an email to the roles named on it. ## Related - [Notices](https://support.pynhq.com/notices/) for reading, acting on and archiving notices. - [Fix a sender or integration that needs attention](https://support.pynhq.com/integrations/needs-attention/) for the re-authentication case. - [Webhooks](https://support.pynhq.com/settings/webhooks/) for what a rejected payload means. --- # Senders Source: https://support.pynhq.com/settings/senders/ > Every identity a message can come from: Google Workspace and Microsoft 365 mailboxes, verified email addresses, Slack users and bots, Teams users and conditional senders, with the statuses the Senders view shows. A sender is the identity a step sends from: a colleague's Gmail or Outlook mailbox, a verified team address, a personal Slack account, the Pyn Bot, a custom Slack bot, or a conditional sender that picks one of those by audience. The **Senders** view lists them all with their status, and its **Add** menu is where every new sender starts. ![Settings > General > Senders lists every sender with its status.](https://support.pynhq.com/media/settings/senders/settings-general-senders.png) ## What you can do here - [Add an email sender](https://support.pynhq.com/settings/senders/add-an-email-sender/) and verify the address - [Add a Google or Microsoft 365 sender](https://support.pynhq.com/settings/senders/add-a-google-or-microsoft-365-sender/) so a message comes from a real mailbox - [Add a Slack sender](https://support.pynhq.com/settings/senders/add-a-slack-sender/) to send as yourself in Slack - [Create an auth link](https://support.pynhq.com/settings/senders/create-an-auth-link/) so an executive can connect their own Google or Slack account without a Pyn login - **Send Test** from a sender's **...** menu to check it works - [Archive a sender](https://support.pynhq.com/settings/senders/archive-a-sender/) you no longer use - Understand the [sender types and states](https://support.pynhq.com/settings/senders/sender-types-and-states/) ## The Senders table Each row shows the sender's avatar, **Sender** name, **Email address** and **Status**. Senders sort by name regardless of type. Select a row to open its panel; the **...** at the end of the row opens its actions. Senders in an error state also appear under **Needs Attention 🚨** at the top of the General group. The **Add** button offers **Add Google Email Sender**, **Add Microsoft 365 Email Sender** (in workspaces with Microsoft 365 enabled), **Add Slack Sender** (once a Slack workspace is connected), **Add Email Sender**, **Create Google Auth Link** and **Create Slack Auth Link**. Teams senders are added by Pyn when the Teams integration is set up with you. ## Where it is in the app Open `/settings/general/senders` in Pyn, or open **Settings** in the primary navigation and select **Senders** under **General**. ## Related - [Sender types and states](https://support.pynhq.com/settings/senders/sender-types-and-states/) for the full reference. - [Conditional Senders](https://support.pynhq.com/settings/conditional-senders/) to route by audience. - [General](https://support.pynhq.com/settings/general/) for the rest of the group. - [Automations](https://support.pynhq.com/flows/automations/) to pick a sender on a step. ## Related Intercom articles - [Set up a Google Email Sender (Pyn 2)](https://intercom.help/pyn/en/articles/11518211-set-up-a-google-email-sender-pyn-2) - [Connect your Gmail account with Pyn](https://intercom.help/pyn/en/articles/6371744-connect-your-gmail-account-with-pyn) — Pyn 1 article, kept for reference - [Configure a Custom Email Sender (Pyn 2)](https://intercom.help/pyn/en/articles/16729512-configure-a-custom-email-sender-pyn-2) - [Add email Senders (Pyn 1)](https://intercom.help/pyn/en/articles/6005752-add-email-senders-pyn-1) — Pyn 1 article, kept for reference - [Configure a Custom Sender (Pyn 1)](https://intercom.help/pyn/en/articles/6398801-configure-a-custom-sender-pyn-1) — Pyn 1 article, kept for reference - [Set Up a Personal Slack Sender (Pyn 2)](https://intercom.help/pyn/en/articles/16755550-set-up-a-personal-slack-sender-pyn-2) - [Set Up a Slack Sender in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/11518173-set-up-a-slack-sender-in-pyn-pyn-2) - [Set up a Custom Slack Sender/Slack Bot (Pyn 2)](https://intercom.help/pyn/en/articles/16755898-set-up-a-custom-slack-sender-slack-bot-pyn-2) - [Connect your personal Slack account with Pyn (Pyn 1)](https://intercom.help/pyn/en/articles/6002198-connect-your-personal-slack-account-with-pyn-pyn-1) — Pyn 1 article, kept for reference - [Send Slack messages from a service account (Pyn 1)](https://intercom.help/pyn/en/articles/9585758-send-slack-messages-from-a-service-account-pyn-1) — Pyn 1 article, kept for reference - [Customize emails with your email signature](https://intercom.help/pyn/en/articles/6010967-customize-emails-with-your-email-signature) — Pyn 1 article, kept for reference - [Manage Sender Permissions (Pyn 1)](https://intercom.help/pyn/en/articles/6974303-manage-sender-permissions-pyn-1) — Pyn 1 article, kept for reference --- # Add a Google or Microsoft 365 sender Source: https://support.pynhq.com/settings/senders/add-a-google-or-microsoft-365-sender/ > Connect a Gmail or Outlook mailbox so messages come from a real person and replies land in their inbox. You want an email to come from a named person, with their signature and replies going straight to them. A Google Workspace or Microsoft 365 sender is that person's mailbox, connected by signing in and granting Pyn permission to send. The person signs in themselves; an admin cannot connect someone else's mailbox. ## Before you start - You are signed in to Pyn as the person whose mailbox you are connecting. To connect someone who has no Pyn login, [create an auth link](https://support.pynhq.com/settings/senders/create-an-auth-link/) instead. - Your organisation allows the Pyn app. In Google Workspace that may need an admin to approve the app; in Microsoft 365 the account needs an Exchange Online mailbox. - **Add Microsoft 365 Email Sender** appears only in workspaces where Microsoft 365 is enabled. ![The Add menu on Senders is where every new sender starts.](https://support.pynhq.com/media/settings/senders/settings-senders-add-menu.png) ## Steps **Google Workspace** 1. In Pyn, open **Settings** in the left navigation, then **Senders** under **General**. 2. Select **Add**, then **Add Google Email Sender**. 3. Google opens. Choose the account and select **Allow**. Pyn asks for your email and profile and for `gmail.send`, which lets it send email as you; it cannot read your mail. 4. Google returns you to Pyn. Your sender is listed with your name and address. 5. Open the sender's **...** menu and select **Send Test**. "Test Message Sent" confirms it; check your inbox. **Microsoft 365** 1. In Pyn, open **Settings** in the left navigation, then **Senders** under **General**. 2. Select **Add**, then **Add Microsoft 365 Email Sender**. 3. Microsoft opens. Sign in and accept the permissions. Pyn asks for `User.Read` and `Mail.Send`. 4. Microsoft returns you to Pyn. Your sender is listed with your name and address. 5. Open the sender's **...** menu and select **Send Test**. "Test Message Sent" confirms it; check your inbox. > **Note:** Connecting the first Google or Microsoft 365 sender also installs that integration, so it appears under **Settings > Integrations > Installed**. Senders of the same type share that one integration. ## What you should see The new row shows **Active**, and the sender's panel lists the **Sender Name**, **Email** and the Google **Hosted Domain** or Microsoft **Tenant**. If the row later shows **Requires reauth**, the mailbox's password changed or access was revoked; the owner of that mailbox opens the sender and selects **Reconnect**. If someone else tries, Pyn asks them to confirm they have permission for that address first. ## Related - [Senders](https://support.pynhq.com/settings/senders/) for the other sender types. - [Google Workspace](https://support.pynhq.com/integrations/google-workspace/) for what the integration does and the scopes it uses. - [Microsoft 365](https://support.pynhq.com/integrations/microsoft-365/) for the Microsoft side. - [Create an auth link](https://support.pynhq.com/settings/senders/create-an-auth-link/) to connect someone without a Pyn login. ## Related Intercom articles - [Set up a Google Email Sender (Pyn 2)](https://intercom.help/pyn/en/articles/11518211-set-up-a-google-email-sender-pyn-2) — replaces - [Connect your Gmail account with Pyn](https://intercom.help/pyn/en/articles/6371744-connect-your-gmail-account-with-pyn) — Pyn 1 article, kept for reference --- # Add a Slack sender Source: https://support.pynhq.com/settings/senders/add-a-slack-sender/ > Connect your own Slack account so direct messages and channel posts come from you rather than the Pyn Bot. You want a Slack message to come from you, with your name and avatar, so the recipient can reply to you directly. A Slack sender is your own Slack user, authorised to let Pyn post on your behalf in the Slack workspace that is connected to Pyn. ## Before you start - The Slack integration is installed and **Active** under **Settings > Integrations**. Until it is, **Add Slack Sender** is disabled. - You are signed in to Pyn as yourself. Slack senders are authenticated by their user, so each person connects their own. - If more than one Slack workspace is connected, the menu lists **Add Slack Sender for** each, so you can pick the right one. ![The Add menu on Senders is where every new sender starts.](https://support.pynhq.com/media/settings/senders/settings-senders-add-menu.png) ## Steps 1. In Pyn, open **Settings** in the left navigation, then **Senders** under **General**. 2. Select **Add**, then **Add Slack Sender**. 3. Slack opens. Check the workspace shown in the top right is the one connected to Pyn, review the permissions and select **Allow**. Pyn asks for `channels:read`, `channels:write.invites`, `chat:write`, `groups:read`, `groups:write.invites`, `im:read` and `im:write` on your user. 4. Slack returns you to Pyn. Your Slack name and avatar appear in the Senders list. 5. Open the sender's **...** menu and select **Test Connection**. "Test successfully sent. Check your Slack account for the test message." confirms it. > **Tip:** You can post to a channel as yourself only if you are a member of it. The Pyn Bot, or a [custom bot](https://support.pynhq.com/integrations/slack/add-a-custom-bot/), has to be invited to a channel before it can post there. ## What you should see The row shows **Active**, and the sender appears in the **From** list of Slack steps next to **Pyn Bot**. If the row later shows **Requires reauth**, open the sender and select **Reconnect**; the panel explains "This sender will not be able to send as it requires re-authentication. This can happen if a password is changed or credentials are revoked." If the test reports "Slack appears to be configured, but we could not find you as a Slack Member to send the test message.", your Pyn email does not match any Slack member's email in that workspace. ## Related - [Senders](https://support.pynhq.com/settings/senders/) for the other sender types. - [Slack](https://support.pynhq.com/integrations/slack/) for installing the integration and the Pyn Bot. - [Create an auth link](https://support.pynhq.com/settings/senders/create-an-auth-link/) to connect someone without a Pyn login. ## Related Intercom articles - [Set Up a Personal Slack Sender (Pyn 2)](https://intercom.help/pyn/en/articles/16755550-set-up-a-personal-slack-sender-pyn-2) — replaces - [Set Up a Slack Sender in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/11518173-set-up-a-slack-sender-in-pyn-pyn-2) — replaces - [Set up a Custom Slack Sender/Slack Bot (Pyn 2)](https://intercom.help/pyn/en/articles/16755898-set-up-a-custom-slack-sender-slack-bot-pyn-2) — replaces - [Connect your personal Slack account with Pyn (Pyn 1)](https://intercom.help/pyn/en/articles/6002198-connect-your-personal-slack-account-with-pyn-pyn-1) — Pyn 1 article, kept for reference - [Send Slack messages from a service account (Pyn 1)](https://intercom.help/pyn/en/articles/9585758-send-slack-messages-from-a-service-account-pyn-1) — Pyn 1 article, kept for reference --- # Add an email sender Source: https://support.pynhq.com/settings/senders/add-an-email-sender/ > Add a team address such as people@example.com as a sender, verify it from its inbox and send a test. You want messages to come from a shared address, such as a People team inbox, rather than from one person's mailbox. An email sender is any address you can prove you control: Pyn sends a verification link to it, and once the link is opened the sender is active. ## Before you start - You are an admin or owner. - You can open the inbox of the address you are adding. The verification link goes there and works for 24 hours. - The **Email** integration is installed. It is the default in every workspace; check under **Settings > Integrations > Installed**. ![Add new email sender asks for a Sender Name and an Email Address.](https://support.pynhq.com/media/settings/senders/settings-senders-add-email-sender.png) ## Steps 1. In Pyn, open **Settings** in the left navigation, then **Senders** under **General**. 2. Select **Add** in the top right, then **Add Email Sender**. 3. In **Add new email sender**, enter the **Sender Name** recipients will see (for example "HR Team") and the **Email Address** (for example `hr@example.com`). Select **Add**. 4. The sender's panel opens with the notice "This sender email address has not been verified." Select **Send Verification Email**. The notice changes to "Verification email sent! Check your inbox and click the link to verify." 5. Open the inbox. The email comes from `Pyn `. Open its link and confirm the verification in the browser tab that opens. 6. Back in Pyn, open the sender's **...** menu and select **Send Test**. "Test Message Sent" confirms it went; check the inbox. > **Note:** The name and address cannot be edited afterwards. To change either, add a new sender, verify it, and [archive the old one](https://support.pynhq.com/settings/senders/archive-a-sender/). ## What you should see Until the link is opened the row's **Status** reads **Pending** and the panel's **Verified** field is `false`. After verification the status turns **Active**, **Verified** is `true`, and the sender appears in the **From** list of email steps. If the verification email does not arrive, check spam and any filters on a shared inbox, then use **Send Verification Email** in the **...** menu to issue a fresh link; a link that has expired or been used reports "Verification link has expired or already been used". ## Related - [Senders](https://support.pynhq.com/settings/senders/) for the other sender types. - [Email](https://support.pynhq.com/integrations/email/) for the integration behind email senders and custom domains. - [Custom Email Recipients](https://support.pynhq.com/settings/custom-email-recipients/) when the address should receive rather than send. ## Related Intercom articles - [Configure a Custom Email Sender (Pyn 2)](https://intercom.help/pyn/en/articles/16729512-configure-a-custom-email-sender-pyn-2) — replaces - [Add email Senders (Pyn 1)](https://intercom.help/pyn/en/articles/6005752-add-email-senders-pyn-1) — Pyn 1 article, kept for reference - [Configure a Custom Sender (Pyn 1)](https://intercom.help/pyn/en/articles/6398801-configure-a-custom-sender-pyn-1) — Pyn 1 article, kept for reference --- # Archive a sender Source: https://support.pynhq.com/settings/senders/archive-a-sender/ > Retire a sender you no longer use, after checking which steps still send from it. Someone has left, or a shared address has been replaced. Archiving removes the sender from the list and from the **From** menu on steps. Pyn checks which enabled steps still use the sender before it lets you confirm, so nothing fails quietly. ## Before you start - You are an admin or owner. - Have the replacement sender ready, so you can move steps across before or straight after archiving. ![Settings > General > Senders lists every sender with its status.](https://support.pynhq.com/media/settings/senders/settings-general-senders.png) ## Steps 1. In Pyn, open **Settings** in the left navigation, then **Senders** under **General**. 2. Find the sender and open its **...** menu, then select **Archive**. 3. Read the **Archive Sender** dialog. If enabled steps on live automations use this sender it lists them as "Sends on these steps will fail once this sender is archived:" followed by each automation and step. Otherwise it asks "Are you sure you want to archive this sender?" 4. If steps are listed, select **Cancel**, change the sender on those steps in [Automations](https://support.pynhq.com/flows/automations/), and come back. 5. Select **Confirm Archive**. > **Note:** The Pyn Bot cannot be archived; it belongs to the Slack integration. A conditional sender is archived from the **Conditional Senders** view, and archiving a sender that a conditional sender's rules point to leaves those rules with nothing to send from. ## What you should see The sender leaves the Senders list and the **From** menus. Steps that still referenced it fail at their next send and show in [Activity](https://support.pynhq.com/activity/) with a sender error, so move them first. To bring a sender back, Pyn support can unarchive it, or the person connects again. ## Related - [Senders](https://support.pynhq.com/settings/senders/) for the full list. - [Conditional Senders](https://support.pynhq.com/settings/conditional-senders/) if rules referenced the archived sender. - [Automations](https://support.pynhq.com/flows/automations/) to change the sender on a step. --- # Create an auth link Source: https://support.pynhq.com/settings/senders/create-an-auth-link/ > Give an executive or colleague a one-time link that connects their own Google or Slack account as a sender, without a Pyn login. You want a welcome message to come from the CEO, but the CEO is not a Pyn user and never will be. An auth link lets someone complete the Google or Slack connection for your workspace from a link you send them. They sign in to Google or Slack with the address you named, and the sender appears in your workspace. ## Before you start - You are an admin or owner. - For a Slack link, the Slack integration is **Active**. With more than one Slack workspace connected you pick which one in the form. - You know the exact email address the person uses in Google or Slack. The link works only for an account with that address. ![Create Google auth link asks for the address the person signs in to Google with.](https://support.pynhq.com/media/settings/senders/settings-senders-auth-link.png) ## Steps 1. In Pyn, open **Settings** in the left navigation, then **Senders** under **General**. 2. Select **Add**, then **Create Google Auth Link** or **Create Slack Auth Link**. 3. Read the explanation: "The person you invite connects their own Google account from the link, without a Pyn login. They must sign in to Google with this email address." 4. Enter their **Email Address**. For Slack, choose the **Slack workspace** if more than one is listed. 5. Select **Create link**. The dialog shows the link and reminds you: "Send this link to name@example.com. It works for 3 days, once, and only for a Google account with that email address." 6. Copy the link and send it to the person yourself; Pyn does not email it. Select **Done**. 7. When they open the link, Google or Slack asks them to sign in and allow Pyn. Once they do, their sender appears in your Senders list. > **Caution:** The link is a bearer token: anyone who opens it with a matching account completes the connection. Send it directly to the person and create a new one if it is lost or expires. ## What you should see Once the person has finished, a new row appears under **Senders** with their name and address, status **Active**, and the sender is available in the **From** list of email or Slack steps. If the link is used after 3 days or a second time, the person sees an error and you create a fresh link. If the dialog itself reports "We could not create the link. Please try again.", check the Slack integration is active and try again. ## Related - [Senders](https://support.pynhq.com/settings/senders/) for the senders list and statuses. - [Add a Google or Microsoft 365 sender](https://support.pynhq.com/settings/senders/add-a-google-or-microsoft-365-sender/) when the person has a Pyn login. - [Add a Slack sender](https://support.pynhq.com/settings/senders/add-a-slack-sender/) for the Slack equivalent. --- # Sender types and states Source: https://support.pynhq.com/settings/senders/sender-types-and-states/ > Reference for every kind of sender Pyn supports, how each is added, the medium it serves, and what each status in the Senders view means. A sender is an item in the workspace that a step sends through. Six kinds exist, each tied to an integration or to the email service Pyn runs. This reference lists them with the medium they serve, how they are created and the statuses the Senders view shows. ## Types | Type | Medium | How it is added | Who can add it | Panel shows | | --- | --- | --- | --- | --- | | Verified email sender | Email | **Add > Add Email Sender**, then a verification link to the inbox (valid 24 hours) | Admin | Sender Name, Email, Verified | | Google Workspace sender | Email | **Add > Add Google Email Sender** (the person signs in to Google) or a Google auth link | The mailbox owner | Sender Name, Email, Hosted Domain | | Microsoft 365 sender | Email | **Add > Add Microsoft 365 Email Sender** (the person signs in to Microsoft) | The mailbox owner | Sender Name, Email, Tenant | | Slack user | Slack | **Add > Add Slack Sender** or a Slack auth link | The Slack user | Sender Name, Email, Slack Id, Team Id | | Pyn Bot and custom Slack bots | Slack | Pyn Bot is created when Slack is installed; a custom bot through **Add custom bot** on the Slack integration | Admin | Slack Id, Team Id | | Teams user | Teams | Set up with Pyn when the Teams integration is installed | Pyn with you | Sender name, Email | | Conditional sender | Email, Slack or Teams | **Conditional Senders > Add** | Admin | Name, Medium, Rules | Senders depend on their integration. Deactivating or archiving the Slack, Google Workspace or Microsoft 365 integration stops its senders sending. ## Statuses | Status | Shown for | Meaning | | --- | --- | --- | | **Active** | All | The sender can send. Conditional senders always show Active. | | **Pending** | Verified email sender | The verification link has not been opened. Use **Send Verification Email** in the **...** menu. | | **Requires reauth** | Google, Microsoft 365, Slack and Teams senders | The token was revoked or the password changed. The sender's owner opens it and selects **Reconnect**. Shown ahead of any other status. | | **Error** | All except conditional | The last send failed in a way that needs attention. The row also appears under **Needs Attention 🚨**. | | **Inactive** | Verified email sender | Deactivated. | ## Actions in the **...** menu | Action | Senders | What it does | | --- | --- | --- | | **Send Test** / **Test Connection** | All except conditional | Sends a test to you: an email to your inbox, or a Slack direct message. Disabled while the sender is in error or requires reauth. | | **Send Verification Email** | Verified email sender, until verified | Issues a fresh 24-hour verification link. | | **Reconnect** | Google, Microsoft 365, Slack user | Starts the sign-in again for the same account. | | **Refresh Details** | Google Workspace sender | Re-reads the name and address from Google. | | **Archive** | All except Pyn Bot | Opens the Archive Sender check. See [Archive a sender](https://support.pynhq.com/settings/senders/archive-a-sender/). | ## Related - [Senders](https://support.pynhq.com/settings/senders/) for the view itself. - [Conditional Senders](https://support.pynhq.com/settings/conditional-senders/) for rule-based routing. - [Fix a sender or integration that needs attention](https://support.pynhq.com/integrations/needs-attention/) when a status is Requires reauth or Error. ## Related Intercom articles - [Customize emails with your email signature](https://intercom.help/pyn/en/articles/6010967-customize-emails-with-your-email-signature) — Pyn 1 article - [Manage Sender Permissions (Pyn 1)](https://intercom.help/pyn/en/articles/6974303-manage-sender-permissions-pyn-1) — Pyn 1 article --- # Users Source: https://support.pynhq.com/settings/users/ > Who can sign in to the workspace and what each role lets them do: Owner, Admin, Power User and User, as shown in the Current Users and Inactive Users views. A user is someone who signs in to Pyn to build flows, read activity or manage settings. Employees in the Directory are not users unless they are invited. The **Current Users** view lists everyone with access; **Inactive Users** lists deactivated accounts. ![Settings > General > Current Users lists everyone who can sign in, with role and status.](https://support.pynhq.com/media/settings/users/settings-users-current.png) ## Roles | Role | What it adds | Who can assign it | | --- | --- | --- | | **User** (shown as **Limited User** when inviting) | Read access to Journey, Library and Activity; can pause and unpause enrollments and messages. | Admins and owners | | **Power User** (shown as **Power**) | Everything User has, plus Flows: create and publish automations and campaigns, and view form submissions. | Admins and owners | | **Admin** | Everything Power User has, plus Directory, Addons and Settings: integrations, senders, users and role changes. Admins cannot change an owner or make someone an owner. | Admins and owners | | **Owner** | Everything, including assigning and changing other owners. The person who created the workspace is an owner. | Owners | Each role inherits the ones below it. A user holds one role at a time; assigning a new one replaces the old. ## The Current Users table Columns are **User** (with "(You)" after your own name), **Email address**, **Last Seen**, **Role** and **Status**. Pyn staff who have been given access show a **Support** chip. The **Invite** button in the top right is where new users start. | Status | Meaning | | --- | --- | | **Pending** | Invited but has not signed in. The **...** menu offers **Resend Invite**. | | **Active** | Has signed in and can use the workspace. | | **Inactive** | Deactivated; listed under Inactive Users. | ## What you can do here - [Invite a user](https://support.pynhq.com/settings/users/invite-a-user/) by email with a role - [Change a user's role](https://support.pynhq.com/settings/users/change-a-users-role/) from the **...** menu - [Remove a user's access](https://support.pynhq.com/settings/users/remove-a-users-access/) by archiving them - Resend an invitation that was not received With single sign-on configured and group mappings set, your identity provider decides roles at each sign-in; see [Single sign-on](https://support.pynhq.com/integrations/sso/). ## Where it is in the app Open `/settings/general/current-users` in Pyn, or open **Settings** in the primary navigation and select **Current Users** or **Inactive Users** under **General**. ## Related - [Invite a user](https://support.pynhq.com/settings/users/invite-a-user/) to add a teammate. - [Change a user's role](https://support.pynhq.com/settings/users/change-a-users-role/) to promote or restrict someone. - [Remove a user's access](https://support.pynhq.com/settings/users/remove-a-users-access/) when someone leaves. - [Single sign-on](https://support.pynhq.com/integrations/sso/) to map identity-provider groups to roles. ## Related Intercom articles - [Add/Remove a User to Your Pyn Account (Pyn 2)](https://intercom.help/pyn/en/articles/11518130-add-remove-a-user-to-your-pyn-account-pyn-2) - [Add or deactivate users and admins (Pyn 1)](https://intercom.help/pyn/en/articles/6002205-add-or-deactivate-users-and-admins-pyn-1) — Pyn 1 article, kept for reference - [Manage Pyn Permission Types (Pyn 2)](https://intercom.help/pyn/en/articles/12044706-manage-pyn-permission-types-pyn-2) --- # Change a user's role Source: https://support.pynhq.com/settings/users/change-a-users-role/ > Promote or restrict a user from the Current Users view by assigning them a different role. Someone who started as a Power User now looks after integrations, or an admin is moving to a read-only role. Roles change from the user's **...** menu, and the change applies at their next page load. ## Before you start - You are an admin or owner. Admins can assign **User**, **Power User** and **Admin**; only owners can assign **Owner** or change an existing owner. - You cannot change your own role; the menu is disabled on your row. ![Settings > General > Current Users lists everyone who can sign in, with role and status.](https://support.pynhq.com/media/settings/users/settings-users-current.png) ## Steps 1. In Pyn, open **Settings** in the left navigation, then **Current Users** under **General**. 2. Find the user and open the **...** menu at the end of their row. 3. Select **Assign User Role**, **Assign Power User Role**, **Assign Admin Role** or, as an owner, **Assign Owner Role**. The role they already hold is not offered. 4. The **Role** chip in the row updates. > **Note:** With single sign-on group mappings in place, the identity provider sets the role on every sign-in and a change made here lasts until then. Change the person's group in your provider instead; see [Single sign-on](https://support.pynhq.com/integrations/sso/). ## What you should see The row shows the new role: **Owner**, **Admin**, **Power** or **User**. The person sees the change the next time Pyn loads: a new admin gains Directory, Addons and Settings in the left navigation; a user who lost Power User no longer sees Flows. ## Related - [Users](https://support.pynhq.com/settings/users/) for what each role can do. - [Invite a user](https://support.pynhq.com/settings/users/invite-a-user/) to add someone new. - [Single sign-on](https://support.pynhq.com/integrations/sso/) when roles come from your identity provider. ## Related Intercom articles - [Manage Pyn Permission Types (Pyn 2)](https://intercom.help/pyn/en/articles/12044706-manage-pyn-permission-types-pyn-2) — replaces --- # Invite a user Source: https://support.pynhq.com/settings/users/invite-a-user/ > Invite a teammate by email, choose their role, and resend the invitation if it does not arrive. A colleague needs to build flows or read activity. You invite them by email with a role, Pyn emails them a link, and they appear as **Pending** until they sign in. ## Before you start - You are an admin or owner. The **Invite** button is disabled for other roles. - Decide the role. See [Users](https://support.pynhq.com/settings/users/) for what each allows; the default in the form is **Admin**. ![Invite user asks for an email address and a role.](https://support.pynhq.com/media/settings/users/settings-users-invite.png) ## Steps 1. In Pyn, open **Settings** in the left navigation, then **Current Users** under **General**. 2. Select **Invite** in the top right. The **Invite user** dialog opens: "Invite a user to your organization's workspace." 3. Enter their **Email address**. 4. Choose the **Role**: **Admin**, **Power User** or **Limited User**. 5. Select **Invite**. The dialog reports **Success!** with "They will receive an email from Pyn inviting them to join your workspace." Select **Done**. 6. If the dialog says **Already Invited!** with "That user already exists in the system.", the address is already a user. Find them in Current Users (or Inactive Users) instead. > **Note:** Inviting an address that belongs to an archived user restores that user with the roles they had; the role you picked in the form is not applied. ## What you should see The new user appears in Current Users with status **Pending** and the role you chose. When they open the link and sign in, the status changes to **Active** and **Last Seen** starts updating. If the email does not arrive, open their **...** menu and select **Resend Invite**; "Invite Sent" confirms it, and "Invite Not Sent" asks you to try again. ## Related - [Users](https://support.pynhq.com/settings/users/) for the roles and statuses. - [Change a user's role](https://support.pynhq.com/settings/users/change-a-users-role/) if you picked the wrong role. - [Sign in](https://support.pynhq.com/account/sign-in/) for what the invited person sees. ## Related Intercom articles - [Add/Remove a User to Your Pyn Account (Pyn 2)](https://intercom.help/pyn/en/articles/11518130-add-remove-a-user-to-your-pyn-account-pyn-2) — replaces - [Add or deactivate users and admins (Pyn 1)](https://intercom.help/pyn/en/articles/6002205-add-or-deactivate-users-and-admins-pyn-1) — Pyn 1 article, kept for reference --- # Remove a user's access Source: https://support.pynhq.com/settings/users/remove-a-users-access/ > Archive a user so they can no longer sign in, and restore them if they return. Someone has left or no longer needs Pyn. Archiving their user removes their access the moment their session ends, and their employee record in the Directory is untouched. Inviting the same email later restores them. ## Before you start - You are an admin or owner. Admins cannot archive an owner. - If the person connected a Google, Microsoft 365 or Slack sender, decide what to do with it. Their sender keeps working until it needs re-authentication, which only they can do; see [Archive a sender](https://support.pynhq.com/settings/senders/archive-a-sender/). ![Settings > General > Current Users lists everyone who can sign in, with role and status.](https://support.pynhq.com/media/settings/users/settings-users-current.png) ## Steps 1. In Pyn, open **Settings** in the left navigation, then **Current Users** under **General**. 2. Find the user and open the **...** menu at the end of their row. 3. Select **Archive**, then confirm "Are you sure you want to archive this?" with **Archive**. > **Note:** To restore access, select **Invite** and enter the same email address. Pyn unarchives the user with the roles they had, and the dialog reports **Already Invited!**. ## What you should see The user leaves Current Users. Any session they had ends within 24 hours, which is how long a Pyn session lasts, and their next sign-in is refused. Accounts that were deactivated rather than archived appear under **Inactive Users** with status **Inactive**. ## Related - [Users](https://support.pynhq.com/settings/users/) for the statuses and roles. - [Archive a sender](https://support.pynhq.com/settings/senders/archive-a-sender/) for a sender the person owned. - [Employees](https://support.pynhq.com/directory/employees/) for the person's directory record, which is separate. ## Related Intercom articles - [Add/Remove a User to Your Pyn Account (Pyn 2)](https://intercom.help/pyn/en/articles/11518130-add-remove-a-user-to-your-pyn-account-pyn-2) — replaces - [Add or deactivate users and admins (Pyn 1)](https://intercom.help/pyn/en/articles/6002205-add-or-deactivate-users-and-admins-pyn-1) — Pyn 1 article, kept for reference --- # Webhooks Source: https://support.pynhq.com/settings/webhooks/ > Inbound webhooks let another system submit a form on an employee's behalf. The Webhooks view lists every webhook with its endpoint, secret state and log. An inbound webhook is an address another system posts JSON to. Each webhook belongs to a form: a payload that arrives becomes a submission of that form for the employee the payload names, and that submission can trigger an automation. Webhooks are created on the form, in its **Webhook** drawer; Settings lists them all in one place. ![Settings > General > Webhooks lists every inbound webhook created on a form.](https://support.pynhq.com/media/settings/webhooks/settings-webhooks-list.png) ## How a webhook works - The endpoint is `POST /api/webhook/` with the header `Authorization: Bearer ` and a JSON body. The panel shows the **URL** and **Header** to send: "Post a JSON body here, with the secret as a bearer token." - The body names the employee with `subject_id` and the answers under `fields`. The form's **Subject** setting says which source system that id comes from, for example a BambooHR employee id. - Every call is answered `202` as soon as it is accepted; the **History** tab is the record of what became of each payload. Entries carry a code such as `submitted`, `unknown-subject`, `invalid-fields` or `already-submitted`. - A payload Pyn could not take raises a notice in [Notices](https://support.pynhq.com/notices/) keyed by its code, so a caller repeating one mistake updates a single notice rather than raising many. Admins can also be emailed; see [Set notification emails](https://support.pynhq.com/settings/notifications/). - A webhook accepts nothing until it has a secret, and an archived webhook stops accepting payloads. ## What you can do here - [Create or replace a webhook secret](https://support.pynhq.com/settings/webhooks/create-a-webhook-secret/) - Rename a webhook from its panel - Read the **History** of payloads and export the whole log as CSV from the form's Webhook drawer - Archive a webhook from its **...** menu ## Where it is in the app Open `/settings/general/webhooks` in Pyn, or open **Settings** in the primary navigation and select **Webhooks** under **General**. To create a webhook, open the form in [Forms](https://support.pynhq.com/flows/forms/), select **Settings** in the rail and then **Add Webhook**. ## Related - [Create or replace a webhook secret](https://support.pynhq.com/settings/webhooks/create-a-webhook-secret/) before the first payload. - [Forms](https://support.pynhq.com/flows/forms/) to create the webhook and choose its subject. - [Notices](https://support.pynhq.com/notices/) for payloads Pyn could not take. ## Related Intercom articles - [Create a Webhook (Pyn 2)](https://intercom.help/pyn/en/articles/16858360-create-a-webhook-pyn-2) — draws on --- # Create or replace a webhook secret Source: https://support.pynhq.com/settings/webhooks/create-a-webhook-secret/ > Mint the bearer secret a webhook needs before it accepts payloads, copy it once, and rotate it when it is lost or exposed. A webhook is created on a form but accepts nothing until it has a secret. You mint the secret from the webhook's panel, copy it into the calling system, and replace it if it leaks or the other system loses it. The secret is shown once and cannot be read back. ## Before you start - You are an admin or owner. - The webhook exists. If not, open the form in [Forms](https://support.pynhq.com/flows/forms/), select **Settings** in the rail and then **Add Webhook**. - You have somewhere safe to paste the secret, such as the calling system's credential store. ![Settings > General > Webhooks lists every inbound webhook created on a form.](https://support.pynhq.com/media/settings/webhooks/settings-webhooks-list.png) ## Steps 1. In Pyn, open **Settings** in the left navigation, then **Webhooks** under **General**. 2. Select the webhook. Its panel opens; without a secret it says "This webhook accepts nothing until it has a secret." 3. Select **Create Secret**. The panel shows the secret with "Copy this secret now. It is shown once and cannot be retrieved later." 4. Copy it, store it in the calling system, then select **Done**. 5. Copy the **URL** shown under "Post a JSON body here, with the secret as a bearer token." and configure the caller to send `Authorization: Bearer ` with a JSON body. 6. To rotate later, select **Replace Secret**. The confirmation warns "The current secret stops working immediately. Anything calling this webhook will need the new one." Select **Replace** and copy the new value. > **Caution:** Replacing takes effect the moment you confirm. Update the calling system straight after, or its next payload is refused. ## What you should see With a secret in place the panel reads "This webhook already has a secret. Replace it if the old one has been lost." Send a test payload from the other system: the **History** tab lists it within a few seconds with its outcome, `submitted` for a payload that became a submission, or a reason code such as `unknown-subject`. A payload sent with a wrong or missing secret is answered `404` and does not appear in the log. ## Related - [Webhooks](https://support.pynhq.com/settings/webhooks/) for the payload shape and outcome codes. - [Forms](https://support.pynhq.com/flows/forms/) to create the webhook and set its subject. ## Related Intercom articles - [Create a Webhook (Pyn 2)](https://intercom.help/pyn/en/articles/16858360-create-a-webhook-pyn-2) — draws on --- # Integrations Source: https://support.pynhq.com/integrations/ > Connect Pyn to your HRIS, Slack, email, calendars, applicant tracking system and identity provider. One guide per integration, plus references for the fields each HRIS provides and how syncing and matching work. Integrations bring people data in and send messages out. An HRIS keeps the [Directory](https://support.pynhq.com/directory/) current; Slack, Teams and email deliver flows; Google Workspace and Microsoft 365 add mailboxes and calendars; Greenhouse and Ashby bring hires in before their start date; Okta and OpenID Connect sign your people in. Every integration is installed from **Settings > Integrations > Available** and maintained from **Installed**. ![Settings > Integrations > Available shows what you can connect.](https://support.pynhq.com/media/integrations/overview/integrations-available-gallery.png) ## The catalogue | Integration | Category | What it does | Connect with | | --- | --- | --- | --- | | [Slack](https://support.pynhq.com/integrations/slack/) | Messaging | Direct messages, channel posts and channel invites; personal and bot senders | Slack sign-in (OAuth) | | [Microsoft Teams](https://support.pynhq.com/integrations/ms-teams/) | Messaging | Direct messages and channel posts in Teams | Early access, set up with Pyn | | [Email](https://support.pynhq.com/integrations/email/) | Messaging | Verified email senders, custom domains and bounce handling; installed in every workspace | Nothing to connect | | [Google Workspace](https://support.pynhq.com/integrations/google-workspace/) | Messaging, calendar | Gmail senders and Google Calendar invites | Google sign-in per person | | [Microsoft 365](https://support.pynhq.com/integrations/microsoft-365/) | Messaging, calendar | Outlook senders and Outlook Calendar invites | Microsoft sign-in per person | | [BambooHR](https://support.pynhq.com/integrations/bamboohr/) | HRIS | Employee sync, change notifications and BambooHR sign-in | Company domain, then BambooHR sign-in | | [HiBob](https://support.pynhq.com/integrations/hibob/) | HRIS | Employee sync including HRBP, buddy and custom fields | HiBob sign-in, or a service user ID and token | | [Rippling](https://support.pynhq.com/integrations/rippling/) | HRIS | Employee sync | Rippling sign-in, or an API key | | [Workday](https://support.pynhq.com/integrations/workday/) | HRIS | Employee sync from a Report-as-a-Service report | Report URL, username and password | | [ADP Workforce Now](https://support.pynhq.com/integrations/adp/) | HRIS | Employee sync | Client ID, client secret, certificate and private key | | [Greenhouse](https://support.pynhq.com/integrations/greenhouse/) | ATS | Hired candidates as upcoming employees | OAuth client ID and secret | | [Ashby](https://support.pynhq.com/integrations/ashby/) | ATS | Hired candidates as upcoming employees | API key | | [Jira](https://support.pynhq.com/integrations/jira/) | Ticketing | The Raise ticket step | Atlassian sign-in | | [Employee File](https://support.pynhq.com/integrations/employee-file/) | HRIS | A spreadsheet as the source of employees | Upload a CSV, XLS or XLSX | | [Sample Data](https://support.pynhq.com/integrations/sample-data/) | HRIS | A fictional roster to try Pyn with | One click | | [Okta and single sign-on](https://support.pynhq.com/integrations/sso/) | Identity | Sign in through Okta or any OpenID Connect provider, with group-to-role mapping | Issuer, client ID and secret | ADP, Okta, single sign-on, Sample Data and Microsoft 365 appear in Available only when they are enabled for your workspace. Tiles marked **Early Access** or **Waitlist** (Lever, Sana, Intercom, Docebo and others) open a request form rather than a connection. ## How integrations behave - Each installed integration is **Active**, **Error** or **Inactive**. Error means it needs attention, usually a reconnect; see [Fix a sender or integration that needs attention](https://support.pynhq.com/integrations/needs-attention/). - HRIS and ATS integrations refresh on a schedule and record every run under the panel's **History** tab; see [Sync cadence and matching](https://support.pynhq.com/integrations/sync-and-matching/). - The **Advanced** tab of an HRIS panel lists **Fields in Report**: which source fields arrived and for how many people. [HRIS fields](https://support.pynhq.com/integrations/hris-fields/) maps them to Pyn's employee properties. - Pyn reads from your HRIS and ATS; it never writes back. ## Where it is in the app Open `/settings/integrations/available` in Pyn, or open **Settings** in the primary navigation and select **Available** under **Integrations**. Installed integrations are under **Installed**; ones in error are under **Needs Attention 🚨**. ## Related - [Settings > Integrations](https://support.pynhq.com/settings/integrations/) for the views, tile statuses and shared actions. - [HRIS fields](https://support.pynhq.com/integrations/hris-fields/) for which fields each source provides. - [Sync cadence and matching](https://support.pynhq.com/integrations/sync-and-matching/) for how often Pyn syncs and how it matches people. - [Directory](https://support.pynhq.com/directory/) for where synced employees appear. ## Related Intercom articles - [Connect to your HRIS (Pyn 2)](https://intercom.help/pyn/en/articles/16755703-connect-to-your-hris-pyn-2) — draws on - [Connect to your HRIS (Pyn 1)](https://intercom.help/pyn/en/articles/6002175-connect-to-your-hris-pyn-1) — Pyn 1 article, kept for reference - [Installing the Slack Integration (Pyn 2)](https://intercom.help/pyn/en/articles/14983837-installing-the-slack-integration-pyn-2) - [Set up a Custom Slack Sender/Slack Bot (Pyn 2)](https://intercom.help/pyn/en/articles/16755898-set-up-a-custom-slack-sender-slack-bot-pyn-2) - [Set up a Google Email Sender (Pyn 2)](https://intercom.help/pyn/en/articles/11518211-set-up-a-google-email-sender-pyn-2) - [Integrating Pyn with Google Calendar (Pyn 2)](https://intercom.help/pyn/en/articles/13401726-integrating-pyn-with-google-calendar-pyn-2) - [Connect to BambooHR (Pyn 2)](https://intercom.help/pyn/en/articles/11614355-connect-to-bamboohr-pyn-2) - [Connect to HiBob (Pyn 2)](https://intercom.help/pyn/en/articles/16838927-connect-to-hibob-pyn-2) - [Connect to HiBob (Pyn 2)](https://intercom.help/pyn/en/articles/16814957-connect-to-hibob-pyn-2) - [Connect to Workday (Pyn 2)](https://intercom.help/pyn/en/articles/12005093-connect-to-workday-pyn-2) - [Connecting to ADP Workforce Now (Pyn 2)](https://intercom.help/pyn/en/articles/16055385-connecting-to-adp-workforce-now-pyn-2) - [How to Upload Employee Data Manually (Pyn 2)](https://intercom.help/pyn/en/articles/16755797-how-to-upload-employee-data-manually-pyn-2) - [Enabling Single Sign On (Pyn 2)](https://intercom.help/pyn/en/articles/16838066-enabling-single-sign-on-pyn-2) - [Connect to Okta SSO (Pyn 2)](https://intercom.help/pyn/en/articles/16838252-connect-to-okta-sso-pyn-2) - [Manage Bounced Messages in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/12045027-manage-bounced-messages-in-pyn-pyn-2) - [Configure a Custom Email Domain in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/13834862-configure-a-custom-email-domain-in-pyn-pyn-2) - [Manage Integrations or Senders That Need Attention (Pyn 2)](https://intercom.help/pyn/en/articles/12062401-manage-integrations-or-senders-that-need-attention-pyn-2) --- # ADP Workforce Now Source: https://support.pynhq.com/integrations/adp/ > Sync employees from ADP Workforce Now with certificate-based API credentials, test the connection, and reconnect when ADP rotates them. The ADP Workforce Now integration reads workers through ADP's Workers API and keeps the Directory current: names, work and personal email, hire and seniority dates, department, business unit, job class, location, manager and termination date. Pyn reads only; nothing is written back to ADP. ## Before you start - You are an admin or owner in Pyn, and ADP is enabled for your workspace; the tile appears under **Available** only then. - An ADP administrator can create a project in **ADP API Central** and add the scope `/hr/workerInformationManagement/workerManagement/workerProfileManagement/worker.read`. Without it the connection authenticates but returns no workers. - You have the project's **Client ID** and **Client Secret**, and the SSL certificate and private key for the project. Pyn's team generates the certificate pair with you and you upload the certificate to the ADP project; ask support@pynhq.com to start that. - Date of birth is masked in ADP by default. To sync birthdays, an ADP administrator reveals the field on the data connector's application profile. ![Connect to ADP asks for the Client ID, Client Secret, SSL Certificate and Private Key.](https://support.pynhq.com/media/integrations/adp/integrations-adp-connect.png) ## Connect 1. In Pyn, open **Settings** in the left navigation, then **Available** under **Integrations**. 2. Select the **ADP** tile. The **Connect to ADP** dialog opens. 3. Enter the **Client ID** and **Client Secret** from API Central. 4. Paste the **SSL Certificate** and the **Private Key**. 5. Select **Connect**. The dialog shows "Validating those credentials..." while Pyn calls ADP. 6. On success a notice reads "Your ADP Workforce Now integration has successfully been added to Pyn. It will take a minute or two for the employee data to be pulled from ADP." If the dialog reports an error, match it to the cause: "Could not verify the credentials. The Client ID or Client Secret appear to be invalid." / "The SSL certificate appears to be invalid. Please check the certificate and try again." / "ADP is returning an error. Please try again later." ## What syncs Pyn refreshes from ADP every five minutes while the integration is active and records each run under **History**. The **Advanced** tab lists the **Fields in Report** received. Field by field: | Pyn property | From ADP | | --- | --- | | Display name, preferred name, legal name | Preferred name when set, otherwise the legal name | | Work email, personal email | Business and personal email addresses | | Start date | Original hire date | | Tenure date | Seniority date | | Termination date | Termination date | | Department, business unit, job class, job title, location | The primary work assignment | | Manager | The assignment's reports-to worker | | Birthday, time zone | Birth date when unmasked; time zone from the work address country and postal code | | External id | Worker ID and associate OID | Workers without an email address are not created as employees. Worker type comes from the primary assignment. See [HRIS fields](https://support.pynhq.com/integrations/hris-fields/) for the full matrix and [Sync cadence and matching](https://support.pynhq.com/integrations/sync-and-matching/) for how employees are matched. ## Test it Open the ADP tile under **Installed**, open the **...** menu and select **Test Connection**. "Successfully tested the connection to ADP Workforce Now." confirms it. "An error occurred connecting to ADP Workforce Now. Please check your credentials or contact support if the issue persists." means the credentials no longer work; reconnect. Then open [Employees](https://support.pynhq.com/directory/employees/) and check names, hire dates and reporting lines. ## Reconnect or disconnect - **Reconnect** (the **...** menu) opens **Reconnect to ADP** with the same four fields; enter the new credentials and select **Connect**. "Your ADP Workforce Now integration has successfully been updated." confirms it. - **Deactivate** stops syncing without removing the credentials; **Activate** resumes. - Archiving removes the integration from Installed. Employees already synced stay in the Directory. ## Troubleshooting | What you see | What it means | | --- | --- | | Tile under **Needs Attention 🚨** and a History entry "Error: Authentication failed, please reconnect" | ADP rejected the credentials, usually after rotation. Reconnect with the new values. | | Connection works but no employees appear | The API project lacks the `worker.read` scope. Add it in API Central and refresh. | | Birthdays missing | The field is masked in ADP. Reveal it on the application profile. | | Some people missing | Workers without an email address are skipped. | ## Related - [Integrations](https://support.pynhq.com/integrations/) for the catalogue. - [HRIS fields](https://support.pynhq.com/integrations/hris-fields/) for the field matrix. - [Sync cadence and matching](https://support.pynhq.com/integrations/sync-and-matching/) for schedules and matching. - [Employees](https://support.pynhq.com/directory/employees/) to check the synced records. ## Related Intercom articles - [Connecting to ADP Workforce Now (Pyn 2)](https://intercom.help/pyn/en/articles/16055385-connecting-to-adp-workforce-now-pyn-2) — replaces - [Connecting Pyn to ADP (Pyn 1)](https://intercom.help/pyn/en/articles/6116909-connecting-pyn-to-adp-pyn-1) — Pyn 1 article, kept for reference --- # Ashby Source: https://support.pynhq.com/integrations/ashby/ > Bring hired Ashby candidates into Pyn as upcoming employees so pre-boarding flows can start before day one. The Ashby integration reads candidates who have accepted an offer and creates them as upcoming employees, with their start date, job title, department, location and hiring manager. A pre-boarding flow triggered on start date can then reach them at a personal address before their work account exists. ## Before you start - You are an admin or owner in Pyn. - An Ashby admin creates an API key under **Admin > API Keys** with read access to **Candidates**, **Offers** and **Organization**. Read access to **Jobs** is optional and picks up the hiring manager set on the job rather than the application. To include hires into confidential jobs, also allow access to confidential jobs and projects. ![Connect to Ashby asks for an API Key.](https://support.pynhq.com/media/integrations/ashby/integrations-ashby-connect.png) ## Connect 1. In Pyn, open **Settings** in the left navigation, then **Available** under **Integrations**. 2. Select the **Ashby** tile. The **Connect to Ashby** dialog opens. 3. Paste the **API Key**. 4. Select **Connect**. The dialog shows "Validating that API key..." while Pyn checks it. 5. On success a notice reads "Your Ashby integration has been added to Pyn. It will take a minute or two for candidate data to be pulled from Ashby." Errors the dialog can show: "Could not verify that API key — it appears to be invalid or deactivated." / "The API key is valid but lacks the permissions needed. Grant it read access to Candidates, Offers and Organization and try again." / "Enter an Ashby API key." ## What syncs Pyn refreshes from Ashby every 15 minutes while the integration is active. For each hired application it reads: | Pyn property | From Ashby | | --- | --- | | Display name, legal name | The candidate's name | | Work email, personal email | The candidate's work and personal contact emails | | Start date | The latest offer version's start date | | Job title | The application's job | | Department, location | The job's department and location names | | Manager | The job's hiring manager (an Ashby user) | | Time zone | The candidate's time zone | | Custom fields | Any workspace extension mapped to an Ashby custom field, read from the offer, then the application, then the candidate | Hires appear in the Directory as **Upcoming** until their start date. See [Sync cadence and matching](https://support.pynhq.com/integrations/sync-and-matching/) for how they are matched to the HRIS record that arrives later. ## Test it After the first refresh, open [Employees](https://support.pynhq.com/directory/employees/) and select the **Upcoming** view: recent hires should be listed with their start date. The integration's **History** tab shows each refresh. ## Reconnect or disconnect - **Reconnect** from the **...** menu opens **Reconnect to Ashby** to paste a new key. "Your Ashby integration has been updated." confirms it. - **Deactivate** pauses syncing; **Activate** resumes it. ## Troubleshooting | What you see | What it means | | --- | --- | | History: "Error: Authentication failed, please reconnect" | The key was deactivated in Ashby. Create a new one and reconnect. | | History: "Error: Insufficient Ashby permissions" | The key is missing a read scope. Grant Candidates, Offers and Organization. | | A hire is missing | The offer is not accepted, or the job is confidential and the key cannot see it. | | Hiring manager blank | Grant read access to Jobs, or set the hiring manager on the application. | ## Related - [Integrations](https://support.pynhq.com/integrations/) for the catalogue. - [Greenhouse](https://support.pynhq.com/integrations/greenhouse/) for the other ATS integration. - [Sync cadence and matching](https://support.pynhq.com/integrations/sync-and-matching/) for how ATS and HRIS records merge. - [Automations](https://support.pynhq.com/flows/automations/) to build a pre-boarding flow on start date. --- # BambooHR Source: https://support.pynhq.com/integrations/bamboohr/ > Connect BambooHR with your company domain, let Pyn read employees through a BambooHR sign-in, and keep the Directory current with change notifications and a five-minute refresh. The BambooHR integration reads your employee directory and a custom report through the BambooHR API, so start dates, departments, managers and leavers drive your flows without a spreadsheet. BambooHR also registers a webhook so changes reach Pyn between refreshes, and your people can sign in to Pyn with **Continue with BambooHR**. ## Before you start - You are an admin or owner in Pyn. - You know your BambooHR company domain: the part before `.bamboohr.com` in your BambooHR address. - You can sign in to BambooHR with an account that has API access and can see the fields you want synced. A non-employee service account is better than a person's login, which stops working when that person leaves. ![Connect to BambooHR asks for your Company Domain.](https://support.pynhq.com/media/integrations/bamboohr/integrations-bamboohr-connect.png) ## Connect 1. In Pyn, open **Settings** in the left navigation, then **Available** under **Integrations**. 2. Select the **BambooHR** tile. The **Connect to BambooHR** dialog opens. 3. Enter your **Company Domain**. You can paste the whole address, such as `https://acme.bamboohr.com`; Pyn keeps `acme`. "This is not a valid company domain." means it does not look like a BambooHR subdomain. 4. Select **Connect**. BambooHR opens; sign in and select **Allow Access**. 5. BambooHR returns you to Pyn. The panel reads "You're connected. Syncing can take a few minutes. Check the journey map then!" ## What syncs Pyn refreshes every five minutes while the integration is active, skipping runs where the report has not changed ("Successfully integrated to BambooHR. No employee changes found"), and BambooHR's own change notifications are logged under **History** as they arrive. The **Details** tab shows the **Subdomain**, **Primary Source** (Custom Report or Directory), **Last Refresh** and **Last Successful Refresh**; the **Advanced** tab lists **Fields in Report** with a count per field. | Pyn property | From BambooHR | | --- | --- | | Display name, legal name, preferred name | Display name, full name and preferred name | | Work email, personal email | Work email and home email | | Start date, tenure | Hire date; original hire date marks returning employees | | Termination date, status | Termination date; employment status other than Active becomes inactive | | Department, division, location, job title | The matching BambooHR fields | | Employment type | Employment history status | | Manager | Supervisor employee id | | Birthday, country, postal code, time zone | Birthday and address; time zone from country and postal code | If the account Pyn connected with can only read the directory, the panel warns: "This integration is pulling limited employee data from the BambooHR directory. To get a complete employee profile, have a BambooHR administrator reconnect this integration, or ask for expanded permissions." See [HRIS fields](https://support.pynhq.com/integrations/hris-fields/) for the field matrix. ## Test it Open the BambooHR tile under **Installed**, open the **...** menu and select **Test Connection**. "Successfully tested the connection to BambooHR." confirms it; "An error occurred connecting to BambooHR. Please Reconnect or contact support if the issue persists." means the sign-in no longer works. Then check [Employees](https://support.pynhq.com/directory/employees/). ## Reconnect or disconnect - **Reconnect** repeats the BambooHR sign-in for the same company domain. Use it after the connected account's password changes or its permissions are widened. - **Deactivate** stops syncing; **Activate** resumes. **Archive** removes the integration from Installed; synced employees stay. ## Troubleshooting | What you see | What it means | | --- | --- | | History: "Error: Insufficient permissions to access BambooHR" | The connected account's access level lost API or field permissions. In BambooHR, open **Access Levels > Custom Levels**, select the level, and under **Access Level Settings** allow **Settings > Company Field Settings**, then reconnect. | | History: "Error: Authentication failed, please reconnect" | The sign-in expired or was revoked. Reconnect. | | History: "Could not connect to BambooHR, please reconnect" | BambooHR refused the connection. Reconnect; if it repeats, contact support. | | Employees stop updating after someone leaves | The integration was connected with that person's login. Reconnect with a non-employee account. | | Fields such as start date are blank | They are empty in BambooHR, or the account cannot see them. Check the field count under Advanced. | ## Related - [Integrations](https://support.pynhq.com/integrations/) for the catalogue. - [HRIS fields](https://support.pynhq.com/integrations/hris-fields/) for the field matrix. - [Sync cadence and matching](https://support.pynhq.com/integrations/sync-and-matching/) for schedules and matching. - [Sign in](https://support.pynhq.com/account/sign-in/) for Continue with BambooHR. ## Related Intercom articles - [Connect to BambooHR (Pyn 2)](https://intercom.help/pyn/en/articles/11614355-connect-to-bamboohr-pyn-2) — replaces - [BambooHR Error "Insufficient Permissions"](https://intercom.help/pyn/en/articles/10100088-bamboohr-error-insufficient-permissions) — replaces - [Why is employee data from BambooHR not appearing in Pyn?](https://intercom.help/pyn/en/articles/6024101-why-is-employee-data-from-bamboohr-not-appearing-in-pyn) — replaces - [Connect to BambooHR (Pyn 1)](https://intercom.help/pyn/en/articles/6330100-connect-to-bamboohr-pyn-1) — Pyn 1 article, kept for reference --- # Email Source: https://support.pynhq.com/integrations/email/ > The Email integration every workspace has: how Pyn sends email, verified senders, custom domains, bounce handling, and what to tell your IT team to allow. Email is installed in every workspace. It sends through Pyn's email service from `notifications@pynhq.com` or from a verified sender address, tracks deliveries and bounces, and lets you send from your own domain once you have added DNS records. There is nothing to connect; the work is adding senders and, if you want it, a domain. ## Before you start - To add a sender you need access to that inbox. See [Add an email sender](https://support.pynhq.com/settings/senders/add-an-email-sender/). - To add a custom domain you need someone who can edit your domain's DNS, and the feature enabled for your workspace. - Ask your IT team to allow mail from `notifications@pynhq.com` so verification emails and messages are not filtered. Google Workspace and Microsoft 365 both have an allow-list setting for this. ![The Email integration panel with its Details, Senders and Email Events tabs.](https://support.pynhq.com/media/integrations/email/integrations-email-panel.png) ## The Email panel Select the **Email** tile under **Installed**. Its tabs are **Details**, **Senders** (every verified email sender), **Custom Domains** when the feature is on, and **Email Events** (delivery events Pyn received from the email service, such as delivered and bounced). The **...** menu holds **Activate**, **Deactivate** and **Add Custom Domain**. ## What it does - **Verified senders**: a name and address that becomes active after a 24-hour verification link is opened. See [Sender types and states](https://support.pynhq.com/settings/senders/sender-types-and-states/). - **Custom domains**: a subdomain such as `mail.example.com`, authenticated with three DNS records, so email is signed by your domain. See [Set up a custom domain](https://support.pynhq.com/integrations/email/set-up-a-custom-domain/). - **Bounces**: a bounced delivery marks the message in [Messages](https://support.pynhq.com/activity/messages/), raises a notice with a **Resend** action, and can email you if **Send email when a delivery bounces** is on in [Set notification emails](https://support.pynhq.com/settings/notifications/). - **Recipients**: email goes to employee addresses from your HRIS (work, or personal for pre-boarding) and to verified [custom email recipients](https://support.pynhq.com/settings/custom-email-recipients/). ## Test it Open a sender under **Settings > General > Senders**, open its **...** menu and select **Send Test**. "Test Message Sent" confirms it; the email arrives in your inbox from that sender. ## Reconnect or disconnect There is nothing to reconnect. **Deactivate** on the Email tile stops every verified email sender; **Activate** restores them. Archive a single sender from the Senders view instead. ## Troubleshooting | What you see | What it means | | --- | --- | | Verification email never arrives | Spam or a shared-inbox rule. Allow `notifications@pynhq.com`, then use **Send Verification Email** again. | | "Verification link has expired or already been used" | Links last 24 hours and work once. Send a new one. | | Delivery shows **Bounced** | The address rejected the message. Correct the employee's email in your HRIS and use **Resend** on the notice. | | Sender shows **Error** | The email service rejected sends from this address. Check the custom domain is verified, then send a test. | ## Related - [Add an email sender](https://support.pynhq.com/settings/senders/add-an-email-sender/) for the verification steps. - [Set up a custom domain](https://support.pynhq.com/integrations/email/set-up-a-custom-domain/) to send from your domain. - [Custom Email Recipients](https://support.pynhq.com/settings/custom-email-recipients/) for addresses outside the directory. - [Messages](https://support.pynhq.com/activity/messages/) to see delivery and bounce status. ## Related Intercom articles - [Add Pyn to your company's allow-list](https://intercom.help/pyn/en/articles/6002174-add-pyn-to-your-company-s-allow-list) — draws on - [Manage Bounced Messages in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/12045027-manage-bounced-messages-in-pyn-pyn-2) — draws on - [Configure a Custom Email Domain in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/13834862-configure-a-custom-email-domain-in-pyn-pyn-2) --- # Set up a custom domain Source: https://support.pynhq.com/integrations/email/set-up-a-custom-domain/ > Add a sending domain, publish its three DNS records, verify them and make the domain the default for your workspace's email. You want email from Pyn to be signed by your own domain rather than Pyn's, so it passes your employees' mail filters and looks like it came from you. Adding a domain gives you three DNS records; once they are live and verified, the domain is ready and can be set as the default. ## Before you start - You are an admin or owner, and custom domains are enabled for your workspace; the **Add Custom Domain** action appears only then. - Someone can add CNAME records at your DNS provider. Use a subdomain such as `mail.example.com`. ![The Email integration panel with its Details, Senders and Email Events tabs.](https://support.pynhq.com/media/integrations/email/integrations-email-panel.png) ## Steps 1. In Pyn, open **Settings** in the left navigation, then **Installed** under **Integrations**, and select the **Email** tile. 2. Open the **...** menu and select **Add Custom Domain**. 3. Enter the **Domain** (for example `mail.example.com`) and select **Add**. 4. The dialog changes to **DNS Records**: "Add these DNS records to your domain, then verify the domain." It lists **DKIM 1**, **DKIM 2** and **Mail CNAME**, each with a **Type**, **Host** and **Value**. Copy them to your DNS provider exactly, then select **Done**. 5. When the records have propagated, open the **Custom Domains** tab, select the domain, and select **Verify DNS**. "Domain Verified" with "Your custom domain is ready to use." confirms it. 6. Open the domain's **...** menu and select **Set Default**. "This domain is now the default." confirms it. > **Caution:** **Delete** in the domain's menu removes it from Pyn and from the email service: "Are you sure you want to delete this custom domain? This action cannot be undone." Re-adding it means new records and a fresh verification. ## What you should see The domain's panel shows **Default** and the three records each marked **Valid**, under "Your domain is verified." The first domain you add becomes the default automatically. If verification fails the panel reads "DNS verification failed. Please check your DNS records:" and names the failing record with the reason; DNS changes can take a while to propagate, so correct the record, wait, and select **Verify DNS** again. ## Related - [Email](https://support.pynhq.com/integrations/email/) for the rest of the Email integration. - [Add an email sender](https://support.pynhq.com/settings/senders/add-an-email-sender/) to send from an address on the domain. ## Related Intercom articles - [Configure a Custom Email Domain in Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/13834862-configure-a-custom-email-domain-in-pyn-pyn-2) — replaces --- # Employee File Source: https://support.pynhq.com/integrations/employee-file/ > Use a spreadsheet as your source of employees: download the sample file, fill the columns, upload it, and re-upload to update. The way to run Pyn without an HRIS. Employee File turns a spreadsheet into your employee directory. Each row is one employee, each column a Pyn property, and every upload is an upsert by employee id: new rows are added, changed rows are updated. Pyn validates the file before anything is saved and tells you which rows and columns it could not read. ## Before you start - You are an admin or owner. - Prepare a CSV, XLS or XLSX whose column headers are the property names below. **Download Sample File** gives you a CSV with every column and five example rows. - Every row needs `employeeId` and `primaryEmail`. For employees in the US, Canada or Australia, give a `timeZone` or a `postalCode` with the `country`, or Pyn cannot place them in a zone. ![The Employee File integration under Installed, with the upload panel open.](https://support.pynhq.com/media/integrations/employee-file/integrations-employee-file-tile.png) ## Connect 1. In Pyn, open **Settings** in the left navigation, then **Available** under **Integrations**. 2. Select the **Employee File** tile; its cover reads **File Upload**. Pyn creates the integration and opens its panel: "Upload a spreadsheet of your employees to get started. Use the sample file to see the expected columns." 3. Select **Download Sample File** and build your file on it, keeping the header row. 4. Select **Upload** and choose your file. The panel shows **Uploading...** while it validates and saves. 5. On success it reads "Success! Uploaded n records. Head over to the Directory to see employees after processing completes. This can take a minute or two." If rows fail, the panel lists them under "There were n errors found in the uploaded file:" with the row and the problem, for example `Unknown country: "Engalnd"`, `Could not determine timezone from country "United States". Add a postal code or choose a time zone.` or `Invalid birthday format. Expected MM-dd, dd/MM, yyyy-MM-dd or ISO8601 datetime.` Fix those rows and upload again; the valid rows were saved. ## What syncs | Column | Required | Notes | | --- | --- | --- | | `employeeId` | Yes | Your stable id for the person; uploads match on it | | `primaryEmail` | Yes | Work email, also used to match Slack and Google accounts | | `displayName`, `legalName`, `preferredName`, `jobTitle` | | | | `personalEmail`, `secondaryEmail`, `avatarUri` | | Personal email is used for pre-boarding | | `status` | | `active`, `inactive` or `leave` | | `startDate`, `terminationDate`, `tenureDate` | | `yyyy-MM-dd` | | `birthday` | | `MM-dd`, `dd/MM`, `yyyy-MM-dd` or an ISO date-time | | `country`, `postalCode`, `timeZone` | | Country as a name or ISO code; time zone as an IANA name such as `Europe/London` | | `businessUnit`, `department`, `division`, `location`, `team` | | Become demographics and groups | | `managerId`, `buddyId`, `hrbpId`, `mentorId` | | The `employeeId` of the related person | There is no scheduled refresh; the file is read when you upload it. The **Advanced** tab lists **Fields in Employee File** with a count per column. You can also add one person at a time with **Add employee** in [Employees](https://support.pynhq.com/directory/employees/), which asks for **Full name**, **Preferred name**, **Work email**, **Personal email**, **Start date**, **Country**, **Time zone** and **Manager**, and adds them as an upcoming joiner. ## Test it Open [Employees](https://support.pynhq.com/directory/employees/) a minute or two after the upload. Active rows appear under **Active**, future start dates under **Upcoming**, and `status` of `inactive` under **Inactive**. Open a person to check their manager link. ## Reconnect or disconnect There are no credentials. Upload a new file to change data; rows absent from a later file are left as they were. **Deactivate** keeps the data but ignores uploads; **Activate** re-enables them. ## Troubleshooting | What you see | What it means | | --- | --- | | "The uploaded file was empty" | No data rows below the header, or the header row is missing. | | A row error naming `country` or `postalCode` | The country name was not recognised, or the postal code did not resolve to a zone. Add `timeZone`. | | A manager is not linked | `managerId` does not match any row's `employeeId`. | | Someone shows twice | Their `employeeId` changed between uploads. Keep ids stable. | ## Related - [Integrations](https://support.pynhq.com/integrations/) for the HRIS alternatives. - [Employees](https://support.pynhq.com/directory/employees/) to check the uploaded records and add one person. - [Sync cadence and matching](https://support.pynhq.com/integrations/sync-and-matching/) for how ids and emails match. - [Sample Data](https://support.pynhq.com/integrations/sample-data/) to try Pyn with a fictional roster instead. ## Related Intercom articles - [How to Upload Employee Data Manually (Pyn 2)](https://intercom.help/pyn/en/articles/16755797-how-to-upload-employee-data-manually-pyn-2) — replaces - [Connect to your HRIS (Pyn 2)](https://intercom.help/pyn/en/articles/16755703-connect-to-your-hris-pyn-2) — draws on - [How to upload employee data manually (Pyn 1)](https://intercom.help/pyn/en/articles/6024080-how-to-upload-employee-data-manually-pyn-1) — Pyn 1 article, kept for reference --- # Google Workspace Source: https://support.pynhq.com/integrations/google-workspace/ > Send email from Gmail mailboxes and invite employees to Google Calendar events. Each person connects their own account; the integration appears once the first one does. Google Workspace gives Pyn two things: Gmail senders, so an email comes from a named colleague with replies going to their inbox, and Google Calendar, so a flow can invite someone to a recurring event. Both are per-account grants: a person signs in to Google and allows Pyn, and Pyn stores only that grant. The integration tile exists to show the connected accounts and the hosted domain. ## Before you start - To add a sender or calendar you sign in to Google yourself; an admin cannot do it for someone else. For a person without a Pyn login, [create an auth link](https://support.pynhq.com/settings/senders/create-an-auth-link/). - Your Google Workspace admin may need to allow the Pyn app for your organisation. - Scopes Pyn asks for: `userinfo.email` and `userinfo.profile` always; `gmail.send` for a sender; `calendar.calendarlist.readonly` and `calendar.events.owned` for a calendar. Pyn cannot read your mail. ![The Google Workspace tile under Available; selecting it starts the Google sign-in.](https://support.pynhq.com/media/integrations/google-workspace/integrations-google-workspace-tile.png) ## Connect 1. In Pyn, open **Settings** in the left navigation, then **Available** under **Integrations**. 2. Select the **Google Workspace** tile. Google opens; choose the account and select **Allow**. This connects your account as a sender and installs the integration. 3. Google returns you to Pyn. The tile moves to **Installed** as **Active**, and your sender appears under **Settings > General > Senders**. 4. For more senders, each person uses **Senders > Add > Add Google Email Sender**. See [Add a Google or Microsoft 365 sender](https://support.pynhq.com/settings/senders/add-a-google-or-microsoft-365-sender/). 5. For a calendar, use **Calendars > Add > Add Google Calendar** and pick the calendar to sync. See [Connect a calendar](https://support.pynhq.com/settings/calendars/connect-a-calendar/). ## What syncs - **Senders**: name, email and hosted domain, read when the account connects; **Refresh Details** re-reads them. - **Calendars**: recurring events from the selected calendar, with start, recurrence and the event's own time zone, so an invite lands at the right local time. Pyn refreshes every five minutes while the integration is active and **Refresh Events** pulls changes now. - **Deliveries**: each email and calendar invite is a delivery you can see in [Activity](https://support.pynhq.com/activity/), with bounce reasons such as **Sender Error** or **Raw HTML Email Not Enabled**. The integration panel's **Details** tab shows the **Hosted Domain**; its **Senders** tab lists every connected Google sender. ## Test it Open a Google sender under **Senders**, open its **...** menu and select **Send Test**; "Test Message Sent" confirms it and the email arrives in your inbox from you. For a calendar, open it under **Calendars** and check its events list after "Pyn is syncing this calendar. This can take a few minutes." clears. ## Reconnect or disconnect - A sender or calendar that shows **Requires reauth** carries a **Reconnect** button; the owner of that Google account signs in again. If someone else tries, Pyn asks them to confirm they have permission for that address. - **Deactivate** on the integration tile stops every Google sender and calendar; **Activate** restores them. Archive an individual sender from the Senders view. ## Troubleshooting | What you see | What it means | | --- | --- | | **Requires reauth** on a sender or calendar | The password changed or the grant was revoked in Google. The account owner reconnects. | | Google shows an admin approval screen | Your organisation restricts third-party apps. A Google Workspace admin allows Pyn, then you connect again. | | Delivery bounce reason **Raw HTML Email Not Enabled** | The step sends raw HTML and this workspace has that switched off for Gmail senders. Use the editor or ask support. | | Calendar events list is empty | Pyn syncs recurring series only; one-off events are not listed. Use **Refresh Events** after adding a series. | | **Event Not Found** on a step | The series was deleted in Google. Pick another event on the step. | ## Related - [Add a Google or Microsoft 365 sender](https://support.pynhq.com/settings/senders/add-a-google-or-microsoft-365-sender/) for the sender steps. - [Connect a calendar](https://support.pynhq.com/settings/calendars/connect-a-calendar/) for the calendar steps. - [Create an auth link](https://support.pynhq.com/settings/senders/create-an-auth-link/) for someone without a Pyn login. - [Microsoft 365](https://support.pynhq.com/integrations/microsoft-365/) for the Outlook equivalent. ## Related Intercom articles - [Set up a Google Email Sender (Pyn 2)](https://intercom.help/pyn/en/articles/11518211-set-up-a-google-email-sender-pyn-2) — replaces - [Integrating Pyn with Google Calendar (Pyn 2)](https://intercom.help/pyn/en/articles/13401726-integrating-pyn-with-google-calendar-pyn-2) — replaces --- # Greenhouse Source: https://support.pynhq.com/integrations/greenhouse/ > Bring hired Greenhouse candidates into Pyn as upcoming employees, using OAuth credentials or, until they retire, a Harvest API key. The Greenhouse integration reads candidates with a hired application and an accepted offer and creates them as upcoming employees, with their start date, hiring manager and the custom fields you map. Pre-boarding flows can then reach them before their work account exists. ## Before you start - You are an admin or owner in Pyn. - A Greenhouse admin creates OAuth credentials for Pyn with Harvest read scopes and gives you the **Client ID** and **Client Secret**. Greenhouse retires Harvest API keys on 31 August 2026, so use OAuth for a new connection; a legacy key still works until then. ![Connect to Greenhouse takes an OAuth Client ID and Client Secret, or a legacy API key.](https://support.pynhq.com/media/integrations/greenhouse/integrations-greenhouse-connect.png) ## Connect 1. In Pyn, open **Settings** in the left navigation, then **Available** under **Integrations**. 2. Select the **Greenhouse** tile. The **Connect to Greenhouse** dialog opens. 3. Paste the **Client ID** and **Client Secret**. Only if you have no OAuth credentials yet, paste the **API Key (legacy)** instead. 4. Select **Connect**. The dialog shows "Validating those credentials..." while Pyn checks them. 5. On success a notice reads "Your Greenhouse integration has been added to Pyn. It will take a minute or two for candidate data to be pulled from Greenhouse." Errors the dialog can show: "Could not verify those credentials — they appear to be invalid or expired." / "The credentials are valid but lack the permissions needed. Grant the required scopes and try again." / "Enter either a client ID and secret, or a Harvest API key." ## What syncs Pyn refreshes from Greenhouse every five minutes while the integration is active. | Pyn property | From Greenhouse | | --- | --- | | Display name, legal name, preferred name | First, last and preferred name | | Work email | The candidate's email of type work; never inferred from another type | | Personal email | The personal email, or any non-work address | | Start date | The accepted offer's start date | | Location | The offer's location custom field | | Manager | The hiring manager, a Greenhouse user | | Time zone | The candidate's time zone | | Custom fields | Workspace extensions mapped to a Greenhouse custom field name key | Hires appear as **Upcoming** in the Directory. See [Sync cadence and matching](https://support.pynhq.com/integrations/sync-and-matching/) for how the ATS record merges with the HRIS record that follows. ## Test it After the first refresh, open [Employees](https://support.pynhq.com/directory/employees/) and select the **Upcoming** view. The integration's **History** tab lists each refresh and its outcome. ## Reconnect or disconnect - **Reconnect** opens **Reconnect to Greenhouse** to enter new credentials; use it to move from an API key to OAuth. "Your Greenhouse integration has been updated." confirms it. - **Deactivate** pauses syncing; **Activate** resumes it. ## Troubleshooting | What you see | What it means | | --- | --- | | History: "Error: Authentication failed, please reconnect" | The credentials were revoked or the key expired. Reconnect with OAuth credentials. | | A hire is missing | The application is not marked hired, or the offer is not accepted. | | Work email blank | Greenhouse has no email of type work for the candidate; Pyn does not guess. | ## Related - [Integrations](https://support.pynhq.com/integrations/) for the catalogue. - [Ashby](https://support.pynhq.com/integrations/ashby/) for the other ATS integration. - [Sync cadence and matching](https://support.pynhq.com/integrations/sync-and-matching/) for how ATS and HRIS records merge. - [Automations](https://support.pynhq.com/flows/automations/) to build a pre-boarding flow. ## Related Intercom articles - [Connect to your HRIS (Pyn 2)](https://intercom.help/pyn/en/articles/16755703-connect-to-your-hris-pyn-2) — draws on --- # HiBob Source: https://support.pynhq.com/integrations/hibob/ > Sync employees from Bob by signing in or with a service user, including manager, HRBP, buddy, probation end date and the custom fields you map. The HiBob integration reads people from Bob's API and keeps the Directory current: names, work and private email, start and termination dates, probation end date, department, title, site, manager, HRBP and, if you have a custom field for it, buddy. Pyn reads only; it never writes to Bob. ## Before you start - You are an admin or owner in Pyn. - Choose how to connect. **Connect with HiBob** signs you in to Bob and authorises Pyn. **Use a service user instead** takes a Bob **Service User ID** and **API Token** that a Bob admin creates under **Settings > Integrations > Service Users**. - Grant the service user, or your own account, view access to the people fields Pyn reads: **About**, **Address** (city, country and postal code), **Basic Info**, **Employment**, **Home** (private email), **Jobs**, **Lifecycle**, **Personal** (short birth date) and **Personal Contact Details**, for employees including pre-hires and leavers. ![Connect to HiBob offers a HiBob sign-in or a service user ID and token.](https://support.pynhq.com/media/integrations/hibob/integrations-hibob-connect.png) ## Connect 1. In Pyn, open **Settings** in the left navigation, then **Available** under **Integrations**. 2. Select the **HiBob** tile. The **Connect to HiBob** dialog opens: "You will be redirected to HiBob to authorize Pyn to access your company's employee data." 3. To sign in, select **Connect with HiBob**, authorise Pyn in Bob and return. 4. To use a service user instead, select **Use a service user instead**, paste the **Service User ID** and **API Token**, and select **Connect**. The dialog shows "Validating those credentials..." 5. On success a notice reads "Your HiBob integration has been added to Pyn. It will take a minute or two for employee data to be pulled from HiBob." Errors the dialog can show: "Could not verify the credentials — the service user ID or token appears to be invalid." / "The credentials are valid but the service user lacks the permissions needed to read employees. Grant the service user people-read access in Bob." ## What syncs Pyn refreshes from Bob every five minutes while the integration is active, skipping runs where nothing changed, and records each run under **History**. The **Advanced** tab lists **Fields in Report**: the Bob field ids your tenant returned and for how many people, which is the place to look before concluding a field is unavailable. | Pyn property | From Bob | | --- | --- | | Display name, legal name | Display name, or first name and surname | | Work email, personal email | Email and private email | | Start date, tenure date | Start date (tenure mirrors it) | | Termination date, probation end date | Internal termination and probation end dates | | Department, job title, location | Work department, title and site (falls back to address city) | | Manager | Reports-to, matched by Bob id or employee id in company | | HRBP | The `employee.hrbp` field | | Buddy | The custom field named on the integration as the buddy field, set up with Pyn support | | Birthday, country, postal code, time zone | Short birth date and address; time zone from country and postal code | | Contract type, work office and other custom columns | Workspace extensions mapped to a Bob field id | See [HRIS fields](https://support.pynhq.com/integrations/hris-fields/) for the matrix. ## Test it Open the HiBob tile under **Installed** and check **History** for a successful refresh, then open [Employees](https://support.pynhq.com/directory/employees/) and confirm start dates, titles and managers. ## Reconnect or disconnect - **Reconnect** opens **Reconnect to HiBob** with the same two choices. After rotating a service user token in Bob, paste the new **API Token** here. "Your HiBob integration has been updated." confirms it. - **Deactivate** stops syncing; **Activate** resumes. ## Troubleshooting | What you see | What it means | | --- | --- | | History: "Error: Authentication failed, please reconnect" | The token was rotated or the sign-in revoked. Reconnect. | | History: "Error: Insufficient HiBob permissions" | The service user lost people-read access or a field group. Widen its permissions in Bob. | | People or fields missing | Check **Fields in Report** under Advanced; a field absent there is not visible to the service user, or your tenant does not have it. | | Leavers still active | Grant lifecycle access to former employees so termination dates sync. | ## Related - [Integrations](https://support.pynhq.com/integrations/) for the catalogue. - [HRIS fields](https://support.pynhq.com/integrations/hris-fields/) for the field matrix. - [Sync cadence and matching](https://support.pynhq.com/integrations/sync-and-matching/) for schedules and matching. - [Employees](https://support.pynhq.com/directory/employees/) to check the synced records. ## Related Intercom articles - [Connect to HiBob (Pyn 2)](https://intercom.help/pyn/en/articles/16838927-connect-to-hibob-pyn-2) — replaces - [Connect to HiBob (Pyn 2)](https://intercom.help/pyn/en/articles/16814957-connect-to-hibob-pyn-2) — replaces --- # Jira Source: https://support.pynhq.com/integrations/jira/ > Connect a Jira site so an automation can raise a ticket on an employee's behalf, choose which projects steps may use, and reconnect when Atlassian revokes the grant. The Jira integration powers the **Raise ticket** step: when a new starter reaches day minus three, an automation can open an IT provisioning ticket with their details already filled in. Pyn connects to one Atlassian site through the account that signs in, syncs its projects, and raises issues as that account. ## Before you start - You are an admin or owner in Pyn, and the Raise ticket step is enabled for your workspace; the Jira tile appears under **Available** only then. - You can sign in to Atlassian with an account that can create issues in the projects you want to use. Issues are raised as this account, so a shared service account is the usual choice. ![The Jira tile under Available; selecting it starts the Atlassian sign-in.](https://support.pynhq.com/media/integrations/jira/integrations-jira-tile.png) ## Connect 1. In Pyn, open **Settings** in the left navigation, then **Available** under **Integrations**. 2. Select the **Jira** tile. Atlassian opens; choose the site and accept the permissions. 3. Atlassian returns you to Pyn and the Jira panel opens. **Details** shows the **Site Name**, **Site URL** and the **Account Id** that connected. 4. Open the **Projects** tab. For each project a step should be able to raise tickets in, tick **Available to steps**. Pyn then syncs that project's issue types. If the tile was installed but never connected, its panel reads "Connect Jira so an automation can raise a ticket on someone's behalf." with a **Connect Now** button. ## What syncs - The site's projects, with their key, name, type (**Business**, **Service Management** or **Software**) and whether they are team managed. Pyn refreshes them every 12 hours. - Issue types for each project you have made available to steps, so the step can offer them. - Each ticket a step raises is recorded with its issue key and link and shown as a delivery in [Activity](https://support.pynhq.com/activity/). ## Test it Open an automation in [Automations](https://support.pynhq.com/flows/automations/), add a **Raise ticket** step, and check the project and issue type lists offer what you ticked. Enrol a test employee and open the delivery in Activity: it links to the issue in Jira. ## Reconnect or disconnect - **Reconnect** in the **...** menu repeats the Atlassian sign-in for the same site. The panel also shows it when needed: "Pyn can no longer reach Jira with the stored credentials." - **Deactivate** stops steps raising tickets; **Activate** resumes. ## Troubleshooting | What you see | What it means | | --- | --- | | Tile under **Needs Attention 🚨**, History: "Error: Authentication failed, please reconnect" | The Atlassian grant expired beyond refreshing or was revoked. Reconnect. | | History: "Error: Insufficient Jira permissions" | The connected account cannot create issues in that project, or the granted scopes are too narrow. Reconnect with an account that can. | | A project is missing from the step | It is not ticked **Available to steps**, or it was created after the last 12-hourly refresh. | ## Related - [Integrations](https://support.pynhq.com/integrations/) for the catalogue. - [Automations](https://support.pynhq.com/flows/automations/) to add a Raise ticket step. - [Fix a sender or integration that needs attention](https://support.pynhq.com/integrations/needs-attention/) when the tile shows Error. ## Related Intercom articles - [Create a Jira Ticket in Pyn Automations](https://intercom.help/pyn/en/articles/9359078-create-a-jira-ticket-in-pyn-automations) — Pyn 1 article, kept for reference --- # Microsoft 365 Source: https://support.pynhq.com/integrations/microsoft-365/ > Send email from Outlook mailboxes and invite employees to Outlook Calendar events. Each person connects their own Microsoft account. Microsoft 365 gives Pyn Outlook senders, so an email comes from a named colleague through Microsoft Graph, and Outlook Calendar, so a flow can invite someone to a recurring event. Each is a per-account grant made by the person who owns the mailbox or calendar. The integration tile records the tenant and lists the connected senders. ## Before you start - Microsoft 365 is enabled for your workspace; the tile, **Add Microsoft 365 Email Sender** and **Add Outlook Calendar** appear only then. - You sign in to Microsoft yourself; an admin cannot connect someone else's mailbox. - The account needs an Exchange Online mailbox. Pyn asks for `User.Read` and `Mail.Send` for a sender, `User.Read` and `Calendars.ReadWrite` for a calendar. ![The Microsoft 365 tile under Available; selecting it starts the Microsoft sign-in.](https://support.pynhq.com/media/integrations/microsoft-365/integrations-microsoft-365-tile.png) ## Connect 1. In Pyn, open **Settings** in the left navigation, then **Available** under **Integrations**. 2. Select the **Microsoft 365** tile. Microsoft opens; sign in and accept the permissions. This connects your account as a sender and installs the integration. 3. Microsoft returns you to Pyn. The tile moves to **Installed** as **Active** and your sender appears under **Settings > General > Senders**. 4. For more senders, each person uses **Senders > Add > Add Microsoft 365 Email Sender**. See [Add a Google or Microsoft 365 sender](https://support.pynhq.com/settings/senders/add-a-google-or-microsoft-365-sender/). 5. For a calendar, use **Calendars > Add > Add Outlook Calendar** and pick the calendar to sync. See [Connect a calendar](https://support.pynhq.com/settings/calendars/connect-a-calendar/). ## What syncs - **Senders**: name, email and tenant, read when the account connects. - **Calendars**: recurring events from the selected calendar, refreshed every five minutes while the integration is active, with **Refresh Events** to pull changes now. - **Deliveries**: each email and invite is a delivery in [Activity](https://support.pynhq.com/activity/). A transient Graph error is retried; the delivery records how many times sending was deferred. The panel's **Details** tab shows the **Tenant**; its **Senders** tab lists every connected Microsoft 365 sender. ## Test it Open a Microsoft 365 sender under **Senders**, open its **...** menu and select **Send Test**; "Test Message Sent" confirms it. For a calendar, open it under **Calendars** and check its events list once "Pyn is syncing this calendar. This can take a few minutes." clears. ## Reconnect or disconnect - A sender or calendar showing **Requires reauth** carries a **Reconnect** button; the account owner signs in again. - **Deactivate** on the tile stops every Microsoft 365 sender and calendar; **Activate** restores them. ## Troubleshooting | What you see | What it means | | --- | --- | | **Requires reauth** | The password changed or the grant was revoked in Microsoft Entra. The account owner reconnects. | | Delivery bounce reason **Mailbox Unavailable** | The connected account has no mailbox it can send from, for example it is not licensed for Exchange Online. | | Delivery bounce reason **Raw HTML Email Not Enabled** | The step sends raw HTML and that is switched off for this workspace. Use the editor or ask support. | | Calendar events list is empty | Only recurring series are synced. Use **Refresh Events** after adding one. | ## Related - [Add a Google or Microsoft 365 sender](https://support.pynhq.com/settings/senders/add-a-google-or-microsoft-365-sender/) for the sender steps. - [Connect a calendar](https://support.pynhq.com/settings/calendars/connect-a-calendar/) for the Outlook Calendar steps. - [Google Workspace](https://support.pynhq.com/integrations/google-workspace/) for the Google equivalent. --- # Microsoft Teams Source: https://support.pynhq.com/integrations/ms-teams/ > Deliver flows as Teams direct messages and channel posts. Teams is in early access: you request it from the Available view and Pyn sets it up with your Teams administrator. The Microsoft Teams integration lets a step send a direct message or post to a channel in Teams, from the Pyn app or from a colleague's own Teams account. It is in early access: the tile under **Available** opens a request rather than a sign-in, and Pyn's team installs the Pyn app in your Teams tenant with your administrator and pairs it to your workspace. ## Before you start - You are an admin or owner in Pyn. - Your Teams administrator can add the Pyn app to a team in your tenant; the pairing starts from the team the app is installed in. - Decide which team's channels you want to post to and who should be able to send as themselves. ## Connect 1. In Pyn, open **Settings** in the left navigation, then **Available** under **Integrations**. 2. Find the **Microsoft Teams** tile, marked **Early Access**, and select it. 3. In **Get started with Pyn today**, select **Request Now**. A booking page opens; pick a time, and mention Teams. 4. Pyn's team walks your Teams administrator through installing the Pyn app in a team and pairs that team to your workspace. The integration then appears under **Installed** with the **Tenant Id**, **Bot Id** and **Service URL** on its Details tab. ## What syncs - Members of the paired team, with display name, email and user principal name, so Pyn can match them to employees by work email. Pyn reconciles the team daily. - The team's channels, so a step can post to one. - Senders: the Pyn app itself, and any colleague who connects their own Teams account, listed under **Settings > General > Senders** as a Teams sender. - Each message is a delivery in [Activity](https://support.pynhq.com/activity/); a bounce is logged as "Delivery bounced" with the cause on the individual delivery. ## Test it Once the integration shows **Active**, add a Teams step to a test automation in [Automations](https://support.pynhq.com/flows/automations/), enrol yourself and check the message arrives in Teams. Conditional senders also support the Teams medium. ## Reconnect or disconnect If the app is removed from the team or its credentials stop working, the integration moves to **Needs Attention 🚨** with a notice "The credentials for the Microsoft Teams integration are not valid", and a Teams sender raises "The credentials for the Microsoft Teams sender are not valid". Contact support@pynhq.com to re-pair; **Deactivate** and **Activate** work as for any integration. ## Troubleshooting | What you see | What it means | | --- | --- | | The tile says **Early Access** | Teams is set up with Pyn rather than self-serve. Select the tile and request it. | | A message to a channel fails | The channel is private, or the Pyn app is not a member of it. Add the app to the channel. | | Someone is not matched to Teams | Their Teams email differs from the work email in your HRIS. Team membership alone does not create an employee. | ## Related - [Integrations](https://support.pynhq.com/integrations/) for the catalogue. - [Slack](https://support.pynhq.com/integrations/slack/) for the self-serve messaging integration. - [Sender types and states](https://support.pynhq.com/settings/senders/sender-types-and-states/) for Teams senders. - [Fix a sender or integration that needs attention](https://support.pynhq.com/integrations/needs-attention/) when the tile shows Error. ## Related Intercom articles - [Using Pyn with Microsoft Teams (Pyn 1)](https://intercom.help/pyn/en/articles/9621229-using-pyn-with-microsoft-teams-pyn-1) — Pyn 1 article, kept for reference - [Connect to Microsoft Teams (Pyn 1)](https://intercom.help/pyn/en/articles/9623756-connect-to-microsoft-teams-pyn-1) — Pyn 1 article, kept for reference - [Send to a Teams channel (Pyn 1)](https://intercom.help/pyn/en/articles/9621416-send-to-a-teams-channel-pyn-1) — Pyn 1 article, kept for reference - [Connect your personal Teams account with Pyn (Pyn 1)](https://intercom.help/pyn/en/articles/9623751-connect-your-personal-teams-account-with-pyn-pyn-1) — Pyn 1 article, kept for reference - [What read/write access does Pyn use for the Teams integration?](https://intercom.help/pyn/en/articles/9621234-what-read-write-access-does-pyn-use-for-the-teams-integration) — Pyn 1 article, kept for reference --- # Rippling Source: https://support.pynhq.com/integrations/rippling/ > Sync employees from Rippling by signing in or with an API key, choose the related data to expand, and reconnect with a new key when needed. The Rippling integration reads workers from Rippling's API and keeps the Directory current: names, work and personal email, start and termination dates, title, department, manager, employment and worker type. Pyn reads only; nothing is written back. ## Before you start - You are an admin or owner in Pyn. - Either you can sign in to Rippling as an administrator and authorise Pyn, or a Rippling admin has created an **API key** for Pyn. ![Connect to Rippling redirects you to Rippling, or takes an API key instead.](https://support.pynhq.com/media/integrations/rippling/integrations-rippling-connect.png) ## Connect 1. In Pyn, open **Settings** in the left navigation, then **Available** under **Integrations**. 2. Select the **Rippling** tile. The **Connect to Rippling** dialog opens: "You will be redirected to Rippling to authorize Pyn to access your company's employee data." 3. To sign in, leave **API Key (optional)** empty and select **Connect**. Authorise Pyn in Rippling and return. 4. To use a key instead, paste it into **API Key (optional)** ("Connect with a Rippling API key instead") and select **Connect**. 5. The panel reads "You're connected. Syncing can take a few minutes. Check the journey map then!" ## What syncs Pyn refreshes from Rippling every five minutes while the integration is active and records each run under **History**. The **Details** tab shows **Expanded Data**, the related records Pyn requests with each worker: **Department**, **Employment Type**, **Manager** and **Teams**; you can change the selection there. | Pyn property | From Rippling | | --- | --- | | Display name, legal name, preferred name | The worker's names | | Work email, personal email | Work and home email addresses, with the user's emails as fallback | | Start date, tenure date | Start date (tenure mirrors it) | | Termination date | Termination or end date | | Job title, department, location | Title, department name and work location | | Employee type, employment type, worker type, time type, exempt | Employment type and classification | | Manager | Manager, when **Manager** is expanded | | Avatar, birthday, country, postal code, time zone | Profile photo and address; time zone from country and postal code | See [HRIS fields](https://support.pynhq.com/integrations/hris-fields/) for the matrix. ## Test it Open the Rippling tile under **Installed**, open the **...** menu and select **Test Connection**. "Successfully tested the connection to Rippling." confirms it; "An error occurred connecting to Rippling. Please Reconnect or contact support if the issue persists." means the credentials no longer work. Then check [Employees](https://support.pynhq.com/directory/employees/). ## Reconnect or disconnect - **Reconnect** opens **Reconnect to Rippling**: "Enter a new Rippling API key to reconnect this integration." Reconnecting always uses a key; the sign-in flow is for the first connection. - **Deactivate** stops syncing; **Activate** resumes. **Archive** removes the integration from Installed. ## Troubleshooting | What you see | What it means | | --- | --- | | History: "Error: Authentication failed, please reconnect" | The key was revoked or the authorisation withdrawn. Reconnect with a new key. | | History: "Error: Insufficient permissions to access Rippling" | The key cannot read workers or one of the expanded records. Widen its scopes in Rippling. | | History: "Could not connect to Rippling, please reconnect" | Rippling refused the connection; reconnect, and contact support if it repeats. | | Managers missing | **Manager** is not in **Expanded Data**. Tick it on the Details tab. | ## Related - [Integrations](https://support.pynhq.com/integrations/) for the catalogue. - [HRIS fields](https://support.pynhq.com/integrations/hris-fields/) for the field matrix. - [Sync cadence and matching](https://support.pynhq.com/integrations/sync-and-matching/) for schedules and matching. - [Employees](https://support.pynhq.com/directory/employees/) to check the synced records. --- # Sample Data Source: https://support.pynhq.com/integrations/sample-data/ > Install a roster of fictional employees to try Pyn with realistic data, and reload it to put everything back the way it was. Sample Data fills the Directory with a bundled roster of a fictional company so you can build groups, test flows and read Activity before connecting your HRIS. Reloading it puts the sample employees back the way they were, so experiments are cheap. ## Before you start - You are an admin or owner, and Sample Data is enabled for your workspace; the tile appears under **Available** only then. It is on for playground and trial workspaces. - Sample employees live alongside anything else in the Directory. Use it in a trial or sandbox workspace rather than one that already has a real roster. ![Install Sample Data adds a roster of fictional employees to try Pyn with.](https://support.pynhq.com/media/integrations/sample-data/integrations-sample-data-install.png) ## Connect 1. In Pyn, open **Settings** in the left navigation, then **Available** under **Integrations**. 2. Select the **Sample Data** tile. The **Install Sample Data** dialog explains "This adds a roster of fictional employees to your directory so you can try Pyn with realistic data." 3. Select **Install**. 4. The panel opens and reads "Loading the sample roster. The fields and History fill in here as it lands." ## What syncs A fixed roster of fictional employees with names, emails, start dates, departments, locations, time zones and reporting lines, enough to populate demographics, lifecycle groups and a journey map. There is no scheduled refresh. The **Advanced** tab lists **Fields in Sample Data** and **History** records each load. ## Test it Open [Employees](https://support.pynhq.com/directory/employees/) a minute or two after installing. Then follow [Getting started](https://support.pynhq.com/getting-started/) to build a first automation and enrol a sample employee. ## Reconnect or disconnect - **Reload Sample Data** in the panel resets the roster: "Reloading n sample employees. The History tab will show the result in a minute or two, after which the Directory reflects the reload." If a reload is already running the button is disabled; a refused reload shows "The sample roster could not be reloaded. Please try again." - **Deactivate** keeps the employees but stops reloads; **Archive** removes the integration. ## Troubleshooting | What you see | What it means | | --- | --- | | The tile is not under Available | Sample Data is not enabled for this workspace. Ask Pyn support, or use [Employee File](https://support.pynhq.com/integrations/employee-file/). | | Sample employees appear next to real ones | Both sources are installed. Archive Sample Data before going live. | ## Related - [Integrations](https://support.pynhq.com/integrations/) for the catalogue. - [Employee File](https://support.pynhq.com/integrations/employee-file/) to load your own spreadsheet instead. - [Employees](https://support.pynhq.com/directory/employees/) to see the roster. - [Getting started](https://support.pynhq.com/getting-started/) for what to try first. --- # Slack Source: https://support.pynhq.com/integrations/slack/ > Install Slack so flows can send direct messages, post to channels and invite people to channels, from the Pyn Bot, a custom bot or a colleague's own account. The Slack integration connects a Slack workspace to Pyn. Once installed, steps can send a direct message, post to a channel or invite someone to a channel, employees can answer polls and forms without leaving Slack, and Slack members are matched to employees by email. Messages come from the **Pyn Bot**, from a [custom bot](https://support.pynhq.com/integrations/slack/add-a-custom-bot/) with your own name and icon, or from a colleague who has [added themselves as a Slack sender](https://support.pynhq.com/settings/senders/add-a-slack-sender/). ## Before you start - You are an admin or owner in Pyn. - You can authorise apps in the Slack workspace, or your Slack admin approves the request Slack shows you. - Have that Slack workspace signed in in your browser. Slack shows the workspace in the top right of its authorisation page. - Bot scopes Pyn asks for: `app_mentions:read`, `channels:read`, `channels:write.invites`, `chat:write`, `groups:read`, `groups:write.invites`, `im:history`, `im:read`, `im:write`, `team:read`, `users:read` and `users:read.email`. The bot cannot read channel messages or join channels on its own; it posts only where it has been invited. ![The Slack tile under Available; selecting it starts the Slack sign-in.](https://support.pynhq.com/media/integrations/slack/integrations-slack-available.png) ## Connect 1. In Pyn, open **Settings** in the left navigation, then **Available** under **Integrations**. 2. Select the **Slack** tile. Slack opens. 3. Check the workspace shown in the top right is the one you want, review the permissions and select **Allow**. 4. Slack returns you to Pyn. The Slack tile shows **Active** under **Installed**. 5. Open the tile. **Details** shows the **Team Id**, **Requires Reauthentication** (false) and the refresh times. Optionally invite the Pyn Bot to the channels you plan to post to, from Slack. If a workspace has a Slack tile marked **Ready to Connect**, open it and select **Connect Now**: "Connecting to Slack allows you to send timely, automated messages to your employees." Pyn can hold one integration per Slack workspace; **Connect another workspace** in the **...** menu adds a second. ## What syncs - **Members**: every Slack user's name, handle, email, avatar and time zone, refreshed every five minutes while the integration is active. A member is matched to an employee by their Slack id or by email; see [Sync cadence and matching](https://support.pynhq.com/integrations/sync-and-matching/). - **Channels**: the **Channels** tab lists **Public Channels**, and under **Private Channels** the ones the Pyn Bot is a member of, each as `#name - n members`. A channel appears in a step's **To** list once it is here. - **Senders**: the Pyn Bot is created with the integration; custom bots and personal senders are added later. - **Deliveries**: each message, post and channel invite is a delivery in [Activity](https://support.pynhq.com/activity/). ## Test it Open the Slack tile, open the **...** menu and select **Test Connection**. "Test successfully sent. Check your Slack account for the test message." means the Pyn Bot sent you a direct message. "Slack appears to be configured, but we could not find you as a Slack Member to send the test message." means your Pyn email matches no member in that workspace. "There is a misconfiguration preventing the test. Please contact support." means the integration itself failed. ## Reconnect or disconnect - When Slack revokes the token the panel shows "This integration is not operational as it requires re-authentication. This can happen if credentials are revoked." with **Reconnect**, which returns to the same Slack workspace. The tile also appears under **Needs Attention 🚨** and a notice carries the same button. - **Deactivate** stops every Slack sender and delivery; **Activate** resumes. Archiving the integration also stops its senders. ## Troubleshooting | What you see | What it means | | --- | --- | | "We could not start the Slack connection. Please contact support." | Pyn could not build the Slack authorisation link. Try again, then contact support. | | Slack shows an admin approval screen | Your workspace requires admin approval for apps. Submit the request, have a Slack admin approve it, then connect again. | | A channel is missing from a step's **To** list | The bot is not in a private channel, or the channel was created since the last refresh. Invite the bot and wait a few minutes; the step shows "No results" when the sender has no channels. | | A channel post fails | The sender is not a member of the channel. Invite the bot or custom bot, or join the channel yourself. | | Someone is not matched | Their Slack email differs from the work email in your HRIS. Correct one of them, or use **Disconnect** on the employee's record to clear a wrong match. | | You connected the wrong workspace | Archive the integration from its **...** menu and install again, choosing the right workspace in Slack. | ## Related - [Add a custom bot](https://support.pynhq.com/integrations/slack/add-a-custom-bot/) to send from your own bot name and icon. - [Add a Slack sender](https://support.pynhq.com/settings/senders/add-a-slack-sender/) to send as yourself. - [Create an auth link](https://support.pynhq.com/settings/senders/create-an-auth-link/) for a sender without a Pyn login. - [Sync cadence and matching](https://support.pynhq.com/integrations/sync-and-matching/) for how members become employees. ## Related Intercom articles - [Installing the Slack Integration (Pyn 2)](https://intercom.help/pyn/en/articles/14983837-installing-the-slack-integration-pyn-2) — replaces - [What read/write access does Pyn use for the Slack integration?](https://intercom.help/pyn/en/articles/6024093-what-read-write-access-does-pyn-use-for-the-slack-integration) — draws on - [Using Pyn with Slack](https://intercom.help/pyn/en/articles/6767588-using-pyn-with-slack) — draws on - [Connect to Slack (Pyn 1)](https://intercom.help/pyn/en/articles/6002189-connect-to-slack-pyn-1) — Pyn 1 article, kept for reference - [Set up a Custom Slack Sender/Slack Bot (Pyn 2)](https://intercom.help/pyn/en/articles/16755898-set-up-a-custom-slack-sender-slack-bot-pyn-2) - [Send Slack messages from a service account (Pyn 1)](https://intercom.help/pyn/en/articles/9585758-send-slack-messages-from-a-service-account-pyn-1) — Pyn 1 article, kept for reference --- # Add a custom bot Source: https://support.pynhq.com/integrations/slack/add-a-custom-bot/ > Create a Slack app from Pyn's manifest so messages come from your own bot name and icon, then paste its bot token into Pyn. You want messages to come from `@PeopleTeam` rather than from the Pyn Bot or a person. A custom bot is a Slack app you create in your workspace from a manifest Pyn gives you; you paste its bot token into Pyn and it appears as a sender. ## Before you start - The Slack integration is **Active** under **Settings > Integrations**. - You, or a Slack workspace administrator working with you, can create apps at `api.slack.com/apps`. ![Installed lists every connected integration; select the Slack tile to open its panel.](https://support.pynhq.com/media/integrations/overview/integrations-installed-list.png) ## Steps 1. In Pyn, open **Settings** in the left navigation, then **Installed** under **Integrations**, and select the **Slack** tile. 2. Open the **...** menu and select **Add custom bot**. 3. Expand **Slack set up** and select **Copy manifest**. The manifest requests `channels:read`, `channels:write.invites`, `chat:write`, `groups:read`, `groups:write.invites` and `im:write` for the bot. 4. In Slack, go to `api.slack.com/apps`, select **Create New App**, then **From a manifest**. Choose the workspace, paste the manifest on the **YAML** tab and finish creating the app. Replace both occurrences of `CHANGEME_Name` with the bot's name. 5. Install the app to the workspace and, under **Basic Information**, set its display name, description and icon. 6. Under **OAuth & Permissions**, copy the **Bot User OAuth Token** (it starts with `xoxb-`). 7. Back in Pyn, paste it into **Bot Token** and select **Add**. > **Tip:** Invite the bot to each channel it should post to; a bot can post only where it is a member. Replies to the bot's direct messages are visible in the app's own message view in Slack, not in a person's inbox. ## What you should see The bot appears under **Settings > General > Senders** with status **Active** and in the **From** list of Slack steps in [Automations](https://support.pynhq.com/flows/automations/). If Pyn rejects the token, the dialog shows "We could not add the custom bot. Please check the token and try again." or Slack's own reason; check you copied the bot token, not the signing secret or an `xoxp-` user token. ## Related - [Slack](https://support.pynhq.com/integrations/slack/) for the integration itself. - [Senders](https://support.pynhq.com/settings/senders/) to test or archive the bot. - [Automations](https://support.pynhq.com/flows/automations/) to send from it. ## Related Intercom articles - [Set up a Custom Slack Sender/Slack Bot (Pyn 2)](https://intercom.help/pyn/en/articles/16755898-set-up-a-custom-slack-sender-slack-bot-pyn-2) — replaces - [Send Slack messages from a service account (Pyn 1)](https://intercom.help/pyn/en/articles/9585758-send-slack-messages-from-a-service-account-pyn-1) — Pyn 1 article, kept for reference --- # Single sign-on Source: https://support.pynhq.com/integrations/sso/ > Sign your people in through Okta or any OpenID Connect provider, map identity-provider groups to Pyn roles, and understand what employees see at the sign-in page. With single sign-on, people reach Pyn through your identity provider instead of a Google, Microsoft or magic-link sign-in. Pyn offers two integrations: **Okta**, for an Okta OpenID Connect app, and **Single Sign-On**, for Keycloak, Okta, Microsoft Entra ID, Auth0, Ping Identity or any other OpenID Connect provider. Both can read a groups claim from the token and turn it into a Pyn role. ![Connect single sign-on: choose the Provider, then enter the issuer, client ID, client secret and groups claim.](https://support.pynhq.com/media/integrations/sso/integrations-sso-connect.png) ## What you can do here - [Connect Okta](https://support.pynhq.com/integrations/sso/connect-okta/) with an issuer, client ID and client secret - [Connect an OpenID Connect provider](https://support.pynhq.com/integrations/sso/connect-an-oidc-provider/), including Keycloak by server URL and realm - Map groups to roles so your provider decides who is an owner, admin, power user or user - Share the **Sign-in link** the integration panel shows, or let people use **Continue with SSO** on the sign-in page ## How roles are mapped Each integration has four lists: **Owner groups**, **Admin groups**, **Power user groups** and **User groups**, each a comma-separated set of group names from your provider's groups claim. The panel explains the rule: "The most privileged match wins. Once any of these is set, the provider decides roles on every sign-in — someone who matches nothing drops to User — so map the group your owners are in before you fill the rest." With no mappings set, roles are managed in [Users](https://support.pynhq.com/settings/users/) as usual. Pyn does not create users ahead of time from your provider. A person who signs in through SSO for the first time is created then, with the role their groups map to; otherwise invite them first. ## What employees see The sign-in page offers **Continue with SSO**. The person enters their work email and the page explains "Enter your work email address and you will be taken to your organisation's single sign-on provider." They sign in there and land in Pyn. Opening the **Sign-in link** from the integration panel does the same without the email step. A session lasts 24 hours. ## Where it is in the app Open `/settings/integrations/available` in Pyn and select the **Okta** or **Single Sign-On** tile. Both appear only in workspaces where Pyn has enabled them; ask support@pynhq.com to switch one on. ## Related - [Connect Okta](https://support.pynhq.com/integrations/sso/connect-okta/) for the Okta steps. - [Connect an OpenID Connect provider](https://support.pynhq.com/integrations/sso/connect-an-oidc-provider/) for every other provider. - [Users](https://support.pynhq.com/settings/users/) for what each role can do. - [Sign in](https://support.pynhq.com/account/sign-in/) for the other sign-in methods. ## Related Intercom articles - [Enabling Single Sign On (Pyn 2)](https://intercom.help/pyn/en/articles/16838066-enabling-single-sign-on-pyn-2) — replaces - [Connect to Okta SSO (Pyn 2)](https://intercom.help/pyn/en/articles/16838252-connect-to-okta-sso-pyn-2) - [Connect to Okta SSO](https://intercom.help/pyn/en/articles/6002159-connect-to-okta-sso) — Pyn 1 article, kept for reference - [Connect to Okta API](https://intercom.help/pyn/en/articles/9421970-connect-to-okta-api) — Pyn 1 article, kept for reference --- # Connect an OpenID Connect provider Source: https://support.pynhq.com/integrations/sso/connect-an-oidc-provider/ > Connect Keycloak, Microsoft Entra ID, Auth0, Ping Identity or another OpenID Connect provider, set the groups claim, and map groups to Pyn roles. Your identity provider speaks OpenID Connect and you want it to sign people into Pyn and decide their roles. The Single Sign-On integration takes the provider, its issuer and a client with the authorisation code flow, checks the provider's OpenID configuration, and shows the redirect URI and sign-in link you need. ## Before you start - You are an admin or owner in Pyn, and the Single Sign-On integration is enabled for your workspace. - Someone can create a confidential client in your provider: "The client needs the standard authorization code flow and a client secret." Required claims are `openid`, `profile` and `email`; add `groups` (Entra emits `roles`) if you want role mapping. - You have the issuer, client ID and client secret. For Keycloak you need the **Keycloak Server URL** and **Realm**; Pyn composes the issuer from them. ![Connect single sign-on: choose the Provider, then enter the issuer, client ID, client secret and groups claim.](https://support.pynhq.com/media/integrations/sso/integrations-sso-connect.png) ## Steps 1. In Pyn, open **Settings** in the left navigation, then **Available** under **Integrations**. 2. Select the **Single Sign-On** tile. The **Connect single sign-on** dialog opens. 3. Choose the **Provider**: **Keycloak**, **Okta**, **Microsoft Entra ID**, **Auth0**, **Ping Identity** or **Single Sign-On** for anything else. 4. For Keycloak enter the **Keycloak Server URL** and **Realm**; for the others enter the **Issuer URL**. 5. Enter the **Client ID** and **Client Secret**. Set **Groups Claim** if your provider uses a name other than `groups`, and **Additional Scopes** if it needs more than `openid profile email`. 6. Copy the **Redirect URI** shown in the dialog: "Add this as a valid redirect URI on the client in your provider, then come back and connect." 7. Select **Connect**. The dialog shows "Checking those details with your provider..." and then a notice: "Single sign-on is configured. Use the sign-in link on the integration to let your people sign in with it." 8. On the panel, under **Group mappings**, enter comma-separated group names for **Owner groups**, **Admin groups**, **Power user groups** and **User groups**, starting with the owners. > **Caution:** Once any group mapping is set, the provider decides roles on every sign-in and someone who matches no group becomes a User. Map your owners first. ## What you should see The tile shows **Active** under **Installed** and the panel shows the **Redirect URI** and the **Sign-in link**: "Share this with your people to sign in through your provider. Opening it signs you in." If the dialog refuses, read its reason: "That address answered, but not with an OpenID configuration." means the issuer is not the base URL the provider publishes its configuration under; "Could not reach that issuer." means it is not reachable from the internet; "The issuer needs to be a full URL, starting with https://." is a format problem. **Reconnect** in the **...** menu reopens the dialog to change any of it. ## Related - [Single sign-on](https://support.pynhq.com/integrations/sso/) for role mapping and what employees see. - [Connect Okta](https://support.pynhq.com/integrations/sso/connect-okta/) for the dedicated Okta integration. - [Users](https://support.pynhq.com/settings/users/) for the roles the group lists refer to. ## Related Intercom articles - [Enabling Single Sign On (Pyn 2)](https://intercom.help/pyn/en/articles/16838066-enabling-single-sign-on-pyn-2) — replaces --- # Connect Okta Source: https://support.pynhq.com/integrations/sso/connect-okta/ > Create an OpenID Connect web app in Okta, enter its issuer, client ID and secret in Pyn, and hand out the sign-in link. You want your people to sign in to Pyn with Okta. An Okta administrator creates an OpenID Connect web application, you paste its details into Pyn, and Pyn gives you a redirect URI to register and a sign-in link to share. ## Before you start - You are an admin or owner in Pyn, and the Okta integration is enabled for your workspace. - An Okta administrator can create an app integration: **Applications > Create App Integration**, **OIDC - OpenID Connect**, **Web Application**, grant type **Authorization Code** only, and assign the people or groups who should have access. - The app must emit a `groups` claim in the ID token and your org must allow the `groups` scope for it; Pyn requests `openid`, `profile`, `email` and `groups`. - You have the **Issuer URL** (your Okta org URL, or the custom authorization server's issuer), the **Client ID** and the **Client Secret**. ![Connect Okta asks for the Issuer URL, Client ID, Client Secret and Redirect URI.](https://support.pynhq.com/media/integrations/sso/integrations-okta-connect.png) ## Steps 1. In Pyn, open **Settings** in the left navigation, then **Available** under **Integrations**. 2. Select the **Okta** tile. The **Connect Okta** dialog opens. 3. Enter the **Issuer URL** (for example `https://example.okta.com`), the **Client ID** and the **Client Secret**. 4. Leave the **Redirect URI** as shown and "Register the redirect URI as a sign-in redirect URI on the Okta app integration." Your Okta administrator adds it to the app's **Sign-in redirect URIs**. 5. Select **Connect**. The Okta integration panel opens. 6. On the panel, copy the **Initiate Login URI**: "Register this as the initiate login URI on the Okta app integration. Opening it signs you in." Share it with your people, or add the app to the Okta dashboard. 7. To let Okta set roles, fill **Owner Groups**, **Admin Groups**, **Power User Groups** and **User Groups** on the panel with group names from the claim. > **Note:** To rotate the secret, select **Replace Credentials** on the panel, enter the new **Issuer URL**, **Client ID** and **Client Secret**, and select **Replace**. ## What you should see The tile shows **Active** under **Installed**. Opening the Initiate Login URI, or choosing **Continue with SSO** on the sign-in page and entering a work email, sends the person to Okta and back into Pyn. The panel's **Identities** tab lists each person who has signed in through Okta. If the dialog reports "Okta could not be connected. Check the details and try again. If the error persists, contact support.", confirm the issuer is the base URL that serves the OpenID configuration and that the redirect URI is registered exactly. ## Related - [Single sign-on](https://support.pynhq.com/integrations/sso/) for role mapping and what employees see. - [Connect an OpenID Connect provider](https://support.pynhq.com/integrations/sso/connect-an-oidc-provider/) for Entra, Auth0, Ping or Keycloak. - [Users](https://support.pynhq.com/settings/users/) for the roles the group lists refer to. ## Related Intercom articles - [Connect to Okta SSO (Pyn 2)](https://intercom.help/pyn/en/articles/16838252-connect-to-okta-sso-pyn-2) — replaces - [Connect to Okta SSO](https://intercom.help/pyn/en/articles/6002159-connect-to-okta-sso) — Pyn 1 article, kept for reference - [Connect to Okta API](https://intercom.help/pyn/en/articles/9421970-connect-to-okta-api) — Pyn 1 article, kept for reference --- # Workday Source: https://support.pynhq.com/integrations/workday/ > Sync employees from a Workday Report-as-a-Service report: the columns to include, the credentials Pyn needs, and how to read Fields in Report. The Workday integration reads a custom report your Workday administrator publishes as a service (RaaS) and keeps the Directory current. You control exactly what Pyn sees by choosing the report's columns, and the **Advanced** tab shows which columns arrived. ## Before you start - You are an admin or owner in Pyn. - A Workday administrator creates a custom report, enables it as a web service with JSON output, and gives you its **Report URL**, plus the **Username** and **Password** of an integration system user that can run it. - The report should include these columns, matched by name with spaces and underscores ignored: `Employee_ID`, `WorkEmail`, `Name` or `Preferred_Name`, `Preferred_Name_First_Name`, `Business_Title`, `Hire_Date`, `Original_Hire_Date`, `Termination_Date`, `Active_Status`, `Department_Name`, `Business_Unit`, `Team`, `Manager_ID`, `Work_Country`, `Time_Zone` (an IANA name such as `Australia/Sydney`), `Home_Email_Address` for pre-boarding, `Birthday`, `Worker_Type`, `Employee_Type`, `Time_Type` and `Exempt`. ![Connect to Workday asks for the report Username, Password and Report URL.](https://support.pynhq.com/media/integrations/workday/integrations-workday-connect.png) ## Connect 1. In Pyn, open **Settings** in the left navigation, then **Available** under **Integrations**. 2. Select the **Workday RaaS** tile. The **Connect to Workday** dialog opens. 3. Enter the **Username** and **Password**. 4. Enter the **Report URL**. It must start with `https://`; "That URL is not in the correct format." means it does not. 5. Select **Connect**. The dialog shows "Validating those credentials..." while Pyn runs the report. 6. On success a notice reads "Your Workday RaaS has successfully been added to Pyn. It will take a minute or two for the employee data to be pulled from Workday." Errors the dialog can show: "Could not verify the credentials. The username or password appear to be invalid." / "Could not verify the credentials. The supplied URL is not in the correct format." / a note that Workday is returning a "Down for Maintenance" response, in which case wait and try again. ## What syncs Pyn runs the report every five minutes while the integration is active and logs each run under **History**. **Details** shows the **Report Type** (Employee, Candidate or Evergreen), **Username** and **Report URL**; **Advanced** lists **Fields in Report** with a count for each column received. | Pyn property | Report column | | --- | --- | | External id | `Employee_ID` and `Worker_ID`; a report mixing the two keeps both | | Display name, legal name, preferred name | `Name` / `Full_Name` / `Preferred_Name`, `Preferred_Name_First_Name` | | Work email, secondary email, personal email | `Work_Email`, `CF_Additional_Work_Email`, `Email_Primary_Home` / `Home_Email_Address` / `Personal_Email` | | Start date, tenure date, termination date | `Hire_Date`, `Original_Hire_Date`, `Termination_Date` / `Term_Date` | | Job title | `Business_Title` | | Department, business unit, team | `Department_Name`, `Business_Unit`, `Team` | | Country, time zone | `Country` / `Work_Address_Country` / `Work_Country`, `Time_Zone` | | Manager | `Manager_ID` | | Exempt, worker type, employee type, time type | `Exempt`, `Worker_Type`, `Employee_Type`, `Time_Type` | | Custom columns | Workspace extensions mapped to a report column | Column names are matched case-insensitively with underscores and spaces removed, so `Hire_Date`, `HireDate` and `Hire Date` all work. See [HRIS fields](https://support.pynhq.com/integrations/hris-fields/) for the matrix. ## Test it Open the Workday tile under **Installed** and read **History** for a successful run, then check **Fields in Report** under **Advanced** against the columns you expected. Open [Employees](https://support.pynhq.com/directory/employees/) and confirm names, start dates and managers. ## Reconnect or disconnect - **Reconnect** opens **Reconnect to Workday** with the username and URL filled; enter the password (and any changed value) and select **Connect**. "Your Workday RaaS has successfully been updated." confirms it and clears an error state. - **Deactivate** stops the report running; **Activate** resumes. ## Troubleshooting | What you see | What it means | | --- | --- | | History: "Error: Authentication failed, please reconnect" | The integration user's password changed or the account was disabled. Reconnect. | | A column is missing under Fields in Report | It is not in the report, or its name does not match any name Pyn reads. Add or rename it in Workday. | | People missing | They are not returned by the report's filters; check `Active_Status` and the population the report covers. | | Time zones wrong | `Time_Zone` is not an IANA name, or is missing; Pyn falls back to country and the workspace default. | ## Related - [Integrations](https://support.pynhq.com/integrations/) for the catalogue. - [HRIS fields](https://support.pynhq.com/integrations/hris-fields/) for the field matrix. - [Sync cadence and matching](https://support.pynhq.com/integrations/sync-and-matching/) for schedules and matching. - [Employees](https://support.pynhq.com/directory/employees/) to check the synced records. ## Related Intercom articles - [Connect to Workday (Pyn 2)](https://intercom.help/pyn/en/articles/12005093-connect-to-workday-pyn-2) — replaces - [Connect to Workday (Pyn 1)](https://intercom.help/pyn/en/articles/6330048-connect-to-workday-pyn-1) — Pyn 1 article, kept for reference --- # Fix a sender or integration that needs attention Source: https://support.pynhq.com/integrations/needs-attention/ > Find what has stopped working under Needs Attention, reconnect it, and confirm the status is back to Active. A password changed, a token was revoked or an API key was rotated, and now a sender or integration is in the error state. Pyn collects everything in that state under **Needs Attention 🚨**, raises a notice, and offers **Reconnect** in place. There is one Needs Attention view in each Settings group: General for senders, calendars and custom email recipients; Integrations for integrations. ## Before you start - You are an admin or owner. - For a personal sender (a Google, Microsoft 365 or Slack account), the person who owns that account has to do the reconnect. If that is not you, send them this guide. ![Needs Attention lists integrations in the error state; it is empty when everything is healthy.](https://support.pynhq.com/media/integrations/needs-attention/integrations-attention-list.png) ## Steps 1. In Pyn, open **Settings** in the left navigation. Select **Needs Attention 🚨** under **Integrations** for an integration, or under **General** for a sender, calendar or recipient. 2. Select the item. Its panel opens with a notice explaining the state, for example "This integration is not operational as it requires re-authentication. This can happen if credentials are revoked." 3. Select **Reconnect**. For Slack, Google Workspace, Microsoft 365 and Jira this sends you to the provider to sign in again; for BambooHR it repeats the company-domain sign-in; for HiBob, Rippling, Workday, ADP, Greenhouse and Ashby it opens the connect form to enter new credentials. 4. Complete the sign-in or form and return to Pyn. 5. For an integration, open its **...** menu and select **Test Connection** to confirm. > **Tip:** The same **Reconnect** button appears on the notice in [Notices](https://support.pynhq.com/notices/), so you can act from there. To be emailed when this happens, turn on **Email admins and owners when re-authentication is required** in [Set notification emails](https://support.pynhq.com/settings/notifications/). ## What you should see The item leaves Needs Attention and shows **Active** again in Installed or Senders. An integration's **History** tab logs the next successful refresh; a sender's test arrives in your inbox or Slack. If the item stays in error after reconnecting, open History for the reason: "Insufficient permissions" means the account you signed in with lacks access at the source, and "Could not connect" means the credentials were accepted but the source refused the request. ## Related - [Settings > Integrations](https://support.pynhq.com/settings/integrations/) for the three views. - [Senders](https://support.pynhq.com/settings/senders/) for sender statuses. - [Notices](https://support.pynhq.com/notices/) where re-authentication notices arrive. - [Set notification emails](https://support.pynhq.com/settings/notifications/) to be emailed about them. ## Related Intercom articles - [Manage Integrations or Senders That Need Attention (Pyn 2)](https://intercom.help/pyn/en/articles/12062401-manage-integrations-or-senders-that-need-attention-pyn-2) — replaces --- # HRIS fields Source: https://support.pynhq.com/integrations/hris-fields/ > Reference for which employee properties each HRIS, ATS and file source provides to Pyn, and where each one comes from in the source system. Every source maps its own records onto the same set of employee properties, which is what the Directory, groups and tokens read. This table says which properties each source provides. A tick means the source maps it when the field is populated at the source; the integration's **Advanced** tab (**Fields in Report**) shows what arrived for your workspace. ## Field matrix | Pyn property | BambooHR | HiBob | Rippling | Workday | ADP | Greenhouse | Ashby | Employee File | | --- | --- | --- | --- | --- | --- | --- | --- | --- | | Display name | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | Legal name | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | Preferred name | ✓ | | ✓ | ✓ | ✓ | ✓ | | ✓ | | Work email | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | Personal email | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | Secondary email | | | | ✓ | | | | ✓ | | Avatar | | | ✓ | | | | | ✓ | | Start date | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | Tenure date | | ✓ | ✓ | ✓ | ✓ | | | ✓ | | Termination date | ✓ | ✓ | ✓ | ✓ | ✓ | | | ✓ | | Probation end date | | ✓ | | | | | | | | Active or inactive | ✓ | ✓ | ✓ | ✓ | ✓ | | | ✓ | | Birthday | ✓ | ✓ | ✓ | ✓ | ✓ | | | ✓ | | Job title | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | ✓ | | Department | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | ✓ | | Division | ✓ | | | | | | | ✓ | | Business unit | | | | ✓ | ✓ | | | ✓ | | Team | | | | ✓ | | | | ✓ | | Job class | | | | | ✓ | | | | | Location | ✓ | ✓ | ✓ | | ✓ | ✓ | ✓ | ✓ | | Country, postal code | ✓ | ✓ | ✓ | country | ✓ | | | ✓ | | Time zone | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | Employment type | ✓ | | ✓ | | | | | | | Employee type, worker type, time type | | | ✓ | ✓ | | | | | | Exempt | | | ✓ | ✓ | | | | | | Manager | ✓ | ✓ | ✓ | ✓ | ✓ | hiring manager | hiring manager | ✓ | | HRBP | | ✓ | | | | | | ✓ | | Buddy | | custom field | | | | | | ✓ | | Mentor | | | | | | | | ✓ | | Custom fields | | ✓ | | ✓ | | ✓ | ✓ | | Custom fields are workspace extensions that Pyn support maps to a source field for you: a Bob field id, a Workday report column, a Greenhouse custom-field key or an Ashby custom field. HiBob's contract type and work office arrive this way. ## Where each source reads from | Source | Record | Notes | | --- | --- | --- | | BambooHR | Employee directory or a custom report | Employment status other than Active becomes inactive; original hire date earlier than hire date marks a returning employee. | | HiBob | People search | Start date doubles as tenure date; site is the location, falling back to address city; manager is matched by Bob id or employee id in company. | | Rippling | Workers, with the expansions chosen on the integration | Start date doubles as tenure date; termination falls back to end date. | | Workday | The RaaS report's columns | Column names are matched with case, spaces and underscores ignored. | | ADP | Workers and their primary assignment | Start date is the original hire date and tenure the seniority date; workers without an email are skipped. | | Greenhouse | Hired applications with an accepted offer | Work email is never inferred from another address type; start date is the offer's. | | Ashby | Hired applications and their offer | Custom fields are read from the offer, then the application, then the candidate. | | Employee File | Your spreadsheet | Column headers are the property names; `employeeId` and `primaryEmail` are required. | ## How properties are used - Department, division, business unit, team, location, job title, employment and worker type, contract type and work office can become [demographics](https://support.pynhq.com/directory/demographics/), which create one group per value. - Start date, termination date and the active flag set the lifecycle stage (joiner, current, on leave, terminated) that triggers and audiences use. - Manager, HRBP, buddy and mentor are relations, available as step recipients and tokens. - Time zone decides when a step scheduled in the recipient's time zone is delivered; see [Sync cadence and matching](https://support.pynhq.com/integrations/sync-and-matching/). Fields from an HRIS are read-only in Pyn: a profile shows "This field cannot be modified." Change the value at the source and it updates on the next refresh. Employee File fields can be edited on the profile. ## Related - [Integrations](https://support.pynhq.com/integrations/) for the connect guide of each source. - [Sync cadence and matching](https://support.pynhq.com/integrations/sync-and-matching/) for schedules, matching and time zones. - [Employees](https://support.pynhq.com/directory/employees/) for where the properties show. - [Demographics](https://support.pynhq.com/directory/demographics/) to turn a property into groups. ## Related Intercom articles - [Connect to HiBob (Pyn 2)](https://intercom.help/pyn/en/articles/16838927-connect-to-hibob-pyn-2) — draws on - [Connect to HiBob (Pyn 2)](https://intercom.help/pyn/en/articles/16814957-connect-to-hibob-pyn-2) — draws on - [Connect to Workday (Pyn 2)](https://intercom.help/pyn/en/articles/12005093-connect-to-workday-pyn-2) — draws on --- # Sync cadence and matching Source: https://support.pynhq.com/integrations/sync-and-matching/ > How often each integration refreshes, what a refresh does, how records from different sources are matched to one employee, and how a recipient's time zone is decided. Each integration refreshes on its own schedule, writes a History entry per run, and hands records to the Directory, which matches them to employees by external id or email. This reference lists the schedules and the matching rules, and the order Pyn uses to decide an employee's time zone. ## Refresh schedules | Integration | Refreshes | Also | | --- | --- | --- | | BambooHR | Every 5 minutes while active | Change notifications from BambooHR between refreshes; runs with no changes are logged as skipped | | HiBob | Every 5 minutes while active | Runs with no changes are logged as skipped | | Rippling | Every 5 minutes while active | | | Workday | Every 5 minutes while active | | | ADP Workforce Now | Every 5 minutes while active | | | Greenhouse | Every 5 minutes while active | | | Ashby | Every 15 minutes while active | | | Google Workspace | Every 5 minutes while active | Calendar events; **Refresh Events** on a calendar pulls now | | Microsoft 365 | Every 5 minutes while active | Calendar events; **Refresh Events** pulls now | | Slack | Every 5 minutes while active | Members and channels | | Jira | Every 12 hours while active | Projects, and issue types of projects available to steps | | Microsoft Teams | Daily | Team members and channels | | Email (SendGrid) | Every 5 minutes | Delivery events | | Employee File, Sample Data | On upload or reload only | | Deactivating an integration or [pausing the workspace](https://support.pynhq.com/settings/account/pause-your-workspace/) stops its refreshes. Each run appears under the integration panel's **History** tab with a green, amber or red dot for success, a temporary error or a fatal error; **Last Refresh** and **Last Successful Refresh** on the Details tab show the most recent times. A credential failure moves the integration to **Needs Attention 🚨** and raises a notice. ## How records become employees Every source record carries external keys, in order of precedence: the source's own id (such as `bamboohr:employee:123` or a Slack user id), then the work email. The Directory looks for an existing employee holding any of those keys and updates it; otherwise it creates one. So: - An HRIS record and a Slack member with the same work email become one employee with both sources attached. The employee's profile lists each source, with **Disconnect** to unlink one: "Disconnect this source? The employee will no longer take any of their details from it." - A hire from Greenhouse or Ashby appears as an upcoming employee; when the HRIS record arrives with the same work email it attaches to the same employee rather than creating a second. - The Employee File matches on `employeeId` first, so keep ids stable between uploads; a changed id creates a new person. - Slack and Teams membership alone does not create an employee; someone has to come from an HRIS, a file or an ATS. - One source is the employee's primary; HRIS fields are read-only in Pyn and change only at the source. Managers, HRBPs, buddies and mentors are linked by the source's own ids and resolved after the referenced person has been synced, so a manager who joins later is linked on the next refresh. ## Lifecycle stage The start date, termination date and active flag decide the stage: **Joiner** before the start date, **Current** from the start date, **On leave** when the source says so, and **Terminated** from the termination date. The seeded lifecycle groups (Upcoming, Current Active, Terminated, Inactive) and every trigger read these stages. ## Time zone A step scheduled in the recipient's time zone needs one. Pyn decides it from the source record in this order: 1. The time zone the source supplies, as an IANA name (`Europe/London`), a common abbreviation or a Windows time zone name. 2. The country plus postal code, for countries that span several zones: the United States, Canada and Australia. 3. The country, when it has a single time zone. 4. Otherwise the workspace **Time Zone** from [Account Settings](https://support.pynhq.com/settings/account/): "Employees without timezone data get messages in this default timezone." An Employee File row for a multi-zone country without a `timeZone` or `postalCode` is rejected with "Could not determine timezone from country ... Add a postal code or choose a time zone." A custom email recipient has its own **Time Zone** field with the same fallback. ## Related - [Integrations](https://support.pynhq.com/integrations/) for each integration's guide. - [HRIS fields](https://support.pynhq.com/integrations/hris-fields/) for which properties each source provides. - [Employees](https://support.pynhq.com/directory/employees/) to see sources and lifecycle on a profile. - [Account Settings](https://support.pynhq.com/settings/account/) for the workspace time zone. ## Related Intercom articles - [How often is data pulled from an HRIS integration?](https://intercom.help/pyn/en/articles/6024088-how-often-is-data-pulled-from-an-hris-integration) — Pyn 1 article - [How does Pyn determine a message recipient's time zone?](https://intercom.help/pyn/en/articles/6024089-how-does-pyn-determine-a-message-recipient-s-time-zone) — Pyn 1 article --- # Account Source: https://support.pynhq.com/account/ > How you get into Pyn, how you move between workspaces, and what Pyn knows about you as a user. Account covers the edges of the app: the sign-in page, the step between signing in and landing in a workspace, the workspace switcher, and the profile menu in the bottom-left corner of every page. Everyone who uses Pyn passes through these screens; nothing here needs an admin role. ![The sign-in page offers Google, Microsoft, a magic link and SSO.](https://support.pynhq.com/media/account/sign-in/account-sign-in-options.png) ## Who uses it - **Everyone with a Pyn login** signs in, signs out and uses the profile menu. - **People in more than one organisation** switch between workspaces. - **The person setting Pyn up** creates the first workspace and lands on [Home](https://support.pynhq.com/home/). Employees who only receive messages from Pyn never sign in. They open links in Slack, Teams or email and land on public pages that need no account. ## Concepts - **Identity**: the account you sign in with. Pyn accepts Google, Microsoft, a magic link sent to your email, and your company's single sign-on. The email address is what ties them together: signing in with Google and later with a magic link for the same address reaches the same workspaces. - **Workspace**: one organisation's Pyn. Your identity is linked to one or more workspaces; each link carries your role in that workspace. - **User**: your record inside a workspace, listed under **Settings**, **Current Users**. It holds your name, email, photo, role and status. - **Role**: **Owner**, **Admin**, **Power User** or **User**. It decides which parts of the app you see. [Roles and permissions](https://support.pynhq.com/getting-started/roles-and-permissions/) has the full matrix. - **Session**: signing in starts a session that ends one day after you signed in, or when you sign out. ## What you can do here - [Sign in with Google or Microsoft](https://support.pynhq.com/account/sign-in/sign-in-with-google-or-microsoft/) - [Sign in with a magic link](https://support.pynhq.com/account/sign-in/sign-in-with-a-magic-link/) - [Sign in with SSO](https://support.pynhq.com/account/sign-in/sign-in-with-sso/) - [Fix a sign-in problem](https://support.pynhq.com/account/sign-in/fix-a-sign-in-problem/) - [Sign out](https://support.pynhq.com/account/sign-in/sign-out/) - [Switch workspace](https://support.pynhq.com/account/workspaces/switch-workspace/) - [Create a workspace](https://support.pynhq.com/account/workspaces/create-a-workspace/) - [Profile](https://support.pynhq.com/account/profile/): where your name and photo come from, and what the profile menu offers ## Where it is in the app The sign-in page is `/sign-in`. After you sign in, Pyn passes through `/signing-in` and lands you on `/home`, on `/switch-workspace` if you belong to more than one workspace, or on `/create-workspace` if you belong to none. The profile menu is the avatar at the bottom of the left navigation. ## Related - [Sign in](https://support.pynhq.com/account/sign-in/) for every way into Pyn and what happens next. - [Workspaces](https://support.pynhq.com/account/workspaces/) to switch between organisations or create a new one. - [Profile](https://support.pynhq.com/account/profile/) for what Pyn shows about you and where it comes from. - [Roles and permissions](https://support.pynhq.com/getting-started/roles-and-permissions/) for what each role can see and do. ## Related Intercom articles - [Sign into Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/16729319-sign-into-pyn-pyn-2) - [Enabling Single Sign On (Pyn 2)](https://intercom.help/pyn/en/articles/16838066-enabling-single-sign-on-pyn-2) - [Create a Workspace (Pyn 2)](https://intercom.help/pyn/en/articles/8066861-create-a-workspace-pyn-2) --- # Profile Source: https://support.pynhq.com/account/profile/ > Where your name, email and photo in Pyn come from, where they appear, and what the profile menu in the corner offers. Your profile in Pyn is the user record the workspace keeps for you: a display name, a preferred name, a primary email, a photo, a role and a status. You see it as the avatar in the bottom-left corner and as your row, marked **(You)**, under **Settings**, **Current Users**. ![The profile menu: the workspace name, then workspace, support and sign-out options.](https://support.pynhq.com/media/account/profile/account-profile-menu.png) ## Where your details come from Pyn fills your profile from the account you sign in with. Google supplies a display name and photo at the first sign-in; Microsoft supplies them once you open its verification email; a magic link supplies only the email address, so the avatar shows the first letter of it. Pyn writes a value only when the field is empty, so a later sign-in with a different provider adds what is missing and leaves what is set. Admins see the same fields in your row under **Current Users**: **User** (name and avatar), **Email address**, **Last Seen**, **Role** and **Status**. Selecting the row opens a panel with the full property list; the fields are read-only there. ## The profile menu Select your avatar (labelled **Open profile**) to open the menu. The heading is the name of the workspace you are in. The items are: | Item | What it does | | --- | --- | | **Create new Workspace** | Opens the form described in [Create a workspace](https://support.pynhq.com/account/workspaces/create-a-workspace/). | | **Switch Workspace** | Lists the workspaces your email is linked to. See [Switch workspace](https://support.pynhq.com/account/workspaces/switch-workspace/). | | **Contact Support** | Opens the Pyn support messenger in the corner of the page. | | **Contact Sales** | Opens a request-a-demo form for upgrades and paid features. | | **Exit Playground Mode** | Appears only in a playground workspace; returns you to sign-in and your own workspaces. | | **Sign Out** | Ends your session. See [Sign out](https://support.pynhq.com/account/sign-in/sign-out/). | ## Your role and status Your role (**Owner**, **Admin**, **Power User** or **User**) is set by the admin who invited you, or by a group mapping when your company signs in through SSO, and it decides which navigation items you see. Your status is **Pending** from the invitation until your first sign-in, then **Active**. An admin can archive your user, which removes your access to that workspace. [Roles and permissions](https://support.pynhq.com/getting-started/roles-and-permissions/) has the detail. ## Related - [Sign out](https://support.pynhq.com/account/sign-in/sign-out/) for ending your session from the menu or by address. - [Switch workspace](https://support.pynhq.com/account/workspaces/switch-workspace/) for moving between organisations. - [Roles and permissions](https://support.pynhq.com/getting-started/roles-and-permissions/) for what your role lets you do. - [General](https://support.pynhq.com/settings/general/) for the Current Users list admins manage. --- # Sign in Source: https://support.pynhq.com/account/sign-in/ > The four ways to sign in to Pyn, what happens after you do, and how long a session lasts. The sign-in page at `/sign-in` offers four buttons. Each one proves you own an email address; Pyn then opens the workspaces that address is linked to. There is no password to set or remember. ![The sign-in page offers Google, Microsoft, a magic link and SSO.](https://support.pynhq.com/media/account/sign-in/account-sign-in-options.png) ## The four options | Button | Who it is for | What happens | | --- | --- | --- | | **Continue with Google** | Anyone whose work email is a Google Workspace account | Google asks you to choose an account, then returns you to Pyn. | | **Continue with Microsoft** | Anyone whose work email is a Microsoft 365 or Entra account | Microsoft asks you to sign in, then returns you to Pyn. | | **Continue with Magic Link** | Anyone, including addresses that are neither Google nor Microsoft | Pyn emails you a link. Opening it signs you in. | | **Continue with SSO** | Companies whose IT team has connected Okta or another OpenID Connect provider | You enter your work email and Pyn sends you to your company's identity provider. | Which option you use does not change what you can do once you are in. Pyn matches you by email address, so if you were invited as `jon@example.com`, any option that proves you own `jon@example.com` reaches the same workspace with the same role. ## What happens after you sign in Pyn shows **Signing In** for a moment while it looks up your workspaces, then: - **One workspace**: you land on [Home](https://support.pynhq.com/home/). - **More than one**: you land on **Switch Workspace** and pick one. See [Switch workspace](https://support.pynhq.com/account/workspaces/switch-workspace/). - **None**: you land on **Create a Workspace for your team**. See [Create a workspace](https://support.pynhq.com/account/workspaces/create-a-workspace/). If someone invited you, the workspace is already linked to your email, so you land on Home and your status in **Settings**, **Current Users** changes from **Pending** to **Active**. ## How long you stay signed in A session ends one day after you signed in, whether or not you kept using Pyn. After that the next page you open sends you back to the sign-in page. You can end a session earlier from the profile menu; see [Sign out](https://support.pynhq.com/account/sign-in/sign-out/). ## Pyn 1 (Classic) The sign-in page ends with a line for people who still use the earlier product: "If you are a user of the Pyn "Outbox" product, you can log in at: Pyn Outbox." That link goes to `app.pynhq.com/outbox`, which is Pyn 1 (Classic), not the product described on this site. ## Related - [Sign in with Google or Microsoft](https://support.pynhq.com/account/sign-in/sign-in-with-google-or-microsoft/) for the two one-click options. - [Sign in with a magic link](https://support.pynhq.com/account/sign-in/sign-in-with-a-magic-link/) when your email is not a Google or Microsoft account. - [Sign in with SSO](https://support.pynhq.com/account/sign-in/sign-in-with-sso/) when your company has connected its identity provider. - [Fix a sign-in problem](https://support.pynhq.com/account/sign-in/fix-a-sign-in-problem/) for every message the sign-in page can show. - [SSO](https://support.pynhq.com/integrations/sso/) for how an admin connects Okta or an OpenID Connect provider. ## Related Intercom articles - [Sign into Pyn using Google or Microsoft (Pyn 1)](https://intercom.help/pyn/en/articles/6002155-sign-into-pyn-using-google-or-microsoft-pyn-1) — Pyn 1 article, kept for reference - [Sign into Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/16729319-sign-into-pyn-pyn-2) - [Enabling Single Sign On (Pyn 2)](https://intercom.help/pyn/en/articles/16838066-enabling-single-sign-on-pyn-2) --- # Fix a sign-in problem Source: https://support.pynhq.com/account/sign-in/fix-a-sign-in-problem/ > What each message on the Pyn sign-in page means and what to do about it, from an expired magic link to a workspace you cannot see. You tried to sign in and Pyn showed a message instead of your workspace, or it showed a workspace you did not expect. Find the message below and follow the fix. ## Messages on the sign-in page | You see | What it means | What to do | | --- | --- | --- | | **See you again soon** and "You have successfully signed out." | You signed out, or your session ended one day after it started. | Sign in again with any option. | | "The magic link has expired or already been used. Try signing in again." | Magic links last 30 minutes and work once. | Select **Continue with Magic Link** and request a new one. | | An error line asking you to try signing in again | Something failed on the way back from Google, Microsoft or the magic link. | Select the same option again. If it repeats, try a different option for the same email address. | | **Email not found** under the SSO email field | No workspace has connected single sign-on for that email domain. | Check the address, or use Google, Microsoft or a magic link instead. See [Sign in with SSO](https://support.pynhq.com/account/sign-in/sign-in-with-sso/). | | **Something went wrong, please try again** under the SSO email field | The lookup failed on the network. | Select **Continue** again. | ## Pages after sign-in that are not your workspace | You see | What it means | What to do | | --- | --- | --- | | **Create a Workspace for your team** | No workspace is linked to the email address you signed in with. | If you were invited, the invitation went to a different address: sign out and sign in with that one, or ask the admin to invite this one. If you are setting Pyn up, carry on: see [Create a workspace](https://support.pynhq.com/account/workspaces/create-a-workspace/). | | **Switch Workspace** with a list | Your address is linked to more than one workspace. | Select the one you want. See [Switch workspace](https://support.pynhq.com/account/workspaces/switch-workspace/). | | **Sorry!** with **Early Access Only** | Your email address or domain is not on the list Pyn allows to create workspaces. | If you were invited to an existing workspace, use the invited address. Otherwise contact `sales@pynhq.com`, as the page says. | ## Inside a workspace, but not what you expected - **You see Home, Journey, Library and Activity but not Flows, Directory or Settings.** Your role is **User**. **Power User** adds Flows; **Admin** and **Owner** add Directory, Addons and Settings. Ask an admin to change your role: see [Roles and permissions](https://support.pynhq.com/getting-started/roles-and-permissions/). - **A yellow bar runs down the left edge of the navigation.** You are in a sandbox workspace, not your live one. Open the profile menu and select **Switch Workspace**. - **A banner says You're in Playground Mode.** This workspace holds sample data for exploring Pyn. Select **Exit** on the banner, or **Exit Playground Mode** in the profile menu, to return to your own workspaces. ## Related - [Sign in](https://support.pynhq.com/account/sign-in/) for every option and what happens after sign-in. - [Sign in with a magic link](https://support.pynhq.com/account/sign-in/sign-in-with-a-magic-link/) when a link has expired. - [Sign in with SSO](https://support.pynhq.com/account/sign-in/sign-in-with-sso/) when your company uses an identity provider. - [Invite your team](https://support.pynhq.com/getting-started/invite-your-team/) for how an admin links an address to the workspace. ## Related Intercom articles - [Sign into Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/16729319-sign-into-pyn-pyn-2) — draws on --- # Sign in with a magic link Source: https://support.pynhq.com/account/sign-in/sign-in-with-a-magic-link/ > Have Pyn email you a one-time link that signs you in, with no password and no Google or Microsoft account. You want to sign in with an email address that is not a Google or Microsoft account, or you prefer not to connect those accounts to Pyn. Pyn sends a link to your inbox; opening it proves you own the address and signs you in. ## Before you start - You can read email at the address you were invited with. - You have about half an hour: a magic link stops working 30 minutes after it is sent, and it works once. ## Steps 1. Open `https://app.pyn.ai/sign-in` and select **Continue with Magic Link**. 2. On **Enter your email address**, type your work email in **Email** and select **Send**. **Restart** takes you back to the four sign-in buttons. ![After Continue with Magic Link, the page asks for the email address to send the link to.](https://support.pynhq.com/media/account/sign-in/account-sign-in-magic-link.png) 3. Read **Email sent!** and open your inbox. The message comes from Pyn and contains one link. 4. Open the link. Pyn shows **Sign In with Magic Link** with the line "Click the button below to use your magic link and sign-in." 5. Select **Sign In**. > **Tip:** The link opens the sign-in page with the token in the address, so it works in any browser on any device. Open it on the device you want to use Pyn on. ## What you should see The **Signing In** screen, then [Home](https://support.pynhq.com/home/) for one workspace, **Switch Workspace** for several, or **Create a Workspace for your team** for none. Because a magic link carries no photo or display name, your avatar shows the first letter of your email until a Google or Microsoft sign-in for the same address supplies one. ## Troubleshooting - **No email arrives.** Check spam, and check that you typed the address you were invited with. The page shows **Email sent!** whether or not Pyn knows the address, so a silent inbox usually means a typo, a filter or an address nobody invited. - **"The magic link has expired or already been used. Try signing in again."** The link was older than 30 minutes or had been opened before. Select **Continue with Magic Link** again and request a new one. - **The page lands on Create a Workspace for your team.** The address has no workspace linked to it. Ask the admin to invite that address, or use the address they invited. ## Related - [Sign in](https://support.pynhq.com/account/sign-in/) for the other options and what happens after sign-in. - [Sign in with Google or Microsoft](https://support.pynhq.com/account/sign-in/sign-in-with-google-or-microsoft/) for a one-click sign-in that also brings your photo. - [Fix a sign-in problem](https://support.pynhq.com/account/sign-in/fix-a-sign-in-problem/) for each message the sign-in page can show. ## Related Intercom articles - [Sign into Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/16729319-sign-into-pyn-pyn-2) — draws on --- # Sign in with Google or Microsoft Source: https://support.pynhq.com/account/sign-in/sign-in-with-google-or-microsoft/ > Use your Google Workspace or Microsoft 365 account to sign in to Pyn without a password. You have a Google Workspace or Microsoft 365 work account and want the quickest way into Pyn. One click sends you to your provider, which confirms who you are and returns you to your workspace. ## Before you start - You were invited to a workspace at the same email address as your Google or Microsoft account, or you are about to create the first workspace for your company. - Your browser allows pop-ups and redirects from `accounts.google.com` or `login.microsoftonline.com`. ![The sign-in page offers Google, Microsoft, a magic link and SSO.](https://support.pynhq.com/media/account/sign-in/account-sign-in-options.png) ## Steps 1. Open `https://app.pyn.ai/sign-in` in your browser. The page is headed **Start your Journey**. 2. Select **Continue with Google** or **Continue with Microsoft**. 3. Choose the work account that matches the email address you were invited with, and approve the sign-in if your provider asks. 4. Wait on the **Signing In** screen while Pyn finds your workspaces. > **Note:** Signing in with Microsoft the first time also sends a verification email to the same address, because Microsoft does not confirm the address on Pyn's behalf. Opening that link connects your Microsoft account to the magic-link identity for the address; Google sign-in needs no such step. ## What you should see With one workspace you land on [Home](https://support.pynhq.com/home/), greeted by name. With several you see **Switch Workspace**; with none you see **Create a Workspace for your team**. Your avatar in the bottom-left corner shows the photo from your Google or Microsoft account. ## Troubleshooting - **Your provider refuses the sign-in.** Some organisations restrict which apps may use Microsoft or Google credentials. Ask your IT administrator to allow Pyn (`app.pyn.ai`); when an administrator signs in with Microsoft they are prompted to grant access for the whole organisation. - **You land on Create a Workspace for your team but someone did invite you.** The invitation went to a different address. Sign out and use [a magic link](https://support.pynhq.com/account/sign-in/sign-in-with-a-magic-link/) to the invited address, or ask the admin to invite the address you use with Google or Microsoft. ## Related - [Sign in](https://support.pynhq.com/account/sign-in/) for the other options and what happens after sign-in. - [Sign in with a magic link](https://support.pynhq.com/account/sign-in/sign-in-with-a-magic-link/) when your address is not a Google or Microsoft account. - [Fix a sign-in problem](https://support.pynhq.com/account/sign-in/fix-a-sign-in-problem/) for each message the sign-in page can show. ## Related Intercom articles - [Sign into Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/16729319-sign-into-pyn-pyn-2) — replaces - [Sign into Pyn using Google or Microsoft (Pyn 1)](https://intercom.help/pyn/en/articles/6002155-sign-into-pyn-using-google-or-microsoft-pyn-1) — Pyn 1 article, kept for reference --- # Sign in with SSO Source: https://support.pynhq.com/account/sign-in/sign-in-with-sso/ > Sign in through your company's Okta or OpenID Connect provider by entering your work email on the Pyn sign-in page. Your company has connected its identity provider to Pyn, and you want to sign in the same way you sign in to everything else at work. You give Pyn your email address; Pyn looks up the provider that owns that domain and hands you to it. ## Before you start - An admin has installed the **Single Sign-On** integration for your workspace. [SSO](https://support.pynhq.com/integrations/sso/) explains how. - You know your work email address. Pyn uses its domain, such as `example.com`, to find the right provider. ## Steps 1. Open `https://app.pyn.ai/sign-in` and select **Continue with SSO**. 2. On **Enter your email address**, read "Enter your work email address and you will be taken to your organisation's single sign-on provider." Type your address in **Email**. ![After Continue with SSO, Pyn asks for the work email it uses to find your identity provider.](https://support.pynhq.com/media/account/sign-in/account-sign-in-sso.png) 3. Select **Continue**. The field locks while Pyn looks the domain up. 4. Sign in at your identity provider when it opens. It returns you to Pyn. > **Note:** Your role in the workspace can come from your identity provider. When the admin has mapped provider groups to Pyn roles, Pyn gives you the highest role of any group you are in each time you sign in. See [Roles and permissions](https://support.pynhq.com/getting-started/roles-and-permissions/). ## What you should see The **Signing In** screen, then [Home](https://support.pynhq.com/home/) or **Switch Workspace** if you belong to more than one workspace. ## Troubleshooting - **"Email not found"** appears under the field. No workspace has claimed that email domain for single sign-on, or the address is malformed. Check the spelling, or sign in with [Google or Microsoft](https://support.pynhq.com/account/sign-in/sign-in-with-google-or-microsoft/) or [a magic link](https://support.pynhq.com/account/sign-in/sign-in-with-a-magic-link/) and ask your admin whether SSO is connected. - **"Something went wrong, please try again"** appears. The lookup failed on the network. Select **Continue** again; **Restart** returns you to the four buttons. - **Your provider signs you in but Pyn shows no workspace.** Pyn does not create users on first sign-in through SSO. An admin still has to invite your address, or you need to be in a provider group that is mapped to a role. ## Related - [Sign in](https://support.pynhq.com/account/sign-in/) for the other options and what happens after sign-in. - [SSO](https://support.pynhq.com/integrations/sso/) for how an admin connects Okta or an OpenID Connect provider and maps groups to roles. - [Roles and permissions](https://support.pynhq.com/getting-started/roles-and-permissions/) for what each mapped role can do. ## Related Intercom articles - [Enabling Single Sign On (Pyn 2)](https://intercom.help/pyn/en/articles/16838066-enabling-single-sign-on-pyn-2) — draws on - [Sign into Pyn (Pyn 2)](https://intercom.help/pyn/en/articles/16729319-sign-into-pyn-pyn-2) — draws on --- # Sign out Source: https://support.pynhq.com/account/sign-in/sign-out/ > End your Pyn session from the profile menu, or by opening the sign-out address directly. You are leaving a shared computer, or you want to sign in as a different person. Signing out ends your session on Pyn's servers and in the browser; the next visit starts at the sign-in page. ![The profile menu: the workspace name, then workspace, support and sign-out options.](https://support.pynhq.com/media/account/profile/account-profile-menu.png) ## Steps 1. In Pyn, select your avatar at the bottom of the left navigation. The button is labelled **Open profile** for screen readers. 2. In the menu, select **Sign Out**, the last item. 3. Wait on **Signing Out...** while Pyn clears the session. ## What you should see The sign-in page, headed **See you again soon** with the line "You have successfully signed out." Opening `https://app.pyn.ai/sign-out` directly does the same thing from any page, which is useful as a bookmark or in a company off-boarding checklist. ## Related - [Profile](https://support.pynhq.com/account/profile/) for the other items in the profile menu. - [Sign in](https://support.pynhq.com/account/sign-in/) for how sessions start and how long they last. --- # Workspaces Source: https://support.pynhq.com/account/workspaces/ > A workspace is one organisation's Pyn. Belong to several, switch between them, and create a new one when you set Pyn up. A workspace holds everything for one organisation: its employees, flows, library, integrations, users and settings. Your email address can be linked to more than one workspace, each with its own role, and you work in one at a time. ![Switch Workspace lists every workspace your email address is linked to, with Create a new Workspace first.](https://support.pynhq.com/media/account/workspaces/account-workspaces-switch.png) ## Concepts - **Workspace name**: what you typed when you created it. It appears at the top of the profile menu and in the **Switch Workspace** list. The **Company Name** in [Account Settings](https://support.pynhq.com/settings/account/) is separate; it feeds the `company.name` token in messages and defaults to the workspace name. - **Plan**: every workspace is on a plan that decides what it can do. See [Plans and what each unlocks](https://support.pynhq.com/getting-started/plans/). - **Sandbox**: a workspace marked as a sandbox shows a yellow bar down the left edge of the navigation, so you can tell it from your live workspace at a glance. - **Playground**: a workspace filled with sample data for exploring Pyn. It shows the banner **You're in Playground Mode** with an **Exit** button, and it is hidden from the **Switch Workspace** list. - **Paused**: an admin, or Pyn, can pause a workspace from Account Settings. Nothing sends, no flow runs and no integration syncs until it is resumed. ## What you can do here - [Switch workspace](https://support.pynhq.com/account/workspaces/switch-workspace/) when your address is linked to more than one. - [Create a workspace](https://support.pynhq.com/account/workspaces/create-a-workspace/) for a new organisation, or your first one. Pyn does not merge two workspaces. If your company has ended up with more than one, pick the one to keep and invite the people from the other; the Intercom guidance to use a single designated workspace per company still holds. ## Where it is in the app `/switch-workspace` lists your workspaces and offers **Create a new Workspace**; `/create-workspace` is the form. Both are also in the profile menu at the bottom of the left navigation, as **Switch Workspace** and **Create new Workspace**. ## Related - [Switch workspace](https://support.pynhq.com/account/workspaces/switch-workspace/) to move between organisations. - [Create a workspace](https://support.pynhq.com/account/workspaces/create-a-workspace/) for the questions Pyn asks and what it sets up. - [Plans and what each unlocks](https://support.pynhq.com/getting-started/plans/) for what the free plan allows. - [Account Settings](https://support.pynhq.com/settings/account/) for the company name, time zone, logo and pausing. ## Related Intercom articles - [Create a Workspace (Pyn 2)](https://intercom.help/pyn/en/articles/8066861-create-a-workspace-pyn-2) --- # Create a workspace Source: https://support.pynhq.com/account/workspaces/create-a-workspace/ > Answer four questions about your company, pick up to three priorities, and land in a new Pyn workspace with a setup checklist. You are the first person at your company to use Pyn, or you need a separate workspace for another organisation. The form takes a minute; what you answer decides which setup cards appear on Home. ## Before you start - You are signed in. If your address has no workspace yet, Pyn opens this form by itself after sign-in. - Your email address or domain is one Pyn allows to create workspaces. If it is not, you see **Sorry!** with **Early Access Only**; contact `sales@pynhq.com`. - You know which HRIS and which messaging platform your company uses. You can change both later by installing integrations, but the answers here seed your checklist. ![Create a Workspace for your team asks for the name, HRIS, company size and messaging platform.](https://support.pynhq.com/media/account/workspaces/account-workspaces-create.png) ## Steps 1. Open the profile menu and select **Create new Workspace**, or open `https://app.pyn.ai/create-workspace`. 2. In **Workspace Name**, type your company or team name. It becomes the workspace name and the default **Company Name** for the `company.name` token. 3. In **HRIS**, choose your people system: ADP, BambooHR, Dayforce, Gusto, HiBob, Namely, Paylocity, Rippling, SAP SuccessFactors, UKG Pro, Workday, Zenefits, **None** or **Other / Not Sure**. 4. In **Company Size**, choose the band: 1-99, 100-199, 200-500, 501-1000, 1001-2000, 2001-5000 or 5000+. 5. In **Messaging Platform**, choose **Email**, **Slack** or **Microsoft Teams**. 6. Select **Next →** and wait on **Creating your Workspace...**. 7. On **Select your priorities**, pick up to three of **Manager Enablement**, **Improve Onboarding**, **Leverage AI for HR**, **Employee Experience**, **Company comms**, **Employee Journey Map**, **Improve Engagement**, **Growth & Performance** and **Other**, then select **Continue →**. Picking a fourth drops the oldest. **Skip This** goes straight to Home. > **Note:** The HRIS and messaging answers seed Home and Settings. BambooHR or Workday adds an **Integrate with ...** card and an inactive integration ready to connect; HiBob or Rippling adds the inactive integration under **Settings**, **Installed** without a card; any other HRIS answer installs **Employee File** so you can upload a spreadsheet, with an **Upload Employee File** card. Slack adds a **Connect to Slack** card. Every new workspace gets **Invite team members** and **Activate your first flow**. ## What you should see [Home](https://support.pynhq.com/home/), greeting you by name under **Welcome, let's get started!** with the checklist cards described above. The new workspace is on the free plan, which includes one automation; see [Plans and what each unlocks](https://support.pynhq.com/getting-started/plans/). You are its first user, with the **Owner** role. ## Related - [Set up your workspace in 30 minutes](https://support.pynhq.com/getting-started/tutorial-set-up-your-workspace/) to carry on from here to your first live flow. - [Home](https://support.pynhq.com/home/) for how the checklist cards work and tick themselves off. - [Workspaces](https://support.pynhq.com/account/workspaces/) for switching between the workspaces you belong to. - [Plans and what each unlocks](https://support.pynhq.com/getting-started/plans/) for what the free plan allows. ## Related Intercom articles - [Create a Workspace (Pyn 2)](https://intercom.help/pyn/en/articles/8066861-create-a-workspace-pyn-2) — replaces --- # Switch workspace Source: https://support.pynhq.com/account/workspaces/switch-workspace/ > Move between the Pyn workspaces your email address is linked to, from the profile menu or the Switch Workspace page. You belong to more than one organisation in Pyn, for example a live workspace and a sandbox, or two companies you consult for. Switching changes which workspace every page shows without signing you out. ## Before you start - Your email address is linked to at least two workspaces. If an admin of the other workspace has not invited you yet, it will not appear in the list. ![Switch Workspace lists every workspace your email address is linked to, with Create a new Workspace first.](https://support.pynhq.com/media/account/workspaces/account-workspaces-switch.png) ## Steps 1. In Pyn, select your avatar at the bottom of the left navigation. The menu opens with the current workspace's name as its heading. 2. Select **Switch Workspace**. 3. On the **Switch Workspace** page, select the workspace you want from the list. The first entry, **Create a new Workspace**, starts a new one instead. > **Note:** Playground workspaces are hidden from the list. Leave a playground with **Exit** on its banner or **Exit Playground Mode** in the profile menu, which takes you back through sign-in to your real workspaces. ## What you should see [Home](https://support.pynhq.com/home/) for the workspace you chose, with its name at the top of the profile menu. Pyn clears everything it had loaded from the previous workspace, so tables and counts reload. Your role can differ between workspaces; the navigation shows only what your role in this one allows. ## Related - [Workspaces](https://support.pynhq.com/account/workspaces/) for what a workspace is and how sandbox and playground workspaces are marked. - [Profile](https://support.pynhq.com/account/profile/) for the other items in the profile menu. - [Fix a sign-in problem](https://support.pynhq.com/account/sign-in/fix-a-sign-in-problem/) if a workspace you expect is missing. --- # Concepts Source: https://support.pynhq.com/concepts/ > How Pyn fits together, from a workspace and its employees to journeys, flows, steps, deliveries, versions and views, and how the workspace and its data are secured. The how-to pages each cover one task. These pages step back: what the objects in Pyn are, how one leads to the next, and what the platform does to keep a workspace's data safe. Read them once; the [Glossary](https://support.pynhq.com/glossary/) is the quick reference afterwards. - [How Pyn fits together](https://support.pynhq.com/concepts/how-pyn-fits-together/): Workspace, employees and their sources, the journey, flows, steps and deliveries, versions and views. - [Data and security](https://support.pynhq.com/concepts/data-and-security/): Sign-in and SSO, sessions, roles, exports, audit streaming and what employees see. ## Related - [How Pyn fits together](https://support.pynhq.com/concepts/how-pyn-fits-together/) for the objects and how they connect. - [Data and security](https://support.pynhq.com/concepts/data-and-security/) for the protections around them. - [Glossary](https://support.pynhq.com/glossary/) for one-line definitions. ## Related Intercom articles - [Enabling Single Sign On (Pyn 2)](https://intercom.help/pyn/en/articles/16838066-enabling-single-sign-on-pyn-2) --- # Data and security Source: https://support.pynhq.com/concepts/data-and-security/ > How a Pyn workspace and its data are protected: sign-in options and SSO, 24-hour sessions and cross-site request protection, roles, owner-only exports, audit log streaming, integration scopes, and what employees are shown. A workspace holds your employee records and the messages you send them. The controls below are what Pyn enforces today; each links to the page where you configure it or see it in action. ## Signing in A user signs in with Google, Microsoft, a magic link sent to their email, BambooHR, or single sign-on. Pyn never creates a user from a sign-in alone: the address must have been invited to the workspace, or SSO group mapping must cover it. Archiving a user ends their access at once, including any session they had open. See [Sign in](https://support.pynhq.com/account/sign-in/) and [Users](https://support.pynhq.com/settings/users/). **Single sign-on** connects Okta or any OpenID Connect provider. Provider groups map to Pyn roles, and on every sign-in the person receives the highest role of any group they are in, so leaving a group in the provider removes the role in Pyn. See [SSO](https://support.pynhq.com/integrations/sso/). ## Sessions and requests - A session lasts 24 hours from sign-in, whether or not the person keeps using Pyn or switches workspaces; then they sign in again. - Pyn refuses browser requests that try to change data when the request is identified as coming from another website, so a page elsewhere cannot act with your signed-in session. - Magic links, auth links, reader links and respond links are single-purpose tokens: an auth link lasts three days and is used once; a reader or respond link identifies one delivery and does nothing else. ## Roles Owner, Admin, Power User and User nest, and the server checks the role on every action, not only the navigation. Stopping an enrollment, changing settings, inviting users and reading the Directory need Admin; only an Owner can make or change an Owner. See [Roles and permissions](https://support.pynhq.com/getting-started/roles-and-permissions/). ## Exports and downloads A CSV export of enrollments, flows, actions or deliveries is generated for the person who asked for it, and only they can download it; older exports without a recorded owner have to be requested again. Downloads arrive as notices and expire. See [Download an export](https://support.pynhq.com/notices/download-an-export/). ## Integrations and scopes Each integration asks for the least it needs and says so on its page: the Slack bot can message people and post where it is invited but cannot read channels or join them; HRIS connections read employee fields with a service credential you control; email sends through your own Google Workspace or Microsoft 365 mailbox or a domain you authenticate with DNS. A credential that stops working moves the integration to **Needs Attention** and raises a notice rather than failing quietly. See [Integrations](https://support.pynhq.com/integrations/) and [Needs Attention](https://support.pynhq.com/integrations/needs-attention/). ## Audit streaming Workspaces that need an external audit trail can connect Splunk Cloud: an Admin provides an HTTP Event Collector endpoint, index, source and source type, and Pyn streams its audit log there. Ask Pyn support to enable the integration for your workspace. ## Pausing An Admin can pause the workspace, which stops every send, flow and refresh until it is resumed. Pyn can also pause a workspace. See [Pause your workspace](https://support.pynhq.com/settings/account/pause-your-workspace/). ## What employees see An employee needs no Pyn account. They receive messages in their inbox, Slack or Teams from the sender you chose, and the only pages they open are the reader and respond pages, which carry a code for one delivery and no sign-in. Pyn records that a message was delivered, that a link was opened and that a tracked button or form was used; it does not record email opens. Form answers are stored against the employee for your team to read. See [Privacy and your data](https://support.pynhq.com/for-employees/privacy-and-your-data/) for the version written for them. ## Pyn staff A user whose email ends in `@pynhq.com` or `@pyn.ai` appears in **Current Users** with a **Support** chip. Pyn staff can also view a workspace with an internal tool; while they do, the app shows a striped warning along the navigation. ## Related - [SSO](https://support.pynhq.com/integrations/sso/) for Okta and OpenID Connect set-up and group-to-role mapping. - [Roles and permissions](https://support.pynhq.com/getting-started/roles-and-permissions/) for every action and the role it needs. - [Privacy and your data](https://support.pynhq.com/for-employees/privacy-and-your-data/) for what employees are told. - [Slack](https://support.pynhq.com/integrations/slack/) for the exact bot scopes. ## Related Intercom articles - [Enabling Single Sign On (Pyn 2)](https://intercom.help/pyn/en/articles/16838066-enabling-single-sign-on-pyn-2) — draws on --- # How Pyn fits together Source: https://support.pynhq.com/concepts/how-pyn-fits-together/ > The objects in a Pyn workspace and how one leads to the next: employees from their sources, the journey map, flows and triggers, steps, enrollments and deliveries, published versions, and the views you work in. A workspace holds everything your company does in Pyn. Inside it, employee records arrive from your systems, the journey map says which moments matter, flows decide who hears what and when, and every message that goes out is recorded as a delivery. Each object below is explained in the order Pyn uses it. ## 1. Workspace One organisation, one workspace: its employees, flows, integrations, users and settings. People sign in to a workspace with a role (Owner, Admin, Power User or User) that decides what they see and may change. A person can belong to several workspaces and switch between them. See [Workspaces](https://support.pynhq.com/account/workspaces/) and [Roles and permissions](https://support.pynhq.com/getting-started/roles-and-permissions/). ## 2. Employees and their sources Employees are records in the [Directory](https://support.pynhq.com/directory/). They come from sources: an HRIS such as BambooHR or HiBob, an applicant tracking system, a Google Workspace or Microsoft 365 directory, Slack or Teams membership, a spreadsheet (the Employee File) or sample data. Each source refreshes on a schedule and its records are matched to one employee by source id or email, so a person who exists in HiBob and Slack is one employee with two sources. An employee carries properties (name, emails, start date, department, location, time zone), relations (manager, buddy, mentor, HRBP) and a lifecycle stage derived from dates: Joiner, Current, On leave or Terminated. Groups collect employees by a demographic value, a lifecycle stage, a saved filter, a hand-picked list or a relation. See [Sync cadence and matching](https://support.pynhq.com/integrations/sync-and-matching/) and [Employee Groups](https://support.pynhq.com/directory/employee-groups/). ## 3. Journey The [Journey](https://support.pynhq.com/journey/) map is the plan: columns of categories (Onboarding, Leave and Life Events) holding moments (First day, Return from parental leave). A moment records how well you cover it today and links the flows and content that serve it. Nothing sends from the map itself; it is where you decide what to build and read what each moment achieved. ## 4. Flows A flow is what sends. There are two kinds: - An **automation** has a trigger (a date on the record, a group change, a form submission, a schedule, a relation being set), an audience (lifecycle stages plus included minus excluded groups) and steps. When the trigger fires for someone in the audience, Pyn enrols them. See [Automations](https://support.pynhq.com/flows/automations/). - A **campaign template** has milestones and steps and no trigger; you enrol people into it on a chosen date, and it appears on the Campaigns calendar. See [Campaign Templates](https://support.pynhq.com/flows/campaign-templates/). Flows draw on the [Library](https://support.pynhq.com/library/) for reusable content and media, and on [Forms](https://support.pynhq.com/flows/forms/) and [Polls](https://support.pynhq.com/flows/polls/) for questions. ## 5. Steps and deliveries A step is one thing a flow does: send an email or direct message, post to a channel, invite to a calendar event, add to a channel, raise a ticket, ask for an acknowledgement or link to content. It has a recipient (the employee, their manager, buddy, HRBP, a group, a channel or an address), a sender, a schedule relative to the reference date, and optionally its own audience, reminders and escalations. See [Steps and messages](https://support.pynhq.com/flows/steps/). When someone is enrolled, Pyn creates an **enrollment** for them with one enrollment step per step, each scheduled against the enrollment's reference date. When a step sends, it creates one **delivery** per recipient, which moves through Scheduled, Sending, Delivered, Clicked and Actioned, or Bounced and Invalid. Reminders and escalations are further deliveries hanging off the first. [Activity](https://support.pynhq.com/activity/) is where enrollments, steps and deliveries are read and acted on. ## 6. Versions Publishing an automation takes a snapshot, a version, of its trigger, audience and steps. Enrollments run on the version they started on, so editing an automation never changes what someone mid-journey receives until you publish and choose **Update Enrollments** to move them. Library content has versions in the same way, so a step points at the content and a published version is what sends. See [Publish an automation](https://support.pynhq.com/flows/automations/publish-an-automation/) and [Content states](https://support.pynhq.com/library/content/reference-content-states/). ## 7. Views Most areas show their objects in views: a table, gallery, calendar or board with filters, a sort and columns, saved under a name. The views that ship with an area (Automations, Whole Journey, All Enrollments) can be filtered and re-saved as your own; some, in Activity, are fixed. Universal search in the top bar finds employees, groups, flows and content across them. See [Views, filters, search and export](https://support.pynhq.com/getting-started/views-filters-search-and-export/). ## Putting it together 1. HiBob refreshes and a new record arrives with a start date two weeks away: a Joiner. 2. The start-date trigger on the **Welcome** automation fires for them; they are in its audience; an enrollment is created on the current version. 3. Its steps are scheduled against the start date: a personal email a week before, a Slack direct message on day one, a manager nudge at day 30. 4. Each sends on its day, creating deliveries; the handbook acknowledgement is reminded twice and escalated to the manager if still unactioned. 5. Activity shows the enrollment's progress; the Journey map's First day moment counts the deliveries; the Dashboard rolls them up. ## Related - [Automations](https://support.pynhq.com/flows/automations/) for triggers, audiences and modes in depth. - [Enrollments](https://support.pynhq.com/activity/enrollments/) for what Pyn creates per person. - [Directory](https://support.pynhq.com/directory/) for employees, sources and groups. - [Journey](https://support.pynhq.com/journey/) for the map that ties flows to moments. --- # FAQ Source: https://support.pynhq.com/faq/ > Direct answers to the questions Pyn support hears most, from a message that did not send or a channel missing from a list to time zones, HRIS refreshes, Slack permissions and where to report a bug. Each question below has a short answer first and the detail under it, with a link to the page that covers the task. Questions are grouped: messages and flows, employees and integrations, access, then getting help. ## Why didn't my message send? Open [Messages](https://support.pynhq.com/activity/messages/) in Activity, find the step and read its status; the status names the cause. The usual ones are below, most common first. - **Scheduled**, in the future: the step's day has not come. A step scheduled before a start date only reaches people whose record arrived early enough; see [Schedule a step](https://support.pynhq.com/flows/steps/schedule-a-step/). - **Paused**: the enrollment is waiting in **Needs Review** because the automation is in **Verification** mode, or someone paused the step. [Review and unpause enrollments](https://support.pynhq.com/activity/enrollments/review-and-unpause-enrollments/). - The person was never enrolled: they are outside the trigger's audience or lifecycle stage, the automation is in **Manual** or **Inactive** mode, or the re-enrolment rule blocked a second run. [Set the audience](https://support.pynhq.com/flows/automations/set-the-audience/), [Change the mode](https://support.pynhq.com/flows/automations/change-the-mode/). - The step was skipped: its audience excluded the person, or **Skip if overdue at enrollment** was on and the step's day had passed. [Set a step audience](https://support.pynhq.com/flows/steps/set-a-step-audience/), [Handle late enrollments](https://support.pynhq.com/flows/automations/handle-late-enrollments/). - **Bounced** or **Invalid**: the email address rejected the message, or the person has no address or chat identity for the channel. [Resend a bounced message](https://support.pynhq.com/activity/messages/resend-a-bounced-message/), [Fix missing details](https://support.pynhq.com/directory/employees/fix-missing-details/). - **Error**: the sender is archived, needs reconnecting or lost its channel. Check [Needs Attention](https://support.pynhq.com/integrations/needs-attention/) and [Sender types and states](https://support.pynhq.com/settings/senders/sender-types-and-states/). - A weekday rule moved it: the step delivers only on chosen days and the computed day was skipped, so it moved to the previous or next delivery day. [Schedule a step](https://support.pynhq.com/flows/steps/schedule-a-step/). ## Why was someone enrolled twice? Because the trigger fired for them again and the automation's **Prevent repeat enrollments** setting allowed it. Each trigger has a minimum gap before the same employee can enrol again; date and property triggers wait at least a day, and you can set a longer gap or **Never re-enroll**. A manual enrolment is never blocked by the rule. [Prevent repeat enrollments](https://support.pynhq.com/flows/automations/prevent-repeat-enrollments/) has the defaults per trigger. ## Why is the Slack channel missing from the list? Because the Pyn Bot is not in it, or the channel is newer than the last refresh. A step's **To** list offers public channels and the private channels the bot has been invited to; invite the bot from Slack and wait a few minutes for the refresh, which runs every 5 minutes while the integration is active. The list reads **No results** when the chosen sender has no channels at all. [Slack](https://support.pynhq.com/integrations/slack/) covers channels and the custom bot. ## How often is data pulled from an HRIS? Every 5 minutes while the integration is active, for BambooHR, HiBob, Rippling, Workday, ADP, Greenhouse and Google Workspace; every 15 minutes for Ashby; daily for Microsoft Teams members. BambooHR also sends change notifications between refreshes. The integration panel's **History** tab shows each run. [Sync cadence and matching](https://support.pynhq.com/integrations/sync-and-matching/) has the full table. ## How does Pyn decide a recipient's time zone? From the time zone your HRIS or Employee File supplies when it has one; otherwise from their country and postal code (the United States, Canada and Australia); otherwise from their country alone when it has a single time zone; otherwise the workspace's time zone. A step scheduled in **Recipient Time Zone** uses it. [Sync cadence and matching](https://support.pynhq.com/integrations/sync-and-matching/) explains the resolution. ## Does someone still get the messages if they were added to the HRIS late? Yes, by default. When a person is enrolled after a step's day has passed, Pyn sends the overdue steps within the hour, including the manager's and buddy's. Turn on **Skip if overdue at enrollment** on a step to leave it out instead, or use **Verification** mode to decide per person. [Handle late enrollments](https://support.pynhq.com/flows/automations/handle-late-enrollments/). ## If I add a step to a published automation, do people already enrolled get it? Only if you update them. An enrollment runs on the version it was created on. When you publish, the **Update Enrollments** dialog lists the active enrollments on the previous version; tick the ones to move to the new version, and the new step is scheduled for them. Leave the dialog and they finish on the old version. [Publish an automation](https://support.pynhq.com/flows/automations/publish-an-automation/). ## Can a message have more than one reply-to address, or a distribution list as the sender? One sender per step. Any mailbox you can verify can be a sender, including a shared address such as `people@yourcompany.com`, and replies go to it. To vary the sender by audience, use a conditional sender rather than several addresses. [Senders](https://support.pynhq.com/settings/senders/), [Create a conditional sender](https://support.pynhq.com/flows/steps/create-a-conditional-sender/). ## What access does Pyn use for Slack? Direct messages, posting to channels it has been invited to, reading the member list to match emails, and sending on a person's behalf only when that person connects their own account. The bot scopes are `app_mentions:read`, `channels:read`, `channels:write.invites`, `chat:write`, `groups:read`, `groups:write.invites`, `im:history`, `im:read`, `im:write`, `team:read`, `users:read` and `users:read.email`. The bot cannot read channel messages or join channels on its own. [Slack](https://support.pynhq.com/integrations/slack/). ## What access does Pyn use for Microsoft Teams? The Pyn app is installed in your tenant by your Teams administrator, with Pyn's team, and sends direct messages and channel posts as that app or as a colleague who connects their own account; Pyn reads team members and channels daily to match people. Teams is in early access, so the request starts from the **Available** view. [Microsoft Teams](https://support.pynhq.com/integrations/ms-teams/). ## Why is employee data from BambooHR not appearing? Because the BambooHR user Pyn connects with cannot see the fields. Connect with a non-employee user, so access does not end when an employee leaves, and give its access level the company fields Pyn reads. The error **Insufficient permissions to view this list** means a custom access level lost permissions: in BambooHR, open **Access Levels**, the custom level, **Access Level Settings**, and grant **Company Field Settings**. [BambooHR](https://support.pynhq.com/integrations/bamboohr/). ## Why is an employee not in a group or audience? A group matches on the employee's record as it is now, so a missing or stale field leaves them out. Open the person in [Employees](https://support.pynhq.com/directory/employees/) and check the fields, then the group's rules under [Employee Groups](https://support.pynhq.com/directory/employee-groups/). Included groups with different parents must all match, so **Department: Engineering** with **Country: Australia** and **Country: USA** means Engineering and either country, and an excluded group always wins over an included one. See [How audiences match](https://support.pynhq.com/directory/employee-groups/how-audiences-match/). ## How do I change who a message comes from? Pick a different sender on the step, under **Send from**. Senders are added under **Settings**, **Senders**: a colleague's Google Workspace or Microsoft 365 mailbox, a verified email address, a Slack or Teams account, or a custom Slack bot. [Choose a sender](https://support.pynhq.com/flows/steps/choose-a-sender/), [Senders](https://support.pynhq.com/settings/senders/). ## Why can't I see Flows, Directory or Settings? Your role hides them. **Flows** needs Power User or above; **Directory**, **Addons** and **Settings** need Admin or Owner. Ask an Admin to change your role under **Settings**, **Current Users**. [Roles and permissions](https://support.pynhq.com/getting-started/roles-and-permissions/). ## Why was I signed out? Sessions last 24 hours from sign-in, whether or not you keep using Pyn or switch workspaces. Sign in again. If your workspace uses single sign-on, you return through your identity provider. [Sign in](https://support.pynhq.com/account/sign-in/). ## I found a bug. What should I do? Email support@pynhq.com with what you did, what you expected and what happened, plus a screenshot or the page's address. Steps to reproduce it get it fixed fastest. ## How do I request a feature? Email support@pynhq.com with the problem you are trying to solve and how you would like Pyn to help. Requests feed the roadmap; the [Changelog](https://support.pynhq.com/changelog/) shows what has shipped. ## Related - [Messages](https://support.pynhq.com/activity/messages/) to read any message's status and what was sent. - [Automations](https://support.pynhq.com/flows/automations/) for triggers, audiences, modes and versions. - [Sync cadence and matching](https://support.pynhq.com/integrations/sync-and-matching/) for refresh schedules and time zones. - [Roles and permissions](https://support.pynhq.com/getting-started/roles-and-permissions/) for who sees what. ## Related Intercom articles - [How often is data pulled from an HRIS integration?](https://intercom.help/pyn/en/articles/6024088-how-often-is-data-pulled-from-an-hris-integration) — replaces - [How does Pyn determine a message recipient's time zone?](https://intercom.help/pyn/en/articles/6024089-how-does-pyn-determine-a-message-recipient-s-time-zone) — replaces - [Does an employee still receive an automated Pyn if they're added to the HRIS after the messages were scheduled to go out?](https://intercom.help/pyn/en/articles/6024091-does-an-employee-still-receive-an-automated-pyn-if-they-re-added-to-the-hris-after-the-messages-were-scheduled-to-go-out) — replaces - [If I turn on or add a Pyn in an enabled Automation, will employees already enrolled in the Automation receive that Pyn?](https://intercom.help/pyn/en/articles/6024094-if-i-turn-on-or-add-a-pyn-in-an-enabled-automation-will-employees-already-enrolled-in-the-automation-receive-that-pyn) — replaces - [Can you add more than one "Reply-To" Sender email address? Can you add a distribution list as a Sender?](https://intercom.help/pyn/en/articles/6024087-can-you-add-more-than-one-reply-to-sender-email-address-can-you-add-a-distribution-list-as-a-sender) — replaces - [What read/write access does Pyn use for the Slack integration?](https://intercom.help/pyn/en/articles/6024093-what-read-write-access-does-pyn-use-for-the-slack-integration) — replaces - [What read/write access does Pyn use for the Teams integration?](https://intercom.help/pyn/en/articles/9621234-what-read-write-access-does-pyn-use-for-the-teams-integration) — replaces - [I found a bug! What should I do?](https://intercom.help/pyn/en/articles/6024098-i-found-a-bug-what-should-i-do) — replaces - [How do I request features?](https://intercom.help/pyn/en/articles/6024097-how-do-i-request-features) — replaces - [BambooHR Error "Insufficient Permissions"](https://intercom.help/pyn/en/articles/10100088-bamboohr-error-insufficient-permissions) — replaces - [Why is employee data from BambooHR not appearing in Pyn?](https://intercom.help/pyn/en/articles/6024101-why-is-employee-data-from-bamboohr-not-appearing-in-pyn) — replaces --- # Glossary Source: https://support.pynhq.com/glossary/ > Every term Pyn uses, defined in a line each and linked to the page that explains it, from Account Settings and Audience to Workspace and Version. Pyn uses one name for each thing, in the app and on this site. The definitions below are the short form; each links to the page with the detail. Terms marked *(Pyn 1)* belong to the previous product and are listed so you can recognise them; they are not used in Pyn 2. ## A **Account Settings** : The Settings view with the workspace's company name, time zone, logo and the pause control. See [Account](https://support.pynhq.com/settings/account/). **Action** : Something a message asks the recipient to do: a tracked button or an embedded form. The [Actions](https://support.pynhq.com/activity/actions/) view lists every ask and whether it was done. **Actioned** : The delivery status once the recipient used a tracked button or submitted a form. See [Delivery statuses](https://support.pynhq.com/flows/steps/reference-delivery-statuses/). **Add-on** : An optional capability in the [Addons](https://support.pynhq.com/addons/) gallery, shown as Installed, Upgrade Available or Enterprise Tier. **Admin** : The role below Owner: everything except managing Owners. See [Roles and permissions](https://support.pynhq.com/getting-started/roles-and-permissions/). **Agent** : In the Pyn AI preview, a skill with an owner and a run log. See [Agents](https://support.pynhq.com/ai/agents/). **Audience** : Who an automation or step applies to: lifecycle stages plus included groups minus excluded groups. Included groups with the same parent match any one of them, groups with different parents must all match, and an exclusion always wins. See [How audiences match](https://support.pynhq.com/directory/employee-groups/how-audiences-match/). **Auth link** : A public link, valid for three days, that lets a colleague connect their Slack or Google account as a sender without signing in to Pyn. See [Create an auth link](https://support.pynhq.com/settings/senders/create-an-auth-link/). **Automation** : A trigger, an audience and a published sequence of steps that enrols employees and sends to them relative to a reference date. See [Automations](https://support.pynhq.com/flows/automations/). ## B **Bounced** : The delivery status for an email the receiving server rejected. See [Resend a bounced message](https://support.pynhq.com/activity/messages/resend-a-bounced-message/). **Buddy** : A relationship on the employee record, alongside manager, mentor and HRBP; a step can be addressed to the Buddy and the Buddy Assigned trigger fires when it is set. See [Buddy programme](https://support.pynhq.com/flows/automations/tutorial-buddy-programme/). ## C **Campaign** : A campaign template enrolled for chosen people on a chosen reference date, shown on the Campaigns calendar. See [Campaign Templates](https://support.pynhq.com/flows/campaign-templates/). **Campaign template** : A reusable blueprint of milestones and steps that you enrol on demand rather than by trigger. See [Campaign Templates](https://support.pynhq.com/flows/campaign-templates/). **Category** : A column on the Journey map that groups moments, such as Onboarding. See [Journey](https://support.pynhq.com/journey/). **Cc recipients** : Extra email recipients on a step: the manager or a custom email recipient. See [Choose recipients and Cc](https://support.pynhq.com/flows/steps/choose-recipients-and-cc/). **Clicked** : The delivery status once the recipient opened any link in the message. See [Delivery statuses](https://support.pynhq.com/flows/steps/reference-delivery-statuses/). **Cohort template** : A blueprint for running a flow against a cohort of employees, listed under Flows. See [Cohort Templates](https://support.pynhq.com/flows/cohort-templates/). **Conditional section** *(Pyn 1)* : Text inside one message shown only to some groups. Pyn 2 uses a step audience instead; see [Set a step audience](https://support.pynhq.com/flows/steps/set-a-step-audience/). **Conditional sender** : Ordered rules that choose a sender by the recipient's groups, with a fallback. See [Create a conditional sender](https://support.pynhq.com/flows/steps/create-a-conditional-sender/). **Content** : A reusable message document in the Library with draft and published versions. See [Content](https://support.pynhq.com/library/content/). **Current State** : A moment property: Unknown, We have this, Needs improvement or Do not have this yet. See [Moment properties](https://support.pynhq.com/journey/reference-moment-properties/). **Custom domain** : A sending domain you authenticate with DNS records so email comes from your own address. See [Set up a custom domain](https://support.pynhq.com/integrations/email/set-up-a-custom-domain/). **Custom email recipient** : A named address usable as a recipient, Cc or escalation target. See [Custom Email Recipients](https://support.pynhq.com/settings/custom-email-recipients/). **Custom token** : A `custom.` placeholder filled from a mail-merge spreadsheet column at manual enrolment. See [Enroll from a spreadsheet](https://support.pynhq.com/flows/automations/enroll-from-a-spreadsheet/). ## D **Dashboard** : The Activity view with Delivered, Click Rate and Action Rate over a date range. See [Read the Dashboard](https://support.pynhq.com/activity/read-the-dashboard/). **Delivery** : One concrete send to one recipient: an email, a Slack or Teams message, a channel post, a calendar invitation, a channel invitation or a ticket. See [Delivery statuses](https://support.pynhq.com/flows/steps/reference-delivery-statuses/). **Delivery status** : Draft, Scheduled, Sending, Delivered, Clicked, Actioned, Bounced, Invalid or Paused. Skipped is a step status, not a delivery status. See [Delivery statuses](https://support.pynhq.com/flows/steps/reference-delivery-statuses/). **Demographic** : An employee property such as Department or Location, with one group per value. See [Demographics](https://support.pynhq.com/directory/demographics/). **Directory** : The area listing employees, groups and demographics. See [Directory](https://support.pynhq.com/directory/). **Download** : A generated export file, available to the person who requested it from a notice. See [Download an export](https://support.pynhq.com/notices/download-an-export/). ## E **Employee** : A directory record synced from an HRIS, a spreadsheet or sample data, with a lifecycle stage, properties and relations. See [Employees](https://support.pynhq.com/directory/employees/). **Employee Context** : In the Pyn AI preview, the signals and suggested actions gathered for one person. See [Context](https://support.pynhq.com/ai/context/). **Employee File** : The spreadsheet-based employee source. See [Employee File](https://support.pynhq.com/integrations/employee-file/). **Employee group** : A saved set of employees used as an audience: Demographic, Lifecycle, Filter, Static or Relationship. See [Employee Groups](https://support.pynhq.com/directory/employee-groups/). **Enrollment** : One employee's run through one automation version or campaign: paused, pending or complete. See [Enrollments](https://support.pynhq.com/activity/enrollments/). **Enrollment step** : One step instance inside an enrollment: draft, scheduled, sending, complete or error. See [Enrollment statuses](https://support.pynhq.com/activity/enrollments/reference-enrollment-statuses/). **Escalation** : A generated notice to someone else, a set number of days after a delivery that is still not actioned; up to three per step. See [Add escalations](https://support.pynhq.com/flows/steps/add-escalations/). **External ID** : An identifier from a source system, such as a BambooHR employee id, used to match records and in webhooks. See [Sync cadence and matching](https://support.pynhq.com/integrations/sync-and-matching/). ## F **Filter group** : A saved audience definition built from lifecycle stages and demographic groups. See [Create a filter group](https://support.pynhq.com/directory/employee-groups/create-a-filter-group/). **Fixed view** : A view defined in code rather than saved by a user, as in Activity. See [Views, filters, search and export](https://support.pynhq.com/getting-started/views-filters-search-and-export/). **Flow** : The umbrella for automations, campaign templates and cohort templates, and the name of the area. See [Flows](https://support.pynhq.com/flows/). **Form** : Structured questions an employee answers from a message: text, checkbox, Likert, content, buddy or mentor fields. See [Forms](https://support.pynhq.com/flows/forms/). **Form Submission trigger** : A trigger that fires when a form is submitted. See [Trigger a flow from a submission](https://support.pynhq.com/flows/forms/trigger-a-flow-from-a-submission/). ## H **Home** : The landing page with the getting-started checklist, Needs Attention and shortcuts. See [Home](https://support.pynhq.com/home/). **HRBP** : The HR business partner relation on an employee record; a recipient, token and escalation target. See [Reference: employee properties](https://support.pynhq.com/directory/employees/reference-employee-properties/). **HRIS** : Your HR system, connected as an integration. See [Integrations](https://support.pynhq.com/integrations/). ## I **Inbound webhook** : An endpoint that submits a form for an employee from another system. See [Webhook API](https://support.pynhq.com/flows/forms/reference-webhook-api/). **Integration** : A connected external system, active, in error or inactive. See [Integrations](https://support.pynhq.com/integrations/). **Invalid** : The delivery status when the recipient has no usable address or identity for the channel. See [Fix missing details](https://support.pynhq.com/directory/employees/fix-missing-details/). ## J **Journey** : The board of categories and moments describing the employee experience, with flows and content attached. See [Journey](https://support.pynhq.com/journey/). ## L **Library** : Content and Media: reusable messages and uploaded files. See [Library](https://support.pynhq.com/library/). **Lifecycle stage** : Joiner, Current, On leave or Terminated, derived from dates on the record. See [Sync cadence and matching](https://support.pynhq.com/integrations/sync-and-matching/). ## M **Magic link** : A sign-in link sent by email. See [Sign in with a magic link](https://support.pynhq.com/account/sign-in/sign-in-with-a-magic-link/). **Mail merge spreadsheet** : An upload with an email column, a per-row reference date and custom columns for manual enrolment. See [Enroll from a spreadsheet](https://support.pynhq.com/flows/automations/enroll-from-a-spreadsheet/). **Manual enrollment** : Enrolling chosen employees by search, paste or upload, bypassing the trigger and audience. See [Manually enroll employees](https://support.pynhq.com/flows/automations/manually-enroll-employees/). **MCP server** : An admin-defined endpoint exposing chosen Pyn operations to an AI client, limited by a minimum role. See [MCP Servers](https://support.pynhq.com/settings/mcp-servers/). **Media** : An uploaded image or file in the Library, scanned before use. See [Media](https://support.pynhq.com/library/media/). **Medium** : The channel of a step: email, Slack, Teams or SMS. See [Steps and messages](https://support.pynhq.com/flows/steps/). **Milestone** : A dated group of steps inside a campaign template, with an emoji and colour. See [Campaign Templates](https://support.pynhq.com/flows/campaign-templates/). **Mode** : An automation's state: Automated, Verification, Manual or Inactive. See [Change the mode](https://support.pynhq.com/flows/automations/change-the-mode/). **Moment** : A card on the Journey map for one experience, such as First day, with properties for planning. See [Add a moment](https://support.pynhq.com/journey/add-a-moment/). ## N **Needs Attention** : The list of integrations and senders in error, on Home and in Settings. See [Needs Attention](https://support.pynhq.com/integrations/needs-attention/). **Needs Review** : The Activity view of paused enrollments waiting to be unpaused. See [Review and unpause enrollments](https://support.pynhq.com/activity/enrollments/review-and-unpause-enrollments/). **Notice** : An in-app alert about a bounce, a reconnection, a webhook failure or a download. See [Notices](https://support.pynhq.com/notices/). ## O **Owner** : The highest role, including making and changing other Owners. See [Roles and permissions](https://support.pynhq.com/getting-started/roles-and-permissions/). ## P **Packet** *(Pyn 1)* : A pre-built set of messages. The Pyn 2 equivalent is a template from the catalogue; see [Create an automation](https://support.pynhq.com/flows/automations/create-an-automation/). **Pause workspace** : Stopping all sending, flows and syncing until resumed. See [Pause your workspace](https://support.pynhq.com/settings/account/pause-your-workspace/). **Personalized Note** *(Pyn 1, add-on)* : A section of a message written by a named contributor. Listed in [Addons](https://support.pynhq.com/addons/). **Plan** : Free, Playground, Team or Enterprise (and Classic for migrated workspaces). See [Plans and what each unlocks](https://support.pynhq.com/getting-started/plans/). **Playground** : A workspace filled with sample data for exploring Pyn. See [Workspaces](https://support.pynhq.com/account/workspaces/). **Poll** : One or two quick questions answered inside a message. See [Polls](https://support.pynhq.com/flows/polls/). **Power User** : The role that builds and runs flows without Directory or Settings access. See [Roles and permissions](https://support.pynhq.com/getting-started/roles-and-permissions/). **Prevent repeat enrollments** : The minimum gap before the same employee can be enrolled by the same trigger again. See [Prevent repeat enrollments](https://support.pynhq.com/flows/automations/prevent-repeat-enrollments/). **Principal** : The employee an enrollment is about, whoever the step is sent to. See [Tokens](https://support.pynhq.com/flows/steps/reference-tokens/). **Pyn 1** *(Classic)* : The previous product. Workspaces migrated from it are on the Classic plan; see [Plans and what each unlocks](https://support.pynhq.com/getting-started/plans/). **Pyn AI** : The preview area with Context, Agents, Skills and Runs. See [AI](https://support.pynhq.com/ai/). ## R **Raw HTML** : An email body sent as written, with Liquid tokens and no Pyn styling. See [Format a message](https://support.pynhq.com/flows/steps/format-a-message/). **Reader page** : The public page that shows library content from a button in a message. See [The reader and respond pages](https://support.pynhq.com/for-employees/public-pages/). **Recipient** : Who a step is delivered to: Employee, Manager, Skip-level Manager, Buddy, HRBP, a group, a channel, a custom email recipient or a specific person. See [Choose recipients and Cc](https://support.pynhq.com/flows/steps/choose-recipients-and-cc/). **Recurrence** : For a date trigger, how often it repeats: once, every year, every year after the first, or every few years. See [Configure a date trigger](https://support.pynhq.com/flows/automations/configure-a-date-trigger/). **Reference date** : The date an enrollment's steps are scheduled from: a start date, an anniversary, a chosen date or a spreadsheet column. See [Scheduling internals](https://support.pynhq.com/flows/automations/scheduling-internals/). **Reference date adjustment** : Shifting the anchor date before scheduling, for example to the day after the start date. See [Scheduling internals](https://support.pynhq.com/flows/automations/scheduling-internals/). **Relation** : A manager, buddy, mentor or HRBP link between two employees. See [Reference: employee properties](https://support.pynhq.com/directory/employees/reference-employee-properties/). **Relationship group** : A group of employees with or without a given relation, such as no buddy. See [Create a relationship group](https://support.pynhq.com/directory/employee-groups/create-a-relationship-group/). **Reminder** : The same message sent again a set number of days after delivery while it is still not actioned. See [Add reminders](https://support.pynhq.com/flows/steps/add-reminders/). **Respond page** : The public page where a form or poll from an email is answered. See [The reader and respond pages](https://support.pynhq.com/for-employees/public-pages/). **Role** : Owner, Admin, Power User or User; controls navigation and actions. See [Roles and permissions](https://support.pynhq.com/getting-started/roles-and-permissions/). **Run** : In the Pyn AI preview, one execution of a skill with a result. See [Agents](https://support.pynhq.com/ai/agents/). ## S **Schedule** : When a step sends: an offset from the reference date or a fixed date, a time, a time zone, delivery days and the skipped-day rule. See [Schedule a step](https://support.pynhq.com/flows/steps/schedule-a-step/). **Sender** : The identity a message comes from: the Pyn Bot, a colleague's Slack, Teams, Google Workspace or Microsoft 365 account, a verified email address or a custom Slack bot. See [Senders](https://support.pynhq.com/settings/senders/). **Skill** : In the Pyn AI preview, a named job with a prompt, an owner and a journey moment. See [Skill catalogue](https://support.pynhq.com/ai/agents/reference-skill-catalogue/). **Skip if overdue at enrollment** : A step option that leaves out a step whose day has passed instead of sending it at once. See [Handle late enrollments](https://support.pynhq.com/flows/automations/handle-late-enrollments/). **SSO** : Signing in through Okta or an OpenID Connect provider, with groups mapped to roles. See [SSO](https://support.pynhq.com/integrations/sso/). **Static group** : A group with hand-picked members. See [Create a static group](https://support.pynhq.com/directory/employee-groups/create-a-static-group/). **Step** : One unit of a flow: a message, channel post, calendar invitation, channel invitation, ticket, acknowledgement or content link, with its own recipient, sender and schedule. See [Steps and messages](https://support.pynhq.com/flows/steps/). **Submission** : A completed form response, recorded against an employee. See [Review and export submissions](https://support.pynhq.com/flows/forms/review-and-export-submissions/). ## T **Test enrollment** : An enrollment flagged as a test and left out of counts. See [Manually enroll employees](https://support.pynhq.com/flows/automations/manually-enroll-employees/). **Theme** : Email branding: logo, button and link colours, font. See [Theme your emails](https://support.pynhq.com/settings/account/theme-your-emails/). **Token** : A placeholder such as `@principal.preferredName` replaced at send time. See [Tokens](https://support.pynhq.com/flows/steps/reference-tokens/). **Trigger** : What starts an automation: a date, a group change, a schedule, a property change, a relation, a form submission, or nothing. See [Trigger catalogue](https://support.pynhq.com/flows/automations/trigger-catalogue/). **Trigger window** : Whether a date trigger fires only on the exact day or anywhere within a window. See [Scheduling internals](https://support.pynhq.com/flows/automations/scheduling-internals/). ## U **Unfurling** : Slack's link and media previews, which a step can switch off. See [Deactivate link and media unfurling](https://support.pynhq.com/flows/steps/deactivate-unfurling/). **Universal search** : The search in the top bar across employees, groups, flows and content. See [Views, filters, search and export](https://support.pynhq.com/getting-started/views-filters-search-and-export/). **User** : The role that reads the journey, library and activity and acts on enrollments. See [Roles and permissions](https://support.pynhq.com/getting-started/roles-and-permissions/). ## V **Verification mode** : An automation mode that creates every enrollment paused for review in Needs Review. See [Change the mode](https://support.pynhq.com/flows/automations/change-the-mode/). **Version** : A published snapshot of an automation's trigger, audience and steps that enrollments run against. See [Publish an automation](https://support.pynhq.com/flows/automations/publish-an-automation/). **View** : A saved table, gallery, calendar or board inside an area, with its filters and sort. See [Views, filters, search and export](https://support.pynhq.com/getting-started/views-filters-search-and-export/). ## W **Webhook** : The inbound endpoint and secret for submitting forms from another system. See [Webhooks](https://support.pynhq.com/settings/webhooks/). **Workspace** : One organisation's Pyn: its employees, flows, integrations, users and settings. See [Workspaces](https://support.pynhq.com/account/workspaces/). ## Related - [Concepts](https://support.pynhq.com/concepts/) for how the terms fit together. - [Getting started](https://support.pynhq.com/getting-started/) for the first steps in a workspace. --- # Changelog Source: https://support.pynhq.com/changelog/ > New features, improvements and fixes in Pyn, one post a week, newest first. New features, improvements and fixes in Pyn, one post a week. Each post tells the story of the week’s biggest changes, then lists every fix and improvement. ## [Duplicate a step within its flow](https://support.pynhq.com/changelog/week-of-2026-10-19/) Week of 19 October 2026 A step can now be copied within its flow. The copy keeps the step's content, recipients, schedule, reminders and escalations, ready to adjust for the next message in the sequence. ### Okta in one dialog Admins connect Okta through a single dialog, and can replace its credentials and copy the redirect address from the integration panel. The panel also has the sign-in link for an Okta dashboard tile, so employees can open Pyn straight from Okta. [Connect Okta](https://support.pynhq.com/integrations/sso/connect-okta/) ### Previews that match who receives the step You can preview a message for an upcoming joiner as well as a current employee. When a step goes to the employee's manager, buddy or HR business partner, the preview uses that person's details and hides the conditional sections that do not apply to them. [Preview and send a test](https://support.pynhq.com/flows/steps/preview-and-send-a-test/) ### Also new - Start an automation when an employee is connected to Slack. - Set a company name in **Settings** for messages; without one, Pyn uses the workspace name. - Pick HR business partner names and email addresses from the personalisation picker in email and Slack editors. - Refresh a Google Workspace sender's name and email address from its menu, without reconnecting. **Fixes and improvements (18)** - You can configure a flow's trigger directly from its No Trigger tab. - Before archiving an email, Google Workspace or Slack sender, you now see a warning listing the active automation steps that use it. - You can preview a message for an upcoming joiner as well as a current employee. - The preview employee selector now reads “Preview for principal” to distinguish the employee the step is about from its recipient. - Change of Manager automations now enroll the employee whose manager changed. - Change of Location automations now run when an employee's country changes, and their trigger panel opens correctly. - Relationship-based automation triggers now respect their configured filters. - Archived campaign messages now disappear from the calendar and its sidebar list. - Multi-select fields now open when you click their empty space, while selected items remain removable. - Conditional-section fields now use consistent widths and readable placeholder text. - Step previews now load the saved message without being incorrectly blocked, and campaign HTML previews find the correct step. - When a step targets an employee's manager, buddy or HR business partner, previews now use that person's details when the relationship can be resolved. - Personalized previews now hide conditional sections that do not match the selected employee and resolved recipient. - Conditional-section dialogs stay open while you edit them, and updating or removing a section targets the section you opened. - Typing after a personalization placeholder or link in a conditional section no longer jumps to the start of the paragraph. - Link buttons in the editor now expand to fit longer labels, shortening them only when the available space is too narrow. - Discarding unpublished flow changes no longer makes an automated or manual flow appear inactive. - Messages to custom email recipients now fill in name and email personalization from that recipient's details. Release notes: [23 October 2026](https://support.pynhq.com/changelog/2026-10-23/). ## [Escalations, and HR business partners from HiBob](https://support.pynhq.com/changelog/week-of-2026-10-12/) Week of 12 October 2026 ![An escalation notifies someone other than the recipient when the step is still not actioned.](https://support.pynhq.com/media/flows/steps/flows-steps-escalations.png) When someone has not completed an action, Pyn can now tell someone else. On an email or Slack step, under **Reminders**, add up to three escalations. After the number of days you choose, Pyn sends a short notice to someone such as the recipient's manager, saying what is outstanding and since when. [Add escalations](https://support.pynhq.com/flows/steps/add-escalations/) ### HR business partners HiBob now brings in each employee's HR business partner. They show on the employee profile, messages can include their name, preferred name or email address, and they can receive workflow messages and actions. HiBob also brings in buddies, probation end dates and the custom fields you configure. [HiBob](https://support.pynhq.com/integrations/hibob/) ### Also new - Filter the **Actions** view by completion status, and export it to CSV with your current filters and sort order. - Build employee groups from type of contract or work office. - Preview a saved HTML email with the personalisation for a chosen recipient. **Fixes and improvements (16)** - Employee group panels and Google Workspace and Microsoft 365 integration panels now have consistent spacing around their contents. - You can read the full text of shortened audience and selection labels by hovering over them. - Options in selection lists have more space around their highlighted text. - The Slack recipient dropdown now opens and shows “No results” when the sender has no available channels. - Long webhook URLs and secrets now fit within the sidebar while still copying in full, and the Done button stays visible. - Date fields in Firefox now show a single calendar icon. - Calendar navigation arrows now fit neatly inside their buttons. - Download buttons in Notices now fit within their rows. - Download expiry values in Notices now use the same text size as the label beside them. - Escalation notices now correctly label HR business partner recipients. - HTML email templates now fill in supported personalization such as a manager's preferred name instead of showing the placeholder. - ADP worker types can now reflect the primary work assignment once the updated mapping is enabled and employees sync again. - Integration refresh dates now show the recorded refresh and successful refresh times instead of appearing unset. - Selection menus now follow the correct width limits. - The audience editor now correctly prompts you to select lifecycle stages in the lifecycle field. - Date fields now show a calendar icon in browsers that support it. Release notes: [12 October 2026](https://support.pynhq.com/changelog/2026-10-12/) and [16 October 2026](https://support.pynhq.com/changelog/2026-10-16/). ## [See who has acted in the Actions view](https://support.pynhq.com/changelog/week-of-2026-10-05/) Week of 5 October 2026 ![The Actions view, one row per delivery that asked for something.](https://support.pynhq.com/media/activity/actions/activity-actions-table.png) The new **Actions** view in **Activity** lists every message that asked an employee to do something: who was asked, what they were asked to do, and whether they clicked or completed it. Open it to see which acknowledgements, forms and tasks are still outstanding. [Track actions](https://support.pynhq.com/activity/actions/track-actions/) ### Templates when you need them Automation, campaign and content templates now wait in the catalogue until you add them, so your workspace holds only the ones you use. Add one from its list, or straight from a journey moment. [Add a campaign template](https://support.pynhq.com/flows/campaign-templates/add-a-campaign-template/) ### Also new - BambooHR change notifications appear in the integration's **History**, for workspaces with them turned on. - Sign-in sessions expire one day after you sign in, and Pyn blocks requests from other websites that try to use your session. **Fixes and improvements (14)** - HTML emails can now be published with unrecognized placeholders, which appear unchanged in the rendered email. - Pyn now blocks browser requests identified as coming from another website that try to make changes using your signed-in session. - Sign-in sessions now expire one day after signing in, even if you keep using Pyn or switch workspaces. - Integration refresh dates now display the recorded refresh and successful refresh times instead of appearing unset. - Campaign calendar dates remain readable when hovering over days without a filled background. - Editing a form or poll title now enables publishing the change. - Changes to automation and content titles now save reliably. - Scheduling a step in a paused enrollment now moves the enrollment to pending. - Edits to HTML content now save without being incorrectly blocked. - Test messages now send successfully when the saved message contains HTML. - Sessions now expire one day after sign-in, even when you switch workspaces. - If exporting a journey as an image fails, the board returns to its normal layout and displays an error. - Sending a test message now uses the saved step content so HTML messages no longer trigger request filtering that blocks the test. - A failed journey image export now shows an error and restores the board so you can keep working without reloading. Release notes: [6 October 2026](https://support.pynhq.com/changelog/2026-10-06/) and [9 October 2026](https://support.pynhq.com/changelog/2026-10-09/). ## [Outlook email and calendars, and Ashby](https://support.pynhq.com/changelog/week-of-2026-09-28/) Week of 28 September 2026 ![The Microsoft 365 tile under Available; selecting it starts the Microsoft sign-in.](https://support.pynhq.com/media/integrations/microsoft-365/integrations-microsoft-365-tile.png) Pyn now works with Microsoft 365. Connect a work or school account as a sender and workflow emails go out through Outlook. Connect an Outlook calendar and calendar steps invite employees to recurring events, as they do with Google Workspace. Both need Microsoft 365 enabled for your workspace. [Microsoft 365](https://support.pynhq.com/integrations/microsoft-365/) ### Ashby Connect Ashby and hired candidates come into Pyn before their start date, with their job details and hiring manager, so pre-boarding starts before day one. [Ashby](https://support.pynhq.com/integrations/ashby/) ### Also new - An [auth link](https://support.pynhq.com/settings/senders/create-an-auth-link/), valid for three days, lets someone without a Pyn login connect a Slack or Google Workspace sender. - Anniversary automations can [repeat every year](https://support.pynhq.com/flows/automations/configure-a-recurring-trigger/) after the first. - The Flows list shows enrollment counts for the date range you choose. - Deleting a form field shows an **Undo** message for eight seconds. - [Needs Attention](https://support.pynhq.com/integrations/needs-attention/) in Settings gathers the senders, calendars and users that need fixing, and senders show when they need reconnecting. **Fixes and improvements (73)** - BambooHR connection details now focus on your subdomain, primary source setting and latest refresh results. - Sandbox workspaces now show a yellow navigation warning so you can distinguish them from your live workspace. - Delivery verification now shows a date for each message, using its latest delivery date when available or its earliest scheduled date otherwise. - You can see each enrollment’s reference date when choosing which enrollments to update to a newly published automation version. - You can search for audience groups beyond the first 500 groups and still see the names of groups already selected. - Employee lists now show profile pictures and give country and time zone names more room. - Needs Attention now appears first in each settings navigation group. - Automation and campaign steps can recover from an interrupted scheduling update instead of leaving future deliveries unscheduled. - Pyn loads less data when you first open it and makes fewer background requests when you return to a tab. - General settings now bring senders, calendars, users and other shared settings together with one Needs Attention view. - Google Workspace and Slack senders now show when they need to be reconnected. - You can choose how to sort the Flows table for your current session. - You can now reach Add Step in the campaign calendar sidebar using the keyboard. - Employee lists now show profile pictures and give time zone names more room. - Deliver on previous delivery day now moves messages back to an allowed delivery day instead of stopping on a day you have chosen to skip. - Campaign step, enrollment and milestone dates no longer appear a day early in time zones west of UTC. - Today on the campaign calendar now returns to the current month when you are viewing January. - You can now resend emails sent through SendGrid to a custom email address. - A failed attempt to archive a flow now shows an error and releases the Change Mode dialog so you can use or close it. - Relationship group membership now updates reliably when employee records refresh. - A failed notification email no longer stops notifications for subsequent recipients. - A failed sign-in email no longer interrupts the sign-in service for other users. - Connecting Slack now shows an error when the connection fails instead of appearing to do nothing. - Testing a Slack sender connection now reports the actual outcome instead of always saying Sent. - Emergency contact, dependant and qualification forms now show an error when saving fails. - Expense claims and attendance requests now show an error when submission fails. - Punching in or out and cancelling leave now show an error when the action fails. - Email theme settings now restore the saved theme and show an error when changes cannot be saved. - Withdrawing attendance or training requests, waiving benefits and cancelling expense claims now show an error when the action fails. - Updating goal progress, submitting or acknowledging a performance review and completing tasks now show an error when the action fails. - Timesheets now show errors when saving hours, submitting, cancelling, starting a period or adding a line fails. - Workspace logo settings now show an error when a new logo cannot be saved. - Integration card logos now sit centrally instead of appearing cropped or too low. - Reconnecting a Google Workspace or Outlook calendar now preserves the calendar you selected. - Invitations to an event series removed from a Google Workspace or Outlook calendar now report Event Not Found instead of attempting to send. - You can now use the page controls to browse Outlook calendar events. - Scheduled date fields now open a date picker when configuring a workflow step or duplicating a campaign enrollment. - Link editing fields now stack vertically instead of sitting side by side. - Date and property automation settings now show the one-day minimum wait between repeat enrollments and hide shorter options. - Archived journey categories now disappear from the board immediately without a refresh. - Custom scheduling options now open beside the Custom choice instead of floating over the message editor. - Filter group settings now give the included and excluded group fields the full form width. - Recurring automation settings and message step options now have space between their fields and labels. - Date and property automations now wait at least one day before enrolling the same employee again, and their settings show that minimum. - HiBob can now match managers using company employee numbers when its usual manager ID is missing and the required fields are available. - You can now export enrollments and Flows views to CSV without an access-denied error. - Microsoft Teams membership alone no longer keeps an employee marked as currently employed. - Workday reports with a mix of worker IDs and employee IDs no longer drop employees who have only an employee ID. - Rippling and ADP connections now flag credential problems that previously appeared as temporary sync failures. - Notification action buttons no longer stretch across the panel header. - The free automation banner now keeps its message and outlined action button together on one row. - Scheduling menus now line up with their fields and keep custom timing options beside the Custom choice. - Small groups of profile pictures overlap less, making initials easier to read. - The Automations table header now extends across the full row. - Email and Google Workspace senders now show their avatars in Notices and use email-based initials when no display name is set. - Emoji icons now remain readable against strongly coloured backgrounds. - Sender badges in panel titles no longer cover the sender’s initials. - Save as New View now adds an asterisk to the copy’s name so you can distinguish it from the original. - Saving or duplicating a view now opens the new view immediately without reloading the page. - New journey categories and changes to a moment’s owner now appear without a refresh. - Version History now shows a newly published content version straight away. - Creating a Filter or Static employee group no longer leaves the page stuck behind an invisible overlay. - Theme settings no longer get stuck repeatedly loading. - Available integrations no longer include integrations you have already installed. - Connecting a Google Workspace sender or calendar from blue.pyn.ai now returns you to the same site to finish signing in. - Generated exports are now downloadable only by the person who requested them, and older exports without a recorded owner must be requested again. - Reports now check that you have permission to access the requested metrics. - Stopped enrollments no longer create reminders when an in-progress message finishes sending. - Duplicating a stopped campaign no longer prevents reminders in the new enrollment. - Email delivery updates from SendGrid can now reach Pyn. - Employees can now preview only their own leave requests unless they are an administrator. - Archived sign-in identities no longer retain access through an existing session. - Date offset menus now line up with the scheduling field that opens them. Release notes: [28 September 2026](https://support.pynhq.com/changelog/2026-09-28/), [29 September 2026](https://support.pynhq.com/changelog/2026-09-29/), [30 September 2026](https://support.pynhq.com/changelog/2026-09-30/), [2 October 2026](https://support.pynhq.com/changelog/2026-10-02/), [3 October 2026](https://support.pynhq.com/changelog/2026-10-03/) and [4 October 2026](https://support.pynhq.com/changelog/2026-10-04/). ## [Single sign-on and conditional senders](https://support.pynhq.com/changelog/week-of-2026-09-21/) Week of 21 September 2026 ![Create Conditional Sender: a name, a medium, a fallback and ordered rules.](https://support.pynhq.com/media/settings/conditional-senders/settings-conditional-senders-create.png) People can now sign in to Pyn with their work email through your company's single sign-on. On the sign-in page they choose **Continue with SSO**, enter their work email, and Pyn hands them to your identity provider. [Sign in with SSO](https://support.pynhq.com/account/sign-in/sign-in-with-sso/) ### Conditional senders A step no longer has to come from one fixed sender. A conditional sender checks ordered audience rules to pick who each message comes from, with a fallback sender for everyone the rules miss: people in Sales can hear from the head of Sales, and everyone else from the People team. Create one in **Settings**, then choose it as the sender on any step. [Create a conditional sender](https://support.pynhq.com/settings/conditional-senders/create-a-conditional-sender/) ### Also new - Duplicate a campaign step for a new date, and choose whether the copy keeps its recipients. - Put an enrollment's Reference Date into flow emails and Slack messages. - Automation steps warn you when their audience is empty, or when a message scheduled before the start date leaves out upcoming joiners. **Fixes and improvements (39)** - You can now find items by typing part of a word in search, including Find on journey maps and Flows. - You can now access actions directly from rows in the Custom Email Recipients and Calendars tables. - Connected calendars now show the same active-status indicator as senders. - Every field in the Details panel now has an icon to help you identify its type. - You can archive and restore senders from the All senders table, with confirmation before archiving. - Employee search now shows personal email addresses when work addresses are missing and keeps each person’s employment stage visible alongside their name. - Enrollment lists now show the employee and enrollment status so you can distinguish entries at a glance. - Enrollment step lists now show personalized message text when a step has a single available message delivery. - You can change a campaign’s emoji and background colour together from its details panel. - HiBob can now provide more employment details, including original start date, tenure and manager status, when those fields are available. - The sign-in page now downloads less data before you sign in. - The current page number is now clearly highlighted when you browse lists. - Audience groups and automation triggers based on fields with multiple selections now match the chosen option instead of every employee with a value. - Enrollment steps now show whether messages were sent, bounced or skipped rather than appearing complete when no recipient was found. - Audience settings now have consistent spacing between included and excluded employees and the audience preview. - Manual enrollment now aligns option descriptions consistently and shows clear action buttons after enrollment. - The actions menu button in side-panel headers now matches the close button’s size. - Journey cards and categories now keep their updated order when you leave the page and return. - Reporting updates for your workspace no longer stall when another workspace encounters an error. - Scheduled activity in your workspace now continues when another workspace encounters an error. - The expanded message editor now stays at a readable width on wide screens. - Clicking the placeholder in a new campaign email now places the cursor where you can start typing. - Fields in campaign creation and other forms now have consistent spacing. - Date and scheduling dropdowns no longer turn grey when you move the pointer over them. - Automation steps now appear in schedule order rather than the order they were added. - Google Calendar invitations now use the next available occurrence from Google and respect the event’s time zone. - One invalid custom field no longer hides all the other custom fields on an employee profile. - The content editor’s Back button now returns you to the page you opened it from. - You can now reschedule campaign milestones and unsent messages by dropping them anywhere in a day on the month calendar. - The campaign year calendar now fits shorter laptop screens without cutting off the final months when there is enough room. - The campaign list now follows the month or year shown in the calendar. - Date-based flows now use the adjusted reference date when scheduling messages around an anniversary or other shifted date. - Reconnecting Workday with valid credentials now clears the error state and resumes syncing. - Duplicate and Archive actions now appear consistently in campaign menus. - Rapidly rearranging journey cards no longer causes their order to change unexpectedly after you drop them. - Journey cards now recover correctly from failed moves and stay hidden while archiving is in progress. - Editing details in the side panel no longer loses focus or resets your typed text during unrelated updates. - Employee syncing from Classic no longer fails when a custom choice field contains a true-or-false option. - ADP workers without a work or personal email address no longer create new employee profiles until an email becomes available. Release notes: [25 September 2026](https://support.pynhq.com/changelog/2026-09-25/) and [26 September 2026](https://support.pynhq.com/changelog/2026-09-26/). --- # Duplicate a step within its flow Source: https://support.pynhq.com/changelog/week-of-2026-10-19/ > Pyn changelog, week of 19 October 2026. A step can now be copied within its flow. A step can now be copied within its flow. The copy keeps the step's content, recipients, schedule, reminders and escalations, ready to adjust for the next message in the sequence. ## Okta in one dialog Admins connect Okta through a single dialog, and can replace its credentials and copy the redirect address from the integration panel. The panel also has the sign-in link for an Okta dashboard tile, so employees can open Pyn straight from Okta. [Connect Okta](https://support.pynhq.com/integrations/sso/connect-okta/) ## Previews that match who receives the step You can preview a message for an upcoming joiner as well as a current employee. When a step goes to the employee's manager, buddy or HR business partner, the preview uses that person's details and hides the conditional sections that do not apply to them. [Preview and send a test](https://support.pynhq.com/flows/steps/preview-and-send-a-test/) ## Also new - Start an automation when an employee is connected to Slack. - Set a company name in **Settings** for messages; without one, Pyn uses the workspace name. - Pick HR business partner names and email addresses from the personalisation picker in email and Slack editors. - Refresh a Google Workspace sender's name and email address from its menu, without reconnecting. **Fixes and improvements (18)** - You can configure a flow's trigger directly from its No Trigger tab. - Before archiving an email, Google Workspace or Slack sender, you now see a warning listing the active automation steps that use it. - You can preview a message for an upcoming joiner as well as a current employee. - The preview employee selector now reads “Preview for principal” to distinguish the employee the step is about from its recipient. - Change of Manager automations now enroll the employee whose manager changed. - Change of Location automations now run when an employee's country changes, and their trigger panel opens correctly. - Relationship-based automation triggers now respect their configured filters. - Archived campaign messages now disappear from the calendar and its sidebar list. - Multi-select fields now open when you click their empty space, while selected items remain removable. - Conditional-section fields now use consistent widths and readable placeholder text. - Step previews now load the saved message without being incorrectly blocked, and campaign HTML previews find the correct step. - When a step targets an employee's manager, buddy or HR business partner, previews now use that person's details when the relationship can be resolved. - Personalized previews now hide conditional sections that do not match the selected employee and resolved recipient. - Conditional-section dialogs stay open while you edit them, and updating or removing a section targets the section you opened. - Typing after a personalization placeholder or link in a conditional section no longer jumps to the start of the paragraph. - Link buttons in the editor now expand to fit longer labels, shortening them only when the available space is too narrow. - Discarding unpublished flow changes no longer makes an automated or manual flow appear inactive. - Messages to custom email recipients now fill in name and email personalization from that recipient's details. Release notes: [23 October 2026](https://support.pynhq.com/changelog/2026-10-23/). --- # Escalations, and HR business partners from HiBob Source: https://support.pynhq.com/changelog/week-of-2026-10-12/ > Pyn changelog, week of 12 October 2026. When someone has not completed an action, Pyn can now tell someone else. ![An escalation notifies someone other than the recipient when the step is still not actioned.](https://support.pynhq.com/media/flows/steps/flows-steps-escalations.png) When someone has not completed an action, Pyn can now tell someone else. On an email or Slack step, under **Reminders**, add up to three escalations. After the number of days you choose, Pyn sends a short notice to someone such as the recipient's manager, saying what is outstanding and since when. [Add escalations](https://support.pynhq.com/flows/steps/add-escalations/) ## HR business partners HiBob now brings in each employee's HR business partner. They show on the employee profile, messages can include their name, preferred name or email address, and they can receive workflow messages and actions. HiBob also brings in buddies, probation end dates and the custom fields you configure. [HiBob](https://support.pynhq.com/integrations/hibob/) ## Also new - Filter the **Actions** view by completion status, and export it to CSV with your current filters and sort order. - Build employee groups from type of contract or work office. - Preview a saved HTML email with the personalisation for a chosen recipient. **Fixes and improvements (16)** - Employee group panels and Google Workspace and Microsoft 365 integration panels now have consistent spacing around their contents. - You can read the full text of shortened audience and selection labels by hovering over them. - Options in selection lists have more space around their highlighted text. - The Slack recipient dropdown now opens and shows “No results” when the sender has no available channels. - Long webhook URLs and secrets now fit within the sidebar while still copying in full, and the Done button stays visible. - Date fields in Firefox now show a single calendar icon. - Calendar navigation arrows now fit neatly inside their buttons. - Download buttons in Notices now fit within their rows. - Download expiry values in Notices now use the same text size as the label beside them. - Escalation notices now correctly label HR business partner recipients. - HTML email templates now fill in supported personalization such as a manager's preferred name instead of showing the placeholder. - ADP worker types can now reflect the primary work assignment once the updated mapping is enabled and employees sync again. - Integration refresh dates now show the recorded refresh and successful refresh times instead of appearing unset. - Selection menus now follow the correct width limits. - The audience editor now correctly prompts you to select lifecycle stages in the lifecycle field. - Date fields now show a calendar icon in browsers that support it. Release notes: [12 October 2026](https://support.pynhq.com/changelog/2026-10-12/) and [16 October 2026](https://support.pynhq.com/changelog/2026-10-16/). --- # See who has acted in the Actions view Source: https://support.pynhq.com/changelog/week-of-2026-10-05/ > Pyn changelog, week of 5 October 2026. The new Actions view in Activity lists every message that asked an employee to do something: who was asked, what they were asked to do, and whether they clicked or completed it. ![The Actions view, one row per delivery that asked for something.](https://support.pynhq.com/media/activity/actions/activity-actions-table.png) The new **Actions** view in **Activity** lists every message that asked an employee to do something: who was asked, what they were asked to do, and whether they clicked or completed it. Open it to see which acknowledgements, forms and tasks are still outstanding. [Track actions](https://support.pynhq.com/activity/actions/track-actions/) ## Templates when you need them Automation, campaign and content templates now wait in the catalogue until you add them, so your workspace holds only the ones you use. Add one from its list, or straight from a journey moment. [Add a campaign template](https://support.pynhq.com/flows/campaign-templates/add-a-campaign-template/) ## Also new - BambooHR change notifications appear in the integration's **History**, for workspaces with them turned on. - Sign-in sessions expire one day after you sign in, and Pyn blocks requests from other websites that try to use your session. **Fixes and improvements (14)** - HTML emails can now be published with unrecognized placeholders, which appear unchanged in the rendered email. - Pyn now blocks browser requests identified as coming from another website that try to make changes using your signed-in session. - Sign-in sessions now expire one day after signing in, even if you keep using Pyn or switch workspaces. - Integration refresh dates now display the recorded refresh and successful refresh times instead of appearing unset. - Campaign calendar dates remain readable when hovering over days without a filled background. - Editing a form or poll title now enables publishing the change. - Changes to automation and content titles now save reliably. - Scheduling a step in a paused enrollment now moves the enrollment to pending. - Edits to HTML content now save without being incorrectly blocked. - Test messages now send successfully when the saved message contains HTML. - Sessions now expire one day after sign-in, even when you switch workspaces. - If exporting a journey as an image fails, the board returns to its normal layout and displays an error. - Sending a test message now uses the saved step content so HTML messages no longer trigger request filtering that blocks the test. - A failed journey image export now shows an error and restores the board so you can keep working without reloading. Release notes: [6 October 2026](https://support.pynhq.com/changelog/2026-10-06/) and [9 October 2026](https://support.pynhq.com/changelog/2026-10-09/). --- # Outlook email and calendars, and Ashby Source: https://support.pynhq.com/changelog/week-of-2026-09-28/ > Pyn changelog, week of 28 September 2026. Pyn now works with Microsoft 365. ![The Microsoft 365 tile under Available; selecting it starts the Microsoft sign-in.](https://support.pynhq.com/media/integrations/microsoft-365/integrations-microsoft-365-tile.png) Pyn now works with Microsoft 365. Connect a work or school account as a sender and workflow emails go out through Outlook. Connect an Outlook calendar and calendar steps invite employees to recurring events, as they do with Google Workspace. Both need Microsoft 365 enabled for your workspace. [Microsoft 365](https://support.pynhq.com/integrations/microsoft-365/) ## Ashby Connect Ashby and hired candidates come into Pyn before their start date, with their job details and hiring manager, so pre-boarding starts before day one. [Ashby](https://support.pynhq.com/integrations/ashby/) ## Also new - An [auth link](https://support.pynhq.com/settings/senders/create-an-auth-link/), valid for three days, lets someone without a Pyn login connect a Slack or Google Workspace sender. - Anniversary automations can [repeat every year](https://support.pynhq.com/flows/automations/configure-a-recurring-trigger/) after the first. - The Flows list shows enrollment counts for the date range you choose. - Deleting a form field shows an **Undo** message for eight seconds. - [Needs Attention](https://support.pynhq.com/integrations/needs-attention/) in Settings gathers the senders, calendars and users that need fixing, and senders show when they need reconnecting. **Fixes and improvements (73)** - BambooHR connection details now focus on your subdomain, primary source setting and latest refresh results. - Sandbox workspaces now show a yellow navigation warning so you can distinguish them from your live workspace. - Delivery verification now shows a date for each message, using its latest delivery date when available or its earliest scheduled date otherwise. - You can see each enrollment’s reference date when choosing which enrollments to update to a newly published automation version. - You can search for audience groups beyond the first 500 groups and still see the names of groups already selected. - Employee lists now show profile pictures and give country and time zone names more room. - Needs Attention now appears first in each settings navigation group. - Automation and campaign steps can recover from an interrupted scheduling update instead of leaving future deliveries unscheduled. - Pyn loads less data when you first open it and makes fewer background requests when you return to a tab. - General settings now bring senders, calendars, users and other shared settings together with one Needs Attention view. - Google Workspace and Slack senders now show when they need to be reconnected. - You can choose how to sort the Flows table for your current session. - You can now reach Add Step in the campaign calendar sidebar using the keyboard. - Employee lists now show profile pictures and give time zone names more room. - Deliver on previous delivery day now moves messages back to an allowed delivery day instead of stopping on a day you have chosen to skip. - Campaign step, enrollment and milestone dates no longer appear a day early in time zones west of UTC. - Today on the campaign calendar now returns to the current month when you are viewing January. - You can now resend emails sent through SendGrid to a custom email address. - A failed attempt to archive a flow now shows an error and releases the Change Mode dialog so you can use or close it. - Relationship group membership now updates reliably when employee records refresh. - A failed notification email no longer stops notifications for subsequent recipients. - A failed sign-in email no longer interrupts the sign-in service for other users. - Connecting Slack now shows an error when the connection fails instead of appearing to do nothing. - Testing a Slack sender connection now reports the actual outcome instead of always saying Sent. - Emergency contact, dependant and qualification forms now show an error when saving fails. - Expense claims and attendance requests now show an error when submission fails. - Punching in or out and cancelling leave now show an error when the action fails. - Email theme settings now restore the saved theme and show an error when changes cannot be saved. - Withdrawing attendance or training requests, waiving benefits and cancelling expense claims now show an error when the action fails. - Updating goal progress, submitting or acknowledging a performance review and completing tasks now show an error when the action fails. - Timesheets now show errors when saving hours, submitting, cancelling, starting a period or adding a line fails. - Workspace logo settings now show an error when a new logo cannot be saved. - Integration card logos now sit centrally instead of appearing cropped or too low. - Reconnecting a Google Workspace or Outlook calendar now preserves the calendar you selected. - Invitations to an event series removed from a Google Workspace or Outlook calendar now report Event Not Found instead of attempting to send. - You can now use the page controls to browse Outlook calendar events. - Scheduled date fields now open a date picker when configuring a workflow step or duplicating a campaign enrollment. - Link editing fields now stack vertically instead of sitting side by side. - Date and property automation settings now show the one-day minimum wait between repeat enrollments and hide shorter options. - Archived journey categories now disappear from the board immediately without a refresh. - Custom scheduling options now open beside the Custom choice instead of floating over the message editor. - Filter group settings now give the included and excluded group fields the full form width. - Recurring automation settings and message step options now have space between their fields and labels. - Date and property automations now wait at least one day before enrolling the same employee again, and their settings show that minimum. - HiBob can now match managers using company employee numbers when its usual manager ID is missing and the required fields are available. - You can now export enrollments and Flows views to CSV without an access-denied error. - Microsoft Teams membership alone no longer keeps an employee marked as currently employed. - Workday reports with a mix of worker IDs and employee IDs no longer drop employees who have only an employee ID. - Rippling and ADP connections now flag credential problems that previously appeared as temporary sync failures. - Notification action buttons no longer stretch across the panel header. - The free automation banner now keeps its message and outlined action button together on one row. - Scheduling menus now line up with their fields and keep custom timing options beside the Custom choice. - Small groups of profile pictures overlap less, making initials easier to read. - The Automations table header now extends across the full row. - Email and Google Workspace senders now show their avatars in Notices and use email-based initials when no display name is set. - Emoji icons now remain readable against strongly coloured backgrounds. - Sender badges in panel titles no longer cover the sender’s initials. - Save as New View now adds an asterisk to the copy’s name so you can distinguish it from the original. - Saving or duplicating a view now opens the new view immediately without reloading the page. - New journey categories and changes to a moment’s owner now appear without a refresh. - Version History now shows a newly published content version straight away. - Creating a Filter or Static employee group no longer leaves the page stuck behind an invisible overlay. - Theme settings no longer get stuck repeatedly loading. - Available integrations no longer include integrations you have already installed. - Connecting a Google Workspace sender or calendar from blue.pyn.ai now returns you to the same site to finish signing in. - Generated exports are now downloadable only by the person who requested them, and older exports without a recorded owner must be requested again. - Reports now check that you have permission to access the requested metrics. - Stopped enrollments no longer create reminders when an in-progress message finishes sending. - Duplicating a stopped campaign no longer prevents reminders in the new enrollment. - Email delivery updates from SendGrid can now reach Pyn. - Employees can now preview only their own leave requests unless they are an administrator. - Archived sign-in identities no longer retain access through an existing session. - Date offset menus now line up with the scheduling field that opens them. Release notes: [28 September 2026](https://support.pynhq.com/changelog/2026-09-28/), [29 September 2026](https://support.pynhq.com/changelog/2026-09-29/), [30 September 2026](https://support.pynhq.com/changelog/2026-09-30/), [2 October 2026](https://support.pynhq.com/changelog/2026-10-02/), [3 October 2026](https://support.pynhq.com/changelog/2026-10-03/) and [4 October 2026](https://support.pynhq.com/changelog/2026-10-04/). --- # Single sign-on and conditional senders Source: https://support.pynhq.com/changelog/week-of-2026-09-21/ > Pyn changelog, week of 21 September 2026. People can now sign in to Pyn with their work email through your company's single sign-on. ![Create Conditional Sender: a name, a medium, a fallback and ordered rules.](https://support.pynhq.com/media/settings/conditional-senders/settings-conditional-senders-create.png) People can now sign in to Pyn with their work email through your company's single sign-on. On the sign-in page they choose **Continue with SSO**, enter their work email, and Pyn hands them to your identity provider. [Sign in with SSO](https://support.pynhq.com/account/sign-in/sign-in-with-sso/) ## Conditional senders A step no longer has to come from one fixed sender. A conditional sender checks ordered audience rules to pick who each message comes from, with a fallback sender for everyone the rules miss: people in Sales can hear from the head of Sales, and everyone else from the People team. Create one in **Settings**, then choose it as the sender on any step. [Create a conditional sender](https://support.pynhq.com/settings/conditional-senders/create-a-conditional-sender/) ## Also new - Duplicate a campaign step for a new date, and choose whether the copy keeps its recipients. - Put an enrollment's Reference Date into flow emails and Slack messages. - Automation steps warn you when their audience is empty, or when a message scheduled before the start date leaves out upcoming joiners. **Fixes and improvements (39)** - You can now find items by typing part of a word in search, including Find on journey maps and Flows. - You can now access actions directly from rows in the Custom Email Recipients and Calendars tables. - Connected calendars now show the same active-status indicator as senders. - Every field in the Details panel now has an icon to help you identify its type. - You can archive and restore senders from the All senders table, with confirmation before archiving. - Employee search now shows personal email addresses when work addresses are missing and keeps each person’s employment stage visible alongside their name. - Enrollment lists now show the employee and enrollment status so you can distinguish entries at a glance. - Enrollment step lists now show personalized message text when a step has a single available message delivery. - You can change a campaign’s emoji and background colour together from its details panel. - HiBob can now provide more employment details, including original start date, tenure and manager status, when those fields are available. - The sign-in page now downloads less data before you sign in. - The current page number is now clearly highlighted when you browse lists. - Audience groups and automation triggers based on fields with multiple selections now match the chosen option instead of every employee with a value. - Enrollment steps now show whether messages were sent, bounced or skipped rather than appearing complete when no recipient was found. - Audience settings now have consistent spacing between included and excluded employees and the audience preview. - Manual enrollment now aligns option descriptions consistently and shows clear action buttons after enrollment. - The actions menu button in side-panel headers now matches the close button’s size. - Journey cards and categories now keep their updated order when you leave the page and return. - Reporting updates for your workspace no longer stall when another workspace encounters an error. - Scheduled activity in your workspace now continues when another workspace encounters an error. - The expanded message editor now stays at a readable width on wide screens. - Clicking the placeholder in a new campaign email now places the cursor where you can start typing. - Fields in campaign creation and other forms now have consistent spacing. - Date and scheduling dropdowns no longer turn grey when you move the pointer over them. - Automation steps now appear in schedule order rather than the order they were added. - Google Calendar invitations now use the next available occurrence from Google and respect the event’s time zone. - One invalid custom field no longer hides all the other custom fields on an employee profile. - The content editor’s Back button now returns you to the page you opened it from. - You can now reschedule campaign milestones and unsent messages by dropping them anywhere in a day on the month calendar. - The campaign year calendar now fits shorter laptop screens without cutting off the final months when there is enough room. - The campaign list now follows the month or year shown in the calendar. - Date-based flows now use the adjusted reference date when scheduling messages around an anniversary or other shifted date. - Reconnecting Workday with valid credentials now clears the error state and resumes syncing. - Duplicate and Archive actions now appear consistently in campaign menus. - Rapidly rearranging journey cards no longer causes their order to change unexpectedly after you drop them. - Journey cards now recover correctly from failed moves and stay hidden while archiving is in progress. - Editing details in the side panel no longer loses focus or resets your typed text during unrelated updates. - Employee syncing from Classic no longer fails when a custom choice field contains a true-or-false option. - ADP workers without a work or personal email address no longer create new employee profiles until an email becomes available. Release notes: [25 September 2026](https://support.pynhq.com/changelog/2026-09-25/) and [26 September 2026](https://support.pynhq.com/changelog/2026-09-26/). --- # 23 October 2026 Source: https://support.pynhq.com/changelog/2026-10-23/ > Covers changes merged from 16 October 2026 at 12:00 am to 23 October 2026 at 8:16 am (Australia/Sydney). Covers changes merged from 16 October 2026 at 12:00 am to 23 October 2026 at 8:16 am (Australia/Sydney). Part of the [week of 19 October 2026](https://support.pynhq.com/changelog/week-of-2026-10-19/): Duplicate a step within its flow. ## New - You can start an automation when an employee is connected to Slack after the initial sync. - Admins with Okta enabled can copy the sign-in link from the integration panel to configure their Okta dashboard tile. - You can duplicate a step within a flow, including its content, recipients, schedule, reminders and escalations. - Admins can set a company name in Settings for message personalization, with the workspace name used when no company name is set. - You can select HR business partner names and email addresses from the personalization picker in email and Slack editors. - You can refresh a Google Workspace sender's profile name and email address from its menu without reconnecting. - Admins with the Okta integration enabled can connect through a single dialog, replace credentials and copy the redirect address from the integration panel. ## Improvements - You can configure a flow's trigger directly from its No Trigger tab. - Before archiving an email, Google Workspace or Slack sender, you now see a warning listing the active automation steps that use it. - You can preview a message for an upcoming joiner as well as a current employee. - The preview employee selector now reads “Preview for principal” to distinguish the employee the step is about from its recipient. ## Fixes - Change of Manager automations now enroll the employee whose manager changed. - Change of Location automations now run when an employee's country changes, and their trigger panel opens correctly. - Relationship-based automation triggers now respect their configured filters. - Archived campaign messages now disappear from the calendar and its sidebar list. - Multi-select fields now open when you click their empty space, while selected items remain removable. - Conditional-section fields now use consistent widths and readable placeholder text. - Step previews now load the saved message without being incorrectly blocked, and campaign HTML previews find the correct step. - When a step targets an employee's manager, buddy or HR business partner, previews now use that person's details when the relationship can be resolved. - Personalized previews now hide conditional sections that do not match the selected employee and resolved recipient. - Conditional-section dialogs stay open while you edit them, and updating or removing a section targets the section you opened. - Typing after a personalization placeholder or link in a conditional section no longer jumps to the start of the paragraph. - Link buttons in the editor now expand to fit longer labels, shortening them only when the available space is too narrow. - Discarding unpublished flow changes no longer makes an automated or manual flow appear inactive. - Messages to custom email recipients now fill in name and email personalization from that recipient's details. --- # 16 October 2026 Source: https://support.pynhq.com/changelog/2026-10-16/ > Covers changes merged from 12 October 2026 at 12:00 am to 16 October 2026 at 7:57 am (Australia/Sydney). Covers changes merged from 12 October 2026 at 12:00 am to 16 October 2026 at 7:57 am (Australia/Sydney). Part of the [week of 12 October 2026](https://support.pynhq.com/changelog/week-of-2026-10-12/): Escalations, and HR business partners from HiBob. ## New - You can set up to three escalation notices on an email or Slack step to notify others when an individual recipient has not completed an action after a chosen number of days. - You can choose an employee's HR business partner as the recipient of workflow messages and actions. - You can export the Activity Actions table to CSV with your current filters and sort order, including unsaved changes. - You can filter the Actions view by completion status. - Employee profiles now show a probation end date when one is supplied by HiBob. - You can create employee groups by type of contract when that field is available. - You can create employee groups by work office when that HiBob custom field is configured. ## Improvements - Employee group panels and Google Workspace and Microsoft 365 integration panels now have consistent spacing around their contents. ## Fixes - The Slack recipient dropdown now opens and shows “No results” when the sender has no available channels. - Long webhook URLs and secrets now fit within the sidebar while still copying in full, and the Done button stays visible. - Date fields in Firefox now show a single calendar icon. - Calendar navigation arrows now fit neatly inside their buttons. - Download buttons in Notices now fit within their rows. - Download expiry values in Notices now use the same text size as the label beside them. - Escalation notices now correctly label HR business partner recipients. --- # 12 October 2026 Source: https://support.pynhq.com/changelog/2026-10-12/ > Covers changes merged from 9 October 2026 at 12:00 am to 12 October 2026 at 8:10 am (Australia/Sydney). Covers changes merged from 9 October 2026 at 12:00 am to 12 October 2026 at 8:10 am (Australia/Sydney). Part of the [week of 12 October 2026](https://support.pynhq.com/changelog/week-of-2026-10-12/): Escalations, and HR business partners from HiBob. ## New - You can preview a saved HTML email with the personalization for a selected recipient before sending it. - Employee profiles can now show HR business partners from HiBob and configured HiBob custom fields. - Workspaces with a HiBob buddy field configured can now bring buddy relationships into employee profiles. - Messages can now include an employee's HR business partner's name, preferred name or email address. ## Improvements - You can read the full text of shortened audience and selection labels by hovering over them. - Options in selection lists have more space around their highlighted text. ## Fixes - HTML email templates now fill in supported personalization such as a manager's preferred name instead of showing the placeholder. - ADP worker types can now reflect the primary work assignment once the updated mapping is enabled and employees sync again. - Integration refresh dates now show the recorded refresh and successful refresh times instead of appearing unset. - Selection menus now follow the correct width limits. - The audience editor now correctly prompts you to select lifecycle stages in the lifecycle field. - Date fields now show a calendar icon in browsers that support it. --- # 9 October 2026 Source: https://support.pynhq.com/changelog/2026-10-09/ > Covers changes merged from 6 October 2026 at 12:00 am to 9 October 2026 at 8:04 am (Australia/Sydney). Covers changes merged from 6 October 2026 at 12:00 am to 9 October 2026 at 8:04 am (Australia/Sydney). Part of the [week of 5 October 2026](https://support.pynhq.com/changelog/week-of-2026-10-05/): See who has acted in the Actions view. ## New - Admins can add automation, campaign and content templates from the catalogue when they need them, including from a journey moment. - The Actions view in Activity shows messages requiring an employee action, with delivery and completion status. - Workspaces with BambooHR change notifications enabled can see received notifications in integration History. ## Improvements - HTML emails can now be published with unrecognized placeholders, which appear unchanged in the rendered email. - Pyn now blocks browser requests identified as coming from another website that try to make changes using your signed-in session. ## Fixes - Integration refresh dates now display the recorded refresh and successful refresh times instead of appearing unset. - Campaign calendar dates remain readable when hovering over days without a filled background. - Editing a form or poll title now enables publishing the change. - Changes to automation and content titles now save reliably. - Scheduling a step in a paused enrollment now moves the enrollment to pending. - Edits to HTML content now save without being incorrectly blocked. - Test messages now send successfully when the saved message contains HTML. - Sessions now expire one day after sign-in, even when you switch workspaces. - If exporting a journey as an image fails, the board returns to its normal layout and displays an error. --- # 6 October 2026 Source: https://support.pynhq.com/changelog/2026-10-06/ > Period covered: 6 October 2026 at 12:00 am to 6 October 2026 at 6:00 pm (Australia/Sydney). Period covered: 6 October 2026 at 12:00 am to 6 October 2026 at 6:00 pm (Australia/Sydney). Part of the [week of 5 October 2026](https://support.pynhq.com/changelog/week-of-2026-10-05/): See who has acted in the Actions view. ## New - Workspaces with the updated Actions view can see who was asked to act, what they were asked to do, and whether they clicked or completed it. ## Improvements - Sign-in sessions now expire one day after signing in, even if you keep using Pyn or switch workspaces. - Pyn now blocks browser requests identified as coming from another website that try to make changes using your signed-in session. ## Fixes - Sending a test message now uses the saved step content so HTML messages no longer trigger request filtering that blocks the test. - A failed journey image export now shows an error and restores the board so you can keep working without reloading. --- # 4 October 2026 Source: https://support.pynhq.com/changelog/2026-10-04/ > Period covered: 3 October 2026 at 12:00 am to 4 October 2026 at 6:06 pm (Australia/Sydney). Period covered: 3 October 2026 at 12:00 am to 4 October 2026 at 6:06 pm (Australia/Sydney). Part of the [week of 28 September 2026](https://support.pynhq.com/changelog/week-of-2026-09-28/): Outlook email and calendars, and Ashby. ## New - You can connect Ashby to bring hired candidates into Pyn before their start date, including their job details and hiring manager. ## Improvements - BambooHR connection details now focus on your subdomain, primary source setting and latest refresh results. ## Fixes - Deliver on previous delivery day now moves messages back to an allowed delivery day instead of stopping on a day you have chosen to skip. - Campaign step, enrollment and milestone dates no longer appear a day early in time zones west of UTC. - Today on the campaign calendar now returns to the current month when you are viewing January. - You can now resend emails sent through SendGrid to a custom email address. - A failed attempt to archive a flow now shows an error and releases the Change Mode dialog so you can use or close it. - Relationship group membership now updates reliably when employee records refresh. - A failed notification email no longer stops notifications for subsequent recipients. - A failed sign-in email no longer interrupts the sign-in service for other users. - Connecting Slack now shows an error when the connection fails instead of appearing to do nothing. - Testing a Slack sender connection now reports the actual outcome instead of always saying Sent. - Emergency contact, dependant and qualification forms now show an error when saving fails. - Expense claims and attendance requests now show an error when submission fails. - Punching in or out and cancelling leave now show an error when the action fails. - Email theme settings now restore the saved theme and show an error when changes cannot be saved. - Withdrawing attendance or training requests, waiving benefits and cancelling expense claims now show an error when the action fails. - Updating goal progress, submitting or acknowledging a performance review and completing tasks now show an error when the action fails. - Timesheets now show errors when saving hours, submitting, cancelling, starting a period or adding a line fails. - Workspace logo settings now show an error when a new logo cannot be saved. - Integration card logos now sit centrally instead of appearing cropped or too low. --- # 3 October 2026 Source: https://support.pynhq.com/changelog/2026-10-03/ > Period covered: 2 October 2026 at 12:00 am to 3 October 2026 at 6:01 pm (Australia/Sydney). Period covered: 2 October 2026 at 12:00 am to 3 October 2026 at 6:01 pm (Australia/Sydney). Part of the [week of 28 September 2026](https://support.pynhq.com/changelog/week-of-2026-09-28/): Outlook email and calendars, and Ashby. ## New - Workspaces with Microsoft 365 enabled can connect an Outlook calendar and invite employees to recurring events from their workflows. - The Flows list now shows enrollment counts for your chosen date range, excluding test enrollments and starting from when this feature is released. ## Fixes - Reconnecting a Google Workspace or Outlook calendar now preserves the calendar you selected. - Invitations to an event series removed from a Google Workspace or Outlook calendar now report Event Not Found instead of attempting to send. - You can now use the page controls to browse Outlook calendar events. - Relationship group membership now updates reliably when employee records refresh. - A failed notification email no longer stops notifications for subsequent recipients. - A failed sign-in email no longer interrupts the sign-in service for other users. - Connecting Slack now shows an error when the connection fails instead of appearing to do nothing. - Testing a Slack sender connection now reports the actual outcome instead of always saying Sent. - Emergency contact, dependant and qualification forms now show an error when saving fails. - Expense claims and attendance requests now show an error when submission fails. - Punching in or out and cancelling leave now show an error when the action fails. - Email theme settings now restore the saved theme and show an error when changes cannot be saved. --- # 2 October 2026 Source: https://support.pynhq.com/changelog/2026-10-02/ > Period covered: 30 September 2026 at 12:00 am to 2 October 2026 at 7:02 am (Australia/Sydney). Period covered: 30 September 2026 at 12:00 am to 2 October 2026 at 7:02 am (Australia/Sydney). Part of the [week of 28 September 2026](https://support.pynhq.com/changelog/week-of-2026-09-28/): Outlook email and calendars, and Ashby. ## New - Admins and owners can create a link valid for three days so someone without a Pyn login can connect a Slack or Google Workspace sender. - Workspaces with Microsoft 365 email sending enabled can connect a work or school account to send workflow emails through Outlook. - You can schedule an anniversary automation to run every year after the first. ## Improvements - Sandbox workspaces now show a yellow navigation warning so you can distinguish them from your live workspace. - Delivery verification now shows a date for each message, using its latest delivery date when available or its earliest scheduled date otherwise. - You can see each enrollment’s reference date when choosing which enrollments to update to a newly published automation version. ## Fixes - Scheduled date fields now open a date picker when configuring a workflow step or duplicating a campaign enrollment. - Link editing fields now stack vertically instead of sitting side by side. - Date and property automation settings now show the one-day minimum wait between repeat enrollments and hide shorter options. - Archived journey categories now disappear from the board immediately without a refresh. - Custom scheduling options now open beside the Custom choice instead of floating over the message editor. - Filter group settings now give the included and excluded group fields the full form width. - Recurring automation settings and message step options now have space between their fields and labels. --- # 30 September 2026 Source: https://support.pynhq.com/changelog/2026-09-30/ > Period covered: 29 September 2026 at 12:00 am to 30 September 2026 at 6:00 pm (Australia/Sydney). Period covered: 29 September 2026 at 12:00 am to 30 September 2026 at 6:00 pm (Australia/Sydney). Part of the [week of 28 September 2026](https://support.pynhq.com/changelog/week-of-2026-09-28/): Outlook email and calendars, and Ashby. ## New - Admins and owners can create a link valid for three days so someone without a Pyn login can connect a Slack or Google Workspace sender. - Workspaces with Microsoft 365 email sending enabled can connect a work or school account to send workflow emails through Outlook. - You can schedule an anniversary automation to run every year after the first. ## Improvements - You can search for audience groups beyond the first 500 groups and still see the names of groups already selected. - Employee lists now show profile pictures and give country and time zone names more room. - Needs Attention now appears first in each settings navigation group. - You can see each enrollment’s reference date when choosing which enrollments to update to a newly published automation version. - Automation and campaign steps can recover from an interrupted scheduling update instead of leaving future deliveries unscheduled. ## Fixes - Date and property automations now wait at least one day before enrolling the same employee again, and their settings show that minimum. - Archived journey categories now disappear from the board immediately without a refresh. - HiBob can now match managers using company employee numbers when its usual manager ID is missing and the required fields are available. - You can now export enrollments and Flows views to CSV without an access-denied error. - Microsoft Teams membership alone no longer keeps an employee marked as currently employed. - Workday reports with a mix of worker IDs and employee IDs no longer drop employees who have only an employee ID. - Rippling and ADP connections now flag credential problems that previously appeared as temporary sync failures. - Notification action buttons no longer stretch across the panel header. - The free automation banner now keeps its message and outlined action button together on one row. - Scheduling menus now line up with their fields and keep custom timing options beside the Custom choice. - Small groups of profile pictures overlap less, making initials easier to read. - The Automations table header now extends across the full row. - Email and Google Workspace senders now show their avatars in Notices and use email-based initials when no display name is set. - Emoji icons now remain readable against strongly coloured backgrounds. - Sender badges in panel titles no longer cover the sender’s initials. - Filter group settings now give the included and excluded group fields the full form width. - Recurring automation settings and message step options now have space between their fields and labels. --- # 29 September 2026 Source: https://support.pynhq.com/changelog/2026-09-29/ > Period covered: 28 September 2026 at 12:00 am to 29 September 2026 at 6:01 pm (Australia/Sydney). Period covered: 28 September 2026 at 12:00 am to 29 September 2026 at 6:01 pm (Australia/Sydney). Part of the [week of 28 September 2026](https://support.pynhq.com/changelog/week-of-2026-09-28/): Outlook email and calendars, and Ashby. ## New - You can undo deleting a form field using the Undo message shown for eight seconds. ## Improvements - Pyn loads less data when you first open it and makes fewer background requests when you return to a tab. - General settings now bring senders, calendars, users and other shared settings together with one Needs Attention view. - Google Workspace and Slack senders now show when they need to be reconnected. - You can choose how to sort the Flows table for your current session. - You can search for audience groups beyond the first 500 groups and still see the names of groups already selected. - You can now reach Add Step in the campaign calendar sidebar using the keyboard. - Employee lists now show profile pictures and give time zone names more room. ## Fixes - Save as New View now adds an asterisk to the copy’s name so you can distinguish it from the original. - Saving or duplicating a view now opens the new view immediately without reloading the page. - New journey categories and changes to a moment’s owner now appear without a refresh. - Version History now shows a newly published content version straight away. - Creating a Filter or Static employee group no longer leaves the page stuck behind an invisible overlay. - Theme settings no longer get stuck repeatedly loading. - Available integrations no longer include integrations you have already installed. - Connecting a Google Workspace sender or calendar from blue.pyn.ai now returns you to the same site to finish signing in. - Generated exports are now downloadable only by the person who requested them, and older exports without a recorded owner must be requested again. - Reports now check that you have permission to access the requested metrics. - Stopped enrollments no longer create reminders when an in-progress message finishes sending. - Duplicating a stopped campaign no longer prevents reminders in the new enrollment. - Email delivery updates from SendGrid can now reach Pyn. - Employees can now preview only their own leave requests unless they are an administrator. - Archived sign-in identities no longer retain access through an existing session. - HiBob can now match managers using company employee numbers when its usual manager ID is missing and the required fields are available. - You can now export enrollments and Flows views to CSV without an access-denied error. - Microsoft Teams membership alone no longer keeps an employee marked as currently employed. - Workday reports with a mix of worker IDs and employee IDs no longer drop employees who have only an employee ID. - Rippling and ADP connections now flag credential problems that previously appeared as temporary sync failures. - Notification action buttons no longer stretch across the panel header. - The free automation banner now keeps its message and outlined action button together on one row. - Date offset menus now line up with the scheduling field that opens them. - Small groups of profile pictures overlap less, making initials easier to read. --- # 28 September 2026 Source: https://support.pynhq.com/changelog/2026-09-28/ > Period covered: 28 September 2026 at 12:00 am to 28 September 2026 at 6:00 pm (Australia/Sydney). Period covered: 28 September 2026 at 12:00 am to 28 September 2026 at 6:00 pm (Australia/Sydney). Part of the [week of 28 September 2026](https://support.pynhq.com/changelog/week-of-2026-09-28/): Outlook email and calendars, and Ashby. ## New - You can undo deleting a form field using the Undo message shown for eight seconds. ## Improvements - Pyn loads less data when you first open it and makes fewer background requests when you return to a tab. - General settings now bring senders, calendars, users and other shared settings together with one Needs Attention view. - Google Workspace and Slack senders now show when they need to be reconnected. - You can choose how to sort the Flows table for your current session. ## Fixes - Save as New View now adds an asterisk to the copy’s name so you can distinguish it from the original. - Saving or duplicating a view now opens the new view immediately without reloading the page. - New journey categories and changes to a moment’s owner now appear without a refresh. - Version History now shows a newly published content version straight away. - Creating a Filter or Static employee group no longer leaves the page stuck behind an invisible overlay. - Theme settings no longer get stuck repeatedly loading. - Available integrations no longer include integrations you have already installed. - Connecting a Google Workspace sender or calendar from blue.pyn.ai now returns you to the same site to finish signing in. - Generated exports are now downloadable only by the person who requested them, and older exports without a recorded owner must be requested again. - Reports now check that you have permission to access the requested metrics. - Stopped enrollments no longer create reminders when an in-progress message finishes sending. - Duplicating a stopped campaign no longer prevents reminders in the new enrollment. - Email delivery updates from SendGrid can now reach Pyn. - Employees can now preview only their own leave requests unless they are an administrator. - Archived sign-in identities no longer retain access through an existing session. --- # 26 September 2026 Source: https://support.pynhq.com/changelog/2026-09-26/ > Period covered: 26 September 2026 at 12:00 am to 26 September 2026 at 5:02 pm (Australia/Sydney). Period covered: 26 September 2026 at 12:00 am to 26 September 2026 at 5:02 pm (Australia/Sydney). Part of the [week of 21 September 2026](https://support.pynhq.com/changelog/week-of-2026-09-21/): Single sign-on and conditional senders. ## Improvements - You can now find items by typing part of a word in search, including Find on journey maps and Flows. - You can now access actions directly from rows in the Custom Email Recipients and Calendars tables. - Connected calendars now show the same active-status indicator as senders. - Every field in the Details panel now has an icon to help you identify its type. ## Fixes - Audience groups and automation triggers based on fields with multiple selections now match the chosen option instead of every employee with a value. - Enrollment steps now show whether messages were sent, bounced or skipped rather than appearing complete when no recipient was found. - Audience settings now have consistent spacing between included and excluded employees and the audience preview. - Manual enrollment now aligns option descriptions consistently and shows clear action buttons after enrollment. - The actions menu button in side-panel headers now matches the close button’s size. --- # 25 September 2026 Source: https://support.pynhq.com/changelog/2026-09-25/ > Period covered: 18 September 2026 at 5:01 pm to 25 September 2026 at 5:01 pm (Australia/Sydney). Period covered: 18 September 2026 at 5:01 pm to 25 September 2026 at 5:01 pm (Australia/Sydney). Part of the [week of 21 September 2026](https://support.pynhq.com/changelog/week-of-2026-09-21/): Single sign-on and conditional senders. ## New - You can sign in with your work email through your company’s single sign-on when it is configured for your workspace. - You can choose different message senders automatically using audience rules and a fallback sender. - You can duplicate a campaign step for a new date and choose whether to keep its recipients. - You can insert an enrollment’s Reference Date into flow emails and Slack messages. - Automation steps now warn you when the audience is empty or a message scheduled before the start date excludes upcoming joiners. ## Improvements - You can archive and restore senders from the All senders table, with confirmation before archiving. - Employee search now shows personal email addresses when work addresses are missing and keeps each person’s employment stage visible alongside their name. - Enrollment lists now show the employee and enrollment status so you can distinguish entries at a glance. - Enrollment step lists now show personalized message text when a step has a single available message delivery. - You can change a campaign’s emoji and background colour together from its details panel. - HiBob can now provide more employment details, including original start date, tenure and manager status, when those fields are available. - The sign-in page now downloads less data before you sign in. - The current page number is now clearly highlighted when you browse lists. ## Fixes - Journey cards and categories now keep their updated order when you leave the page and return. - Reporting updates for your workspace no longer stall when another workspace encounters an error. - Scheduled activity in your workspace now continues when another workspace encounters an error. - The expanded message editor now stays at a readable width on wide screens. - Clicking the placeholder in a new campaign email now places the cursor where you can start typing. - Fields in campaign creation and other forms now have consistent spacing. - Date and scheduling dropdowns no longer turn grey when you move the pointer over them. - Automation steps now appear in schedule order rather than the order they were added. - Google Calendar invitations now use the next available occurrence from Google and respect the event’s time zone. - One invalid custom field no longer hides all the other custom fields on an employee profile. - The content editor’s Back button now returns you to the page you opened it from. - You can now reschedule campaign milestones and unsent messages by dropping them anywhere in a day on the month calendar. - The campaign year calendar now fits shorter laptop screens without cutting off the final months when there is enough room. - The campaign list now follows the month or year shown in the calendar. - Date-based flows now use the adjusted reference date when scheduling messages around an anniversary or other shifted date. - Reconnecting Workday with valid credentials now clears the error state and resumes syncing. - Duplicate and Archive actions now appear consistently in campaign menus. - Rapidly rearranging journey cards no longer causes their order to change unexpectedly after you drop them. - Journey cards now recover correctly from failed moves and stay hidden while archiving is in progress. - Editing details in the side panel no longer loses focus or resets your typed text during unrelated updates. - Employee syncing from Classic no longer fails when a custom choice field contains a true-or-false option. - ADP workers without a work or personal email address no longer create new employee profiles until an email becomes available. --- # For agents and developers Source: https://support.pynhq.com/for-agents/ > Where to find Pyn Help as markdown, JSON and structured data, how the URLs map to pages, and how to cite one. Everything on Pyn Help is also published in forms a model or a script can read without parsing HTML. All of it is generated from the same source files as the pages, at the same build, so the forms never disagree. ## Indexes | URL | What it is | | --- | --- | | [`/llms.txt`](https://support.pynhq.com/llms.txt) | One line per page with its URL, description and markdown URL, grouped by product area in sidebar order. Start here. | | [`/llms-full.txt`](https://support.pynhq.com/llms-full.txt) | Every page as plain markdown in one file, in sidebar order. Each page opens with `# Title` and `Source: `. | | [`/api/stories.json`](https://support.pynhq.com/api/stories.json) | Every page's `slug`, `url`, `markdownUrl`, `title`, `description` and story frontmatter, plus `generatedAt` and `siteVersion`. | | [`/api/intercom-map.json`](https://support.pynhq.com/api/intercom-map.json) | Every article of the previous help centre (intercom.help/pyn) that a page here replaces or draws on, with the pages that reference it. | | [`/api/media.json`](https://support.pynhq.com/api/media.json) | The screenshot and video manifest with an absolute `url` per entry and whether it is `captured` yet. | | [`/sitemap-index.xml`](https://support.pynhq.com/sitemap-index.xml) | The sitemap, also named in [`/robots.txt`](https://support.pynhq.com/robots.txt). | ## URL patterns - A page lives at `///` (or `//` for an area overview), always with a trailing slash. Example: `/flows/automations/`. - Its markdown twin is the same path with `.md` instead of the trailing slash: `/flows/automations.md`. The root page is `/index.md`. Every HTML page declares it with ``. - The `slug` in `stories.json` is the path without slashes at either end: `flows/automations`. The root page's slug is empty. - Screenshots and videos are served from `/media///.png` or `.mp4`. In markdown they appear as `![caption](url)` and `[Video: caption](url)`. ## The markdown A twin starts with the page's frontmatter as a YAML block, exactly as written in the source, then the body as plain markdown: imports and MDX components are gone, asides are block quotes opening with **Note**, **Tip** or **Caution**, steps are an ordered list under `## Steps`, and links are absolute. ## Frontmatter contract Beyond `title` and `description`, a story page may carry these fields; they are validated at build time and copied into `stories.json` and the page's JSON-LD. | Field | Meaning | | --- | --- | | `area`, `feature` | The product area and feature the page belongs to, matching its directory. | | `appPath` | The route in the Pyn app the task starts from, for example `/flows/home`. It never includes a workspace id. | | `audience` | `admin`, `manager` or `employee`: who the page is written for. | | `lastVerified` | The date (`YYYY-MM-DD`) someone last walked the steps against the live app. | | `version` | The release-notes date or app version the page was verified against. | | `screenshots`, `video` | Media ids, resolved through `/api/media.json`. | | `related` | Slugs of related pages. | | `intercom` | The articles of the previous help centre the page replaces or draws on: `id`, `title`, `url` and a short `note` such as `replaces` or `Pyn 1 article`. The page lists them under "Related Intercom articles"; the markdown twin ends with the same list. | ## Structured data Each page's `` holds one `application/ld+json` graph with a `WebSite`, a `TechArticle` (headline, description, audience, version, `dateModified` from `lastVerified`, media, and an `encoding` entry pointing at the markdown twin) and a `BreadcrumbList`. A page whose body has an ordered list under `## Steps` also carries a `HowTo` with one `HowToStep` per item, and a page in the FAQ area whose H2s end in a question mark carries a `FAQPage`. ## How to cite a page Cite the HTML URL, which is the stable one, and name the page by its `title`: ```text Automations (Pyn Help), https://support.pynhq.com/flows/automations/ ``` When you need to say how current the guidance is, quote `lastVerified` and `version` from the frontmatter. If a page you need is missing, `/llms.txt` is the complete list; a URL that is not in it does not exist.