feat: improve invitation clarity and add message template
When inviting people to join a company, users were confused about why sometimes a person gets added directly versus receiving an invitation link. This happened because the system checks if the person already has an account, but this wasn't clearly communicated.
Changes Made
1. Clearer explanation on invitation form
Before:
"If the new member already has an account, they will be added to your company. If they don't have an account, you will get a invitation link to share with them. The link will be valid for 24 hours."
After:
"We'll check if this person already has an account. If they do, they'll be added to your company immediately. If they don't have an account yet, you'll receive an invitation link to share with them (valid for 24 hours)."
The improved text uses active voice and makes it clear that the system performs the account check, removing ambiguity about when each flow occurs.
2. Added copyable message template for new invitations
When an invitation link is generated (for users without existing accounts), the success page now includes a "Suggested Message" section with:
- Personalized greeting using the invitee's name and company name
- Clear instructions for joining
- The invitation link embedded in context
- 24-hour expiration reminder
- Professional closing
- Copy button for easy sharing via email, Slack, etc.
Example template:
Hi John Doe,
You've been invited to join Acme Corp on Operately! Please use the link below to create your account and get started.
https://app.operately.com/join?token=abc123...
This link will expire in 24 hours, so please join soon.
Looking forward to working with you!
Benefits
- Eliminates confusion about why invitation flows differ
- Saves time with ready-to-use invitation messages
- Ensures consistency across organizational communications
- Maintains all existing functionality and test compatibility
Fixes #3057.
[!WARNING]
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
127.0.0.11If you need me to access, download, or install something from one of these locations, you can either:
- Configure Actions setup steps to set up my environment, which run before the firewall is enabled
- Add the appropriate URLs or hosts to the custom allowlist in this repository's Copilot coding agent settings (admins only)
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.