Hi, how can we help you?

Find help articles, troubleshooting guides, and tutorials

Search

background
Talk to an Expert
background
Find any guide
image
Getting Started

Using Tekst for the first time? Find everything you need to know here.

image
FAQ

A collection of the most frequently asked questions.

image
Integrations

All information on our integrations.

logo

Can't find what you're looking for?

We're sorry to hear that. In case we've missed something, let us know!

Let us know
logo

Developer Portal

Find more developer information on our portal.

Go to developer section

Popular articles

Log in to Tekst

This guide outlines the various methods administrators and users can use to gain access to the Tekst platform.

Step 1: Navigate to the Tekst login page.

Begin by opening your web browser and navigating to your organization's Tekst login page (e.g., https://<yourcompany>.tekst.com).

Scherm­afbeelding 2025-04-25 om 10.24.32.png

Step 2: Enter an email address.

On the login page, click on the "Email" field to activate the input area and enter your email address.

Scherm­afbeelding 2025-04-25 om 10.27.36.png

Step 3: Enter your email address and password.

Enter your registered email address in the designated field, ensuring it is typed correctly. Then, click on the "Password" field and enter or paste your password. Double-check both entries for accuracy to ensure a successful login.

Scherm­afbeelding 2025-04-25 om 10.31.25.png

Step 4: Click on "Continue".

Once your email address and password are entered, click the "Continue" button. This step confirms your identity and initiates the login process.

Scherm­afbeelding 2025-04-25 om 10.43.40.png

Step 5: You are now logged in.

Congratulations! You have successfully logged into Tekst.
You now have access to the platform and can start exploring its features.

Scherm­afbeelding 2025-04-25 om 10.46.57.png

Step 6: Access your organization.

For a more personalized experience, proceed to access your organization. Click on your organization's name to seamlessly enter your Tekst workspace and begin collaborating with your team.

Scherm­afbeelding 2025-04-25 om 10.48.21.png

Step 7: Collaborate seamlessly.

Clicking on your organization's name grants you access to your Tekst workspace - a centralized hub for collaborative content creation. Within this space, you can easily work with team members, exchange ideas, and contribute to producing meaningful, high-impact content.

Scherm­afbeelding 2025-04-25 om 10.51.46.png

In conclusion, Tekst streamlines the login process, making it easy for users to access their workspaces quickly and begin collaborating efficiently.

See more
Customize your organization

This guide offers an overview of the elements you can customize on the Tekst platform - and how to do it.

Step 1: Navigate to the Tekst login page.

Open your web browser and navigate to your organization's Tekst login page (e.g., https://<yourcompany>.tekst.com).

Scherm­afbeelding 2025-04-25 om 10.24.11.png

Step 2: Go to settings

Once you logged in find and click on the option that says "Settings".

Scherm­afbeelding 2025-04-25 om 11.06.15.png

Step 3: Find and open organization.

Inside the settings menu, select the option called "Organization".

Scherm­afbeelding 2025-04-25 om 11.09.18.png

Step 4: Change the organization's name.

Locate the "Name" field and click on it. Then, enter your desired organization name.

Scherm­afbeelding 2025-04-25 om 11.10.25.png

Step 5: Save your updates.

Click on the "Save" button to save the changes you made to your organization's name.

Scherm­afbeelding 2025-04-25 om 11.11.35.png

Step 6: Upload the organization's logo.

Click on the "Choose File" button and select the file you’d like to use as your organization’s logo.

Scherm­afbeelding 2025-04-25 om 11.13.38.png

Step 7: Upload your logo.

Click the "Upload New File" button and select your new logo from your computer. 

Then, click "Save" to apply the changes to your organization's logo.

Scherm­afbeelding 2025-04-25 om 11.25.39.png

Congratulations! You’ve successfully customized your organization’s name and logo. You're now ready to explore the features and tools Tekst offers to support seamless collaboration and effective communication within your team.

See more
Reset your Tekst password

This guide outlines the steps to take if you find yourself locked out or simply want to enhance your account security.

Step 1: Access the logging page.

Start by navigating to the Tekst login page. 
You can do this by navigating to your organization's Tekst login page (e.g., https://<yourcompany>.tekst.com) in your web browser.

Step 2: Enter your E-mail.

Find the "E-mail" field on the login page and click on it to begin the login process. 

Type in the email address associated with your Tekst account.  Make sure it's the one linked to the account for which you need to reset the password.

Scherm­afbeelding 2025-04-24 om 16.48.24.png

Step 3: Initiate a password reset.

Below the email field, you'll notice a handy "Forgot password?" link. 
Click on it to initiate the password reset process.

Scherm­afbeelding 2025-04-24 om 16.53.18.png

Step 4: Provide a reset email

After clicking "Forgot password?" a new window will prompt you to fill in the email address where you wish to receive the password reset instructions. Enter the desired email address and click the "Continue" button to confirm your request. 

Scherm­afbeelding 2025-04-24 om 16.54.47.png

Step 5: Check your email and confirm reset

Next, go to your email inbox and look for a password reset message from Tekst. Open the email and click the "CONFIRM" button to proceed.

reset password 4.jpg

Step 6: Set a new password

Return to the Tekst website and locate the "New password" field. Click on it and create a new, secure password for your account. 

Before proceeding, make sure it meets all specified security requirements:

  • At least 8 characters

  • At least 3 of the following:

    • Lower case letters (a-z)

    • Upper case letters (A-Z)

    • Numbers (0-9)

    • Special characters

Re-enter your new password to confirm it matches the one you just entered.

Finally, click the "Reset password" button. Congratulations! Your password has been successfully reset. 
You can now log in to your Tekst account using your new credentials.

Scherm­afbeelding 2025-04-24 om 16.57.17.png

Remember to keep your password secure and unique to ensure the safety of your account. If you encounter any issues during this process, feel free to reach out to our support team for assistance.

See more
User roles

This guide will explain the different user roles and their access on the Tekst App. 

Tekst offers role-based access control to ensure users have the appropriate level of access and privileges based on their needs. The standard user role provides the essential permissions needed to navigate the platform and collaborate effectively within your organization.

Following are the standard roles:

Demo

Access: Demo users have restricted permissions and cannot make any changes. They are specifically designated for use within demo organizations.

Usage: Ideal for showcasing Tekst's capabilities without the ability to modify settings.

Reader

Access: Readers only have read access, and no changes can be made to settings.

Usage: This type of user is ideal for someone who just wants to see some information but does not have the ability to change anything in any way.

Contributor

Access: Contributors have read and write access. They can change the labels, rename the organization, invite other users, and add integrations. They cannot change others' roles, delete items, or access audit logs.

Usage: Contributors are individuals that are actively involved in creating an organization’s content but do not need to manage it administratively.

Admin

Access: Admins can access and modify all settings. There can be more than one Admin per organization.

Usage: Admins are suitable for individuals who need extensive access and control within the organization.

Outlook Only

Access: Outlook Only users can only log in on the Tekst Outlook App. They can view AI insights on emails - like tags, entities, and automated actions - without accessing the main Tekst web dashboard.

Usage: This role is ideal for team members who need email intelligence directly in Outlook but don't require full platform access.

Prerequisites: 

  • Your organization has an active Outlook integration configured.
  • AI models are deployed to provide email insights.
  • Users have Microsoft 365 or Outlook accounts.
Role Web Dashboard Outlook Add-in Editing Permissions
Outlook only No access Read-only insights None
Reader View analytics Full access None
Contributor View and edit Full access Workflows and models
Admin Full access Full access Everything

Contact Tekst for Custom Roles

If your organization needs more granular roles or specific permissions tailored to your use case, please consider contacting support@tekst.com. Our team can provide you with more details and help you establish roles that would meet your specific organizational requirements.

Now you know how to effectively scale user roles on Tekst. Just let us know if you have any questions or need further assistance, and we will be happy to help you out via support@tekst.com.

See more
Invite new users

This guide goes over the steps to invite new users to your Tekst organization.

Note that you need to be an admin or contributor to invite new users.

Step 1: Navigate to "Users"

On the Tekst platform, locate and click on the "Settings" option. This is typically found in the bottom navigation menu, providing access to various configuration and account management features.

Within the "Settings" section, find and click on the "Users" tab. This area is specifically designed for managing the users associated with your Tekst workspace.

Step 2: Click on "Add users"

Locate and click on the "Add users" option. This initiates the process of sending an invitation to the individual you want to join your Tekst workspace.

You can invite up to 25 users at once by entering multiple email addresses separated by commas.

Step 3: Enter the Email and assign a role

In the "Email" field, type the email address of the person you want to invite.

Assign one of the following roles for the invited users:

  • Admin has full access to the Tekst workspace, including admin settings, user management, and role changes.

  • Contributor has edit access to most modules, including the ability to invite new users, but cannot access admin settings.

  • Reader has read access to most modules, but cannot edit or invite users.

  • Outlook Only can only log in on the Tekst Outlook App, not on the web platform. This role is only available when your organization has an Outlook integration configured.

Now, you have successfully invited a new user to join your Tekst workspace. The invited person will receive an email with instructions on how to access and join the platform.

Optional: Delete or resend invitation

If you need to resend or delete the invitation for any reason, click on the person you wish to delete or resend the invitation to. Click on the trash can in the bottom left corner to retract the invitation or on the "Resend invite" button to resend the invitation.

If you encounter any issues or have further questions, contact Tekst support for assistance.

See more
Change user roles

The steps below will guide you through the process of changing a member’s role within your Tekst account. Whether you're promoting a user to a contributor or adjusting their role for specific responsibilities, Tekst offers a simple and intuitive way to manage user roles effectively.

Step 1: Navigate to "Users".

On the Tekst platform, locate and click on the "Settings" option. This is typically found in the bottom  navigation menu, providing access to various configuration and account management features.

Within the "Settings" section, find and click on the "Users" tab. This area is specifically designed for managing the users associated with your Tekst workspace.

Step 2: Change role

In the "Users" tab, you'll see a list of all the users linked to your Tekst account. Click the user whose role you want to change. In the column 'ROLE', you can switch the user role. 

Additional Tip:

Be sure to communicate any role changes clearly with your team members to ensure aligned expectations. Once you’ve selected a new role, a confirmation message will appear, confirming that the update has been successfully applied for each member.

Congratulations! You’ve successfully updated a team member’s role on Tekst.
If you have any questions or need further assistance, feel free to consult the detailed Scribe documentation or contact Tekst Support for personalized help.
Enjoy seamless collaboration within your Tekst workspace!

See more
Using the filter block in automations

The filter block lets you control automation flow based on conditions. When a condition is met, the automation continues to the next step. When it's not met, the flow stops.

Use filters to route emails, apply labels, or trigger actions based on sender, content, model predictions, or other criteria.

Add a filter block

In the automation builder:

  1. Hover over an existing block (like "Tekst Processing")

  2. Click the + icon that appears

  3. Select Conditions > Filter

Add a new block to the automation flow

Configure the filter

After adding the filter, set your condition:

  1. Select a variable from the dropdown (e.g., From > Email, Subject, Priority)

  2. Choose an operator (varies by data type - see below)

  3. Enter the value to check against

Configure filter condition with variable and operator

The configured filter appears with yes/no paths:

Configured filter block showing yes and no paths

Available operators

Operators change based on the variable type you select:

Text fields (email, subject, body, domain):

  • EQUAL / NOT_EQUALS

  • CONTAINS / NOT_CONTAINS

  • STARTS_WITH / ENDS_WITH

  • EXISTS / DOES_NOT_EXIST

Numbers (custom extracted fields):

  • EQUAL / NOT_EQUALS

  • GREATER_THAN / GREATER_THAN_OR_EQUALS

  • LESS_THAN / LESS_THAN_OR_EQUALS

  • EXISTS / DOES_NOT_EXIST

Arrays (predictions like category, tags):

  • CONTAINS_ANY / NOT_CONTAINS_ANY

  • IS_EMPTY / IS_NOT_EMPTY

Dates (message created, updated):

  • BEFORE / AFTER

  • EXISTS / DOES_NOT_EXIST

Most text operators are case-insensitive by default, so "urgent" matches "URGENT" or "Urgent".

How filters work

When an automation runs, the filter checks your condition:

  • Condition met (yes): Continue to the next block on the yes path

  • Condition not met (no): Stop the flow

Add another block to the yes path by hovering over the filter and clicking the + icon below the yes arrow.

Example: Label emails from a specific sender

Create a filter to check if the sender email equals support@tekst.com. On the yes path, add an "Add Labels" action to tag the email as "Important" in Outlook.

Complete automation flow with filter and label action

Condition examples

Filter by sender domain:

From > Domain EQUAL "tekst.com"

Check for urgent keywords:

Subject CONTAINS "urgent"

Route high-priority emails:

Priority EQUAL "HIGH"

Filter by category prediction:

Classification > Category CONTAINS_ANY "Order", "Invoice"

Check if attachment exists:

Attachments IS_NOT_EMPTY

Filter by date range:

Message Created At AFTER "2024-01-01"

Check custom extracted field:

Extraction > Customer ID EXISTS

Variables like Priority, Category, Intent, and Sentiment come from Tekst's AI model predictions on your messages.

Multiple conditions

Click + add condition in the filter block to combine multiple checks:

  • AND logic: All conditions must be true (e.g., From domain = "tekst.com" AND Priority = "HIGH")

  • OR logic: At least one condition must be true (e.g., Subject contains "urgent" OR Priority = "HIGH")

You can also chain multiple filter blocks sequentially for more complex routing.

Common use cases

  • Route emails from specific domains to different teams

  • Apply tags based on Tekst model predictions (priority, category, sentiment)

  • Trigger actions only for emails containing certain keywords

  • Filter by sender to automate replies or forwarding

  • Check if custom fields exist before processing orders or invoices

Chain multiple filters to handle complex routing. Each filter adds another condition to check sequentially.

Next steps

Combine filters with actions like "Forward Email," "Assign to Team," or "Send Reply" to build complete automation workflows. See Create your first automation flow for a step-by-step example.

See more
What are automations?

This article gives an overview of automations and how they help our customers define both simple and complex business rules. An automation consist of flows that define a set of conditions and actions. Both are explained in more detail below.

The power of automation in business communication

Automation in business communication helps streamline tasks and workflows, allowing teams to focus on complex, high-value interactions rather than repetitive administrative tasks. In Tekst, “automation” refers to a system that automatically manages and routes communication flows - such as emails and tickets - based on rules that you define, ensuring timely responses, organized inboxes, and faster resolutions.

What is an automation?

An Automation is a set of predefined actions that run without manual intervention. At its core, an automation operates based on triggers (events that activate the automation), conditions (rules that define what the automation should do) and actions (actions that define what actually needs to happen based on the condition). When triggers and conditions are met, Tekst will automatically carry out actions that you set up to manage and organize incoming messages.

For example, an automation could be set to sort and tag incoming customer support emails based on predictions and/or keywords. If the prediction “Billing” is made by the model, the automation could tag the email as “Billing” and assign it to the appropriate team.

Components of automations in Tekst

1. Triggers

A trigger is an event that starts an automation.
Triggers currently only include receiving a new email. In the future Tekst might add new triggers to start an automation. 

2. Conditions

Conditions specify the rules for the automation to work. They define the criteria that must be met for the automation to proceed. Common conditions might include predictions made by the model or include specific keywords in an email or subject or domain. An overview of all the possible conditions and their explanation can be found in the article on conditions.

3. Actions

Actions are the tasks the automation will complete when the conditions are met.
For example, an action might be to forward an email to a certain team, assign a priority level, or send an automatic reply. 

The actions that are presented to the person configuring the flow depend on the integration type that is used. Actions in a flow related to an outlook integration, will be different from Salesforce integrations, because the use cases are completely different.
We discuss the different type of actions in more detail in the designated article.

4. Apps

Apps are blocks that allow customers to define custom actions designed using TypeScript.
They enable customers to extend and personalize the automation capabilities within their workflows, giving them flexibility to tailor specific actions to fit unique business needs. By creating Apps, customers can go beyond the standard automation options, developing bespoke actions that handle more complex tasks, integrate with third-party systems or apply custom logic directly within the Tekst environment.

See more
Create your first automation flow

This article outlines all the steps required to setup your first flow.

The basic overview of flows is described in the "Discover Flows" article.

1. Create a new flow.

Go to yoursubdomain.tekst.com/automations and click "New Flow". The placement of this button depends on the view you use (grid or list view):

2. Select an inbox.

Select the required inboxes and hit "Apply". Flows can run on 1 or more inboxes but require at least one inbox to be configured. If you configure more then 1 inbox, they need to be the same type. You cannot mix Outlook and Zendesk in one flow for example. 

3. Build your first flow

You are now ready to build your flow. You can give the flow a name and a description and add more building blocks.

A possible building block is adding a label in Outlook.

This can be done by adding the condition for the email address. You can do this by hovering over the 'Tekst Processing' Block and clicking on the '+' icon:

This allows you to add new blocks. Select "Conditions" and click "Filter". In the Filter you can now add the required variable, which in this case is the email address.

You can now select the operators. In this case we want to validate whether the sender is EQUAL to support@tekst.com so that's the operator we'll use. 
The result will look like this:

The filter will result in a yes or no:

  • In case of no (the email did not come from support@tekst.com) we will stop the flow.
  • In case of yes (the mail did come from support@tekst.com), we can add a new block again by hovering over the circle and clicking the '+' button.

We now want to add the action "Add Labels". In this action block we can enter the label we want to add to the mail if the conditions above have been fulfilled. 
In this example we'll write 'Important'.

Congratulations, you have now built your first flow! 
The flow is now complete and looks like this:

See more
Add a human approval automation step

This guide goes over the steps to set up the human approval automation step and explains its functionality.

Prerequisites

In order to include a human approval step within your automation, you need to first:


Setting up the human approval step

Step 1: Select the Human Approval step

It can be found under the conditions steps.

Step 2: Fill in the variable that needs to be approved

Within the human approval settings a variable needs to be selected. This is the variable that will be shown to the end-user for approval.

Multiple variables can be selected and they can be all sorts of different types (message data, model data, a custom variable).

Step 3: Include information for the end-user

A label and a description can be added, which will be shown to the end-user who needs to approve the content of the variable. Optionally, it is possible to specify the type of variable that is used, which can be, for example, a CSV file. If set to auto, it will try to automatically detect the variable type and show it in a suitable way to the end-user.

Step 4: Specify follow-up paths

Finally, after completing setting up the human approval step, it is important to specify how the automation needs to continue when approved or rejected.


How it looks for the end-user

The automation approval step will be shown on two different places: within the messages module of Tekst itself and on the Outlook App side panel, which is the most useful option of the two, since you can view it within Outlook itself.

More info on how to install the Outlook app here.

If a CSV file is used as a variable, it is possible to edit it first before approving. The automation will then continue with the corrected CSV file.

See more
Analytics overview

This guide will explain the features of the Tekst Analytics overview, ensuring you can easily access and interpret the data to make informed decisions for your business. It predicts the topics, trends, and patterns emerging from your communications. 

The overview contains 3 main parts:

1. Volume insights

The volume insights offers a detailed view of the quantity of traffic over specific periods.
This allows you to monitor the number of messages sent and received, the response time, resolution time and much more.

By analyzing volume trends, you can gain insights into communication patterns, peak activity times, and shifts in focus areas. Whether you're tracking overall traffic or diving into specific topics, Volume Analytics helps you understand the scale and dynamics of your business communications, enabling more strategic decision-making.

Learn more about how Tekst provides volume insights here

2.  Topic Insights

Topic Insights gives you a deep understanding of the specific themes and topics driving your communication.

The custom model analyzes the content of your messages to identify the most prevalent subjects, emerging trends, and shifts in conversation focus. This feature helps you stay on top of what matters most to your business, allowing you to track the relevance of topics over time and respond proactively to changes in the communication landscape. With Topic Insights, you can better align your messaging with current priorities and enhance the effectiveness of your strategies.

3.  Message Feed

The Message Feed feature provides a real-time overview of your messages.

This allows you to see individual emails alongside their associated topic predictions, giving you immediate context for each communication. By viewing the Message Feed, you can quickly assess which subjects are being discussed, identify important trends, and gain a clear understanding of your email traffic's content flow. This feature streamlines the process of monitoring and managing your communications, making it easier to stay informed and responsive to the evolving needs of your business.

4. Topic Discovery

Topic discovery uses AI to analyze messages across your inboxes and automatically identify the most common topics your team handles. You can use discovered topics to bootstrap a classification model without manual setup.

Learn more about topic discovery.

See more
Volume insights

This guide will discuss what metrics are offered in the volume insights section on the Tekst dashboard. 
The volume insights offers a detailed view of the quantity of traffic over specific periods.
This allows you to monitor the number of messages sent and received, the response time, resolution time and much more.

The dashboard for volume insights contains 5 main components:

1. Group/inbox filter

2. Date range

3. Toggle between conversations, messages, first response time or resolution time

4. Participants

5. Messages

1. Group/Inbox Filter

This filter allows you to filter the metrics on inboxes and/or groups. 
Groups are a list of inboxes that can be created in the 'Inbox' section. By selecting a group, all the metrics will change to those that correspond with the data from that specific group.

The horizontal scroll bar contains all the groups that have been created and that are accessible by the user. 

Besides a group, you can also select 1 or more individual inboxes by opening the dropdown menu under "All". Select the inboxes you want to capture and click "Apply".

The default view of the dashboard displays data from all inboxes over a two-week period. 
You can change the default group by clicking on the desired group.

2. Date Range

Setting the date range allows you to view insights for a specific time period. You can choose from the following options:

  • 1 Week (7 days)
  • 2 Weeks
  • Month
  • Quarter
  • Year
  • Custom

The custom option allows you to select two dates to define a specific time frame. In the example below, the selection will return insights from July 1, 2024, 00:00 to August 27, 2024, 23:59.

