Privacy Policy
Last Updated: October 13, 2026
AgentStack is a cloud-based platform that lets you build, train, and deploy AI-powered support agents. This Privacy Policy explains what data we collect and how we use it.
Ray Amjad LTD (Company Number 14506459, incorporated in the United Kingdom) is the provider of AgentStack and acts as the data controller for the personal data we handle.
What We Collect
Account Information: Email address, name, and authentication credentials used to create and manage your account. A profile photo, if you upload one or if you sign in with Google and Google supplies one; it is shown to the other members of your organisations.
Billing Information: Processed by our payment provider (Stripe) for purchases, refunds, and fraud prevention. We receive only the order metadata necessary to fulfil your purchase and provide support.
Organisation Data: Organisation name, team member details, and roles when you use our team features, and an organisation logo, if an owner or admin uploads one.
Agent Data: When you create AI agents, we store:
- Training data you provide (website URLs, uploaded documents, Q&A pairs)
- Agent configurations and customisations
- Conversation logs between your agents and your end users
- Analytics and performance metrics
- Automated judgements about support tickets in your inbox, such as a category for what the person needs help with, an urgency level, whether a ticket looks like a repeat of another open ticket from the same person, and whether a reply from your team looks like it resolved the ticket. See AI Model Providers below.
- Contact records for your end users. When you turn on lead collection, an end user can give their details through the chat widget's contact form, or your agent can ask for them during a conversation. A contact record is also created or updated when someone emails your agent, when a visitor leaves an email address in the chat widget, when your site verifies a signed-in user's identity, when you add a contact in the dashboard, and when you create a contact or send conversation messages with an email address through our API. A contact record can hold the person's name, email address and phone number; their answers to custom questions you configure and other custom attributes you or your site supply; any reason or note they give your agent, or that you add; your own user ID for them and any Stripe customer IDs you supply; whether their identity is verified; when they were last seen; when they opted out of email; and a source, a status and a lead score. It can be linked to their conversations with that agent.
Lead Score: We calculate a lead score from 0 to 100 for a contact record with simple arithmetic over how many conversations and messages are linked to the record, how recently the person was last seen, which of name, email address and phone number are present, and whether you have verified the person's identity. It starts at 0 and changes only when we analyse a linked conversation, so it can stay at 0 or be out of date. We use it to order and filter contacts in your dashboard, and return it to you through our API, MCP server and contact exports. We do not use it to make any decision about the person, and it does not change how your agent responds to them.
End User Data: When a person chats with your agent through the chat widget on your site or your Help Page, we can record with that conversation the IP address the request came from and the two-letter country code worked out from that network address, and, for conversations started in the chat widget, their browser language (the language setting their browser reports), reduced to a language code such as "en". You can see the IP address and the country of each conversation in your dashboard and through our API. The country code is included in the instructions sent to the AI model provider that answers the conversation, and it is sent to PostHog, our analytics provider, when the conversation starts. If your organisation turns on helpdesk translation (it is off by default), the language code is used to translate replies your team sends into that language: the language code and the reply text are sent to an Anthropic model for translation, whatever model your agent uses. Translation is one of several supporting steps that can send conversation text to an AI model provider, which can be a different provider from the one your agent uses; see AI Model Providers below. The country code is an estimate from the network address, not a street address or a precise location, and the language code is a browser setting, not a name or an account.
Voice Data: If your agent takes voice messages or voice calls, we handle:
- Voice messages from your end users. When a person records a voice message in the chat widget or on your Help Page, we store the audio and send it to Deepgram to turn it into text. We keep the audio only if you turn on audio storage for that agent (it is off by default); otherwise we delete it as soon as it has been transcribed.
- Call audio and call recordings. During a voice call, the person's speech and your agent's spoken replies pass through our voice providers (see Voice below). We record the call and store the recording only if you turn on call recording for that agent (it is off by default).
- Transcripts. The text of a voice message, and of what is said in a voice call, is stored as messages in that conversation, like a text conversation.
Usage Data: We automatically collect information about how you use the platform, including pages visited, features used, interaction patterns, error reports, and page performance timings.
How We Use Your Information
We use the information we collect to:
- Provide, maintain, and improve the Service
- Process transactions and manage your account
- Train and operate your AI agents as configured by you
- Analyse usage to improve the platform
- Send administrative information and support communications
- Comply with legal obligations
Third-Party Services
AgentStack integrates with the following third-party services. Your use of these services may be subject to their own terms and policies.
AI Model Providers
Your agents' responses are powered by the AI model provider you configure. When your agent processes a conversation, the relevant context and user message are sent to that provider. We do not control how these providers handle data beyond our API agreements with them.
Which provider receives a conversation depends on the model you select for that agent. If that provider fails to respond, we can retry the same request with a model from another provider listed below, which then receives the same context and message.
Whichever provider your agent is configured with, some supporting steps, such as searching your training data, writing summaries and ticket subjects, analysing conversations, making suggestions for your help centre, and detecting language and translating messages, use models we choose, which can come from a different provider than the one your agent uses, such as OpenAI, Anthropic or Google, and these models can receive conversation text. Content you add as training data is turned into search vectors by an OpenAI model.
Some of these supporting steps use models from TypeSafe, which can receive conversation text, such as a visitor's question and passages of your training data when we search it, or a conversation we analyse. TypeSafe models also make automated judgements about support tickets in your inbox, whichever provider your agent is configured with. When a ticket is opened, text such as the recent conversation (which can include text from an email the person sent), the reason it was escalated and the ticket's subject and summary is sent to TypeSafe to judge what the person needs help with and how urgent their request is, for example whether something they paid for is broken, or whether they seem upset or are threatening to leave. If no team has been chosen for the ticket, the names and descriptions of your teams can be sent too, so that TypeSafe can suggest one. The subject and summary of a new ticket and of the same person's other open tickets can be sent to TypeSafe to judge whether the new ticket repeats one of them, and when your team replies on a ticket, the reply and the person's recent messages can be sent to TypeSafe to judge whether the reply resolved it. These judgements can be stored with the ticket. A ticket that no team was chosen for can be placed in the queue of the team TypeSafe suggests. Apart from that, a judgement does not assign a ticket to a person, does not close, merge or reply to a ticket, does not change what your agent says, and is not sent to the person who wrote the ticket.
When your agent escalates a conversation by email, the conversation and the reason for the escalation can be sent to a Google Gemini model, whichever model your agent uses, to write a summary, a topic and a sentiment label (such as "frustrated" or "angry") for the escalation email sent to the addresses you configure. The conversation and the reason for the escalation can also be sent to TypeSafe, whose judgement can replace that sentiment label.
When we send a request to a model from OpenAI, Anthropic, Google, xAI or Moonshot AI, such as to answer, analyse or translate a text conversation or to turn content into search vectors, the request passes through the Vercel AI Gateway, a service run by Vercel (Privacy Policy), which can receive the conversation text and other content in that request. The gateway chooses which company serves each request, which can be the model's own provider or another company that hosts the same model, and that company then receives the same content. Requests to TypeSafe do not pass through the gateway.
- OpenAI — Privacy Policy
- Anthropic — Privacy Policy
- Google — Privacy Policy
- xAI (Grok models) — Privacy Policy
- Moonshot AI (Kimi models), a company based in China — Privacy Policy
- TypeSafe (models for supporting steps and ticket judgements, not for your agent's replies) — Privacy Policy
Voice
LiveKit carries voice calls between the person and your agent, and records a call when you turn on call recording for that agent. See the LiveKit Privacy Policy.
Your agent's voice settings decide which providers receive a call's audio and text:
- A speech-to-speech model (the default) receives the call audio directly and speaks your agent's replies. These models come from OpenAI, Google or xAI, depending on the model you choose; they are listed under AI Model Providers above.
- A voice preset splits the call into three steps that run through LiveKit's own model service (LiveKit Inference): LiveKit sends the call audio to a speech-to-text provider, the text of the conversation to a model, and the reply text to a text-to-speech provider, which returns the spoken reply. The preset you choose decides which provider handles each step:
- Speech to text: Deepgram, AssemblyAI, Google or xAI
- Model: OpenAI, Google or xAI (listed under AI Model Providers above)
- Text to speech: Cartesia, Inworld, Deepgram or xAI
For voice calls, these providers handle the audio and text under their own terms and policies, and we make no further promise about how long they keep it.
Voice messages are transcribed by Deepgram. We ask Deepgram not to keep the audio to train or improve its models.
- LiveKit — Privacy Policy
- Deepgram — Privacy Policy
- AssemblyAI — Privacy Policy
- Cartesia — Privacy Policy
- Inworld — Privacy Policy
- Google — Privacy Policy
- xAI — Privacy Policy
Payments
All payments are handled by Stripe. Please review the Stripe Privacy Policy for details on how they handle payment data.
Storage
Cloudflare R2 is used for file storage (uploaded documents, agent avatars, profile photos and organisation logos, call recordings and stored voice-message audio). Profile photos and organisation logos that you upload are resized to 256 x 256 pixels and stored at a public web address that anyone who has the address can open. See the Cloudflare Privacy Policy.
Analytics
We use PostHog for product analytics to understand how our platform is used and to improve the experience. PostHog may set its own cookies. We do not use this data for advertising purposes.
When you are signed in, we send PostHog your user ID, email address and name, and details of the organisation you are working in, such as its ID, name and slug, so this analytics data is linked to your account and is not anonymous. PostHog also receives error reports from your browser and from our servers, such as error messages and where in the code an error happened; clicks that did nothing (dead clicks), with details of the page element that was clicked; and page performance timings, such as how long a page took to load. We turned off session recording (session replay) in our code on October 8, 2026; recordings made before then can still be stored in PostHog.
Background Processing
Trigger.dev is used for background job processing (e.g., website crawling, document processing).
Website Content, Documents and Web Search
When you add or retrain a website in your agent's training data, we send Context.dev the addresses of the pages to fetch, such as the website's address or the page addresses in its sitemap, and Context.dev fetches those pages and returns their content to us. See the Context.dev Privacy Policy.
If Context.dev cannot fetch a single page we crawl for your training data, we can send that page's address to Exa to fetch it instead. If you turn on the web search action for an agent, the search queries your agent writes during a conversation, which can be based on what the person asked, are sent to Exa. See the Exa Privacy Policy.
On paid plans, files you upload as training data, such as PDFs and other documents, are sent to Reducto to extract their text. Attachments in emails sent to your agent, such as PDFs, spreadsheets and images, can also be sent to Reducto to extract their text. See the Reducto Privacy Policy.
We send email through SendGrid, which receives the email addresses and the content of the emails we send, such as sign-in codes, invitations, notifications, escalation emails, and replies from your agent or your team to your end users. Emails sent to your agent's email address, including their attachments, reach us through SendGrid. See the Twilio SendGrid Privacy Policy.
Slack
If you connect a Slack workspace, Slack sends us mentions of your agent, direct messages to it and every message posted in a channel you add the app to. We keep mentions, direct messages, replies in threads your agent has recently taken part in and messages in a channel you have set up as a Slack Connect channel for your agent, and we drop other channel messages without storing them. Your agent can process and store the messages we keep. In a Slack Connect channel, these can include every message your customers and your team post there. A model can read a customer's message, with the recent messages in its thread, to decide whether your agent should reply, and we store the message either way. When someone on your team posts in a Slack Connect thread, we ask Slack for their name and email address to match them to a member of your team, store their message as a teammate reply and pause your agent in that thread. We send Slack what your agent and your team post, such as replies to a ticket that started in Slack, and when a Slack Connect conversation is escalated we can post the customer's name, a summary and its recent messages to a channel you choose. A Slack action can also post a message your agent writes to a channel or a person, and can send Slack a person's email address to find their Slack account. See the Slack Privacy Policy.
Lead Notifications and Webhooks
When lead collection creates or updates a contact record, if lead notifications are on and you have added notification addresses, we email the person's name, email address and phone number, with a link to the record, to those addresses through SendGrid, our email delivery provider. We pass your agent's webhook events, such as a contact being created or updated, a form being submitted or a note being added to a conversation, to Svix, our webhook delivery provider, which delivers them to any webhook URL you configure for that agent. These events can carry personal data, such as the person's contact details and custom attributes, what they submitted, and notes your team writes. You choose these recipients, not AgentStack. Once data reaches them, it is handled under their own terms and policies.
Google Preferred Source Button
If you click the "Make us preferred on Google" button in the site footer, Google's Preferred Sources script loads from Google, and the Google Privacy Policy applies.
Blog Images
We publish our blog articles through Outrank, and images on our blog pages, such as article cover images, are served from Outrank's image host, cdnimg.co. When you view a blog page, your browser fetches those images from cdnimg.co, which receives information your browser sends with any web request, such as your IP address and user agent (details of your browser and device). See the Outrank Privacy Policy.
Cookies
We use strictly necessary cookies for authentication and session management. We also use analytics cookies (PostHog) to understand how our website and platform are used. Our website has no in-app control to turn analytics off; you can block or delete cookies in your browser, or email us to object. Help Center sites also set their own first-party cookie, hc_session_<siteId>, which keeps a visitor signed in to a private Help Center and holds the email address they verified; see the Cookie Policy for how long it lasts and how to remove it. Older browsers may still hold hc_visitor_id, a random id Help Centers no longer set, which you can delete in your browser settings.
For full details, see our Cookie Policy.
The chat widget that businesses add to their websites also stores identifiers in the end user's browser, such as a random visitor id and the id of the current conversation. This is browser storage (localStorage and sessionStorage), not cookies. The Widget Storage section of our Cookie Policy names each item, how long it lasts and how to remove it.
Data Security
We implement appropriate security measures including:
- Encryption in transit (TLS) and at rest
- Access controls and authentication
- Regular security reviews
- Secure cloud infrastructure
Data Retention
- Account data: Retained as long as your account is active. You can request deletion at any time.
- Workspaces created by an AI agent: When an AI agent signs up for AgentStack and names a person's email address, the workspace it creates, and the records in it that we hold in our database (such as its agents, conversations and contacts), are deleted automatically by a daily job once it is more than 7 days old, unless that person has claimed it by signing in with that email address and entering the claim code we emailed to them. We do not send a warning before the workspace is deleted. A record of the sign-up (including the email address it named, and the IP address and browser or client details it came from) and records of requests made with the workspace's API key (including their IP address and browser or client details) can remain in our audit and activity logs for as long as those logs are kept.
- Agent data and conversation logs: Retained as long as the associated agent exists. You can delete agents and their data through the dashboard; they can be restored for 30 days, and a scheduled job then removes them permanently.
- Training data: Stored as long as the associated agent exists. When you delete a website, file or Q&A pair from your training data, it is kept for at least 30 days so that it can be restored. After that, a scheduled job deletes it permanently, unless a safety check in that job holds the deletion back. A Notion page you remove is deleted straight away. A deleted agent's training data stays for the same 30 days and is then removed with the agent.
- Contact records: Retained until you delete the contact, its agent or your organisation. Deleting a contact deletes its record, and deleting your organisation deletes all of them; deleting an agent deletes its records after its 30-day restore period. Copies of the person's details can remain in other records we hold, such as conversation and email records and activity and audit logs, for as long as those are kept, and with Svix and the recipients they were already sent to.
- End user data: The IP address, country code and language code recorded with a conversation are kept with that conversation and deleted with it, for example when you delete the conversation, or when its agent is deleted after the 30-day restore period. Copies already sent to PostHog or to an AI model provider can remain with them.
- Voice recordings and audio: Call recordings, stored voice-message audio and transcripts are kept with their conversation and deleted with it, for example when you delete the conversation or your organisation, or when its agent is deleted after the 30-day restore period. If audio storage is off, voice-message audio is deleted as soon as it is transcribed. Audio and text already sent to a voice provider can remain with them under their own terms.
- Ticket judgements: The category, urgency, duplicate and resolution judgements stored with a support ticket are kept with that ticket and deleted with it, for example when you delete its conversation, or when its agent is deleted after the 30-day restore period. A copy of a category, an urgency level or a resolution score can remain in our usage records for about 90 days after the judgement is made. Text already sent to TypeSafe, Google or Trigger.dev can remain with them, and an escalation email remains with the people it was sent to.
- Action logs: The record of each action an agent runs, including the values supplied to the action and the result it returned, is kept for about 90 days and is then deleted automatically by a daily job. It is deleted sooner when its agent is permanently deleted after the 30-day restore period, or when your organisation is deleted.
- Data exports: A conversation export you generate can be downloaded for 24 hours after it is ready. After that it can no longer be downloaded, and a daily job deletes the export file from our storage. This removes only the export file, not the conversations or other data it was made from. If your organisation is deleted while an export file is still stored, that file can remain in our storage.
- Profile photos and organisation logos: An uploaded profile photo or organisation logo is deleted from storage when you replace or remove it. If your organisation is deleted, whether by you or automatically (for example an unclaimed workspace created by an AI agent), its uploaded logo is not deleted with it and can remain in our storage, where it stays reachable at its public web address.
- Billing data: Retained as required for accounting and legal purposes.
Your Rights
You may have the right to:
- Access your personal data
- Correct inaccurate data
- Delete your data
- Export your data
- Object to or restrict certain processing
Much of your data (agents, training data, conversations) is directly accessible through the dashboard, and we encourage you to manage and delete data there where possible. For any other requests, contact us at legal@agentstack.build.
International Data Transfers
Your data may be processed in the United States and other countries where our service providers operate. Our providers maintain appropriate security measures for international data transfers.
The AI model providers listed above are based in the United States, except Moonshot AI, which is based in China. Vercel, which runs the AI Gateway, is also based in the United States, and the gateway can send a request to another company that hosts the same model, which can process it in another country. A conversation sent to an AI model, including when a request is retried with another provider, can therefore be processed outside the United Kingdom, for example in the United States, and a request to a Moonshot AI model can be processed in China. The voice providers listed above are also based in the United States, so voice messages and call audio can be processed there.
Children's Privacy
AgentStack is not directed to children under 16. We do not knowingly collect personal information from children. If you believe a child has provided us information, contact us to delete it.
Changes to This Policy
We may update this policy. If we make material changes, we will update the date above and, where appropriate, notify you via email or through the Service.
Contact
Data Controller: Ray Amjad LTD (Company Number 14506459, United Kingdom)
- General support: support@agentstack.build
- Privacy and legal: legal@agentstack.build