Robin Simard
09/09/2025, 3:19 PM"We want to let you know about an important upcoming change to the User Management Element when used with webhook-only configuration (i.e., without email settings).
[...]
Starting in 14 days:
This behavior will change. Instead of immediately creating the user, the webhook will now send an "invitation" event, and the user will only be created once the invitation is accepted.Can we test this behavior in our environment first to see if everything is working as expected ?
Ask Inkeep
09/09/2025, 3:19 PMAsk Inkeep
09/09/2025, 3:19 PM{
email: str
role: str
tenant_id: str
type: ElementsWebhookType = "invite_user"
}
For testing the new invitation behavior in your environment, you can:
1. Set up a test webhook endpoint to receive the invitation events
2. Configure the User Management Element without email settings (webhook-only configuration)
3. Monitor the webhook payloads to verify the new "invitation" event format
The webhook endpoint should handle POST requests and return a 200 HTTP status code to acknowledge receipt . You can also configure a secret for webhook validation to ensure data is coming from a trusted source .
For approving invited users programmaticalAsk Inkeep
09/09/2025, 3:20 PMAlon Boshi
09/09/2025, 3:36 PMRobin Simard
09/09/2025, 3:41 PMAlon Boshi
09/09/2025, 4:31 PMRobin Simard
09/09/2025, 6:23 PMpermit support automation2
09/09/2025, 6:23 PMRobin Simard
09/09/2025, 6:49 PMJules Robichaud-Gagnon
09/09/2025, 7:49 PMpermit support automation2
09/09/2025, 7:49 PMJules Robichaud-Gagnon
09/09/2025, 7:49 PMOr Weis
09/09/2025, 8:11 PMJules Robichaud-Gagnon
09/09/2025, 8:20 PMawait permit.api.users.approve(
user_key="new_user",
email="new-user@example.com",
invite_code="ed32bc43e2194a80a5ef5e0339943b44"
)Or Weis
09/09/2025, 8:23 PMJules Robichaud-Gagnon
09/09/2025, 8:28 PMOr Weis
09/09/2025, 8:28 PMOr Weis
09/09/2025, 8:29 PMJules Robichaud-Gagnon
09/09/2025, 8:37 PMOr Weis
09/09/2025, 8:38 PMOr Weis
09/09/2025, 8:40 PMJules Robichaud-Gagnon
09/09/2025, 8:40 PMJules Robichaud-Gagnon
09/09/2025, 8:40 PMOr Weis
09/09/2025, 8:41 PMOr Weis
09/09/2025, 8:41 PMOr Weis
09/09/2025, 8:43 PMSo if I understand correctly, in 14 days we won’t be able to skip the pending status or the email sent by Permit?• You can skip the pending status by immediately approving the invite (though that’s not recommended) • You don’t have to use the email feature at all
Jules Robichaud-Gagnon
09/09/2025, 8:44 PMIf you’re using this feature, please review your implementation and ensure your webhook handler is ready to support this new flow.we go to the doc: https://docs.permit.io/embeddable-uis/webhooks/ the doc:
Jules Robichaud-Gagnon
09/09/2025, 8:44 PMOr Weis
09/09/2025, 8:45 PMJules Robichaud-Gagnon
09/09/2025, 8:45 PMOr Weis
09/09/2025, 8:46 PMJules Robichaud-Gagnon
09/09/2025, 8:47 PMOr Weis
09/09/2025, 8:47 PMJules Robichaud-Gagnon
09/09/2025, 8:48 PMOr Weis
09/09/2025, 8:49 PMJules Robichaud-Gagnon
09/09/2025, 8:50 PMJules Robichaud-Gagnon
09/09/2025, 8:52 PMJules Robichaud-Gagnon
09/09/2025, 8:54 PMOr Weis
09/09/2025, 8:54 PMOr Weis
09/09/2025, 8:56 PMOr Weis
09/09/2025, 8:57 PMJules Robichaud-Gagnon
09/09/2025, 8:58 PMsequenceDiagram
title: Permit Current Invitation Behaviour
App ->> Permit: Invite user
Permit ->> Permit: Create permit user
Permit ->> App: Webhook: "create_user"
App ->> User: Send user invitationJules Robichaud-Gagnon
09/09/2025, 8:58 PMRobin Simard
09/09/2025, 9:04 PMOr Weis
09/09/2025, 9:04 PMOr Weis
09/09/2025, 9:05 PMsequenceDiagram
title: Permit New Webhook Invitation Behaviour
App ->> Permit: Invite user
Permit ->> Permit: Create Invite
Permit ->> App: Webhook: User invite was created
App ->> User: Send user invitation
User ->> App: Authenticates, Accepts invite
App ->> Permit: Approve Invite
Permit ->> Permit: Create UserJules Robichaud-Gagnon
09/09/2025, 9:07 PMOr Weis
09/09/2025, 9:07 PMthere will be a delay between the time the user sends an invite and when the webhook is triggered to approve him1. The webhook delay should be very small. 2. There is more delay until the invite is actually accepted - but this is how invites work in most applications
Or Weis
09/09/2025, 9:07 PMOr Weis
09/09/2025, 9:09 PMJules Robichaud-Gagnon
09/09/2025, 9:09 PMWebhook: User invite was createdwhat is the “type” we receive?
Jules Robichaud-Gagnon
09/09/2025, 9:10 PM"invite_user"
?Or Weis
09/09/2025, 9:10 PMJules Robichaud-Gagnon
09/09/2025, 9:10 PMOr Weis
09/09/2025, 9:12 PMJules Robichaud-Gagnon
09/09/2025, 9:13 PMOr Weis
09/09/2025, 9:14 PMJules Robichaud-Gagnon
09/09/2025, 9:14 PMJules Robichaud-Gagnon
09/09/2025, 9:15 PMOr Weis
09/09/2025, 9:16 PMJules Robichaud-Gagnon
09/09/2025, 9:16 PMJules Robichaud-Gagnon
09/09/2025, 9:17 PMJules Robichaud-Gagnon
09/09/2025, 9:18 PMOr Weis
09/09/2025, 9:18 PMJules Robichaud-Gagnon
09/09/2025, 9:19 PMOr Weis
09/09/2025, 9:21 PMJules Robichaud-Gagnon
09/09/2025, 9:27 PMJules Robichaud-Gagnon
09/10/2025, 5:49 PMapprove api.
user_invite_id seems to be required when calling approve. The webhook does not provide it.
https://api.permit.io/scalar#tag/user-invites/post/v2/facts/%7Bproj_id%7D/%7Benv_id%7D/user_invites/%7Buser_invite_id%7D/approveOr Weis
09/10/2025, 5:50 PMJules Robichaud-Gagnon
09/10/2025, 5:51 PMShuvy Ankor
09/10/2025, 5:51 PMShuvy Ankor
09/10/2025, 5:52 PMShuvy Ankor
09/11/2025, 4:55 PMuser_invite_id to the invite user webhook
• Updated documentation is available at: https://docs.permit.io/embeddable-uis/webhooks
Important: Please make sure you’re running the latest version (2.8.1) to access these features. (Permit Python)
Coming soon: We’ll be adding more user invite functions to the SDK. In the meantime, you can access all user invite functionality through our API: https://api.permit.io/scalar#tag/user-invites
Here is an example of usage
import asyncio
from permit import ElementsUserInviteApprove
from permit import Permit
permit = Permit(
token="permit_key_*************_________",
)
async def main():
approve_data = ElementsUserInviteApprove(
email="<mailto:user@gmail.com|user@gmail.com>",
key="<mailto:user@gmail.com|user@gmail.com>",
attributes={}
)
approved_invite = await permit.api.user_invites.approve(
user_invite_id="*******user_invite_id*****",
approve_data=approve_data
)
print("Success:", approved_invite)
asyncio.run(main())Jules Robichaud-Gagnon
09/11/2025, 5:18 PMusers --> user_invites
This:
await permit.api.users.approve(
user_key="new_user",
email="<mailto:new-user@example.com|new-user@example.com>",
invite_code="ed32bc43e2194a80a5ef5e0339943b44"
)
should be:
await permit.api.user_invites.approve(
user_key="new_user",
email="<mailto:new-user@example.com|new-user@example.com>",
invite_code="ed32bc43e2194a80a5ef5e0339943b44"
)
The code: https://github.com/permitio/permit-python/blob/main/permit/api/user_invites.pyShuvy Ankor
09/11/2025, 5:25 PMJules Robichaud-Gagnon
09/11/2025, 6:35 PMpermit support automation2
09/11/2025, 6:35 PMJules Robichaud-Gagnon
09/11/2025, 6:35 PMEli Moshkovich
09/11/2025, 6:40 PMShuvy Ankor
09/11/2025, 6:55 PMJules Robichaud-Gagnon
09/11/2025, 7:45 PMpermit support automation2
09/11/2025, 7:45 PMEli Moshkovich
09/11/2025, 7:51 PMJules Robichaud-Gagnon
09/11/2025, 7:59 PMJules Robichaud-Gagnon
09/11/2025, 8:03 PMOr Weis
09/11/2025, 8:07 PMJules Robichaud-Gagnon
09/11/2025, 8:29 PMJules Robichaud-Gagnon
09/11/2025, 8:32 PMShuvy Ankor
09/11/2025, 8:35 PMJules Robichaud-Gagnon
09/11/2025, 8:44 PMJules Robichaud-Gagnon
09/11/2025, 8:46 PMShuvy Ankor
09/14/2025, 12:11 PMJules Robichaud-Gagnon
09/22/2025, 3:17 PMOr Weis
09/22/2025, 3:34 PMJules Robichaud-Gagnon
09/22/2025, 3:35 PMJules Robichaud-Gagnon
09/22/2025, 3:36 PMOr Weis
09/22/2025, 3:37 PMJules Robichaud-Gagnon
09/22/2025, 3:39 PMShuvy Ankor
09/25/2025, 8:44 PMJules Robichaud-Gagnon
09/29/2025, 3:04 PMShuvy Ankor
09/29/2025, 3:06 PMJules Robichaud-Gagnon
09/29/2025, 3:07 PMShuvy Ankor
09/29/2025, 3:10 PMJules Robichaud-Gagnon
09/29/2025, 3:11 PMShuvy Ankor
09/29/2025, 3:12 PMJules Robichaud-Gagnon
09/29/2025, 3:15 PMOr Weis
09/29/2025, 3:26 PMAlon Boshi
09/30/2025, 3:42 PMJules Robichaud-Gagnon
09/30/2025, 8:33 PMPending Users toggled off, the spot in Element where the “pending users” would appear there is a 0 instead of a blank space (See Screenshot with the pointing arrow). Probably a templating issue.permit support automation2
09/30/2025, 8:33 PMJules Robichaud-Gagnon
09/30/2025, 8:34 PMJules Robichaud-Gagnon
09/30/2025, 8:44 PMThomas
09/30/2025, 9:04 PMAlon Boshi
10/01/2025, 9:19 AMAlon Boshi
10/06/2025, 7:09 AM