Team, roles and audit log
Invite people, assign and change roles, remove members, keep an eye on seats and check in the audit log who did what in the account.
In plain language
This page explains team and audit log. Under Team you decide who works in the account. You invite people and give them a role. The role decides what a person may do. You can change roles and remove people. The audit log shows who did what in the account and when.
All documentation topics
Under Team at app.xicbot.de/team you decide who works in the account and with which role. The Audit log at app.xicbot.de/protokoll shows who triggered which action in the account and when. This page covers the fields, messages and limits of both areas.
Where to find Team and the audit log
Team sits in the sidebar in the Administration group, together with Billing and Account. Every role can open the page: everyone sees members, seats and open invitations, but only Administration and Owner can change anything there. Audit log sits in the Records group and only appears from the Administration role upwards. Opening its address directly with a lower role shows “This needs at least the Administration role.”
The Help button in the header opens this page in a new tab from both screens. How the sidebar and header are laid out is described under The application.
Roles
Each person holds one role in an account. The four levels build on each other: each can do everything the level below it can. The table follows the What the roles can do box on the Team page.
| Role | What it allows |
|---|---|
| Read | View assistants, knowledge, tools, conversations, cases and analytics without changing anything. Conversations appear anonymised. |
| Edit | Additionally: create and change assistants and start check runs, work on conversations, inbox rules, tools up to your own level, maintain knowledge with sources, question-answer pairs, probe questions and search weights, catalogue and cases, and start and accept the setup. |
| Administration | Additionally: invite people, change roles and remove people, API keys and webhooks (create and change where the plan includes the API; revoke and delete even without it), activity log, retention periods, shop connection and visitor blocks. Also delete assistants and conversations, generate a new widget key, change address, access token and minimum role of tools, and object to a sub-processor. |
| Owner | Additionally: accept the data processing agreement and confirm the sub-processor list, change the handover address, order the weekly report, view conversations in plain text, export the account’s data and delete the account. The owner role is not assigned here. |
- The roles you can assign are Read, Edit and Administration. A user with Administration can assign any of these three, including Administration itself.
- The Owner is whoever created the account. This role cannot be assigned or changed on the Team page, and the owner cannot be removed there.
- You cannot change your own role. Another person with Administration, or the Owner, does that for you.
- Roles apply per account. Someone who belongs to several accounts can hold a different role in each; see Working in several accounts.
Messages when the role is too low
When someone attempts something their role does not allow, the message names the missing level:
| Required level | Message |
|---|---|
| Edit | “With the Read role this area is view-only. Changes need at least the Edit role.” |
| Administration | “This needs at least the Administration role.” |
| Owner | “Only the account owner can do this.” |
| other missing permission | “Your account does not have access to this area.” |
Seats
The Seats card shows how many seats are taken and how many the plan includes, for example “3 of 10 taken”. Every person listed under Members and every open invitation takes a seat, even before the invitation is accepted. Removed people and expired or withdrawn invitations do not count.
| Plan | Seats |
|---|---|
| Start | 3 |
| Pro | 10 |
What else each plan includes is described under Plans, quotas and billing; prices are listed under Pricing.
| Status | Shown on the card | Effect |
|---|---|---|
| Seats free | “2 of 3 taken” | Send invitation can be used. |
| All seats taken | “All seats are taken. Withdraw an invitation or move to a larger plan.” with the Change plan link to the section of the same name on the billing page | Send invitation is greyed out. |
| Count not available | “The count could not be measured.” | An invitation is refused with “The service reported an error. Please try again later.” |
If the limit is reached at the moment you press Send invitation, for instance because a colleague has just invited someone, the service refuses and names the plan and the numbers, for example “The Start plan limit is reached: 3 of 3. See Billing for the overview.” To free a seat, withdraw an open invitation or remove a person.
Invite someone
Only Administration and Owner see the Invite someone card. It has two fields:
| Field | Required | Rules |
|---|---|---|
| Email address | yes | A valid address of up to 190 characters. Surrounding spaces, capital letters and any suffix after “+” are dropped: Anna+Team@example.com becomes anna@example.com, and that is where the invitation goes. |
| Role | yes | Read, Edit or Administration. The default is Read. |
-
Step 1
Enter address and role
Enter the address under Email address and choose the level under Role.
-
Step 2
Send the invitation
Press Send invitation. While the service is working, the button reads “Sending …”.
-
Step 3
Check the confirmation
You then see “The invitation is on its way.”, the address field is cleared and the invitation appears under Open invitations. The Audit log gains a Person invited entry. If the message did not go out, you see “The invitation has been created, but the message did not go out. Withdraw the invitation and invite again.” instead. The invitation is still listed and takes up its seat.
Messages when inviting
| Cause | Message |
|---|---|
| Address missing, invalid or longer than 190 characters | A message about the Email address field below the button; no invitation is created. |
| The person already belongs to this account, even if their account address is written differently, for example with a suffix after “+” | “Email address already belongs to this team.” |
| An invitation is already open for this address | “Email address already has an open invitation.” |
| More than 5 invitation attempts within a minute | “Too many attempts. Please wait a moment.” |
| All seats taken | “The Pro plan limit is reached: 10 of 10. See Billing for the overview.” |
| Seats could not be counted | “The service reported an error. Please try again later.” |
| Audit log entry could not be written | “Not saved: the entry in the audit log could not be written. Please try again.” |
Messages about a field appear in the Invite someone card below the button; all others appear at the top of the page below the introduction. The limit of 5 attempts per minute applies to each signed-in person separately.
The invitation email
The invitation is sent by email to the address you entered, in the language stored with the inviting person's account, German or English; if none is set, in German. The link opens the acceptance page in the same language. The email contains:
- the subject “Invitation to join the … team” with your account name
- the name of the person who invited, if they have entered one
- a Role line with the assigned role
- the sentence “If you do not have an account yet, you create one when accepting; an existing account is linked to the team.”
- the Accept invitation button
- a note that the invitation is valid for 7 days and issued personally to the invited address
- the sentence “Not expecting this invitation? Then ignore this email – nothing happens without the link.”
Accepting an invitation
The link in the email leads to the Accept invitation page. At the top it names the account, the invited address and the role. What the page offers next depends on whether you are signed in and whether an account already exists for the address. After acceptance with a new account it takes you to the Team page; after acceptance while signed in it switches into the inviting account. If only the switch or loading the page fails afterwards, “You are now part of the team.” stays on screen and the Overview button takes you on; the invitation has then already been accepted and cannot be accepted a second time. The inviting account's audit log then shows Invitation accepted. All messages of the acceptance page are covered in Sign-in and access.
- No account yet: you create one on the page with Your name (optional), Password and Repeat password, then press Accept invitation. The password needs at least 12 characters, including letters and digits. The address is fixed and counts as confirmed. The new account works in the inviting account straight away and is listed there under Members.
- Account exists, not signed in: the page shows “An account already exists for this address. Sign in and you will be brought back here to accept the invitation.” and a Sign in button. After signing in, the app brings you back to this page; there you press Accept invitation.
- Already signed in: the page shows the Accept invitation button. Then “You are now part of the team.” appears, the app switches into the inviting account and rebuilds on the Overview; from then on you are listed there under Members. You reach your previous account through Switch account. If the inviting account is already your active account, the Team page opens instead.
- Signed in with an address other than the invited one: the page shows “This invitation belongs to a different address. Sign in with the invited account.” A suffix after “+” in your account's address does not count as a different address.
Open invitations
Open invitations lists every invitation that has not been accepted, withdrawn or expired, oldest first. Each row shows the address, the role and Valid until with the expiry date. If none is open, the list reads “No invitation is open.” If the team cannot be loaded when the page opens, “The list could not be loaded.” with the reason and the Load again button appear instead of seats, inviting, members and invitations; the overview of roles stays. If only the reload after an action fails, the last state stays and the same message appears above it.
- Only Administration and Owner see Withdraw. The invitation stops working at once, its seat is freed and “The invitation has been withdrawn.” appears. The audit log shows Invitation revoked.
- Anyone who opens the email link afterwards sees “This invitation has expired or was withdrawn. Please ask for a new one.”
- After 7 days an invitation expires on its own, drops out of the list and frees its seat.
- If the invitation has been accepted, has expired or was withdrawn in another window in the meantime, the page reloads the list and reports “This entry no longer exists. The list has been reloaded.” If the reload fails as well, “This entry no longer exists. Reload the page to see the current state.” appears instead; the list itself names the reason the loading failed with “The list could not be loaded.” and the Load again button.
Members
The Members list is sorted by email address. Each row shows the name if one has been entered, otherwise the address, with the address underneath. In your own row the role name is followed by “(You)”. If the account has more than 200 people, the list shows the first 200, with “The first 200 people are shown.” above it.
Administration and Owner see a role selector and a Remove button in every row except their own and the owner's. Everyone else only sees the role name.
- A new role takes effect as soon as you select it; there is no save button.
- You then see “The role has been changed.”, and the audit log gains a Role changed entry.
- If the service refuses, the message appears and the selector returns to the previous role.
- While a change is in progress, selectors and buttons are disabled.
| Cause | Message |
|---|---|
| Your own role | “You cannot change your own role here.” |
| The owner's role | “The owner cannot be changed or removed.” |
| Your role is below Administration | “This needs at least the Administration role.” |
| The person no longer belongs to this account; the list reloads | “This entry no longer exists. The list has been reloaded.” |
| Audit log entry could not be written | “Not saved: the entry in the audit log could not be written. Please try again.” |
Removing someone
After Remove, a dialog asks “Remove this person from the team? Open sessions end immediately.” and shows the address. Cancel closes it without changes, Remove carries out the action; you then see “This person no longer belongs to the account.” If the person no longer belongs to the account, for example because they were removed in another window, the page reloads the list and reports “This entry no longer exists. The list has been reloaded.” If the reload fails as well, “This entry no longer exists. Reload the page to see the current state.” appears instead; the list itself names the reason the loading failed with “The list could not be loaded.” and the Load again button. Removing someone has these effects:
- The person loses access to this account and their seat is freed.
- If they are currently working in this account, their sessions end at once, on every device. If they belong to another account, they continue there with the role they hold in that account after signing in.
- If they are currently working in another account, their session and work there stay untouched. They can no longer switch into this account.
- If they then belong to no account at all, their login is closed. They accept a new invitation to their address as if with a new account: with a new password, without their previous two-factor sign-in and without any stored security keys.
- The audit log shows Member removed.
Working in several accounts
A person can belong to several accounts, with a separate role in each. As soon as that is the case, the Switch account control appears. After switching, the role, team and audit log of the chosen account apply, and that account's audit log usually shows Account switched. The switch still applies if this entry cannot be written. Details are in Sign-in and access.
Audit log
The Audit log lists actions in the account with time and person, such as sign-ins, team changes, published assistants or viewed conversation content. Viewing lists and masked conversations and retrievals with an API key are not recorded. A knowledge source created with an API key, on the other hand, is usually recorded as Knowledge source created. Entries cannot be edited or deleted there; older entries are removed by the retention period you set. It is visible to Administration and Owner.
| Column | Content |
|---|---|
| Time | Date and time of the entry. |
| Action | The name of the action, such as Role changed. Hovering over it shows the technical name, such as team.role_changed. |
| Subject | The type of object affected, such as Invitation, User, Account or Assistant; “-” if none is affected. |
| Who | The email address of the person who acted, even if they have since been removed from the team. If a knowledge source was created with an API key, the key appears instead, with the name it had at that time, for example API key “Shop”. “-” if neither a person nor a key is behind the entry, as with the retention clean-up. |
| Details | The values the action recorded, each field with its technical name, such as reason for a reason given or rows for a number of rows; yes/no values appear as Yes or No. “-” if nothing was recorded. |
- The newest entries are at the top, 25 per page. The total appears above the table, for example “120 entries”.
- With more than one page, use Back and Next; between them you see the position, for example “Page 2 / 5”.
- The Filters card appears once the account has more than one kind of entry. Action only offers actions that already occur in your account; all clears the filter. Each new filter starts on page 1.
- Without entries, the page reads “No entries yet.” with a button to Legal and data.
Team entries
| Entry | Technical name | Subject | Written when |
|---|---|---|---|
| Person invited | team.invited | Invitation | an invitation is sent |
| Invitation revoked | team.invitation_revoked | Invitation | an open invitation is withdrawn |
| Invitation accepted | team.invitation_accepted | Invitation | the invited person accepts |
| Role changed | team.role_changed | User | a member's role is changed |
| Member removed | team.member_removed | User | a person is removed |
| Account switched | tenant.switched | Account | someone switches into this account; the entry is written in the target account |
Other entries
Other areas write to the audit log too. A selection, each with the page that describes the area:
| Area | Entries (selection) |
|---|---|
| Account and sign-in security | Signed in, Signed out, Password changed, Two-factor enabled, Security key added |
| Assistants | Assistant created, Version published, Widget key renewed, Check run performed |
| Knowledge | Knowledge source created, Knowledge source deleted, Question-answer pair changed, Probe questions run, Search weights changed |
| Conversations | Conversation content viewed, Conversation exported, Conversation deleted, Attachment opened, Visitor blocked, Visitor block lifted |
| Inbox and routing | Routing rule created |
| Tools | Tool created, Tool changed, Tool deleted |
| API keys and webhooks | API key created, API key revoked |
| Privacy and legal | Data processing agreement accepted, Data exported, Retention periods changed, Retention period applied |
Access to conversations and exports
Viewing conversation content in plain text, downloading data and deleting a conversation also show up in the Audit log. These entries tell you who accessed your visitors' content and when:
| Entry | Technical name | Subject | Written when |
|---|---|---|---|
| Conversation content viewed | conversation.revealed | Conversation | someone gives a reason and chooses Show plain text on a conversation |
| Conversation exported | conversation.exported | “-” for the list, Conversation for the history of a single conversation | the conversation list or the history of one conversation is downloaded as CSV |
| Conversation deleted | conversation.deleted | Conversation | a conversation is deleted |
| Data exported | privacy.export | “-” | the data export for the whole account is downloaded |
- For plain-text viewing, plain-text exports and deletions, the entry is written before the action takes place. If it cannot be written, no plain text is released and the conversation is kept; the API then responds with
500andnot_logged. - A masked export is delivered even if its entry cannot be written.
- Whether an export contained plain text, which reason was given and how many rows it held is shown in the Details column of the Audit log as
reveal,reasonandrows.GET /api/v1/activityreturns the same values in thedatafield. - How plain text, exports and deletion work in detail is explained under Conversations; the data export for the whole account is covered in Privacy and legal.
How far back the audit log reaches
You set the period under Legal and data, in the Retention periods section, in the Audit logs field: a number from 1 to 3650 days. If the field is empty, it reads “Nothing is deleted” and entries are kept. Zero days is not a permitted value.
- The same period applies to Login events; they cannot be set separately. Delivery records for webhooks and emails follow it as well.
- Older entries are removed by a job that starts once an hour. Before deleting, it writes Retention period applied, without a person; Details shows the kind of data as
objectand the number of deleted rows asrows. If this entry cannot be written, the job does not delete that part, and it usually follows with the next run. If a larger backlog is due, the job deletes it in parts and writes a separate entry for each part. - Every change to the periods is recorded as Retention periods changed.
- Retention periods can be changed by Administration and Owner.
All other periods and what happens on deletion are described in Retention and deletion.
API
Team and the audit log are also available through the API at https://app.xicbot.de/api/v1/. All endpoints here require authentication as described in API authentication and a confirmed address. Without confirmation the service answers 403 with email_unverified; with too low a role it answers 403 with role_too_low and the required role in required.
GET /api/v1/team
Members with id, name, email, role, available and available_at, up to 200 sorted by address, plus total and capped. Also the open invitations with id, email, role, expires_at and created_at, and the seat status in seats.
- Authentication
- Signed in, confirmed address
POST /api/v1/team/invitations
Sends an invitation. Fields email (required, up to 190 characters) and role (viewer, editor or admin). Returns 201 with the invitation. Refused with 422 and validation.already_member or validation.invitation_open on the email field, with 402 and plan_limit_reached including limit (here seats), allowed, used, plan and plan_name, or with 503 and plan_limit_unmeasured. If the audit log entry cannot be written, the change does not take effect: 500 with not_logged.
- Authentication
- Signed in, Administration or higher
- Rate limit
- 5 per minute per person
DELETE /api/v1/team/invitations/{id}
Withdraws an open invitation; the response has revoked set to true. If the invitation is no longer open, the service answers 404 with not_found. If the audit log entry cannot be written, the change does not take effect: 500 with not_logged.
- Authentication
- Signed in, Administration or higher
PATCH /api/v1/team/members/{id}
Sets a member's role, field role as for invitations; returns the member in member. Refused with 422 and not_self for yourself, 422 and owner_protected for the owner, or 404 and not_found if the person does not belong to this account. If the audit log entry cannot be written, the change does not take effect: 500 with not_logged.
- Authentication
- Signed in, Administration or higher
DELETE /api/v1/team/members/{id}
Removes a person from the account; if they are currently working in it, their sessions end. The response has removed set to true. Refusals as for changing the role. If the audit log entry cannot be written, the change does not take effect: 500 with not_logged.
- Authentication
- Signed in, Administration or higher
POST /api/v1/availability
Sets your own availability for handovers, field available with true or false; returns yourself in member. What it is for is described under Inbox and routing.
- Authentication
- Signed in, confirmed address
GET /api/v1/activity
The audit log, 25 entries per page, newest first. Parameters page (1 to 1000) and action (up to 80 characters). The response carries entries with id, time, action, who, who_kind, subject_type, subject_id and data, plus actions, total, page and pages. who is the email address of the person who acted or the name of an API key; who_kind states which with user or api_key and is null if there is neither.
- Authentication
- Signed in, confirmed address, Administration or higher
Accepting an invitation via team/invitations/accept and the public invitation endpoints are covered in Sign-in and access. Error format and rate limits are described in API basics and API limits, and the endpoints in context in Conversation and management endpoints.
Frequent questions
Why is the Send invitation button greyed out?
All seats on your plan are taken, and open invitations count towards them. Withdraw an open invitation or remove a person. A larger plan brings more seats, see Plans, quotas and billing. The button is also briefly disabled while an invitation is being sent.
How do I hand the Owner role to someone else?
Not on the Team page: the Owner is whoever created the account, and the role cannot be assigned or changed there. The highest role you can assign is Administration; what remains reserved for the owner is shown in the table under Roles.
The invitation did not arrive. What now?
Check the address under Open invitations; any suffix after “+” is dropped. Then withdraw the invitation and invite again. The new invitation carries a new link and is valid for another 7 days.
Why can I not change my own role?
Your own row has no selector, so that nobody accidentally removes the rights they would need to undo it. Another person with Administration, or the Owner, can change your role.
Why do I not see the Audit log item?
Audit log only appears in the sidebar from the Administration role upwards. If your email address is not confirmed yet, the item is shown but the page stays locked until it is.
Does an open invitation already take a seat?
Yes. Every open invitation takes a seat until it is accepted, expires or is withdrawn.
Ask it yourself, Assistant of this website
Automated assistant