Screenshot 2024-08-27 at 15.07.24.png

3. Conversations, messages, first response time and resolution time

3.1 Conversations

The dashboard displays the number of conversations that are received for the inboxes you have selected. A conversation can include multiple messages and is equivalent to a case in Zendesk or Salesforce, or a mail thread in Outlook.

By hovering over the chart, you can view the exact number of conversations, along with the value of the previous period.

3.2 Messages

The 'Message' tab gives the user an overview of the number of messages. A conversation can contain one or more messages. Customers can use this metric as an indicator as to how much time an agent has to spend (x amount of minutes per message) to solve a case. 
The higher the messages/conversations ratio is, the more messages an agent has to manage to solve a single case.

3.3 First response time

The first response time indicates how long it takes on average for an agent to respond to a new conversation.

When selecting the First Response Time (FRT), you can set the FRT target to be 1h, 6h, 12h, 24h, or 72h. This target will give you visibility on how many messages have been responded to within the target. As with conversations and messages, you can filter data for this metric on group level and on personal inbox level through the group/inbox filter as described in the first chapter of this article.

When reviewing the first response time, the right metric will change to 'Responded Rate' and 'Response Time'.

'Responded rate' is the number of messages that have been responded to for the chosen time range. 
Hovering over the bar will reveal the absolute numbers.

Screenshot 2024-08-29 at 11.52.40.png

'Response Time' gives an overview in percentage and absolute numbers. 
Changing the FRT target will correspond with the numbers in the graph. 

3.4 Resolution Time

Resolution time is the time it takes for an agent to resolve the case. 
This information is not available for every type of integration. Currently, Tekst provides resolution times for these integrations:

  • Zendesk
  • Salesforce
  • HubSpot

You can change the filter on the resolution time similar to the first response time to reflect the SLA's that you would like to review (1h, 6h, 12h, 24h, or 72h).

Rather then a 'Responded Rate' as displayed when reviewing the first response time, we can now review the 'Resolved Rate'. 
This gives the user an overview of the amount of tickets that have been resolved for the chosen time period.

4. Participants

The bar chart on the right, labeled "Participants," displays the number of people involved in each conversation. This provides insight into how many individuals are impacted by incoming messages.

A participant is counted when a unique user or email address appears in the "to," "from," "cc," or "bcc" fields of a message.

In the example below, 62% of conversations have 2 participants, meaning one person is sending a message to another person (or a shared account).

Generally, a higher number of participants may indicate that resolving the request requires involvement from multiple people, which could suggest inefficiencies and longer resolution times.

5. Messages

Below the 'Participants' chart we find the bar chart that gives an overview of the number of messages. Tekst works with conversations and messages. The messages bar chart gives an overview of the number of messages that are part of a conversation. If a conversation holds 2 conversations, this means that the agent was able to solve and close the ticket with just one response. This metric is a good way of knowing the number of times an agent has to work on a given ticket.

See more
View audit logs

Audit logs give you a detailed record of every significant action taken within your organisation. They help you monitor user activity, investigate security incidents, and maintain compliance by showing who did what, when, and from where.

Prerequisites

  • You must have the Admin role to access audit logs.

Access audit logs

On the Tekst platform, click Settings in the bottom navigation menu. Then select the Audit Logs tab to open the audit log overview.

You will see a paginated table showing the most recent audit events, with the newest entries displayed first.

Understanding the audit log table

The audit log table displays four columns:

  • Actor - The name of the user who performed the action, along with their IP address.
  • Action - The specific action that was performed (for example, user_create or flow_publish).
  • Type - The type of resource that was affected (for example, user, flow, or integration).
  • Date and time - The exact date and time the action occurred.

The table shows 10 entries per page. Use the pagination controls at the bottom of the table to navigate between pages. You can also change the number of entries per page by selecting 10, 25, 50, or 100 from the page size dropdown.

Filter audit logs

You can narrow down the audit log results using two filters located above the table. Filtered views are reflected in the URL, so you can bookmark or share a specific filtered view.

Filter by date range

Click the date filter button (calendar icon) to open the date range picker. Select a start date and end date to view events within that period. You can optionally set a specific time for more precise filtering. Click Apply to update the results, or Clear to remove the date filter.

Filter by action type

Click the action filter button to open a searchable dropdown of all available action types. Type to search for a specific action, then select it to filter the table. Only one action type can be selected at a time. To remove the filter, select All Actions.

View audit log details

Click any row in the table to open a detail panel on the right side of the screen. The detail panel contains two tabs:

Details tab

  • Actor - The name, user ID, and IP address of the person who performed the action.
  • Action - The action name and CRUD operation type (created, read, updated, or deleted).
  • Target - The type, name, and ID of the resource that was affected.
  • Date and time - Both the event creation time and the server insertion time.
  • Status - If the action was performed anonymously or if it failed, a status badge is displayed.
  • Description - A human-readable summary of what happened.

Raw JSON tab

This tab displays the complete audit log entry as raw JSON data, useful for technical investigation or when sharing details with your development team.

Tracked events

Tekst tracks a wide range of events across your organisation. For a complete list of every event type that appears in audit logs, see the "Audit log events reference" article.

If you have any questions or need help investigating a specific event, don't hesitate to contact our support team - we're here to help.

See more
Audit log events reference

This article lists every event type that Tekst records in the audit logs. Use this as a reference to understand what each action means when reviewing your audit log history. To learn how to access and filter audit logs in the Settings UI, see the "View audit logs" article.

Organisation

Action Description
organisation_create A new organisation was created.
organisation_update Organisation settings or name were updated.
organisation_delete An organisation was deleted.

User

Action Description
user_create A new user was added to the organisation.
user_update A user's profile, role, or group membership was updated.
user_delete A user was removed from the organisation.

Integration

Action Description
integration_create A new integration was created.
integration_update An integration's name, settings, or sync state was updated.
integration_delete An integration was deleted.
integration_access_control_update Access control settings were changed for an integration.

Flow

Action Description
flow_create A new flow was created.
flow_update A flow's name, description, or configuration was updated.
flow_delete A flow was deleted.
flow_publish A flow was published as a stable version.
flow_activate A flow was activated and started running.
flow_deactivate A flow was deactivated and stopped running.
flow_access_control_update Access control settings were changed for a flow.
flow_approval_create An approval request was created within a flow.
flow_approval_update An approval request was approved or rejected.

Model

Action Description
model_create A new model was created.
model_update A model's display name, description, or settings were updated.
model_delete A model was deleted.
model_publish A new model version was published.
model_access_control_update Access control settings were changed for a model.

Tag

Action Description
tag_create A new tag was created.
tag_update A tag was updated.
tag_delete A tag was deleted.

App

Action Description
app_create A new app was created.
app_update An app's settings were updated.
app_delete An app was deleted.
app_publish A new app version was published.
app_access_control_update Access control settings were changed for an app.

Invite

Action Description
invite_create A new user invitation was sent.
invite_update An invitation was re-enabled or resent.
invite_delete An invitation was deleted.
invite_accept An invitation was accepted by the invited user.

Account

Action Description
account_update A user updated their own account settings or name.
account_login A user logged in to the platform.
account_logout A user logged out of the platform.
account_password_reset A password reset was initiated.
account_mfa_update Multi-factor authentication enrollment was requested.

Process mining

Action Description
process_mining_delete Process mining data was cleared.

API key

Action Description
api_key_create A new API key was generated.
api_key_delete An API key was deleted.

Auth method

Action Description
auth_method_create A new authentication method (such as SSO) was created.
auth_method_update An authentication method's configuration was updated.
auth_method_delete An authentication method was removed.
See more
Set up the IP firewall

The IP firewall restricts access to your Tekst project so that only users connecting from approved IP addresses can log in. When enabled, any request from an IP address that is not on the allow list is blocked. Use this feature to limit access to your office networks, VPNs, or other trusted locations.

Prerequisites

  • A Tekst account with an Admin or Contributor role. Users with the Reader or Sales role cannot manage the IP firewall.

Enable the IP firewall

Step 1: Open the IP firewall settings

Go to Settings > Security. In the IP Firewall card, click Edit to open the IP allow list settings dialog.

Step 2: Add your IP addresses

Before enabling the firewall, add every IP address or range that should be allowed to access your project. In the dialog you will see a form with two fields:

  • IP Address - enter a single IPv4 address (for example 203.0.113.10), a CIDR range (for example 203.0.113.0/24), or an IP range (for example 203.0.113.1-203.0.113.50).
  • Description - enter a short label for the entry, such as "Amsterdam office" or "Company VPN". The description is required and can be up to 100 characters.

Click Add to add the entry to the list. Repeat this step for every network that needs access.

Your current IP address is detected automatically and shown with a Current badge in the table. You cannot remove your own IP address, which prevents you from accidentally locking yourself out.

Step 3: Enable the firewall

Toggle the Enable switch at the top of the dialog. A warning will appear reminding you that users connecting from IPs that are not on the list will be blocked.

Step 4: Save your changes

Click Save to apply the new settings. Once saved, the IP firewall is active and only the listed IP addresses can access the project.

Manage the allow list

To make changes after initial setup, go to Settings > Security, click Edit on the IP Firewall card, and update the list:

  • Add an entry - fill in the IP address and description fields and click Add.
  • Remove an entry - click the delete button next to the entry you want to remove. You cannot delete the entry that matches your current IP address.

Remember to click Save after making changes. If you close the dialog without saving, Tekst will warn you about unsaved changes.

Disable the IP firewall

Open the IP allow list settings dialog and toggle the Enable switch off. Your saved IP entries are preserved and will be applied again if you re-enable the firewall later.

Supported IP formats

The IP firewall accepts three formats:

Format Example Description
Single IP 203.0.113.10 Allows one specific address
CIDR range 203.0.113.0/24 Allows all addresses in the subnet
IP range 203.0.113.1-203.0.113.50 Allows all addresses between the two endpoints

Troubleshooting

If a user is blocked by the IP firewall, they will see an error message stating that their IP address is not in the allowed list. To resolve this:

  1. Ask the user for their public IP address.
  2. Go to Settings > Security > IP Firewall > Edit.
  3. Add the IP address or a range that includes it.
  4. Click Save.

If you have locked yourself out and cannot access the platform, contact Tekst support for assistance.

Tekst outbound IP addresses

If you need to allow traffic from Tekst to reach your own services (for example, webhook endpoints or custom step URLs), see Troubleshoot Firewall for a list of Tekst's fixed outbound IP addresses.

See more
Configure security settings

This guide will explain the different security settings and how to configure them in the Tekst App to ensure your sensitive information remains protected.

On the Tekst platform, locate and click on the "Settings" option. This is typically found in the bottom navigation menu, providing access to various configuration and account management features. Within the "Settings" section, find and click on the "Security" tab.

Compliance Settings

Messages can be viewed

When enabled, messages become visible on the Analytics page. This allows users to view sample messages related to specific (sub)topics. When disabled, no message content will be shown.

Compliance banner

The compliance banner serves as a warning to users that personally identifiable information (PII) may be visible. It encourages responsible handling of such data.

You can choose when the banner should appear: "Always", "First time only", or "Never" when viewing message data.

PII warning

When enabled, a PII warning is shown when inputting possible sensitive information.

Data can be exported

Enabling this option allows administrators to export analytics data. When active, an export field appears, providing access to a downloadable CSV file containing the relevant data. When disabled, no export can be made.

Authentication Settings

Automatic logout after time

Configure the automatic logout after a specified amount of time by clicking on the relevant bar. This adds an extra layer of security, automatically logging out the user after a set number of minutes. Adjust the number field to select the desired time in minutes according to your company needs.

Automatic logout after inactivity

Similarly, click on the bar next to this setting to automatically log out the user after a defined period of inactivity. Adjust the number field to select the desired time in minutes according to your company preferences.

Enforce multi factor authentication

This setting requires every user in the organization to enable a two factor authentication method. For a step-by-step setup guide, see Enabling Multi-Factor Authentication (MFA).

Default user role

All changes are automatically saved.

IP Firewall

The IP firewall restricts access to your project so that only users connecting from approved IP addresses can log in. When enabled, any request from an IP address that is not on the allow list is blocked.

For a detailed guide on enabling the firewall, managing the allow list, and supported IP formats, see Set up the IP firewall.

If you have any questions or run into any issues along the way, don't hesitate to contact our support team - we're here to help you get the most out of our secure platform.

See more
Enabling Multi-Factor Authentication (MFA)

This guide will go through the process of enabling MFA on your account.

Multi-Factor Authentication (MFA) adds an extra layer of protection to your account, ensuring that only you can access it, even if your password is compromised. 

Step 1: Navigate to "Account"

In the "Settings" page, go to the "Account" tab. This will take you to the section where you can manage various account settings, including the Multi-Factor Authentication setup.

Step 2: Enable MFA

Under the Authentication Settings, you can find the option to enable Multi-Factor Authentication. 

Step 3: Verification and confirmation.

Once you've completed the setup, you may be asked to verify your identity to ensure the Multi-Factor Authentication is functioning correctly.

For administrators: monitoring MFA status.

If you are an administrator, you have the capability to monitor the MFA status of members in your team. Simply navigate to the admin dashboard or designated admin section, where you'll find a list of team members and their respective MFA status.

If you ever need to make changes to your MFA settings or encounter any issues during the setup process, our support team is here to assist you.

See more
Switch to SSO authentication

This guide outlines how to authenticate users using Single Sign-On (SSO) instead of password authentication.

Prerequisites

Users who were added with password authentication will retain the ability to log in with their password even after SSO is enabled. Both authentication methods will work unless you disable password authentication organization-wide.

Make sure you have:

  • Admin access to your identity provider (Azure AD, Google, Okta, etc.)
  • Admin permissions in Tekst
  • Communication plan to inform users about the change

Step 1: Enable SSO for your organization

First, set up SSO authentication for your organization so users can log in with their work credentials:

  1. Navigate to Settings → SSO in your Tekst dashboard
  2. Click Create new SSO
  3. Select your identity provider and follow the setup guide:
  4. Complete the configuration and enable the SSO method

Once SSO is enabled, all users in your organization will see the SSO login option on the Tekst login page, even if they were originally added with password authentication.

Step 2: Communicate the change to users

Since Tekst doesn't automatically force users to switch authentication methods, you need to inform your team:

  1. Send an email to all users explaining that SSO is now available
  2. Provide clear instructions on how to log in with SSO:
    • Go to your organization's Tekst login page (e.g., https://<yourcompany>.tekst.com)
    • Enter their work email address
    • Click the SSO option (e.g., "Continue with Microsoft", "Continue with Google")
    • Complete authentication through their identity provider
  3. Let users know that their existing password will still work if they prefer

Create a short video or screenshot guide showing the new SSO login process. This helps users understand exactly what changed and reduces support requests.

Step 3: Verify users are using SSO

After enabling SSO, you can check which authentication methods your users are using:

  1. Navigate to Settings → Users
  2. Review the Authentication column in the members table
  3. Look for badges showing:
    • "UPA" means the user is still using password authentication
    • Provider names like "google", "microsoft", or "okta" indicate SSO usage

When a user logs in with SSO for the first time, their authentication methods are automatically updated to include the SSO provider. You'll see this reflected in the Authentication column.

Troubleshooting

Symptom Likely cause Resolution
User doesn't see SSO option on login page SSO method is not enabled in Tekst Go to Settings → SSO and ensure the SSO method is enabled and configured correctly
User sees "SSO not configured" error SSO metadata or certificates are incorrect Review your SSO configuration and update the Federation Metadata XML or certificates
User can't log in with SSO on mobile Certificate renewal or configuration issue Check that your identity provider's certificates are current and properly configured in Tekst
Authentication column still shows "UPA" after user logged in with SSO User hasn't actually logged in with SSO yet Confirm the user is clicking the SSO button, not entering their password on the login page

Limitations

  • Admins cannot manually change a user's authentication method - it updates automatically when the user logs in
  • Users added before SSO was enabled will retain password authentication unless they log in with SSO
  • There is no bulk migration tool to force all users to SSO
  • Both password and SSO authentication can coexist unless password authentication is explicitly disabled

Getting help

If you encounter issues switching users to SSO, collect the following information before contacting support:

  • The email address of affected users
  • The identity provider you're using (Azure AD, Google, Okta, etc.)
  • Screenshots of any error messages
  • Whether the SSO configuration was recently changed
  • Confirmation that SSO is enabled in Settings → SSO
See more
Connect Tekst via Gemini

This guide walks you through connecting the Tekst MCP server to Gemini CLI. Once connected, Gemini can use Tekst tools to retrieve process mining data, analytics, automation history, and more.

Before you begin

A Tekst admin must enable MCP access for your workspace first. In Tekst, go to Settings > Security, find the Model Context Protocol (MCP) section, and turn on Enable Model Context Protocol (MCP). Users cannot connect until this setting is on.

Once MCP is enabled, each user still needs to add the Tekst server to their Gemini CLI configuration and authenticate with their own Tekst credentials.

Prerequisites

Before connecting, make sure you have:

  • An active Tekst account with access to the workspace you want to connect
  • Gemini CLI installed and signed in
  • MCP enabled in your Tekst workspace (see above)

Tekst MCP server URL

The Tekst MCP server is available at:

https://mcp.tekst.com

The server uses the Streamable HTTP transport and supports OAuth 2.0 with dynamic client registration, so Gemini CLI can discover the required endpoints automatically.

Connect Tekst to Gemini CLI

There are two ways to register the Tekst MCP server: a one-line command, or editing your settings file directly.

Option 1: Add via the gemini mcp add command

  1. Open your terminal and run:
gemini mcp add tekst --httpUrl https://mcp.tekst.com
  1. Start Gemini CLI by running gemini in your terminal.

  2. Type /mcp to view the configured servers. Tekst appears in the list with a status indicating it needs authentication.

  3. Run /mcp auth tekst and follow the prompts. Your browser opens the Tekst login page - sign in with your Tekst credentials and authorize access.

  4. Once authenticated, /mcp shows Tekst as connected and lists the available tools.

Option 2: Edit settings.json manually

If you prefer to manage your Gemini configuration directly, add Tekst to the mcpServers block in ~/.gemini/settings.json (user scope) or .gemini/settings.json (project scope):

{
  "mcpServers": {
    "tekst": {
      "httpUrl": "https://mcp.tekst.com"
    }
  }
}

After saving the file, start Gemini CLI and run /mcp auth tekst to complete the OAuth flow.

Managing the connection

Gemini CLI provides several /mcp subcommands to manage your servers:

  • /mcp - List all configured MCP servers, their status, and the tools they expose
  • /mcp auth tekst - Start or refresh the OAuth login for Tekst
  • /mcp disable tekst - Temporarily disable the Tekst server without removing it
  • /mcp enable tekst - Re-enable the Tekst server

To remove the integration entirely, run gemini mcp remove tekst or delete the tekst entry from your settings.json.

Authentication and security

The Tekst MCP integration uses OAuth 2.0 with PKCE for secure authentication. When you connect, you sign in through the standard Tekst login page - your credentials are never shared with Gemini.

Key security details:

  • Gemini receives a scoped access token that only allows read access to your workspace
  • Your session is tied to a single workspace and cannot access other workspaces
  • Sessions expire after 30 minutes of inactivity
  • You can disconnect at any time with /mcp disable tekst or by removing the server from your settings

What happens after connecting

Once connected, you can ask Gemini questions about your Tekst workspace in natural language. For example:

  • "What processes do I have in Tekst?"
  • "Show me the automation execution history for my email routing flow"
  • "How many tickets were processed last week?"

Gemini will use the Tekst MCP tools to retrieve the relevant data and answer based on your actual workspace.

Troubleshooting

/mcp does not show Tekst

Confirm that the tekst entry was written to the correct settings.json (user-scope at ~/.gemini/settings.json or project-scope at .gemini/settings.json). Restart Gemini CLI after editing the file.

Authentication fails in the browser

  • Make sure your default browser is set correctly and pop-ups are allowed.
  • Check that no firewall or proxy is blocking the connection to mcp.tekst.com.
  • Run /mcp auth tekst again to restart the flow.

Tools are missing or return empty results

See the Tekst MCP Troubleshooting guide for general MCP troubleshooting, including session expiry, permission errors, and analytics query issues.

For additional help, contact Tekst support at support@tekst.com.

See more
Tekst MCP Overview

The Tekst MCP integration lets you connect your Tekst workspace to AI assistants like Claude and Microsoft Copilot Studio. Once connected, you can ask questions about your processes, automations, analytics, and AI models in natural language - and get answers grounded in your actual data.

What is MCP?

The Model Context Protocol (MCP) is an open standard that allows AI assistants to securely connect to external data sources and tools. Instead of copying data into prompts manually, MCP gives your AI assistant direct, read-only access to your Tekst workspace. It retrieves the information it needs to answer your questions on the fly.

What can you do with it?

With the Tekst MCP integration, your AI assistant can:

  • Analyze process mining data - throughput times, bottlenecks, and variant comparisons
  • Review automation execution history and diagnose failures
  • Run SQL queries against your analytics database to answer custom questions about ticket volumes, message trends, and automation performance
  • Inspect AI model details and performance metrics
  • Audit your integrations and team access

The integration is currently read-only. Your AI assistant can retrieve and analyze data but cannot make changes to your Tekst workspace.

Getting started

To start using the Tekst MCP integration:

  1. Connect your AI client - Follow the setup guide for your platform:

  2. Explore the available tools - See what data your AI assistant can access in the Available Tekst MCP Tools article.

  3. Try some examples - Not sure what to ask? The Tekst MCP Usage Examples article walks through common prompts and what happens behind the scenes.

Troubleshooting

If you run into issues connecting or using the integration, see the Tekst MCP Troubleshooting guide.

See more
Tekst MCP Troubleshooting

This article covers common issues you may encounter when using the Tekst MCP integration, and how to resolve them.

Authentication issues

"Unable to connect" or login page does not appear

  • Make sure you are using an MCP-compatible AI client (such as Claude or Microsoft Copilot Studio).
  • Check that your browser allows pop-ups, as the authentication flow opens a login page in your browser.
  • Try disconnecting and reconnecting the integration from your AI client's settings.

Session expired

Your Tekst MCP session expires after 30 minutes of inactivity. If your AI assistant reports that it cannot access your Tekst data, start a new conversation or reconnect the integration. Your client will prompt you to re-authenticate if needed.

Wrong workspace

The MCP session is locked to the workspace you authenticated with. If you need to access a different workspace, disconnect the integration and reconnect using credentials for the desired workspace.

Data access issues

"Tool not found" or missing tools

If your AI assistant reports that certain Tekst tools are unavailable, verify that:

  • The Tekst integration is still connected in your client's settings.
  • Your session has not expired (see above).
  • You have the necessary permissions in your Tekst workspace to access the requested data.

Empty results

If your assistant returns empty results when querying your data:

  • Confirm that the data exists in your Tekst workspace by checking the Tekst platform directly.
  • For analytics queries, make sure you are asking about a time range that contains data.
  • For process mining tools, verify that the process is not in draft status if you expect it to have data.

Permission errors

The tools available to you depend on your role in the Tekst workspace. If you receive a permission error, check with your workspace administrator to confirm your access level.

Analytics query issues

Query errors

When your AI assistant runs analytics queries on your behalf, errors can occur if:

  • The query references a column or table that does not exist. Ask your assistant to call the describe tables tool first to check the schema.
  • The query is missing a time filter. Analytics queries require filtering on a date or timestamp column.

Unexpected query results

If query results seem incorrect:

  • Ask your assistant to show you the SQL query it used so you can verify the logic.
  • Ask your assistant to sample the table first to understand the data format before running complex queries.

Connection issues in Claude Code

Command not recognized

Make sure you have the latest version of Claude Code installed. Update by running:

npm install -g @anthropic-ai/claude-code@latest

Authentication fails in terminal

If the browser-based authentication does not complete successfully:

  • Make sure your default browser is set correctly.
  • Try running the command again - the authentication flow will restart.
  • Check that no firewall or proxy is blocking the connection to mcp.tekst.com.

Connection issues in Microsoft Copilot Studio

Tools are not appearing

Make sure Generative Orchestration is enabled on your agent. MCP tools require this setting to be active in Copilot Studio.

Dynamic discovery fails

If the dynamic discovery OAuth option does not work, try the Dynamic or Manual OAuth configuration instead. See the Copilot Studio connection guide for detailed steps.

Getting help

If you continue to experience issues with the Tekst MCP integration:

  • Contact Tekst support at support@tekst.com
  • Include details about the AI client you are using, the error message you received, and the steps you took before the error occurred.
See more
Connect Tekst to Microsoft Copilot Studio

This guide walks you through connecting the Tekst MCP server to a Microsoft Copilot Studio agent. Once connected, your agent can use Tekst tools to retrieve process mining data, analytics, automation history, and more.

Before you begin

Two setup steps must be completed before users can interact with Tekst data through a Copilot Studio agent.

Step 1: Enable MCP in Tekst

A Tekst admin must enable MCP access for your workspace first. In Tekst, go to Settings > Security, find the Model Context Protocol (MCP) section, and turn on Enable Model Context Protocol (MCP). Users cannot connect until this setting is on.

Step 2: Add Tekst to your Copilot Studio agent

A Copilot Studio agent creator must add the Tekst MCP server to their agent. This is a one-time setup per agent - follow the steps below to complete it. Each agent that needs access to Tekst data requires its own MCP connection.

Prerequisites

Before you begin, make sure you have:

  • An active Tekst account with access to the workspace you want to connect
  • MCP enabled in your Tekst workspace (see above)
  • Access to Microsoft Copilot Studio with permissions to create or edit agents
  • Generative Orchestration enabled on your agent (required for MCP)

Connect using the MCP onboarding wizard

The recommended way to connect is using the built-in MCP onboarding wizard in Copilot Studio.

Step 1: Open the MCP wizard

  1. In Copilot Studio, open the agent you want to connect to Tekst. If you do not have an agent yet, click Agent on the home page to create one.

  1. Give your agent a name and click Create.

  1. Go to the Tools page.

  1. Click Add a tool.

  2. Under Create new, select Model Context Protocol.

Step 2: Configure server details

  1. Fill in the following fields:
  • Server name: Tekst
  • Server description: Access Tekst workspace data including process mining, automations, analytics, AI models, and integrations.
  • Server URL: https://mcp.tekst.com
  1. For authentication type, select OAuth 2.0.

  2. Select Dynamic discovery as the OAuth 2.0 type. The Tekst MCP server supports OAuth 2.0 dynamic client registration with discovery, which is the simplest configuration option.

  1. Click Create. Copilot Studio automatically discovers the required OAuth endpoints from the Tekst MCP server.

Step 3: Create a connection

  1. After clicking Create, the Connect to Tekst Platform dialog opens automatically.

  1. Click Create. A browser window opens for Tekst authentication. Sign in with your Tekst credentials and authorize access.

  2. Once the connection is established, click Add and configure to finish adding the Tekst MCP server to your agent.

Test the connection

After adding the server, the Tekst tools are automatically registered in your agent. To test:

  1. Open the Test panel in Copilot Studio.

  2. Send a message like "List me my automations in the Tekst platform."

  3. If prompted, click Open connection manager to sign in to Tekst.

  4. Once authenticated, the agent retrieves data from your Tekst workspace and responds.

Troubleshooting

Tools are not appearing

Make sure Generative Orchestration is enabled on your agent. MCP tools require this setting to be active.

Authentication fails

Verify that your Tekst account has access to the workspace you want to connect.

Dynamic discovery does not work

If dynamic discovery fails, try the Dynamic OAuth option instead and manually provide:

  • Authorization URL: The URL shown at https://mcp.tekst.com/.well-known/oauth-authorization-server
  • Token URL: The token endpoint from the same discovery document

For additional help, contact Tekst support at support@tekst.com.

See more
Connect Tekst via Claude

Tekst provides a remote MCP server that gives your AI assistant direct access to your Tekst data. This means you can ask questions about your processes, integrations, automations, analytics, and AI models - and get answers grounded in your actual Tekst workspace.

This guide explains how to connect your Tekst account to any MCP-compatible AI client.

Before you begin

A Tekst admin must enable MCP access for your workspace first. In Tekst, go to Settings > Security, find the Model Context Protocol (MCP) section, and turn on Enable Model Context Protocol (MCP). Users cannot connect until this setting is on.

Once MCP is enabled, each user still needs to add the Tekst connector to their AI platform and authenticate with their own Tekst credentials. Follow the connection steps below for your specific client.

Prerequisites

Before connecting, make sure you have:

  • An active Tekst account with access to the workspace you want to connect
  • An AI assistant or platform that supports MCP (such as Claude or Microsoft Copilot Studio)
  • MCP enabled in your Tekst workspace (see above)

Tekst MCP server URL

The Tekst MCP server is available at:

https://mcp.tekst.com

Use this URL when configuring the connection in your MCP client. The server uses the Streamable HTTP transport.

Connect via Claude

Claude.ai

  1. Go to Claude.ai and sign in.

  2. Go to Customize and open the Connectors section.

  3. Click +, then select Add custom connector.

  1. Enter Tekst as the name and https://mcp.tekst.com as the server URL. You do not need to provide any OAuth credentials - leave those fields empty.

  1. Click Add, then click Connect.

  2. You will be redirected to the Tekst login page. Sign in with your Tekst credentials and authorize access.

Claude Desktop

The steps for Claude Desktop are the same as for Claude.ai - follow the Claude.ai steps above.

Claude Code

  1. Open your terminal and run the following command:
claude mcp add --transport http tekst https://mcp.tekst.com
  1. Start Claude Code by running claude in your terminal.

  2. Type /mcp to open the MCP management menu. Tekst appears in the list with a warning that it needs authentication.

╭─────────────────────────────────────────────────────────────╮
│                                                             │
│ Status: △ needs authentication                              │
│ Auth: ✘ not authenticated                                   │
│ URL: https://mcp.tekst.com                                  │
│ Config location: /Users/<you>/.claude.json                  │
│                                                             │
│ ❯ 1. Authenticate                                           │
│   2. Disable                                                │
╰─────────────────────────────────────────────────────────────╯
  1. Select Authenticate and follow the prompts to sign in with your Tekst credentials in your browser.

Connect via other MCP clients

Most MCP-compatible AI clients follow a similar pattern:

  1. Open your client's settings or integrations page.

  2. Add a new MCP server with the URL https://mcp.tekst.com.

  3. Select Streamable HTTP as the transport type if prompted.

  4. When prompted for authentication, select OAuth 2.0. The Tekst MCP server supports OAuth 2.0 with dynamic client registration, so your client can automatically discover the required endpoints.

  5. You will be redirected to the Tekst login page. Sign in with your Tekst credentials and authorize access.

  6. Once authorized, the Tekst tools become available in your conversations.

For platform-specific instructions, see Connect Tekst to Microsoft Copilot Studio.

Authentication and security

The Tekst MCP integration uses OAuth 2.0 with PKCE for secure authentication. When you connect, you sign in through the standard Tekst login page - your credentials are never shared with your AI assistant.

Key security details:

  • Your AI assistant receives a scoped access token that only allows read access to your workspace
  • Your session is tied to a single workspace and cannot access other workspaces
  • Sessions expire after 30 minutes of inactivity
  • You can disconnect the integration at any time from your AI client's settings

What happens after connecting

Once connected, you can ask your AI assistant questions about your Tekst workspace in natural language. For example:

  • "What processes do I have in Tekst?"
  • "Show me the automation execution history for my email routing flow"
  • "How many tickets were processed last week?"

Your AI assistant will use the Tekst MCP tools to retrieve the relevant data and provide you with answers.

See more
Available Tekst MCP Tools

This article lists all the tools available through the Tekst MCP server. All tools are currently read-only - your AI assistant can retrieve and analyze your data but cannot make changes to your Tekst workspace.

Users

  • List users - Lists all members of the organisation, including their email addresses and roles. Supports pagination.

AI models

  • List models - Lists all AI models in your workspace (classification and extraction), including their names and statuses. Returns summary fields only - use Get model details for full information. Supports pagination.

  • Get model details - Returns detailed information about a specific AI model. For classification models, the response includes the model's labels (tags). For extraction models, it includes the model's entities. The modelKind field indicates which type was returned.

Integrations

  • List integrations - Lists all active data source integrations (such as Zendesk, Salesforce, Gmail, and others), including their names and types. Returns summary fields only - use Get integration details for full information. Supports pagination.

  • Get integration details - Returns configuration and sync status for a specific integration.

Process mining

  • List processes - Lists all active process mining processes (discovered workflows), including their names, draft status, linked integrations, and throughput time target. Supports pagination.

  • Get activities - Lists all activities (steps) discovered in a specific process. Activities can be classification-based (from message content) or system-based (such as tag added or thread closed). Returns each activity's name, type, visibility status, occurrence count, and description. Also indicates whether each activity was manually added - only manually added activities can be removed. Supports pagination.

  • Get process graph - Returns details for a specific process, including name, draft status, linked integrations, number of discovered variants, and throughput time target. Use Get graph paths to retrieve the actual variant paths with per-edge metrics.

  • Get graph paths - Returns individual paths (variants) through a process. Each path includes the sequence of activities, case frequency, and throughput time per edge. Supports filtering by time range and integration, and sorting by case frequency, throughput time, or path length. Returns a link to view the variant in the Tekst UI when available.

  • Get totals - Returns aggregate KPIs across all processes, including total case frequency, average throughput time, and the number of paths meeting the throughput time target. Supports time-range filtering.

Analytics

  • Describe tables - Returns the schema (column names, ClickHouse types, and descriptions) for all available analytics tables. Tables must always be prefixed with analytics. in queries (for example, analytics.mcp_threads). Always call this before running a query to confirm which columns and types exist. When aggregating data, always include a filter on thread_time, message_created_at, or day to limit the time range and avoid slow or timed-out queries.

  • Query analytics - Executes a read-only SQL query against the ClickHouse analytics database. Tables must be prefixed with analytics. (for example, analytics.mcp_threads). Always include a filter on thread_time, message_created_at, or day to scope queries to a time range when aggregating data. Use this to answer custom questions about your ticket data, message volumes, and automation performance.

  • Sample table - Returns a sample of rows from one of the core analytics tables (mcp_threads, mcp_messages, or mcp_automation_block_runs) so you can inspect the data before writing a query. Note: sampling rows does not replace calling Describe tables - always describe the schema before running a query.

Automations

  • List automations - Lists all automation flows in your workspace, including their names and running status. Returns summary fields only - use Get automation details for full information. Supports pagination.

  • Get automation details - Returns full details for a specific automation flow, including its blocks, creator, connected integrations, and aggregate success/failure stats over a recent time window.

  • Get Automation Monitor - Returns the execution history for a specific automation flow. Each entry represents a thread run with its status and block results. Supports filtering by block and status, with pagination.

  • Get Automation Run - Returns detailed information about a single automation run, including individual block results, the integration, and the thread involved. Use Get Automation Monitor first to find run IDs.

  • List available block types - Lists all block types that can be used when building an automation flow. Supports minimal or full detail, including configuration schemas. You can also filter by specific block types.

  • List available actions - Lists actions available for an automation flow or a specific integration, including any custom actions. Supports filtering by flow, integration, or search query.

  • Get action schema - Returns the parameter schema for a specific integration action or custom action, including what parameters are required and what values are valid.

  • Get condition schema - Returns the condition group schema, valid variables, and operators for building condition blocks in an automation flow.

See more
SAP S/4HANA Integration via CPI

Seamlessly connecting the Tekst platform with SAP S/4HANA via SAP Cloud Integration (CPI) is a streamlined process designed for secure and efficient data exchange. By utilizing the OAuth v2 standard on the Tekst platform, you establish a robust security foundation. Once the specific iFlows are imported into CPI and the connection is verified, the integration is ready for immediate use.

Overview

Tekst integrates with SAP S/4HANA through SAP Integration Suite (CPI) for two simple use cases:

  • GET master data on demand (customers, materials, pricing, ...)
  • POST sales orders into SAP

Architecture

Tekst Cloud  <-- HTTPS + OAuth 2.0 -->  SAP BTP
                                         |
                                         v
                                  Integration Suite (CPI iFlows)
                                         |
                                         v
                                  Cloud Connector (if on-premise)
                                         |
                                         v
                                  SAP S/4HANA (OData / BAPI)

The Tekst Cloud sends GET /masterdata and POST /salesorder requests to SAP BTP. Integration Suite (CPI iFlows) processes those calls, optionally routes them through a Cloud Connector when S/4HANA is on-premise, and then talks to SAP S/4HANA over OData or BAPI.

OAuth 2.0 flow

How it works

  1. User clicks "Connect SAP" in Tekst
  2. Redirect to SAP BTP login (/oauth/authorize)
  3. User logs in with SAP credentials
  4. User approves Tekst access on consent screen
  5. SAP redirects back with authorization code
  6. Tekst exchanges code for access token + refresh token
  7. Tekst uses token for all subsequent API calls

Endpoints

Authorization:
https://{subdomain}.authentication.{region}.hana.ondemand.com/oauth/authorize

Token:
https://{subdomain}.authentication.{region}.hana.ondemand.com/oauth/token

Token refresh

  • Access tokens expire (typically 12 hours)
  • Tekst automatically refreshes using the refresh token
  • User never needs to re-authenticate

API calls via CPI

Master data (GET)

Tekst requests master data on demand - no caching, no sync.

GET https://{customer-cpi-host}/http/tekst/masterdata/customers?id=1000123
Authorization: Bearer {access_token}

Response:
{
  "customerId": "1000123",
  "name": "Acme Corp",
  "address": "...",
  "creditLimit": 50000,
  "paymentTerms": "NET30"
}

Available master data endpoints:

  • /masterdata/customers - Customer master (KNA1)
  • /masterdata/materials - Material master (MARA/MAKT)
  • /masterdata/partners - Business partners

Sales order (POST)

Tekst creates sales orders directly in SAP.

POST https://{customer-cpi-host}/http/tekst/salesorder
Authorization: Bearer {access_token}
Content-Type: application/json

{
  "orderType": "OR",
  "soldToParty": "1000123",
  "purchaseOrderNumber": "PO-2025-001",
  "requestedDeliveryDate": "2025-12-15",
  "items": [
    {
      "material": "MAT-001",
      "quantity": 10,
      "unit": "PC"
    }
  ]
}

Response:
{
  "salesOrderNumber": "0000012345",
  "status": "created",
  "netValue": 1500.00,
  "currency": "EUR"
}

CPI iFlow setup

What the customer needs

Component Purpose
SAP BTP Account Hosts Integration Suite
Integration Suite Runs the iFlows
Cloud Connector Only if S/4HANA is on-premise
Destination Points to S/4HANA system

iFlow deployment

Tekst provides pre-built iFlow packages that customers import into their CPI tenant:

  1. Download .zip from Tekst portal
  2. Import in CPI Design workspace
  3. Configure destination (select their S/4HANA)
  4. Deploy

Time: 5-10 minutes

What the iFlows do

iFlow Function
Tekst_MasterData Receives GET requests, calls S/4 OData, returns JSON
Tekst_SalesOrder Receives POST, calls BAPI_SALESORDER_CREATEFROMDAT2, returns result

Security

Aspect Implementation
Authentication OAuth 2.0 (no passwords stored)
Authorization User grants explicit consent
Transport HTTPS/TLS 1.3
Token storage Encrypted at rest in Tekst
Revocation User can disconnect anytime in SAP BTP
Audit All calls logged by SAP

Customer onboarding

Step Description Time
1 Click "Connect SAP" in Tekst, redirects to SAP login 30 sec
2 Login & approve access, OAuth tokens exchanged 30 sec
3 Import iFlow package to CPI, deploy iFlows 5 min
4 Test connection, Tekst verifies API access 10 sec
Ready to use Total time: 10 min

Requirements summary

Customer responsibilities

  • SAP BTP with Integration Suite
  • Cloud Connector (if on-premise S/4HANA)
  • S/4HANA system with OData services enabled

Tekst responsibilities

  • OAuth 2.0 client (registered in SAP BTP)
  • Token management (secure storage + auto-refresh)
  • API client for CPI endpoints

Summary

What How
Get master data GET request to CPI, returns JSON
Create sales order POST request to CPI, creates in SAP
Authentication OAuth 2.0 via SAP BTP
Middleware SAP Integration Suite (CPI)
Setup time ~10 minutes
Maintenance None (SAP-managed infrastructure)
See more
Connect SAP S/4HANA via BTP Service Key

Connect your SAP S/4HANA system to Tekst using SAP BTP service key credentials. This enables Tekst to execute iFlows and automate workflows across your SAP environment.

You'll need access to your SAP BTP Cockpit and permissions to view or create service keys for an SAP Process Integration Runtime instance.

Step 1: Choose Service Key Connection

In Tekst's connection setup, select Service Key Connection as your authentication method.

SAP User Login is not yet available. Use Service Key Connection for all SAP S/4HANA integrations.

Step 2: Find Your Service Key in SAP BTP Cockpit

Navigate to Your Service Instance

  1. Log into your SAP BTP Cockpit

  2. Select your Subaccount

  3. Click Instances and Subscriptions in the left sidebar

SAP BTP Cockpit showing Instances and Subscriptions page with SAP Process Integration Runtime service listed

Look for the SAP Process Integration Runtime service in the Instances section (Service Technical Name: it-rt).

You must use an SAP Process Integration Runtime instance. This service provides the permissions needed to execute iFlows with Tekst.

Access the Service Key

  1. Click the SAP Process Integration Runtime instance name to open details

  2. Navigate to the Service Keys tab

  3. If no service key exists, click Create to generate one

  4. Click your service key name or the View button to display the JSON

Service key details showing JSON credentials including client ID, client secret, token URL, and runtime URL

Identify the Four Credential Values

Your service key JSON contains these four required values:

{
  "oauth": {
    "clientid": "sb-xxxxx...",
    "clientsecret": "xxxxx...",
    "tokenurl": "https://your-tenant.authentication.sap.hana.ondemand.com/oauth/token",
    "url": "https://your-tenant.it-cpitrial06-rt.cfapps.us10-001.hana.ondemand.com"
  }
}

Keep this window open while you enter credentials in Tekst.

Step 3: Enter Credentials in Tekst

Copy the values from your service key JSON into Tekst's connection form:

Tekst Field

SAP JSON Field

Pattern to Verify

Client ID

clientid

Starts with sb-

Client Secret

clientsecret

UUID format (with $ suffix)

Token URL

tokenurl

Contains authentication.sap.hana.ondemand.com

CPI Runtime URL

url

Contains it-cpi

Copy and paste values exactly as they appear in the JSON to avoid authentication errors.

Click Save & Test Connection to verify your credentials.

Step 4: Verify Connection

If credentials are correct, you'll see confirmation that your SAP S/4HANA connection is established. You can now run integrations and automations across your SAP environment.

Connection successful! Tekst can now execute iFlows and automate workflows in your SAP S/4HANA system.

See more
Inbox groups

Inbox groups let you organize your integrations into named collections. Once created, groups appear across the platform - most notably in Analytics, where they let you view metrics for a specific set of inboxes at a glance instead of filtering one by one.

Prerequisites

  • Role permissions: SUPPORT or ADMIN role. Users with the READER role cannot create or modify groups.

Creating a group

Step 1: Open the integration side panel

Navigate to the Integrations page from the main navigation menu. Click on any integration row to open its side panel.

Step 2: Add a group

In the side panel, locate the Groups field. Start typing a group name:

  • If the group already exists, select it from the autocomplete suggestions
  • If the group does not exist yet, type the full name and select the + new group option to create it

The integration is immediately added to the group. You can assign multiple groups to a single integration.

Step 3: Save your changes

Click Save to confirm the group assignment.

Adding multiple integrations to a group at once

You can also assign groups in bulk from the Integrations table:

  1. Select one or more integrations using the checkboxes in the table
  2. Click the Actions dropdown that appears
  3. Select Add to group
  4. Type a group name or select an existing one, then confirm

All selected integrations are added to the chosen group.

Viewing groups in the Integrations table

The Integrations table includes a Groups column that displays each integration's group memberships as badges. You can filter the table by group using the column header filter to quickly find all integrations belonging to a specific group.

Using groups in Analytics

Groups are designed to give you a quick, high-level view of performance across related inboxes in Analytics.

Group filter bar

At the top of the Analytics dashboard, a horizontal scroll bar displays all available groups. Each group shows the number of new conversations in parentheses next to its name.

Click a group to filter the entire dashboard - volume insights, topic insights, and the message feed - down to only the inboxes in that group.

Setting a default group

To set a group as your default view, click on it in the filter bar. The platform remembers your last selected group per organization, so the next time you open Analytics, it loads that group automatically.

Pinning groups

If you have many groups, you can pin the ones you use most often so they always appear first in the filter bar. Click the pin icon next to a group name to pin or unpin it.

Filtering by individual inboxes

Besides selecting a group, you can also click All in the filter bar and manually pick individual inboxes from the dropdown. Select the inboxes you want and click Apply.

Using groups in the message feed

When viewing messages in the message feed, you can filter by group:

  1. Open the inbox filter
  2. Switch to the Groups tab
  3. Select one or more groups to show only messages from inboxes in those groups

Removing a group from an integration

To remove a group assignment, open the integration side panel, locate the Groups field, and click the x on the group badge you want to remove. Save your changes.

If a group is removed from all integrations, it no longer appears anywhere on the platform.

See more
Add an Integration

This guide walks you through connecting integrations to Tekst. You'll learn how to add providers like Salesforce, Outlook, SAP, and others to automate workflows across your systems.

Prerequisites

Before connecting an integration, ensure you have:

  • Role permissions: SUPPORT or ADMIN role (READER role has view-only access)
  • Provider account: Active account with the service you're connecting (e.g., Microsoft 365 for Outlook, Salesforce org)
  • Authentication credentials: Depending on the provider, you may need API keys, client credentials, or admin consent for OAuth
  • Network access: Ability to authorize redirects to Tekst's callback URLs

Some integrations require provider-specific setup. Check provider-specific guides for detailed prerequisites.

Step 1: Navigate to Integrations

On the Tekst platform, locate and click on the "Integrations" option. This is typically found in the bottom  navigation menu.

Step 2: Add a New Integration

To connect a new provider:

  1. Click the Add Integration button in the top-right corner of the Integrations page
  2. A modal appears showing available providers (e.g., Outlook, Salesforce, SAP, HubSpot, Zendesk)
  3. Select the provider you want to connect by clicking its card
  4. A connection modal opens

Step 3: Enter Connection Details

The connection form varies by provider, but typically includes:

  • Email or username: Your account identifier (e.g., john.doe@tekst.com)
  • Authentication method: OAuth (most common) or API credentials (username/password for services like SAP)
  • Optional settings: Tenant ID, domain, environment type (production/sandbox for Salesforce)

Fill in the required fields (marked with a red asterisk) and click Connect to proceed.

Step 4: Authorize Access

Most integrations use OAuth for secure authentication:

  1. After clicking Connect, you're redirected to the provider's authorization page
  2. Log in to your provider account if prompted
  3. Review the permissions Tekst is requesting (e.g., read/write mail, access cases)
  4. Click Authorize or Grant Consent to allow access
  5. You're automatically redirected back to Tekst's setup wizard

Tekst does not store your data. All processing happens in real-time, ensuring GDPR compliance and enterprise security standards.

Step 5: Configure Integration Settings

After authorization, the setup wizard guides you through configuration:

  1. The wizard displays steps in a sidebar (e.g., "Connect Account" → "Configure Settings" → "Review")
  2. A progress bar shows your advancement through the setup process
  3. Complete each step:
    • Connect Account: Verify your authenticated account details
    • Configure Settings: Select objects, folders, or data sources to sync (e.g., which Salesforce cases or Outlook mailboxes to monitor)
    • Review: Confirm your settings before finalizing
  4. Click Next to advance between steps, or click Finish on the final screen to save your configuration

Editing a previous wizard step resets information entered in subsequent steps. A warning modal will appear to confirm this action before proceeding.

Step 6: Start Syncing

Once you click Finish, Tekst initiates the sync process:

  • The integration status updates to Connected (displayed as a green badge in the integrations table)
  • A progress bar shows the initial sync status
  • Optionally, you can enable backfilling to sync historical data

You can now navigate back to the Integrations page to view your active connection. The table displays real-time sync status and health information.

Understanding Integration Statuses

After connecting, your integration can display different statuses:

  • Connected (green): Integration is active and syncing data
  • Disconnected (red): Authentication failed or credentials expired. Click the status to reconnect.
  • Unconfigured (yellow): Setup wizard was started but not completed
  • Unhealthy: Sync errors occurred (e.g., API limits exceeded, permission issues). Check the status comment for details.
See more
Update an integration

This article guides administrators through the steps to update integrations effectively within the Tekst platform.

Step 1: Go to the "Integrations".

Navigate to Settings > Integrations in your Tekst dashboard. This section can be found in the bottom left corner on the Tekst App. In this section, you can customize and manage the integrations. 

Step 2: Update integration

While on the Integrations page, simply click the on the desired integration to modify its properties. A side panel will open with the information of the integration. Edit the settings you want.

Step 3: Save changes

Save your changes by clicking on the "Save" button after making the necessary adjustments in the integration settings.

Congratulations! You have successfully edited and saved your new integration name on Tekst. If you encounter any issues or have further questions, feel free to refer to our support documentation or reach out to our customer support team.

See more
Troubleshoot integrations

This guide will aid in solving common issues when trying to connect to an integration on Tekst.

OAuth Authorization Fails

Symptoms: Errors like "No code" or "Failed to get access token" appear after authorization.

Solution:

  • Click the Retry button to restart the authorization flow
  • Verify that Tekst's redirect URI is whitelisted in your provider's app registration (e.g., Azure AD for Outlook, Salesforce Connected App)
  • Ensure you're granting all required scopes during authorization

Duplicate Connection Error

Symptoms: Message stating "This connection already exists in another org" or "Inbox connected to another org."

Solution:

  • Switch to the correct organization where the connection was originally created
  • If you need to move the connection, ask an admin to disconnect it from the original org first

Invalid Credentials or API Limits

Symptoms: "Authentication failed" for username/password integrations, or "API limit exceeded" for providers like Salesforce.

Solution:

  • Reconnect the integration and verify credentials are correct
  • For API limits, use a dedicated integration user with appropriate OAuth client credentials (recommended for high-volume environments)
  • Wait for rate limits to reset, or contact your provider to increase limits

Locked Wizard Steps

Symptoms: Unable to proceed to the next step in the setup wizard.

Solution:

  • Complete all required fields in the current step before clicking Next
  • If you edited a previous step, re-enter information in subsequent steps as they were reset

If you encounter permission-related errors, contact your organization admin to update your permissions.

Tekst Blocked by Your Firewall

Symptoms: Integration requests from Tekst fail to reach your service, webhook deliveries time out, or custom step calls are rejected.

Solution:

  • Tekst uses fixed IP addresses for all outbound communication. If your firewall or service restricts incoming traffic by IP, add Tekst's outbound IP addresses to your allow list
  • See Troubleshoot Firewall for the full list of IP addresses to whitelist
See more
Connect a Looker integration

In this guide we will go through the steps to connect to a Looker integration on the Tekst App.

Setup

Step 1: Navigate to "Integrations".

On the Tekst platform, locate and click on the "Integrations" option. This is typically found in the bottom navigation menu.

Step 2: Add a Looker Integration

Click the Add Integration button in the top-right corner of the Integrations page to connect a new integration. A modal appears showing available providers, choose "Looker" and click on "Connect"

Step 3: Create a user

Create a username that fulfills the below requirements:

  • Contains only lowercase letters.
  • Contains no special characters.
  • Contains at least 6 characters.

This process creates a user within your customer-specific Amazon Redshift environment, allowing access to fetch data directly from Looker.

Be sure to securely store the generated username and password in a password management tool for future use.

Step 4: Connect to the Tekst datasource in Looker

Add an Amazon Redshift datasource connector to your Looker project. Use your username and password to authenticate and following parameters:

  • Server URL: customer.redshift.tekst.com

  • Database: data

  • Port: 5439

Select "Public" as the schema and add the "datasources" and "threads" tables to your environment.

If you have an issue following this guide or have any other questions, please submit a request or send your question to support@tekst.com.

See more
Connect a Power BI integration

In this guide we will go through the steps to connect to a Power BI integration on the Tekst App.

Setup

Step 1: Navigate to "Integrations".

On the Tekst platform, locate and click on the "Integrations" option. This is typically found in the bottom navigation menu.

Step 2: Add a Power BI Integration

Click the Add Integration button in the top-right corner of the Integrations page to connect a new integration. A modal appears showing available providers, choose "Power BI" and click on "Connect"

Step 3: Create a user

Create a username that fulfills the below requirements:

  • Contains only lowercase letters.
  • Contains no special characters.
  • Contains at least 6 characters.

This process creates a user within your customer-specific Amazon Redshift environment, allowing access to fetch data directly from Power BI.

Be sure to securely store the generated username and password in a password management tool for future use.

Step 4: Connect to the Tekst datasource in Power BI

Add an Amazon Redshift datasource connector to your Power BI project. Use your username and password to authenticate and following parameters:

  • Server URL: customer.redshift.tekst.com

  • Database: data

  • Port: 5439

Select "Public" as the schema and add the "datasources" and "threads" tables to your environment.

If you have an issue following this guide or have any other questions, please submit a request or send your question to support@tekst.com.

See more
Connect a Metabase integration

In this guide we will go through the steps to connect to a Metabase integration on the Tekst App.

Setup

Step 1: Navigate to "Integrations".

On the Tekst platform, locate and click on the "Integrations" option. This is typically found in the bottom navigation menu.

Step 2: Add a Metabase Integration

Click the Add Integration button in the top-right corner of the Integrations page to connect a new integration. A modal appears showing available providers, choose "Metabase" and click on "Connect"

Step 3: Create a user

Create a username that fulfills the below requirements:

  • Contains only lowercase letters.
  • Contains no special characters.
  • Contains at least 6 characters.

This process creates a user within your customer-specific Amazon Redshift environment, allowing access to fetch data directly from Metabase.

Be sure to securely store the generated username and password in a password management tool for future use.

Step 4: Connect to the Tekst datasource in Metabase

Add an Amazon Redshift datasource connector to your Metabase project. Use your username and password to authenticate and following parameters:

  • Server URL: customer.redshift.tekst.com

  • Database: data

  • Port: 5439

Select "Public" as the schema and add the "datasources" and "threads" tables to your environment.

If you have an issue following this guide or have any other questions, please submit a request or send your question to support@tekst.com.

See more
Connect a Qlik integration

In this guide we will go through the steps to connect to a Qlik integration on the Tekst App. 

Setup

Step 1: Navigate to "Integrations".

On the Tekst platform, locate and click on the "Integrations" option. This is typically found in the bottom  navigation menu.

Step 2: Add a Qlik Integration

Click the Add Integration button in the top-right corner of the Integrations page to connect a new integration. A modal appears showing available providers, choose "Qlik" and click on "Connect"

Step 3: Create a user

Create a username that fulfills the below requirements:

  • Contains only lowercase letters.
  • Contains no special characters.
  • Contains at least 6 characters.

This process creates a user within your customer-specific Amazon Redshift environment, allowing access to fetch data directly from Qlik.

Be sure to securely store the generated username and password in a password management tool for future use.

Step 4: Connect to the Tekst datasource in Qlik

Add an Amazon Redshift datasource connector to your Qlik project. Use your username and password to authenticate and following parameters: 

  • Server URL: customer.redshift.tekst.com

  • Database: data

  • Port: 5439

Select "Public" as the owner and add the "datasources" and "threads" tables to your environment.

If you have an issue following this guide or have any other questions, please submit a request or send your question to support@tekst.com.

See more
Connect a Tableau integration

In this guide we will go through the steps to connect to a Tableau integration on the Tekst App. 

Setup

Step 1: Navigate to "Integrations".

On the Tekst platform, locate and click on the "Integrations" option. This is typically found in the bottom  navigation menu.

Step 2: Add a Tableau Integration

Click the Add Integration button in the top-right corner of the Integrations page to connect a new integration. A modal appears showing available providers, choose "Tableau" and click on "Connect"

Step 3: Create a user

Create a username that fulfills the below requirements:

  • Contains only lowercase letters.
  • Contains no special characters.
  • Contains at least 6 characters.

This process creates a user within your customer-specific Amazon Redshift environment, allowing access to fetch data directly from Tableau.

Be sure to securely store the generated username and password in a password management tool for future use.

Step 4: Connect to the Tekst datasource in Tableau

Add an Amazon Redshift datasource connector to your Tableau project. Use your username and password to authenticate and following parameters: 

  • Server URL: customer.redshift.tekst.com

  • Database: data

  • Port: 5439

Select the "public" schema and add the "datasources" and "threads" tables to your environment.

If you have an issue following this guide or have any other questions, please submit a request or send your question to support@tekst.com.

See more
Data Structure

This guide explains the structure of the Tekst data, which is organized into three main tables: `datasources`, `threads`, and `messages`.

Datasources table

The datasource table contains information about your connected data sources:

Column NameData TypeDescription
idVARCHAR(256)Unique identifier for the integration
nameVARCHAR(256)Name of the integration (usually email address)
typeVARCHAR(256)Type of integration (e.g. outlook, salesforce, ...) 

Threads table

The threads table contains aggregate information about email threads:

Column NameData TypeDescription
integration_idVARCHARUnique identifier linking to datasources.id
thread_idVARCHARUnique identifier for the thread
timeTIMESTAMPTimestamp of the thread
statusVARCHARThread status ('replied' or 'open')
messagesINTEGERNumber of messages in the thread
participantsINTEGERNumber of participants in the thread
first_response_time_secondsREALTime to first response in seconds
model_*VARCHARMultiple columns for each model (e.g., model_topic, model_region)

Messages table

The messages table contains detailed information about individual email messages:

Column NameData TypeDescription
integration_idVARCHARUnique identifier linking to datasources.id
thread_idVARCHARUnique identifier linking to threads.thread_id
message_idVARCHARUnique identifier for the message
timeTIMESTAMPTimestamp of the message
typeVARCHARMessage type ('sent' or 'received')
thread_numberINTEGERSequential number of the message in the thread
receiverVARCHARArray of receiver domain names
senderVARCHARSender domain name
ccVARCHARArray of CC domain names
bccVARCHARArray of BCC domain names
how_receivedVARCHARHow the message was received ('sender', 'receiver', 'cc', 'bcc', or 'unknown')

Important Notes

Relationships

  • `datasources.id` links to `threads.integration_id` and `messages.integration_id`
  • `threads.thread_id` links to `messages.thread_id`

Data Uniqueness

  • Each `thread_id and integration_id pair` appears only once in the threads table (no duplicates)
  • Each `message_id and thread_id and integration_id pair` appears only once in the messages table (no duplicates)

Technical Details

  • The `model_*` columns in the threads table are dynamically created based on your configured facets.
  • Domain names in the messages table are stored in a decrypted format.
  • Arrays (receiver, cc, bcc) are stored as comma-separated lists.
  • All timestamps are in UTC.

For more information about specific columns or data types, please contact our support team.

See more
Supported file types

At this moment Tekst supports the following file types on the ftp integration:

  • pdf
  • jpg
  • jpeg
  • png
  • doc & docx

For other file types please contact your onboarding manager or customer success manager.

See more
Connect a Gmail integration

This article explains how to add more email integrations to an existing Gmail service account in Tekst.

Prerequisites: You must have already set up a Gmail service account integration. 

Steps to Add More Integrations

  1. Navigate to the Integrations page in your Tekst dashboard.
  2. Find your existing Gmail service account integration and click on it to open the settings panel.
  3. In the settings panel, click on the Settings tab.
  4. Under the "Child Accounts" section, type the email address you want to add in the input field.
  5. Press Enter or click the enter badge to add the email to your integrations list.
  6. You will see the email appear in the list of integrated accounts below the input field.

Success! The newly added email integration will now sync with Tekst and any automations or rules set up for your Gmail service account will apply to this additional email address.

Verify Your Setup

After adding the email address, you can verify it was properly integrated by:

  • Checking that it appears in the Child Accounts list in the integration settings
  • Navigating to your Dashboard and confirming emails from this address begin appearing

Limitations

  • READER role users cannot add child accounts
  • Service account must have delegation access to any email addresses you add

Troubleshooting

Email does not appear in the list after adding

This is most likely due to an invalid email format. Make sure that you have entered a valid mail address and try again.

Error message appears when adding email

The error message might indicate the email already exists or that the service account lacks access. 

New emails form added addresses do not appear in the dashboard

There might be a sync delay or delegation configuration issues. Allow up to 24 hours for integration to begin syncing. If it has been longer, check that domain wide delegation is properly configured in your Google Workspace Admin Console.

See more
Connect an Infor M3 integration

This article describes the permissions needed to make the integration between Infor M3 and Tekst work.

Prerequisites

To create the Infor M3 integration, you will need following configurations in Infor M3

  • Service account with API access to Customer, Item, and Order endpoints
  • OAuth 2.0 client credentials (Client ID and Client Secret)
  • SAAK (Service Account Access Key) and SASK (Service Account Secret Key)
  • Base URL for your M3 instance and Token URL for authentication
  • Appropriate permissions for creating and confirming sales orders

Setup

Step 1: Navigate to "Integrations".

On the Tekst platform, locate and click on the "Integrations" option. This is typically found in the bottom  navigation menu.

Step 2: Add an Infor M3 Integration

Click the Add Integration button in the top-right corner of the Integrations page to connect a new integration. A modal appears showing available providers, choose "Infor M3" and click on "Connect"

Step 3: Enter your credentials

  1. Enter your credentials in the pop-up
    • Client ID
    • Client Secret
    • SAAK (Service Account Access Key)
    • SASK (Service Account Secret Key)
    • Token URL
    • Base URL
  2. Click Test Connection to verify API access
  3. Click Save when the connection succeeds
See more
Infor M3 Workflow Examples

This guide outlines how to build automated workflows that connect Tekst AI with Infor M3 to process emails, create orders, and validate data without manual intervention. These examples show real-world automation scenarios for manufacturing and distribution operations.

Automated Email-to-Order Processing

This workflow converts incoming email purchase orders into confirmed M3 sales orders automatically.

Use Case

Your sales team receives 50+ email orders daily. Each requires manual data entry into M3, taking 15 minutes per order. This workflow automates the entire process.

Workflow Steps

  1. Trigger: New email arrives in monitored inbox (e.g., orders@company.com)
  2. Extract Data: Tekst AI identifies:
    • Customer VAT number or account code
    • Order date and requested delivery date
    • Line items with product codes, descriptions, and quantities
    • Special instructions or notes
  3. Get Customer: Look up customer in M3 using VAT number
    • Input: VAT number from email
    • Output: Customer number (CUNO) for order creation
  4. Validate Items: For each line item, use Get Item action
    • Input: Item number (ITNO) extracted from email
    • Output: Item details and availability confirmation
  5. Create Order: Build M3 sales order
    • Company: "100" (or your company code)
    • Customer: CUNO from step 3
    • Order lines: Array of {ITNO, ORQT, delivery date}
  6. Confirm Order: Update order status to confirmed (20-25)
  7. Send Notification: Email customer with order confirmation and M3 order number (ORNO)

This workflow reduces order processing from 15 minutes to under 30 seconds, delivering instant confirmations to customers.

Configuration Tips

  • Set up error routing: If customer or item lookup fails, route to manual review queue
  • Add date formatting: Ensure extracted dates convert to YYYYMMDD format
  • Handle attachments: Configure AI to extract order data from PDF or Excel attachments
  • Log all orders: Store ORNO and email reference for audit tracking

Customer Validation Before Order Entry

Validate customer information exists in M3 before processing order requests, preventing errors and duplicate work.

Use Case

New customers often send orders before their account is set up in M3. This workflow catches missing customers early and routes requests appropriately.

Workflow Steps

  1. Trigger: Email tagged as "Order Request"
  2. Extract Customer Info: Pull VAT number, company name, or account code
  3. Get Customer: Search M3 for customer record
    • Input: VAT number or customer code
    • Output: Customer details or "not found" error
  4. Conditional Branch:
    • If customer exists: Proceed to order creation workflow
    • If customer not found: Route to sales team with email template: "New customer setup required for [Company Name]. Please create M3 account before processing order."
  5. Track Status: Update CRM or ticketing system with customer validation result

This validation prevents incomplete orders and ensures your team sets up new customers correctly before processing their first order.

Multi-Line Order Processing with Batch Handling

Process orders with multiple line items efficiently, handling high-volume scenarios common in manufacturing.

Use Case

Large distributor receives orders with 20-50 line items. Manual entry is error-prone and time-consuming. This workflow handles complex orders automatically.

Workflow Steps

  1. Trigger: Email with subject containing "BULK ORDER" or attachment with multiple items

  2. Extract Line Items: Tekst AI builds array of all products:

    [
      {item: "SKU001", quantity: 100, delivery: "2025-02-15"},
      {item: "SKU002", quantity: 250, delivery: "2025-02-15"},
      {item: "SKU003", quantity: 75, delivery: "2025-02-20"}
    ]
    
  3. Validate All Items: Loop through each item with Get Item action

    • Check item exists in M3
    • Verify availability if connected to inventory system
    • Flag items not found for manual review
  4. Get Customer: Look up customer once for entire order

  5. Create Order with All Lines: Build single M3 order with complete line item array

  6. Confirm Order: Update to confirmed status

  7. Generate Summary: Send detailed confirmation listing all items, quantities, and delivery dates

Enable batch processing settings in M3 integration for faster handling of orders with 10+ line items.

Error Handling

  • If any item validation fails, pause workflow and notify team
  • Create partial order with valid items if configured
  • Log all validation failures for review and training improvement

Order Confirmation Notifications

Automatically send professional confirmation emails to customers after M3 order creation, improving customer experience.

Use Case

Customers expect immediate order confirmations with tracking details. This workflow delivers confirmations within seconds of order placement.

Workflow Steps

  1. Trigger: Order successfully confirmed in M3 (status 20-25)

  2. Gather Order Details: Retrieve from previous workflow steps:

    • Order number (ORNO)
    • Customer name and email
    • Line items and quantities
    • Expected delivery date
    • Order total if available
  3. Format Email: Use template with M3 data:

    Subject: Order Confirmation #[ORNO]
    
    Dear [Customer Name],
    
    Your order has been confirmed and will be processed shortly.
    
    Order Number: [ORNO]
    Order Date: [Date]
    Expected Delivery: [Delivery Date]
    
    Items:
    - [ITNO]: [Quantity] units
    - [ITNO]: [Quantity] units
    
    Thank you for your business.
    
  4. Send Email: Deliver to customer's email address

  5. Log Communication: Record confirmation sent in CRM or M3 notes

Instant confirmations reduce "where's my order?" inquiries and improve customer satisfaction scores.

Exception Routing for Manual Review

Handle edge cases and exceptions gracefully by routing complex orders to human reviewers when automation confidence is low.

Use Case

Some orders contain ambiguous data, special pricing, or unusual requests that require human judgment before processing.

Workflow Steps

  1. Trigger: Email classified as "Order Request"
  2. Extract with Confidence Scoring: Tekst AI assigns confidence scores to extracted data:
    • High confidence (>90%): Customer, items clearly identified
    • Medium confidence (70-90%): Some ambiguity in item codes or quantities
    • Low confidence (<70%): Missing data or unclear intent
  3. Conditional Routing:
    • High confidence: Proceed with automated order creation
    • Medium confidence: Create draft order and flag for quick review
    • Low confidence: Route to sales team inbox with highlighted extraction issues
  4. Manual Override: Sales team can approve, modify, or reject flagged orders
  5. Learning Loop: Feed approved exceptions back to AI training to improve future accuracy

Exception routing ensures automation handles 80-90% of orders fully, while maintaining quality control for complex cases.

Multilingual Order Processing

Process orders from international customers in their native languages, extracting data accurately across 20+ languages.

Use Case

European distributor receives orders in Dutch, French, German, and English. This workflow handles all languages uniformly.

Workflow Steps

  1. Trigger: Email from international inbox
  2. Detect Language: Tekst AI automatically identifies email language
  3. Extract Data: Process order details regardless of language:
    • French: "Quantité: 50, Référence: ABC123"
    • German: "Menge: 50, Artikelnummer: ABC123"
    • Dutch: "Aantal: 50, Artikelnummer: ABC123"
    • All extract to: quantity=50, item=ABC123
  4. Validate in M3: Use language-neutral item codes and customer numbers
  5. Create Order: Process identically to single-language workflow
  6. Respond in Original Language: Send confirmation email in customer's language using templates

Train Tekst on multilingual product catalogs and common phrases in each market to improve extraction accuracy for regional SKU aliases.

Integration with Infor Data Lake

For high-volume operations, connect M3 workflows to Infor Data Lake for real-time data synchronization and analytics.

Use Case

Manufacturing enterprise processes 1,000+ orders daily and needs real-time visibility into order status, inventory, and customer data.

Workflow Enhancement

  1. Enable Data Lake Sync: Configure M3 integration to use Data Lake endpoints
  2. Real-Time Lookups: Customer and item validations query live data instead of cached records
  3. Batch Optimization: Process multiple orders simultaneously with improved performance
  4. Analytics Integration: Export order data to BI tools for process mining and ROI tracking

Best Practices

Testing Workflows

  • Start with test inbox and sample emails before production deployment
  • Use M3 test environment if available to avoid impacting live data
  • Validate all extraction and creation steps with known-good orders
  • Monitor first 50-100 automated orders closely

Training for Accuracy

  • Provide historical emails representing your typical order volume (500-1,000 examples)
  • Include edge cases: rush orders, returns, special pricing, multi-language
  • Update training quarterly as product catalogs and customer base evolve
  • Leverage free workshops (Enterprise plans) for custom terminology training

Monitoring and Optimization

  • Track automation rate (% of orders processed without manual intervention)
  • Monitor average processing time per order (target: <1 minute)
  • Review exception routing patterns to identify training opportunities
  • Measure ROI using time saved × volume × hourly cost
  • Set up alerts for connection failures or high error rates

Customers typically achieve 90%+ automation rates within 6 weeks of deployment with proper training and workflow optimization.

See more
Troubleshooting Infor M3 Integration

This guide will help to resolve common connection, authentication, and order creation issues with the Infor M3 integration. It will cover error messages, their causes, and step-by-step solutions.

Authentication Issues

Invalid Credentials (401 Error)

Error message: "Invalid credentials" or "Authentication failed"

Causes:

  • Incorrect Client ID, Client Secret, SAAK, or SASK
  • Expired service account credentials
  • Mismatched Token URL

Solutions:

  1. Verify all credentials in Settings > Integrations > Infor M3
  2. Regenerate SAAK and SASK from your Infor M3 admin portal
  3. Confirm Token URL matches your M3 instance (typically https://yourcompany.infor.com/oauth/token)
  4. Check that credentials have not expired or been revoked
  5. Click Test Connection to validate the fix

Ensure URLs use HTTPS protocol and do not include trailing slashes, as this causes authentication failures.

M3 System Already Connected (403 Error)

Error message: "This Infor M3 system is connected to another organisation"

Cause:

The M3 instance is already linked to a different Tekst organization. Each M3 system can connect to only one Tekst account.

Solutions:

  1. Disconnect the M3 integration from the other organization
  2. Contact Tekst support if you need to migrate the connection
  3. Alternatively, use different M3 credentials for this organization

Missing Credentials

Error message: "Missing credentials" or empty authentication fields

Cause:

Required credential fields were not saved or were cleared during configuration.

Solutions:

  1. Re-enter all six credential fields:
    • Client ID
    • Client Secret
    • SAAK
    • SASK
    • Token URL
    • Base URL
  2. Save the configuration
  3. Test the connection before exiting

Connection Test Failed

Error message: "Connection test failed" or timeout errors

Causes:

  • Network connectivity issues
  • Firewall blocking API requests
  • M3 instance is down or unreachable
  • OAuth token has expired

Solutions:

  1. Verify your M3 instance is accessible (check Base URL in a browser)
  2. Ensure your firewall allows outbound HTTPS requests to the M3 API
  3. Check for M3 system maintenance windows
  4. Re-authenticate by saving credentials again (forces token refresh)
  5. Monitor the integration dashboard for health status updates

OAuth tokens refresh automatically, but manual re-authentication can resolve persistent timeout issues.

Order Creation Errors

Failed to Create Order

Error message: "Failed to create order" or "Order creation returned error"

Causes:

  • Missing required fields (order lines or items)
  • Invalid customer number (CUNO)
  • Incorrect date format
  • Quantities set to zero or negative values

Solutions:

  1. Validate that all required order fields are populated:
    • Company number (CONO, typically "100")
    • Customer number (CUNO from Get Customer action)
    • At least one order line with item number (ITNO) and quantity (ORQT)
  2. Check date formats use YYYYMMDD (e.g., "20250115" for January 15, 2025)
  3. Ensure quantities are positive numbers greater than zero
  4. Use the Get Customer action before Create Order to confirm valid CUNO
  5. Use the Get Item action to validate item numbers exist in M3

Always perform customer and item lookups before order creation to catch validation errors early in the workflow.

Orphaned Order Needs Manual Cleanup

Error message: "Orphaned order needs manual cleanup" or "Order header created but lines failed"

Cause:

The order header was created successfully (status 10), but adding line items failed. This leaves an incomplete order in M3.

Solutions:

  1. Log into Infor M3 directly
  2. Locate the order by number (ORNO) in the error log
  3. Manually add line items or delete the incomplete order
  4. Review the workflow to identify why line items failed:
    • Invalid item numbers
    • Missing quantities
    • Incorrect data types
  5. Fix the workflow configuration and test with a new order

Orphaned orders remain in status 10 (unconfirmed) and require manual intervention in M3 to complete or cancel.

No Customer Found

Error message: "No customer found" or "Invalid CUNO"

Causes:

  • Customer does not exist in M3
  • Incorrect VAT number or customer code
  • Customer is inactive or archived

Solutions:

  1. Verify the customer exists in M3 using the customer management interface
  2. Check that the VAT number or customer code extracted from the email matches M3 records exactly
  3. Ensure the customer account is active
  4. Add the customer to M3 if they are new
  5. Update your AI training to improve customer data extraction accuracy

Item Validation Failed

Error message: "Item not found" or "Invalid ITNO"

Causes:

  • Item number does not exist in M3 inventory
  • Typo in extracted item number
  • Item is inactive or discontinued

Solutions:

  1. Confirm item numbers in M3 item master data
  2. Check for common extraction errors (e.g., "O" vs "0", "I" vs "1")
  3. Train Tekst AI on your specific SKU formats and aliases
  4. Use the Get Item action to validate before order creation
  5. Update item numbers in M3 or correct the source email data

Training Tekst on your M3-specific item codes and product aliases significantly reduces validation errors.

Order Confirmation Issues

Failed to Confirm Order

Error message: "Failed to confirm order" or "Status update failed"

Causes:

  • Order is missing required data for confirmation
  • Order is already confirmed (status 20-25)
  • Insufficient permissions for status changes

Solutions:

  1. Verify the order was created successfully before attempting confirmation
  2. Check that all required order fields are complete (customer, items, quantities, dates)
  3. Ensure the service account has permission to update order status in M3
  4. Do not attempt to confirm already-confirmed orders (check status first)
  5. Review M3 logs for specific validation failures

Data Extraction Issues

Incorrect Data Extracted from Emails

Symptoms:

  • Wrong customer identified
  • Missing or incorrect line items
  • Quantities or dates extracted incorrectly

Solutions:

  1. Review the AI training data for your M3 workflows
  2. Provide examples of correctly formatted orders to improve extraction
  3. Train Tekst on your company-specific terminology:
    • SKU formats
    • Customer identifiers (VAT, account numbers)
    • Product acronyms
    • Date formats
  4. For multilingual emails, ensure training covers all languages used
  5. Contact support for custom training workshops (included in Enterprise plans)

Initial training on historical email data typically achieves 90%+ accuracy. Custom training further improves industry-specific extraction.

Performance Issues

Slow Order Processing

Symptoms:

  • Orders take longer than expected to process
  • Delays in M3 API responses

Solutions:

  1. Enable batch processing for high-volume order flows
  2. Check M3 system performance and API rate limits
  3. Use Infor Data Lake integration for faster data synchronization in large datasets
  4. Optimize workflows to reduce unnecessary API calls (cache customer/item lookups)
  5. Contact support to review workflow efficiency

Getting Additional Help

If these solutions don't resolve your issue:

  1. Check the activity log in Tekst for detailed error messages
  2. Review M3 system logs for API-specific errors
  3. Contact Tekst support with:
    • Error message and timestamp
    • Order number (ORNO) if applicable
    • Workflow configuration details
  4. For M3-specific issues, consult Infor support or your M3 administrator
See more
Outlook integration setup guide for IT administrators

This guide is intended for IT administrators who are setting up the Outlook integration with Tekst on behalf of their organization. It walks through every step that needs to be completed on your side and points to the detailed articles for each task.

The Outlook integration is the most commonly used integration on the Tekst platform, and most organizations connect it through a dedicated service account so that mailbox access is centralized, auditable, and independent of individual users.

What you will need to do

Before Tekst can connect to your Outlook environment, the following needs to be completed in your Microsoft 365 tenant:

  1. Register a new application in Azure AD (for example, "Tekst Outlook Integration").
  2. Generate a client secret for the application and save the value immediately, as it is only shown once.
  3. Configure the API permissions the integration requires.
  4. Grant admin consent for your organization.
  5. Create a dedicated service account with an Exchange Online license and MFA disabled.
  6. Assign the service account the permissions required to access the mailboxes that Tekst should process.
  7. Optionally, restrict access to only the relevant mailboxes using an application access policy.

Information Tekst needs from you

Once the steps above are complete, please share the following with your Tekst contact so we can activate the connection:

  • Tenant ID
  • Application (Client) ID
  • Client Secret
  • Service account email address

Treat the client secret as a password and share it through a secure channel.

Step-by-step instructions

1. Register the application and configure permissions

Register a new application in your Azure AD tenant, generate a client secret, and configure the Microsoft Graph permissions the integration needs. The required permissions are:

  • Mail.ReadWrite
  • Mail.Send
  • User.Read.All

After adding the permissions, grant admin consent on behalf of your organization.

For detailed screenshots and walkthroughs of the Azure configuration, see Configure Outlook Access in Azure and Outlook prerequisites.

2. Create the service account

Create a dedicated user in Microsoft 365 that will be used only by the Tekst integration:

  • Assign an Exchange Online license so the account has a mailbox.
  • Disable MFA for this account, or exclude it from Conditional Access policies that enforce MFA, so that automated access is not blocked.
  • Use a strong password and store it securely.

3. Grant the service account access to the mailboxes

The service account needs permission to read and write on the mailboxes that Tekst will process. Historically this was done by assigning the Exchange ApplicationImpersonation role. If that role is still available in your tenant, assign it to the service account.

If the role is not available, use an application access policy instead (see the next step) to grant and scope mailbox access.

4. Restrict access to specific mailboxes (recommended)

By default, the integration can access every mailbox in your tenant. We strongly recommend limiting access to only the mailboxes Tekst needs to process, using a mail-enabled security group and an application access policy.

For the full PowerShell instructions, see Scope Service Account Access for Outlook.

5. Share the connection details with Tekst

Once the Azure app, service account, and (optionally) access policy are in place, send the Tenant ID, Application (Client) ID, Client Secret, and service account email address to your Tekst contact through a secure channel.

What happens next

After Tekst receives your connection details, we will activate the integration on your workspace. You can then connect individual mailboxes and shared mailboxes from the Tekst app:

If you run into any issues during setup, contact us at support@tekst.com and we will help you troubleshoot.

See more
Slow shared mailboxes – cause and solution

Some users experience delays when opening, searching, or processing emails in shared mailboxes connected to the Tekst platform. It may seem like Tekst is responding slowly, but in most cases the cause is not on Tekst's side.

Tekst processes messages and data centrally in the cloud. Our systems are functioning normally. The slow performance is caused by the way Outlook and employees' local computers handle the mailbox data.

Why does this happen?

By default, Outlook fully synchronizes shared mailboxes to the local computer using a so-called OST cache. When a shared mailbox contains a large amount of historical emails, attachments, and folders, this cache file grows significantly. Computers with limited free disk space or outdated hardware then have to work hard for every action - such as opening, searching, or sorting.

Possible causes

  • An oversized Outlook OST cache due to years of stored emails and attachments.
  • Insufficient free disk space on the employee's computer.
  • A slow or unstable internet connection at the office - shared mailboxes require a good connection for real-time synchronization.
  • Outdated hardware: too little RAM or a slow hard drive (HDD instead of SSD).
  • An outdated version of Outlook that synchronizes less efficiently.
  • Multiple shared mailboxes connected to a single Outlook profile at the same time, causing the load to accumulate.

Recommended solutions

Action How
Limit or disable caching Outlook → Account Settings → More Settings → Advanced. Disable "Download shared folders", or set the cache period to 1–3 months.
Clean up the mailbox Delete old emails and large attachments, or archive them to a separate folder.
Free up disk space Ensure computers have sufficient free disk space (at least 10–15% of total disk capacity).
Update Outlook Check that Outlook is up to date via File → Office Account → Update Options.
Upgrade hardware For outdated hardware, upgrading to an SSD is the most impactful investment for faster Outlook performance.

Role of Tekst

Tekst is always ready to confirm that our side is functioning correctly and to share log files or status reports if needed. However, the cause of the delay lies in the local IT environment - the solution should therefore be implemented there.

Have questions or want us to take a look? Contact us at support@tekst.com.

See more
Scope Service Account Access for Outlook

When connecting Outlook to Tekst via a service account, the integration is granted access to all mailboxes within your tenant by default. This guide explains how administrators can restrict access to only the specific mailboxes that are relevant for use with Tekst.

Prerequisites

  • Administrator access to your Azure environment
  • Exchange Online PowerShell module installed
  • A mail-enabled security group containing the mailboxes Tekst should access

Configure an Application Access Policy

Step 1: Connect to Exchange Online PowerShell

Open PowerShell and connect to Exchange Online:

Connect-ExchangeOnline

For details, see Microsoft's guide on how to connect to Exchange Online PowerShell.

Step 2: Identify the App Client ID and Security Group

You will need the following information:

  • Application (client) ID: b2094c09-0651-49c4-b2c2-ed3b739e2a8c
  • Mail-enabled security group: Create a new mail-enabled security group or use an existing one. Add only the mailboxes that Tekst should be able to access. All other mailboxes in the tenant will be excluded. Note down the group's email address to use as the PolicyScopeGroupId.

Step 3: Create the Application Access Policy

Run the following command, replacing PolicyScopeGroupId with your security group's email address and Description with a meaningful description:

New-ApplicationAccessPolicy `
    -AppId b2094c09-0651-49c4-b2c2-ed3b739e2a8c `
    -PolicyScopeGroupId <your-group@yourdomain.com> `
    -AccessRight RestrictAccess `
    -Description "Restrict Tekst app to members of the security group"

Step 4: Test the Application Access Policy

Verify the policy works correctly by testing it against a specific user mailbox:

Test-ApplicationAccessPolicy `
    -Identity <user@yourdomain.com> `
    -AppId b2094c09-0651-49c4-b2c2-ed3b739e2a8c

The output will indicate whether the app has access to the specified user's mailbox. Test with both a user inside and outside of the security group to confirm the policy is applied correctly.

Troubleshooting

PowerShell Version Errors

If you encounter errors related to your PowerShell version, update to the latest version. The Exchange Online PowerShell module requires PowerShell version 3.0 or higher. Check your version by running:

$PSVersionTable.PSVersion

Refer to Microsoft's official documentation for installation instructions.

Policy Not Taking Effect

Application access policies may take up to 30 minutes to propagate. If the policy does not seem to be working after creation, wait and test again.

Reference

This guide is based on Microsoft's documentation on limiting application permissions to specific mailboxes.

See more
Outlook prerequisites

This article outlines the permissions required to enable the integration between Outlook and Tekst. While these permissions are enabled by default, they may be restricted as organizations implement stricter security policies.

To ensure the integration functions correctly, these permissions must be granted through Azure Active Directory (AAD).

To be able to give Tekst access to a user mailbox the following permissions need to be given:

  • user.read
    • Allows Tekst to verify the connect user mailbox.
  • mailboxsettings.read
    • Allows Tekst to update and access the outlook categories.
  • mail.readwrite
    • These allow Tekst to read and process incoming emails of a mailbox (read part).
    • The write part allows Tekst to add e.g. category labels and put emails in folders.
    • Tekst will NEVER delete emails.
  • mail.send
    • This permission allows Tekst to forward emails if configured to do so.

When also connecting shared inboxes these additional permissions need to be given:

  • mail.readwrite.shared
    • These allow Tekst to read and process incoming emails of a shared mailbox (read part).
    • The write part allows Tekst to add e.g. category labels and put emails in folders.
  • mail.send.shared
    • This permission allows Tekst to forward emails if configured to do so.

This is how this looks during the setup flow

See more
Connect an Outlook integration

This guide will aid you to connect an Outlook integration on the Tekst App to perform certain actions.

Prerequisites

  • user.read, mailboxsettings.read, mail.readwrite, mail.send access
  • Additionally, for shared mailboxes mail.readwrite.shared and mail.send.shared are needed

Go to this article for detailed steps.

These settings allow Tekst to:

  • Verify the connect user mailbox
  • Update and access the Outlook categories
  • Read and process incoming mails, add category labels and put mails in folders
  • Forward mails if configured to do so.

Tekst will never delete emails.

Setup

Step 1: Navigate to Integrations

On the Tekst platform, locate and click on the "Integrations" option. This is typically found in the bottom  navigation menu.

Step 2: Add a New Integration

To connect a new provider:

  1. Click the Connect Integration button in the top-right corner of the Integrations page
  2. A modal appears showing available providers (e.g., Outlook, Salesforce, SAP, HubSpot, Zendesk)
  3. Select the provider you want to connect by clicking its card

Step 3: Enter Connection Details

Select between 'Personal Outlook account' and 'Organization-wide Outlook account'.

For Personal outlook accounts, If you also want to connect shared email addresses linked to this user mail address then click the "Allow access to shared mailboxes" to add these in a later phase.

Step 4: Authorize Access

Most integrations use OAuth for secure authentication:

  1. After clicking Connect, you're redirected to the provider's authorization page
  2. Log in to your provider account if prompted
  3. Review the permissions Tekst is requesting (e.g., read/write mail, access cases)
  4. Click Authorize or Grant Consent to allow access
  5. You're automatically redirected back to Tekst's setup wizard

Tekst does not store your data. All processing happens in real-time, ensuring GDPR compliance and enterprise security standards.

Step 5: Configure Integration Settings

After authorization, the setup wizard guides you through configuration:

  1. The wizard displays steps in a sidebar (e.g., "Connect Account" → "Configure Settings" → "Review")
  2. A progress bar shows your advancement through the setup process
  3. Complete each step:
    • Connect Account: Verify your authenticated account details
    • Configure Settings: Select objects, folders, or data sources to sync (e.g., which Salesforce cases or Outlook mailboxes to monitor)
    • Review: Confirm your settings before finalizing
  4. Click Next to advance between steps, or click Finish on the final screen to save your configuration

Editing a previous wizard step resets information entered in subsequent steps. A warning modal will appear to confirm this action before proceeding.

Step 6: Start Syncing

Once you click Finish, Tekst initiates the sync process:

  • The integration status updates to Connected (displayed as a green badge in the integrations table)
  • A progress bar shows the initial sync status
  • Optionally, you can enable backfilling to sync historical data

Optional: add shared mailboxes

  1. Click on the existing Outlook integration and go to "Settings"
  2. Go to "Shared Accounts" and add the shared mailboxes you want to add.

 

Troubleshooting

Admin consent failures

Symptom: "Admin consent not true" error or "Permissions denied" during connection.

Fix: Check if all permissions are correctly configured. If missing re-grant admin consent and try to "Reconnect" in the Tekst App.

Unhealthy or disconnected status

Symptom: Integration shows "Unhealthy" or "Disconnected" despite successful initial setup.

Causes:

  • Access token expired (Microsoft Graph tokens last 60-90 minutes; refresh tokens renew automatically)
  • Webhook subscription failed renewal after 3 attempts
  • Admin revoked permissions in Azure AD

Fix:

  • Click Reconnect in Tekst to re-authenticate and renew tokens
  • Verify service account user still exists in Microsoft 365 (deleted accounts break integration)
  • Check Azure AD audit logs for permission changes

Tekst automatically falls back to polling during token issues, so data sync continues with minor delays.

Note

Without any additional styling, the tags added by Tekst will be grey. This can be customized in your Outlook mailbox. 

  1. Go to "View settings" in the "View" tab.

  2. Navigate to "Account" -> "Categories"

  3. Create categories and assign a color

    Make sure that the category name is the same name as the tags applied by Tekst. 

See more
Connection methods overview

Tekst supports multiple methods for connecting your communication channels. This article provides an overview of the available connection methods and helps you choose the right one for your setup.

Available connection methods

Direct integrations

Tekst offers native integrations with popular platforms:

  • Zendesk: Connect your Zendesk Support instance to process tickets automatically.
  • Salesforce: Integrate with Salesforce to manage cases and communications.
  • HubSpot: Connect HubSpot to process customer conversations.
  • Outlook / Microsoft 365: Process emails directly from your Outlook mailboxes.

API integration

For custom setups, Tekst provides a REST API that allows you to send messages programmatically. This is ideal for platforms that are not natively supported.

FTP / SFTP

Upload files in bulk via FTP or SFTP for batch processing of documents and attachments.

Choosing the right method

  • Use direct integrations when your platform is natively supported for the easiest setup.
  • Use the API when you need to integrate with a custom or unsupported platform.
  • Use FTP/SFTP when you need to process large volumes of files in batch.

Getting help

If you need assistance choosing or setting up a connection method, please contact our support team.

See more
Connect a Salesforce integration

This guide provides instructions for setting up the configurations to access data from Salesforce and create a Salesforce integration on the Tekst App.

Prerequisites

Tekst Integration User

Follow the following steps to create a Tekst Integration User which is necessary to access the data from Salesforce.

  1. Login to Salesforce with your System administrator account
  2. Navigate to "Users" under "Setup" and click "New User"
  3. Fill in general information and click "Save"
    • Last Name: [Tekst] (https://Tekst) (or similar)

    • Alias: Auto-filled by Salesforce

    • Email: Integration User's email (as per the note)

    • Username: Use the email of the integration user.

    • Role: Leave as is.

    • License: Select Salesforce Integration

    • Profile: Choose or create a profile with the necessary permissions.

    • Enable the Service Cloud User setting.

    • Choose a time-zone, locale, and language according to your needs.

Permission Set

Basic Permission Set

Follow the following steps to set the basic permissions for the Tekst Integration user. 

  1. Login to Salesforce with your System administrator account
  2. Navigate to "Users" under "Setup" and go to "Permission Set". Click "New"
  3. Select Salesforce API integration as license and click "Save"

  1. Go to the object settings of the permission set you just created and look for "Cases"

  1. Click on "Edit" and enable Read Case and Edit Case. Save the settings. 
  2. Go to the Tekst Integration User you just created and click "Edit Assignments"
  3. Add the permission set you just created and click "Save"

Audit Fields

In order to let Tekst create/update cases with the correct date, one must allow the salesforce integration user to update audit fields upon creation. 

  1. Go to the system permissions of the permission set you just created
  2. Click on "Edit" and enable Set audit fields upon creation. Save the settings.

 

If you do not see this option, it is possible that 'enabling this option' is disabled. 
To enable it, go to "User Interface" settings, and under the "Setup" section, enable the "Enable Set Audit Fields upon Record Creation and Update Records with Inactive Owners User Permissions".

Setup

Step 1: Navigate to "Integrations".

On the Tekst platform, locate and click on the "Integrations" option. This is typically found in the bottom  navigation menu.

Step 2: Add a Salesforce Integration

Click the Add Integration button in the top-right corner of the Integrations page to connect a new integration. A modal appears showing available providers, choose "Salesforce" and click on "Connect"

Once the integration user is set up, proceed to the Tekst dashboard for API authorization.

Step 3: Configure connector

  1. Log out of the normal administrator user or use an incognito window browser.

  2. Select the Salesforce environment (Production or Sandbox) and log in as the Tekst Integration User

  3. Read permissions and click "Allow"

The status of the Salesforce integration on the Tekst dashboard should be "connected" now. 

Optional: Add custom fields

Custom fields in the Case object enhance configuration based on your needs.

Common practices include:

  • Create a Topic (Topic_c) for filling in topics.
  • Create Language (Language_c) for specifying language.
  • Create Sentiment (Sentiment_c) for indicating sentiment.

Consult with your Tekst contact to determine the best setup for your use case.

By completing these steps, you have successfully prepared your Salesforce instance for integration with Tekst, enabling seamless data access and interaction.

See more
API usage and performance impact

This guide outlines when and how the Salesforce APIs are used to help estimate performance impact.

API usage scenarios

1. Model retraining

Purpose

Periodically retraining customer models using historical case data.

API Used

Salesforce Bulk Query v2 API

  • Asynchronous process with results available after approximately 1 minute
  • One bulk query job per week of historical data
  • Typically processes 6-12 months of data (26-52 bulk query jobs total)
  • Up to 4 concurrent jobs

Frequency

  • Higher during onboarding (multiple times weekly)
  • Lower during full deployment (every few weeks)
  • Can be adjusted based on customer needs

2. Case processing

Purpose

Real-time processing of individual cases.

API used

Standard REST API

  • 1 GET request to fetch a case
  • 1 PATCH request to update multiple fields (e.g., topic, language, sentiment)

Frequency:

  • Example case lifecycle (illustrative):
    • New case event → GET request + PATCH request
    • Case closed event → GET request
  • The actual number of API calls will vary based on your specific implementation and workflow
  • Additional GET requests may occur if you configure update events between case creation and closure

3. Event monitoring

Purpose

Real-time event notification.

API used

Salesforce PubSub API

  • Consumes platform events or Change Data Capture (CDC) events
  • Each event consumed exactly once
  • Implemented with guardrails to minimize consumption

Performance considerations

  • Bulk operations run asynchronously with minimal impact on Salesforce performance
  • Case processing calls are made only on specific events (new, update, closed)
  • PubSub API is designed for efficient real-time communication

This information should help estimate the performance impact of implementing Tekst's intelligent capabilities within Salesforce.

See more
Real-time access

This guide goes over the three methods for real-time access to new or updates Salesforce objects.

Change Data Capture (CDC)

Change Data Capture (CDC) is a native feature in Salesforce that enables the platform to emit events when objects are created or modified. Tekst can subscribe to these events to receive real-time updates on new or updated records.

Limitations

  • Since Salesforce controls the event stream, CDC offers limited configurability.

  • Not all Salesforce editions include access to CDC, and the number of events allowed depends on your specific Salesforce subscription plan.

Setup

  1. Login as Salesforce Administrator.
  2. Go to "Setup" > "Integrations" > "Change Data Capture".
  3. Select Case Entity (Right Column):
  • Ensure the case is available to the selected entities.
  • Move the case from available entities to selected entities if needed.

Platform Events

Platform events are a native feature in Salesforce and function similarly to Change Data Capture. They can be used to emit events related to object changes, including creations. Platform Events are more configurable and customizable, offering more flexibility and control. However, they are not available out of the box - they must be manually configured by your Salesforce administrator. 

Note: Platform Event API names always end with the suffix ___e_. Be sure to include this suffix when referencing or configuring the event.

Setup

  1. Login as a Salesforce administrator.
  2. Go to "Platform Events" under "Setup" and click "New Platform Event".
  3. Fill in a the requested fields (label, plural label, description). Keep the Publish Behavior on default or 'Publish After Commit'. Save these settings. 
  4. In the Custom Fields & Relationships related list, click "New".
  5. Create a Case_Id_c (id of the case that is updated) field and an Event type ("new" or "update") field. You can add other custom fields by selecting the type and filling in the Label/Name.

All field types that platform events support are:

  • Checkbox
  • Date
  • Date/Time
  • Number
  • Text
  • Text Area (Long)

Publish events

After creation this event still needs to be fired.

There are a few methods, we would like to reference to the following Salesforce Trailblazers guide for the different methods.

Custom Hook

As an alternative to the Salesforce CDC API, Tekst offers the option to send custom webhooks (via SFDC) to notify the platform of custom object creations or updates. 

Setup

Web-hook origins are verified by Tekst using an API-key, stored in the 'x-API-key' header. For each request to the hooks endpoint of Tekst, only valid and authenticated web-hooks will be processed.

To get an API-key, follow the next steps:

  1. Navigate to "Integrations" under the "Settings" tab. 
  2. Click "Edit" on the Salesforce Integration if you want to add a custom hook.
  3. Click "Create new key".
  4. Click the copy button to copy the key.

Important: You can have a maximum of two API-keys active at any given time. If needed, revoke older keys to generate new ones.

Be aware: after closing this pop-up, you will no longer be able to view this key.To revoke the key:

Revocation
  1. Navigate to "Integrations" under the "Settings" tab. 
  2. Click "Edit" on the SAP Service Cloud v2 Integration
  3. Navigate to the key you want to delete and click "Revoke"

Hook request

For custom webhook integration, an authenticated POST request must be sent to the following endpoint, using the specifications outlined below:

The integration=xxx should contain the integration id, this can be copied from the example code.

Request type POST
URL https://api.tekst.com/api/integrations/salesforce/hook?integration=xxx
Authentication x-API-key header with a valid key for this connector*.
Payload

{

    "eventType": "new" | "update", // depends on if it's a new or an update of an Object

    "caseId": "id" // the salesforce unique identifier: case Id

}

Comparison

Topic Change Data Capture Platform events
Setup Salesforce native, not much configuration
Channels with filtering will have to be created and configured
More setup needed:
Need to setup the triggers and create platform event (not native).
Configurability Really minimal, only object is configurable 
Filter for channels can be used to fire limited set of events
Really configurable, can add fields that will broadcast. Only broadcast on certain relevant cases, only update on a close etc.
Trigger Not configurable
On every create, update and delete of a case, delete events may be less relevant
Filter for channels can be used to trigger relevant cases.
Update of a case by Tekst will re-trigger an event
Configurable
Only on create and important update events
Limits Salesforce
Salesforce
Limit on CDC events, similar to platform events
Salesforce
Salesforce
Limit on platform events, similar to CDC
Split between Salesforce child instances* Events only get split to the child event in a later time once it has been fetched. A bit less resource split compared to platform events. Can send the in the platform event immediately the field on which a child gets split off resulting in an earlier division of resources. Effect is minimal.

* Salesforce child instances is a concept that Tekst uses to split 1 salesforce instance connected to the platform in multiple separate inboxes instead of one.
Advantages are: stricter permissions, more control on models and resource split between each child instance.

See more
Revoke Salesforce access

This manual outlines the steps to revoke access to Tekst's Salesforce integration. 
There are two main techniques. It is crucial to follow the appropriate method based on your requirements.

Technique 1: General revocation

This method is standard for all integrations, including Salesforce.

  1. Delete integration from Tekst's dashboard:

    • Access the Tekst dashboard.

    • Locate the integration you want to revoke.

    • Delete the integration.

  2. Automated revocation:

    • Once the integration is deleted, access is automatically revoked.

    • All connections are permanently severed.

  3. Contact support:

Technique 2: Salesforce-specific revocation

If you specifically want to revoke access to Salesforce, follow these steps:

  1. Login as a Tekst integration user:

    • Use the credentials of the Tekst Integration User.
  2. Navigate to OAuth connected apps:

    • In the Salesforce setup, search for OAuth-connected apps under the user setup.
  3. Initiate revocation:

    • Find the Tekst-connected app.

    • Click on "Revoke" to remove access.

Note: Revoking access through this method will disable all Tekst products connected to Salesforce. If you plan to proceed, it’s essential to inform your Tekst Customer Success Manager in advance.

You can remove Tekst’s access to the Salesforce integration either by following the general process used for all integrations or by using Salesforce-specific methods. To avoid disruptions, please proceed with caution and ensure appropriate planning before revoking access.

See more
Connect a SAP ECC Integration

This guide will go over the 3 different possibilities to connect to SAP ECC on the Tekst App. It will give an overview on the setup and the pros and cons. 

1. Transport Requests (CTS)

Setup

  1. Create a Transport Request: Develop in the source system and include all the objects in a transport request.
  2. Release Transport Request: Once development is complete, release the task and transport request.
  3. Export Files: Export the physical transport files from the source system.
  4. Import Files: A Basis Admin will import those physical files into the target system.
  5. Check Results: Validate in the target system that the objects have been imported and activated.

2. ABAPGit

Setup

  1. Installation on Source System: Install ABAPGit on the source system and import SSL certificates.
  2. Link to Git Repo: Link the SAP Package to an online Git Repository. Make sure all your development is done in a separate package with only relevant objects.
  3. Push to Repo: Once development is done, push all the code to the online Git Repository.
  4. Installation on Target System: Install ABAPGit on the target system and import SSL certificates.
  5. Pull the Repo: Pull the source code from Git to your target system.
  6. Validate Objects: Validate in the target system that the objects have been imported and activated.

3. Manual Creation of Objects

Setup

  1. Development in source system: Complete all the developments in the source system.
  2. Identify all objects: List all the objects that need to be created in the target system.
  3. Copy / Paste: Manually copy and paste the source code/objects from the source to the target system.
  4. Validate Objects: Validate in the target system that the objects have been imported and activated.
 CTSABAPGitManual Creation
Pros

Low effort

Less time

Standard SAP way, well-documented

Once configured, pull and push require very little effort & time

Compliant to DevOps standards

Out of SAP Versioning also possible

No setup required

No Basis administration involvement

Can fully comply with the client’s naming and other standards

Cons

Not feasible/practical if developed objects do not conform to client standards

Sometimes tricky if objects are spread across multiple transports

Although officially supported by SAP, it is a third-party solution

Not available out of the box i.e. installation and configuration is required on source and target systems

Time required might be high depending on number of objects

Subsequent changes/fixes can be tricky to keep track of

Manual activity, prone to errors/omissions

See more
Required master data for SAP ECC

This guide gives a breakdown of the most commonly needed data types, organized by priority to process sales order IDocs in SAP ECC.

Essential master data (required for all IDocs)

These records must be configured before IDocs can be processed:

  • Company Code – The organizational entity that receives the order
  • Sales Organization – The division responsible for processing the sale
  • Distribution Channel – The route through which products are sold (e.g., direct, wholesale, retail)
  • Sales Division – The product line or business segment
  • Customer – The buyer, including their address, payment terms, and contact details
  • Material – The product being ordered, including pricing and inventory data
  • Plant – The warehouse or manufacturing location from which the order will be fulfilled
  • Sales Document Type – The order category (e.g., standard order, rush order, return)

Conditional master data (depends on your process)

Depending on your business rules and order types, you may also need:

  • Payment Terms – The invoicing and due date schedule for the order
  • Incoterms – International trade terms that define shipping and cost responsibilities (e.g., FOB, CIF)
  • Shipping Type – The mode of delivery (e.g., truck, air, parcel)
  • Storage Location – The specific warehouse bin or section where inventory is stored

Why this matters

When an IDoc arrives without matching master data, the system typically rejects the order or marks it for manual review. This delays fulfillment and creates rework. Pre-loading or validating these records during setup ensures smooth, automated order processing.

Pro tip: Work with your SAP system administrator to run a data completeness audit before going live. Check that all customer, material, and organizational master records are current and linked correctly. This prevents IDocs from bouncing back due to missing references.

Common issue: Orders fail silently if the Plant or Sales Organization is missing or inactive. Always verify these are marked as "active" in your SAP configuration, not just present in the database.

Next steps

If IDocs are failing during processing:

  1. Check the IDoc error log to identify which field is causing the rejection
  2. Verify the corresponding master data record exists in SAP (e.g., customer in VD01, material in MM01)
  3. Ensure the record is flagged as active for the relevant sales channel
  4. If the master data is missing, create it or update the IDoc mapping to use alternative identifiers

If you need help troubleshooting a specific IDoc error, reach out to support with the IDoc number and the error message from SAP's application log.

See more
Set up a technical user for OData in SAP Service Cloud

This article explains how to create a dedicated technical user in SAP Service Cloud (C4C) for OData access. This user is required to connect SAP Service Cloud with the Tekst platform. After completing the steps below, you will use the technical user credentials to set up the integration on your Tekst environment at customer.tekst.com.

Overview

Setting up a technical user for OData involves three steps:

  1. Create a Communication System
  2. Create a Communication Arrangement linked to the OData services
  3. Use the credentials to connect on customer.tekst.com

Prerequisites

  • Administrator access to your SAP Service Cloud tenant
  • Knowledge of your SAP tenant host name

Step 1: Create a Communication System

A Communication System represents an external system that will connect to your SAP tenant.

  1. In SAP Service Cloud, open the Administrator menu in the left-hand navigation
  2. Go to General Settings
  3. Under the Integration section, click Communication Systems
  4. Click New to create a new Communication System
  5. Fill in the following fields on the General tab:
    • Host Name: Enter the host name for your SAP tenant (e.g., myXXXXX.crm.ondemand.com)
    • System Access Type: Select Internet
  6. Optionally fill in the Contact Information section with the contact details of the person responsible for this integration (first name, last name, email)
  7. Click Save to create the Communication System

Step 2: Add a System Instance

After saving the Communication System, you need to add a System Instance.

  1. Open the Communication System you just created
  2. Navigate to the System Instances tab
  3. Click Add Row to create a new system instance
  4. Enter a System Instance ID (e.g., the same name as your Communication System)
  5. Click Save

Step 3: Create a Communication Arrangement

A Communication Arrangement links your Communication System to the OData services and defines which data the technical user can access.

  1. On the System Instances tab of your Communication System, select the system instance you created
  2. In the Communication Arrangements section below, you will see available communication scenarios
  3. Locate the OData Services for Business Objects scenario and click to open it
  4. This will create a new Communication Arrangement

Step 4: Configure Authentication

On the Communication Arrangement page, configure the authentication method for the technical user.

  1. Navigate to the Technical Data tab
  2. Under Inbound Communication Basic Settings, configure the following:
    • Authentication Method: Select User ID and Password
    • User ID: A technical user ID is generated automatically (e.g., _TEKSTODATA). Note this user ID - you will need it later.
  3. Click Edit Credentials to set the password for the technical user
  4. Enter and confirm the password. Store it securely - you will need it to configure the integration in Tekst.

Step 5: Select the OData Services

Still on the Communication Arrangement page, scroll down to the Services Used section. This section lists all available OData services that the technical user can access.

  1. Review the list of OData services and enable the ones that Tekst requires by checking the Assigned checkbox next to each service
  2. At minimum, enable the services related to the objects Tekst needs to read and update. Common services include:
    • activity
    • businesspartner
    • businesspartnerrelationship
    • businessuser
    • contact
    • contactaccount
  3. If you are unsure which services to enable, contact your Tekst customer success team for guidance

Note: You can optionally mark services as Read Only if Tekst should only read data from that particular service without making updates.

Step 6: Activate the Communication Arrangement

  1. After configuring the authentication and selecting the services, click Save and Reactivate in the top-right corner of the Communication Arrangement page
  2. Verify that the status of the Communication Arrangement shows as Active

Step 7: Connect on customer.tekst.com

Now that your technical user is configured in SAP, use its credentials to set up the integration on the Tekst platform.

  1. Log in to your Tekst environment at customer.tekst.com
  2. Navigate to the Integrations page
  3. Click Connect Integration and select SAP Service Cloud
  4. Enter the following details:
    • SAP Tenant URL: Your SAP tenant URL
    • Username: The technical User ID from Step 4 (e.g., _TEKSTODATA)
    • Password: The password you set in Step 4
  5. Click Connect to finalize the integration

Tekst will validate the connection to your SAP instance. Once verified, the integration is active and ready for configuration.

Troubleshooting

  • Connection fails: Verify that the Communication Arrangement status is Active and that the correct OData services are assigned
  • Authentication errors: Double-check the User ID and password. You can reset the password by opening the Communication Arrangement, navigating to the Technical Data tab, and clicking Edit Credentials
  • Missing data: Ensure the required OData services are assigned and not marked as Read Only if Tekst needs write access

Related Articles

See more
Real-time SAP Access: Custom Hook

This guide explains how to use a custom hook to enable real-time events from SAP Service Cloud by configuring a webhook flow. These webhooks notify the Tekst platform whenever a case is created or updated.

Use case

Use a custom hook when you want more control over real-time event delivery.

  • Avoid relying on other tools or extensions.
  • Trigger only the update events you care about.
  • Limit which cases are sent to Tekst.

Hook request

Configure SAP Service Cloud to send a POST request to the Tekst hook endpoint.

Request typePOST
URLhttps://hooks.tekst.com/v1/webhook/v1/sapservicecloud/{orgId}/{integrationId}
Payload
{
  "event-type": "{EventType}",
  "event-id": "{EventID}",
  "event-time": "{EventTime}",
  "data": {
    "root-entity-id": "{CaseID}",
    "entity-id": "{EntityID}"
  }
}
Extra payloadYou can also send extra fields such as body and subject. Tell Tekst customer success before you add them.

You can find the full webhook URL (including your org ID and integration ID) in the Settings tab of your SAP Service Cloud integration in the Tekst dashboard.

See more
Create a SAP Service Cloud integration

This guide goes over the possible ways to connect to SAP Service Cloud on the Tekst App.

Prerequisites

The user must have the following minimum permissions in SAP:

  • Read access to the textual fields of the case object

  • Read and write access to any fields that Tekst will update
    (Refer to the SAP Possible Actions section for more details)

    *Note: If you're using a custom object instead of the default case object, these permissions should be applied to the selected custom object.

Setup

Step 1: Navigate to Integrations

On the Tekst platform, locate and click on the "Integrations" option. This is typically found in the bottom  navigation menu.

Step 2: Add a New Integration

To connect a new provider:

  1. Click the Connect Integration button in the top-right corner of the Integrations page
  2. A modal appears showing available providers (e.g., Outlook, Salesforce, SAP, HubSpot, Zendesk)
  3. Select SAP Service Cloud
  4. Fill in your SAP Tenant URL and the username and password.

 

Revoke Access

General revocation

  1. Access the Tekst dashboard.
  2. Locate the integration you want to revoke.
  3. Delete the integration

Once the integration is deleted, access is automatically revoked. All connections are permanently severed.

For general revocation assistance, contact support@tekst.com.

SAP-specific revocation

If you specifically want to revoke access to SAP, follow the steps below:

Note: These steps apply only to integrations using username-password authentication.

  1. Sign in as tenant administrator to the administration console for SAP cloud identity services.
  2. Select the user management tile.
    • The system only displays the first 20 users sorted by user ID number.

    • For more information about how to find a user in Identity Authentication, see Search Users from SAP.

  3. Deactivate user
  • Press the edit icon next to the Personal Information section.
  • Select "Inactive" from the dropdown next to the Status field.

Note: For SAP-specific instructions on revoking user access, refer to the official documentation:
SAP Help – Deactivate Users

See more
SAP possible actions

In SAP Service Cloud, Tekst can perform various actions when cases are created or updated.

This article outlines the different actions that can be triggered based on case activity.

Note: If a different object is used instead of the default case (e.g., a custom object like Ticket), the available actions may vary accordingly.

Default Actions

Tekst can perform several default actions on cases within SAP Service Cloud, including:

1. Updating Fields

Tekst can update both standard fields - such as language and category - as well as custom fields and taxonomies.
Additionally, fields used during the gathering phase (part of the resolution process) can be automatically filled based on the case content. 

2. Adding Notes

Textual notes can be added to a case to assist agents with additional context.
Examples include:

  • Case summaries

  • Suggested responses

  • Insights from external systems

3. Linking Related Objects

Tekst can also link relevant SAP objects to a case based on extracted textual data.
For instance, order data or other related business objects can be automatically associated with a case to streamline case resolution.

Custom Actions

These default actions are generally available but certain use-cases might require more options. Contact customer success to discuss what might be useful for your specific use-case as additional actions provided by Tekst.

See more
SAP Service Cloud API Usage

This article explains how Tekst uses API calls with SAP Service Cloud to automate case processing and train AI models. Understanding the API flow helps you estimate resource usage and plan your integration.

Real-Time Case Processing Flow

When Tekst processes cases in real-time through SAP Service Cloud, the following sequence of API calls occurs for each case:

1. Case Creation Notification

SAP Service Cloud sends a webhook notification to Tekst when a new case is created. This initial ping triggers the automation workflow.

2. Automation Execution (PATCH Request)

After receiving the notification, Tekst performs its AI-driven automation and updates the case by patching specific SAP fields. This is typically a single PATCH API call that updates fields such as:

  • Category or subcategory classifications
  • Priority levels
  • Routing or assignment information
  • Custom fields for sentiment, product identification, or other AI predictions
  • Language detection

For a complete list of fields Tekst can update, refer to SAP possible actions and Objects and fields used.

3. Case Closure Notification

When a case is closed in SAP Service Cloud, another webhook notification is sent to Tekst. This signals that the case lifecycle is complete.

4. Feedback Retrieval (GET Request)

After closure, Tekst fetches the complete case data to check if any relevant fields have changed. This GET request retrieves the case with all updated field values to support Tekst's feedback mechanism, which:

  • Compares AI predictions with final agent decisions
  • Identifies correction patterns
  • Feeds data back into the AI training pipeline to improve accuracy

This feedback loop is what enables Tekst models to continuously learn and achieve 90%+ accuracy in routing and classification over time.

API Call Summary per Case

For each case processed in real-time, expect the following API interactions:

The total API calls from Tekst to SAP per case is 2 calls (1 PATCH + 1 GET). SAP sends 2 webhook notifications to Tekst per case (create + close). Plan your API rate limits accordingly based on your expected case volume.

Additional API Operations

  • Bulk Operations for Model Training

During initial setup or model retraining, Tekst uses bulk APIs to fetch historical messages and cases from SAP Service Cloud. The volume of API calls depends on:

  • The number of historical cases being analyzed
  • The date range specified for training data
  • The complexity of your case structure (interactions, attachments, etc.)

Bulk fetching during training typically uses batch endpoints or pagination to minimize the total number of API requests. Contact your Tekst customer success team to understand the expected API usage for your specific training dataset.

  • Message Review via Tekst Platform

When users access the Tekst platform at customer.tekst.com to review messages and AI predictions, Tekst fetches case data using standard GET requests. These API calls are triggered on-demand when:

  • Users navigate to specific messages or cases
  • Users filter or search through cases
  • Users view prediction details and related case information

These GET requests are minimal and occur only when users actively interact with the platform to review individual cases.

Optimizing API Usage

To optimize API consumption with your SAP Service Cloud integration:

  • Scope your webhooks: Configure SAP Service Cloud Flows to send notifications only for relevant case types or statuses
  • Monitor rate limits: Ensure your SAP API limits can accommodate your expected case volume plus bulk operations
  • Plan training windows: Schedule model training during off-peak hours to minimize impact on real-time operations
  • Use custom hooks: Implement fine-grained webhook triggers to avoid unnecessary notifications

For questions about API usage specific to your implementation or to discuss optimization strategies, contact your Tekst customer success team.

Related Articles

See more
Objects and fields used

This article gives an overview of which objects and fields are used (in a default scenario) for SAP Service cloud.

Please note that this is not the v2 version.

ServiceRequest (Ticket) - Core Object

Object Name Description / Reason
ServiceRequest ID Unique identifier for the ticket
ServiceRequest ObjectID Internal object identifier
ServiceRequest Subject Ticket subject/title
ServiceRequest Description Main ticket description text
ServiceRequest CreationDateTime Timestamp when ticket was created
ServiceRequest LastChangeDateTime Last modification timestamp
ServiceRequest CompletionDateTime When ticket was resolved/closed
ServiceRequest Status Current ticket status
ServiceRequest StatusText Human-readable status description
ServiceRequest LifeCycleStatus System lifecycle status (Open, In Process, Closed)
ServiceRequest Priority Ticket priority level
ServiceRequest PriorityText Priority description
ServiceRequest TypeCode Document/Ticket type code
ServiceRequest TypeCodeText Document type description
ServiceRequest Origin Channel (Email, Phone, Web, etc.)
ServiceRequest ProcessingTypeCode Processing type identifier
ServiceRequest CategoryID Service category
ServiceRequest IncidentCategoryID Incident category (if applicable)
ServiceRequest AssignedTo Current assignee/agent
ServiceRequest ProcessorPartyID Processor/Agent ID
ServiceRequest ReporterPartyID Customer/Reporter ID
ServiceRequest ReporterEmail Reporter's email address
ServiceRequest InitialReviewTime Time to first response
ServiceRequest LastAgentInteraction Last agent interaction timestamp
ServiceRequest ServiceLevelAgreement SLA identifier
ServiceRequest DueDateTime SLA due date/time
ServiceRequest *__c All relevant custom fields for sentiment, product, escalation

ServiceRequestInteraction (Including Emails)

Object Name Description/Reason
ServiceRequestInteraction ID Interaction identifier
ServiceRequestInteraction ObjectId Internal object ID
ServiceRequestInteraction ServiceRequestObjectID Link to parent ticket
ServiceRequestInteraction TypeCode Interaction type (Email, Phone, Chat, InternalMemo)
ServiceRequestInteraction TypeCodeText Interaction type description
ServiceRequestInteraction Direction Inbound/Outbound
ServiceRequestInteraction CreationDateTime When interaction occurred
ServiceRequestInteraction Subject Subject line (for emails)
ServiceRequestInteraction Text Content of the interaction/email body
ServiceRequestInteraction FromAddress Sender email (for email type)
ServiceRequestInteraction FromName Sender name
ServiceRequestInteraction ToAddress Recipients (for email type)
ServiceRequestInteraction SentDateTime When sent (for outbound)
ServiceRequestInteraction ReceivedDateTime When received (for inbound)
ServiceRequestInteraction AuthorID Who created the interaction
ServiceRequestInteraction AuthorName Author display name
ServiceRequestInteraction Status Interaction status
ServiceRequestInteraction MessageID Unique message ID (for emails)

Attachment (optional)

ObjectNameDescription/Reason
AttachmentIDAttachment ID
AttachmentObjectIdInternal identifier
AttachmentParentObjectIDLink to parent (ticket or interaction)
AttachmentNameFile name
AttachmentMimeTypeFile type (PDF, JPEG, etc.)
AttachmentSizeInKbFile size
AttachmentCreationDateTimeUpload timestamp
AttachmentCategoryCodeAttachment category
AttachmentLinkWebURIURL to access attachment

ServiceRequestTextCollection (for internal notes not in interactions)

ObjectNameDescription/Reason
ServiceRequestTextIDText entry ID
ServiceRequestTextParentObjectIDLink to ticket
ServiceRequestTextTypeCodeText type (InternalNote, AdditionalInfo)
ServiceRequestTextTypeCodeTextText type description
ServiceRequestTextTextActual text content
ServiceRequestTextCreationDateTimeWhen text was added
ServiceRequestTextAuthorIDWho created the text
See more
Troubleshooting: SharePoint "Authentication check returned false" Error

The "Authentication check returned false" error occurs when Tekst\'s periodic health check fails to verify access to one or more of your connected SharePoint sites. While you may still be able to see the list of sites in the Tekst dashboard, the background synchronization is paused until the connection is refreshed.

Why this happens

This error is typically triggered when the individual site-level authentication fails, even if the broader Microsoft account remains connected. Common causes include:

  • Permission Revocation: A SharePoint Administrator may have removed Tekst\'s access to a specific site or library.

  • Site Deletion or URL Changes: If a site was deleted or its URL was renamed in SharePoint, the health check will fail for that specific entry.

  • Tenant-Level Restrictions: New security policies in your Microsoft 365 tenant might be blocking the integration.

  • Recent changes: it can take up to 12 hours for the changes on Microsoft to propagate to Tekst.

Tekst performs a deep health check for every individual site you have configured. If even one site fails to respond, the entire integration status may show as "Authentication failed" to prevent data inconsistencies.

How to fix it

In most cases, you can resolve this by re-triggering the Microsoft OAuth flow to refresh your access tokens.

Step 1: Identify the failing site

  1. Navigate to Settings > Integrations.

  2. Locate the SharePoint row. You will likely see a red "Authentication failed" badge.

  3. Click on the row to open the SharePoint settings.

  4. Look through your list of connected sites. Any site causing the failure will typically be highlighted or show a disconnected status.

Step 2: Verify the integration

  1. Verify with which client id and application id the integration was connected.

  2. Verify the permission requests (e.g., Sites.Read.All, Files.Read).

Once changes are complete, the status badge in Tekst should turn green, and the "Authentication check returned false" error will disappear from your logs. This can take up to 12 hours to propagate from sharepoint to Tekst

Still having issues?

If the error persists after reconnecting, check the following:

  • Global Admin Consent: Ensure your IT department has granted tenant-wide consent for the Tekst application in the Azure Portal.

  • Site Access: Verify that the account used to reconnect still has active "Read" permissions on the specific SharePoint sites you are trying to sync.

If a site has been permanently deleted in SharePoint, you must remove it from the Tekst configuration page to stop the health check from failing.

See more
Connect a SharePoint integration

This guide outlines the steps to connect to a SharePoint integration on the Tekst App. 

Prerequisites

Your application should have the following permissions:

  • Files.Read.All
  • Sites.Read.All
  • Files.ReadWrite

You can set up these permissions in your app registration under "API permissions".

Setup

Step 1: Navigate to "Integrations".

On the Tekst platform, locate and click on the "Integrations" option. This is typically found in the bottom  navigation menu.

Step 2: Add a SharePoint Integration

Click the Add Integration button in the top-right corner of the Integrations page to connect a new integration. A modal appears showing available providers, choose "SharePoint" and click on "Connect"

Step 3: Fill in your credentials

Fill in the required credentials of your service account:

  • Client ID 
  • Client Secret
  • Tenant ID

These credentials can be found under App registrations in Microsoft Entra Admin Center. 

Congratulations! You have successfully set up the SharePoint connector on Tekst.

See more
Restrict SharePoint access

This guide explains how to restrict access for a service account (with or without own client credentials).

By default, using a service account grants access to all SharePoint sites. However, this level of access is typically unnecessary. To follow the principle of least privilege, you should restrict access to only the specific sites required.

Prerequisites

Before proceeding, ensure you have configured the Entra ID application registration with the Sites.Selected permission scope. For details on this step, please refer to our separate article on Entra ID configuration.

Assign permission to specific SharePoint sites

You can either use CLI for Microsoft 365 or PnP PowerShell to assign permissions. 

Permission Levels

When assigning permissions, you can choose from the following levels:

  • read: Read items in a site collection
  • write: Read and write items in a site collection
  • manage: Read and write items and lists in a site collection
  • fullcontrol: Have full control of a site collection

Select the permission level that best fits the service account's requirements, always following the principle of least privilege.

Using CLI for Microsoft 365

1. Login to Microsoft 365:

m365 login

2. Grant permissions to a specific site:

m365 spo site apppermission add --appId "YOUR_APP_ID" --permission \nfullcontrol --siteUrl "https://contoso.sharepoint.com/sites/your-site"

3. List existing permissions:

m365 spo site apppermission list --appId "YOUR_APP_ID" \n--siteUrl "https://contoso.sharepoint.com/sites/your-site"

4. Update permissions:

m365 spo site apppermission add --appId "YOUR_APP_ID" \n--permission read --siteUrl "https://contoso.sharepoint.com/sites/your-site"

5. Remove permissions:

m365 spo site apppermission remove --appId "YOUR_APP_ID" \n--siteUrl "https://contoso.sharepoint.com/sites/your-site"

Using PnP PowerShell

1. Connect to SharePoint with the ClientId that was used to authenticate 

Connect-PnPOnline -Url "https://contoso.sharepoint.com/sites/your-site" -Interactive -ClientId XXXX

2. Grant permissions:

$permission = Grant-PnPAzureADAppSitePermission -AppId "YOUR_APP_ID" \n-DisplayName "YourAppName" -Permissions Write

3. Update permissions if needed:

Set-PnPAzureADAppSitePermission -PermissionId $permission.Id -Permissions FullControl

*Note: You must be a site collection admin to execute these commands.

PowerShell Version Requirements: If you encounter errors related to your PowerShell version when running these commands, it's recommended to update to the latest version. Some commands may require PowerShell 5.1 or higher for proper functionality. To check your PowerShell version, run $PSVersionTable.PSVersion in your PowerShell terminal. If you need to update PowerShell, refer to Microsoft's official documentation for the most current installation methods.

This article was written based on this blog post

See more
How to set up the Tekst Outlook App

This guide walks you through the steps to install and configure the Tekst Outlook App, which allows you to interact with Tekst automations directly from your Outlook inbox.

Prerequisites

  • An active Tekst account with contributor or administrator role.
  • Microsoft Outlook (desktop or web version).

Installation steps

  1. Open Microsoft Outlook and navigate to the Add-ins section.
  2. Search for "Tekst" in the add-in store.
  3. Click "Add" to install the Tekst Outlook App.
  4. Sign in with your Tekst credentials when prompted.

Using the Outlook App

Once installed, the Tekst side panel will appear when viewing emails that are processed by your Tekst automations. From this panel you can:

  • View automation predictions and suggested actions.
  • Approve or reject human approval steps directly within Outlook.
  • Edit variables such as CSV files before approving.

Getting help

If you encounter any issues during setup, please contact our support team for assistance.

See more
Connect a Zendesk integration

This guide will walk you through the process of setting up the Zendesk connector on Tekst.

Setup

Step 1: Navigate to "Integrations".

On the Tekst platform, locate and click on the "Integrations" option. This is typically found in the bottom  navigation menu.

Step 2: Add a Zendesk Integration

Click the Add Integration button in the top-right corner of the Integrations page to connect a new integration. A modal appears showing available providers, choose "Zendesk" and click on "Connect"

Step 3: Fill in Zendesk Domain

Fill in your Zendesk domain and click "Connect". 

screenshot 04.png

Step 4: Log in to Zendesk.

Log in to your Zendesk account and grant access to Tekst. Tekst needs this access to read incoming tickets and add labels.

image 12.jpg

Congratulations! You have successfully set up the Zendesk connector on Tekst. 

If you have any questions or encounter issues during the setup process, don't hesitate to contact our support team for assistance. We're here to ensure a smooth integration experience for you!

See more
Supported Zendesk Actions

This article describes the supported Zendesk actions and their configuration options.

Add a comment

This action allows you to add a public or internal comment to a Zendesk ticket.

  • Comment: The content of the comment.

  • Public or internal: A toggle to set the comment visibility.

  • HTML or Plain text: Choose the format of the comment. This is an optional field. Use html if you have certain formatting you want to use.

  • Author ID: The ID of the user adding the comment. This is an optional field. The internal comment will be shown to be added by this author. We propose to create an author called Tekst or similar.

Label a ticket

This action updates a Zendesk custom field (such as a dropdown or multi-select field) with a specific value. Use this to categorize tickets based on their content - for example, automatically setting a "Category" field to "Technical Issue" when Tekst detects technical keywords.

This action is different from "Tag a ticket." Labels update structured custom fields, while tags add free-form text labels to tickets.

Configuration fields:

  • Field Identifier: The numeric ID of the Zendesk custom field you want to update (e.g., 1234567890).

  • Value: The string value of the specific option within that field (e.g., option_high_priority for a dropdown choice like "High Priority").

How to find the Field Identifier

  1. In Zendesk, go to Admin Center > Objects and rules > Tickets > Fields.

  2. Locate your custom field in the list. The Field ID column shows the identifier you need.

  3. Click Edit on the field to view the option values. For dropdown and multi-select fields, you'll see both the display name and the underlying tag/value (typically in a format like option_name).

Alternatively, use the Zendesk API endpoint /api/v2/ticket_fields.json to retrieve all field IDs and their option values programmatically. The response will show the value property for each option, which is what you need for the Value parameter.

Tag a ticket

This action adds one or more tags to a ticket.

  • Tags to add: A list of tags to be added to the ticket.

Tags is an (often used) example of a field, hence the small overlap with label a ticket.

Update ticket status

This action updates the status of a Zendesk ticket.

  • Status: The new status of the ticket. Choose from: New, Open, Pending, Hold, Solved, Closed.

Whatsapp message

This action is only available for integrations with Sunshine enabled.

This action sends a message to a WhatsApp conversation.

  • Message: The content of the message to be sent.
See more
Zendesk Sunshine addition

This guide will walk you through the process of setting up Sunshine support as an addition to Zendesk for Tekst. This integration enables advanced actions, such as sending WhatsApp messages, offering greater flexibility in your customer support workflow.

Prerequisites

  • A Zendesk Suite Professional plan or above is required to access the Sunshine Conversations API.
  • Zendesk Agent Workspace must be activated.
  • Additional add-on packs may be required for more Monthly Active Users (MAU) or notifications.

Integration Steps:

Step 1: Set up basic Zendesk integration.

Follow the basic Zendesk integration article to set up a Zendesk connection.

Step 2: Configure Sunshine support.

After setting up the basic Zendesk integration:

  • In the Tekst dashboard, locate your Zendesk integration.
  • Click to open the integration settings.
  • Navigate to the "Channels" tab.

Step 3: Obtain Sunshine Conversations API credentials.

To set up Sunshine support, you'll need to get the necessary API credentials from your Zendesk account:

  • Log in to your Zendesk Admin Center.
  • Click on "Apps and integrations" in the sidebar.
  • Select "APIs > Conversations API".
  • Click "Create API key".
  • Enter an identifying name for the key and click "Next".
  • Copy the App ID, Key ID, and Secret Key. You'll need these for the next step.

Step 4: Enter Sunshine API credentials in Tekst.

In the Channels tab of your Zendesk integration on Tekst:

  • Locate the fields for App ID, API Key ID, and API Secret.
  • Enter the corresponding values you copied from the Zendesk Admin Center.
  • Save your changes.
See more
Create an automated user in Zendesk

This guide provides instructions to set up a bot user in Zendesk, specifically for integration with Tekst apps. This bot user is designed to automatically respond to incoming tickets using predefined responses configured within the Tekst application.

For example, consider using a Tekst App that automatically generates a brief summary of a new customer support ticket and inserts it as an internal comment within the ticket thread.

1. Create a new customer

1. Go to your support Zendesk domain and connect as an administrator. 
2. Go to "Customers" and click on "Add"
3. Fill in a name (required) and e-mail address (optional)

2. Share User ID

Share the User ID of your newly created user with the Tekst support team via support@tekst.com

This ID is required by the Tekst App to correctly reference the user when posting internal comments to Zendesk support tickets.

You can find the UserID by clicking on the newly created user and checking the URL:
https://acme.zendesk.com/agent/users/.

See more
Why does changing the email subject in Outlook create a new thread?

If you change the subject line of an email in an Outlook conversation, Outlook treats the modified message as the start of a new, separate conversation. This means the original thread is split: messages with the old subject stay in one thread, while messages with the new subject appear in another.

Because Tekst relies on the conversation ID that Outlook assigns to group messages into threads, a subject change in Outlook results in:

  • Separate threads in your message feed - the original conversation and the renamed one show up as two distinct threads.
  • Separate processing runs - each thread is processed independently by your AI models.
  • Multiple automation runs - automations that trigger on incoming messages will run separately for each thread, potentially causing duplicate actions such as repeated replies, label assignments, or ticket creation.
  • Split conversation history - context from the original thread is not carried over to the new one.

Why this happens

Outlook uses the email subject line as a key component of its conversation ID (also called the thread ID). When you modify the subject, Outlook generates a new conversation ID for that message and any future replies to it. This is a limitation of how Outlook handles email threading - it is not something Tekst can override or work around.

Microsoft's recommendation

Microsoft recommends that users do not change the subject line of an ongoing email conversation. In fact, newer versions of Outlook (desktop and web) have removed the ability to edit the subject line of a reply for exactly this reason. Microsoft recognizes that changing the subject breaks the conversation thread and leads to confusion.

Tekst aligns with this recommendation. Keeping the original subject line intact ensures that all messages in a conversation are grouped correctly in both Outlook and Tekst.

What to do if this has already happened

If a subject change has already split a conversation, the threads cannot be merged back together in Tekst. You can still view both threads individually in your message feed by searching for the sender or keywords from the conversation.

To prevent this from happening in the future:

  • Do not modify the subject line when replying to or forwarding an email within an existing conversation.
  • Start a new email if you genuinely need a different subject - this makes the intent clear and avoids confusion.
  • Update to a newer version of Outlook if your organization is still using an older version that allows subject editing on replies.

Related articles

See more
How does Tekst handle Salesforce HTML email body limits?

Salesforce imposes a character limit on the HTML body of emails. To ensure that your emails are successfully delivered and displayed in Salesforce, our platform automatically handles emails that exceed this limit. This article explains how we process oversized HTML emails and what to expect in the user interface.

How it works

When an email's HTML body is too long for Salesforce, our system initiates an automatic cleaning process. This process involves two main steps:

  1. Soft HTML Clean: The system first attempts to simplify the email's HTML by removing unnecessary code while preserving the original formatting as much as possible.
  2. Plain Text Conversion: If the soft clean is not enough to meet Salesforce's requirements, the system converts the email to plain text.

This process may result in the removal of inline images. If an email is converted to plain text, inline images will not be displayed in Salesforce.

What you will see in the UI

In the Tekst platform, you will still be able to see the content of the email, even if it has been shortened. Here's what to expect:

  • Cleaned Preview: The user interface will show a cleaned, shortened preview of the email.
  • Expand Option: If the email content is split into multiple parts, you will see an "Expand all" option to view the rest of the content.
  • Original HTML View: You can still access the original HTML view by selecting the "Show Original" option. However, please note that if Salesforce has truncated the HTML, this view will only show the content that was successfully synced.

If you notice that images are missing from an email in Salesforce, it is likely due to the HTML body limit and our automatic cleaning process. To view the original email with images, you can check the original email in your email client.

See more
Does capitalization matter in Outlook labels?

Some users have asked whether the capitalization of Outlook labels matters for topic routing in Tekst. For example, if a label is "Service Claim" in one mailbox and "Service claim" in another, will they be treated as the same topic?

The short answer is: No, capitalization does not matter. Our system treats labels in a case-insensitive manner. "Service Claim" and "Service claim" will be routed to the same topic.

While the system handles capitalization differences, we recommend establishing a consistent naming convention for your labels. This will make it easier for your team to manage and understand the topics.

Best Practices for Labeling

  • Be consistent: Try to use the same capitalization and naming convention across all mailboxes.
  • Be specific: Use clear and descriptive names for your labels. For example, instead of "Claim," use "Service Claim" or "Insurance Claim."
  • Keep it simple: Avoid using special characters or long names for your labels.
See more
Why is the same email appearing in multiple threads?

If you're seeing the same email appear in multiple threads on your dashboard, it's likely due to how the email was routed to your inboxes. Our platform creates a unique thread for each inbox an email is delivered to. This means that if an email is sent to multiple addresses, or forwarded from one inbox to another, it will appear as a separate thread for each instance.

This is the intended behavior of our system and not a bug. It ensures that every instance of an email is tracked, regardless of how it arrived in your inboxes.

How to identify the cause

To confirm that duplicate threads are being caused by your email routing, you can check the inbox associated with each thread. Here's how:

  1. Open one of the duplicate threads in your dashboard.
  2. Check the inbox name associated with the thread. You can usually find this information near the top of the thread view.
  3. Open the other duplicate thread and check the inbox name.
  4. If the inbox names are different, it confirms that the email was delivered to multiple inboxes, resulting in separate threads.

How to prevent duplicate threads

To prevent the same email from appearing in multiple threads, you'll need to adjust your email forwarding rules. The goal is to ensure that an email is only delivered to one inbox that is monitored by our platform.

Modifying your email forwarding rules can affect how your emails are delivered. Make sure you understand the changes you're making before proceeding. If you're unsure, consult with your email administrator.

Here are some general steps you can take:

  • Review your forwarding rules: Check the forwarding rules in your email client (e.g., Outlook, Gmail) to see if any rules are causing emails to be sent to multiple inboxes that are connected to our platform.
  • Use a single destination inbox: If possible, have all relevant emails forwarded to a single inbox that is monitored by our platform. This will ensure that each email creates only one thread.
  • Use email groups or aliases carefully: If you use email groups or aliases, make sure they are configured to avoid sending duplicate emails to multiple monitored inboxes.

For more information on how to manage your email settings, please refer to the documentation for your email provider.

Related articles

See more
How does mail synchronization work?

This guide will explain the dual method-approach used by Tekst to keep mailboxes up-to-date. This 

Real-time webhooks (primary)

When you connect a mailbox, Tekst registers Microsoft Graph API subscriptions to monitor:

  • New emails created in Inbox
  • Updates to existing emails (e.g., read status, categories)
  • Sent Items folder changes

Webhooks deliver notifications within 5 minutes of changes. Subscriptions auto-renew every 6 hours to maintain continuous monitoring (Microsoft Graph subscriptions expire after 3-30 days depending on resource type).

Polling fallback (backup)

If webhooks fail renewal after 3 retry attempts, Tekst automatically switches to hourly polling:

  • Queries messages received since last successful sync using receivedDateTime filter
  • Processes up to 400 email threads per batch
  • Continues until webhooks re-establish or manual reconnection occurs

Delta sync and state management

After initial backfill, Tekst uses Microsoft Graph delta queries to fetch only changed items, storing a delta token for each mailbox to minimize API calls and improve performance.

Real-time sync reduces manual triage time by up to 200% for shared inboxes by enabling immediate AI categorization and workflow triggers.

See more
What data does Tekst store and how does the learning process work?

Tekst processes customer data using a streaming architecture: the content of emails, tickets, and cases is handled ephemerally and never stored permanently. This article explains what metadata Tekst does store, how the feedback loop works, and how models are retrained.

What Tekst stores vs. what it does not store

Tekst does not persist any PII, message content, or confidential information. All content is processed in real time and discarded after classification.

However, Tekst does store metadata that is essential for monitoring and improving model performance:

  • Prediction values: The category, tag, or assignment the model predicted.
  • Feedback signals: Whether an agent accepted or corrected the prediction (also called "relabeling").
  • Identifiers: Ticket/case IDs and integration IDs (no content).
  • Timestamps: When the prediction was made and when feedback was received.
  • Model metadata: Model version, confidence score, and accuracy metrics.

This metadata contains no message body text, attachments, customer names, or other personal data.

How the feedback loop works

The learning process relies on a real-time feedback loop between Tekst and the customer's platform (e.g., Salesforce, SAP CEC, Outlook):

Step 1: Real-time classification

When a new ticket or email arrives, the customer's platform sends an event to Tekst. Tekst reads the content via API, runs its AI models, and writes the predictions (category, assignment, priority) back to the platform. The content is processed in memory and not stored. Only the prediction metadata is persisted.

Step 2: Feedback capture

When an agent reviews the ticket and changes a field that Tekst predicted (e.g., selects a different category), the customer's platform sends an update or closure event back to Tekst. Tekst records only the final metadata values and compares them to its original prediction. This tells Tekst whether it was correct or whether the agent made a correction.

Step 3: Model retraining

The accumulated feedback metadata is used to evaluate model accuracy. Retraining is not scheduled on a fixed cadence (e.g., nightly). Instead, it is triggered by two conditions:

  1. Accumulated corrections: Enough new feedback has been collected to meaningfully improve the model.
  2. Accuracy drop: Automated monitoring detects that model performance has declined.

During the initial onboarding phase, retraining happens more frequently to rapidly build accuracy. Once the model is stable, retraining occurs only when one of the above conditions is met. Retraining typically takes between 1 and 12 hours depending on model complexity.

Why update/closure hooks are needed

The webhook or API notification that the customer's platform sends back to Tekst (e.g., "case updated" or "case closed") is critical for the learning process. Without it, Tekst would have no way to know whether its predictions were accepted or corrected by the agent. These hooks transmit only metadata (final field values, IDs, timestamps), not ticket content.

Related articles

See more
How is model accuracy calculated?

Monitoring model and tag accuracy ensures your models and, therefore, your automations are performing as well as possible.

Prerequisites

In order to view model and tag accuracy, you need first to have:

  • A classification model (model accuracy is not yet supported for entity extraction models).
  • Correct filled in feedback rules.

About the confidence level

In order to make sure the model and tag accuracy is as accurate as possible, a confidence level is used. This confidence level is based on the amount of feedback that was received for a certain tag (with feedback being the correction or verification of a tag prediction).

Confidence = Messages with feedback / All messages

Example: Tag is predicted 1000 times, and 500 times the prediction is followed with feedback. Confidence level = 50%.

Important to note is that there is also an absolute minimum of feedback that is needed:

  • For model accuracy: 100 messages with feedback.
  • For tag accuracy: 10 messages with feedback.

The time period for including feedback in the confidence calculation is the past 30 days or until the last training date if this is less than 30 days ago.


About the accuracy percentage

Accuracy percentage is calculated as an F1-score, which is a combination of Recall and Precision percentage.

Recall = Correct messages with tag / All messages with tag

“Of all messages that should have this tag, what percentage did we correctly identify?”

  • 1000 messages with feedback tag X

  • Of which 800 correctly predicted

→ 800 correct messages / 1000 messages = 0.80 (80%)

Precision = Correct predictions with tag / All predictions with tag

“Of all messages we tagged with this label, what percentage were correct?”

  • 1000 predictions tag X

  • Of which 800 have correct feedback

→ 800 correct predictions / 1000 predictions = 0.80 (80%)

F1 = 2 * (Recall * Precision) / (Recall + Precision)


About tag confusion

Within the side panel of a model or tag it is possible to see exactly how tags are mispredicted using the tag confusion. This shows on the left the original tag that was predicted and on the right the correct tag, together with the frequency of this confusion happening.

Note that confusion follows the same time window as confidence, the past 30 days or until the last training date if this is less than 30 days ago.

See more
Which AI models are used for real-time processing?

To maximize processing speed and minimize the risk of failures or delays, our platform uses an intelligent, dynamic method for selecting which AI models to use for real-time processing tasks.

How it works: Instead of using all available models, the system dynamically selects the most essential ones needed for a specific task. This ensures faster, more reliable performance for all real-time operations.

How model selection works

Our AI system has a comprehensive suite of models that work together in a processing block. However, not all of these models are required for every task.

  • Real-time Processing: For tasks that require an immediate response, our system intelligently selects a smaller, optimized set of models. This selection is based on the specific requirements of the task at hand, ensuring rapid and accurate results.
  • Simulations & Non-real-time tasks: For processes like simulations, analytics, or model training, the system utilizes all models within the processing block. These tasks are not subject to the same strict time constraints, allowing for more extensive, in-depth analysis.

What about the other models? Even if a model isn't selected for a real-time task, its predictions are still generated. These predictions are processed without a real-time constraint, ensuring that all data is eventually processed comprehensively.

What's next

To learn more about our AI models, you can read these related articles:

See more
How often are the AI models retrained?

The training of custom models is fully managed by Tekst. Every customer has multiple models that are constantly monitored for performance. Customers will be able to validate the accuracy of the models in the Tekst portal. Tekst has built a pipeline where accuracy and feedback trigger automatic retraining.

Frequency depends on the accuracy drops. During the start of the project, models will be continuously retrained to achieve an already high accuracy before going live as this will be crucial gain end-user's trust.

If a new open source model becomes available, Tekst will test this model internally to validate performance. Once done, we evaluate which customer could benefit from the newest model.

At Tekst it is our main goal that every customer has at all times the best available and trained model for its business case.

Monitor the model retraining status

You can monitor the progress of your model retraining to know when it's complete. This article explains how to find the status of your retraining jobs and provides information on timelines and notifications.

Prerequisites

  • You must have initiated a model retraining through support.
  • You have made changes that need to be incorporated.
  • The overall accuracy is too low and triggers a retrain.

Steps

  1. Navigate to the Models section in the Tekst platform.

  2. Select the model you want to monitor.

  3. In the top overview bar you will see the status of the retraining job. The status will indicate if the job is in progress, completed, or has failed.

Typical Timeline

Model retraining typically takes between 1 to 12 hours to complete. However, this timeline can vary depending on the complexity of the model and the amount of data being processed.

We recommend checking the status of your retraining job periodically for the most up-to-date information.

Once the retraining is complete, you can view the updated model in the "Models" section.

See more
Supported languages

Tekst supports all languages, including those with Cyrillic and Uralic alphabets such as Hungarian and Bulgarian. We have multiple successful EMEA-wide (and worldwide) deployments that cover these languages.

Tekst AI models support the following exhaustive but not extensive list of languages. If a language does not appear in this list, please contact support to verify if your language is supported.

Note that the Tekst platform itself is English-only.

Code Language
af Afrikaans
als Alemannic German
am Amharic
an Aragonese
ar Arabic
arz Egyptian Arabic
as Assamese
ast Asturian
av Avar
az Azerbaijani
azb South Azerbaijani
ba Bashkir
bar Bavarian
bcl Central Bikol
be Belarusian
bg Bulgarian
bh Bihari languages
bn Bengali
bo Tibetan
bpy Bishnupriya Manipuri
br Breton
bs Bosnian
bxr Buryat
ca Catalan
cbk Chavacano
ce Chechen
ceb Cebuano
ckb Central Kurdish (Sorani)
co Corsican
cs Czech
cv Chuvash
cy Welsh
da Danish
de German
diq Zazaki
dsb Lower Sorbian
dty Doteli
dv Dhivehi (Maldivian)
el Greek
eml Emilian-Romagnol
en English
eo Esperanto
es Spanish
et Estonian
eu Basque
fa Persian
fi Finnish
fr French
frr Northern Frisian
fy Western Frisian
ga Irish
gd Scottish Gaelic
gl Galician
gn Guarani
gom Goan Konkani
gu Gujarati
gv Manx
he Hebrew
hi Hindi
hif Fiji Hindi
hr Croatian
hsb Upper Sorbian
ht Haitian Creole
hu Hungarian
hy Armenian
ia Interlingua
id Indonesian
ie Interlingue
ilo Ilokano
io Ido
is Icelandic
it Italian
ja Japanese
jbo Lojban
jv Javanese
ka Georgian
kk Kazakh
km Khmer
kn Kannada
ko Korean
krc Karachay-Balkar
ku Kurdish
kv Komi
kw Cornish
ky Kyrgyz
la Latin
lb Luxembourgish
lez Lezgian
li Limburgish
lmo Lombard
lo Lao
lrc Northern Luri
lt Lithuanian
lv Latvian
mai Maithili
mg Malagasy
mhr Eastern Mari
min Minangkabau
mk Macedonian
ml Malayalam
mn Mongolian
mr Marathi
mrj Western Mari
ms Malay
mt Maltese
mwl Mirandese
my Burmese
myv Erzya
mzn Mazanderani
nah Nahuatl
nap Neapolitan
nds Low German
ne Nepali
new Newar
nl Dutch
nn Norwegian Nynorsk
no Norwegian
oc Occitan
or Odia (Oriya)
os Ossetian
pa Punjabi
pam Pampanga
pfl Palatine German
pl Polish
pms Piedmontese
pnb Western Punjabi
ps Pashto
pt Portuguese
qu Quechua
rm Romansh
ro Romanian
ru Russian
rue Rusyn
sa Sanskrit
sah Sakha (Yakut)
sc Sardinian
scn Sicilian
sco Scots
sd Sindhi
sh Serbo-Croatian
si Sinhala
sk Slovak
sl Slovenian
so Somali
sq Albanian
sr Serbian
su Sundanese
sv Swedish
sw Swahili
ta Tamil
te Telugu
tg Tajik
th Thai
tk Turkmen
tl Tagalog
tr Turkish
tt Tatar
tyv Tuvan
ug Uyghur
uk Ukrainian
ur Urdu
uz Uzbek
vec Venetian
vep Veps
vi Vietnamese
vls West Flemish
vo Volapük
wa Walloon
war Waray
wuu Wu Chinese
xal Kalmyk
xmf Mingrelian
yi Yiddish
yo Yoruba
yue Cantonese
zh Chinese
See more
Supported attachments

Tekst is capable of processing a wide variety of file types. This article provides a comprehensive list of all supported file formats and any limitations associated with them.

Supported File Types

File Type Extensions Notes
Plain Text .txt
HTML .html, .htm
PDF .pdf Tekst can often recover and process corrupted PDFs. Password-protected or encrypted PDFs cannot be processed.
CSV .csv By default, only the first 1,000 rows are processed. Please contact support if you need to process more rows.
Microsoft Word .doc, .docx Encrypted documents (except those with an empty password) will not be processed.
Microsoft Excel .xls, .xlsx, .xlsm, .xlsb By default, only the first 1,000 rows per sheet are processed. Please contact support if you need to process more rows. Encrypted workbooks (except those with an empty password) will not be processed.
Email formats .eml, .msg Attachments within these email files are also processed, subject to the same limitations. This includes recursive attachments (e.g., an .eml file attached to another .eml file).
Images .jpg, .jpeg, .png, .gif, .tiff, .bmp, .webp, .heic, .heif
JSON .json
XML .xml
ZIP Archives .zip Files within a .zip archive are extracted and processed individually. All file types listed above are supported within a .zip archive.

What's next

Getting help

If you have any questions or encounter issues with file attachments, please don't hesitate to contact our support team for assistance.

See more
API settings

This article explains the API settings section available on the Tekst platform.

Navigating

To access the API settings page, navigate to the following URL:

https://{customer}.tekst.com/settings/apikeys

You can also reach this page from the dashboard by following: Settings > API Keys

Screenshot 2025-04-21 at 08.40.37.png

Managing API keys

The API settings section allows you to:

  1. View all existing API keys
  2. Revoke API keys when necessary
  3. Examine the groups, resources, and scopes associated with each key

Adding API keys

There are two methods for creating new API keys:

  1. Inline creation: Keys can be generated automatically when setting up integrations or in other contexts where API access is required
  2. Explicit creation: Keys can be created directly through the API key settings tab

When explicitly creating an API key, you must provide a name and specify the appropriate scopes. For security best practices, we recommend avoiding overly broad scopes.

See more
Authentication

This article explains how to authenticate requests to the Tekst API.

To authenticate against an endpoint, you need a Tekst API key with sufficient scopes to access the specific endpoint. For detailed information about required scopes for each endpoint, please refer here.

Tekst API keys follow this format:

tkst-Y9S7tCt7EOxxxxx

There are two ways to obtain an API key:

  • Inline creation: When setting up an integration, you may automatically receive an API key
  • Explicit creation: On the API key overview page, you can create a dedicated API key with specific scopes

To authenticate your request, include your API key in the x-api-key header. The value of this header should be the API key you received.

Example implementation in Postman:

Screenshot 2025-04-21 at 08.54.22.png

Troubleshooting Common issues

  • 401 Error: This indicates you did not include an x-api-key header in your request
  • 403 Error: This indicates you provided an API key, but it lacks the necessary permissions (insufficient scope, wrong organization, or no access to the requested resource)

Please make sure the base path is https://api.tekst.com

See more
S3 integration API

This article provides an overview and access information for resources linked to the S3 API.

Available S3 APIs

There are two main APIs available for S3 integration:

  • Upload API: Used to upload files and trigger new file processing
  • Feedback API: Used to provide feedback for model improvement

For detailed information about S3 integration APIs, please refer to the articles specific to S3 integration, which include comprehensive API documentation.

See more
Accessing Additional APIs

For access to other APIs not covered in this documentation, please contact your Tekst representative. They will provide you with the necessary API details and Swagger documentation to meet your specific needs.

See more
View all