# What Cactus does > Verified against the product on 2026-10-06 ## What Cactus does Cactus reads connected product repositories and can connect existing help material. It maps product behavior, starts documentation work from that map, and gives your team places to answer product questions. ## Product knowledge Cactus maps your product from connected repositories and ties each map version to the repository commits it read. It starts documentation builds from that map, so your team can trace help back to product code. When repository changes affect mapped evidence, Cactus updates affected map entries and documentation; if it can’t safely update the map, it draws the map again. For details, read [Keep product knowledge current](https://cactus.heycactus.ai/keep-product-knowledge-current). ## Connections ### Sources | Source | What it contributes | | --- | --- | | GitHub repositories | Product code and docs | | Help Center, Zendesk, or Notion | Existing help content | | PostHog and LaunchDarkly | Feature-flag checks found in your code | | Slack channels | What your team says in watched channels | Connect brings together where Cactus answers, what it reads, and where handoffs go. Answer surfaces include your Help Center, Messenger, AI clients over MCP, Slack, and Discord. You can set handoffs to Email, a Slack channel, or a Discord channel. ## Customer answers Customers can ask questions in a published Help Center, in Messenger on your product site, through an AI client over MCP, or in Slack and Discord. In Messenger, Cactus answers in the conversation. For details, read [Answer customer questions](https://cactus.heycactus.ai/answer-customer-questions). ## Human handoffs You can set Email, a Slack channel, or a Discord channel as a handoff destination. When a teammate handles a Messenger thread, Cactus doesn’t generate an automatic reply, and the customer’s message is recorded in the Inbox. For next steps, read [Resolve or escalate customer conversations](https://cactus.heycactus.ai/resolve-and-escalate-conversations). ## Products and teams | Area | What you do there | | --- | --- | | Home | Read product knowledge | | Inbox | Review customer conversations | | Connect | Set up answer surfaces and handoffs | | Settings | Configure products and sources | | Members | Manage team membership from a team-level page | For team access, read [Join and manage your teamspace](https://cactus.heycactus.ai/join-and-manage-teamspace). For product setup, read [Create and set up a product](https://cactus.heycactus.ai/create-and-set-up-product). ## Product visibility For watched products, your team can use Visibility to review AI answers, whether models name or cite the product, naming trends, keyword positions, recommendations, and follow-up actions. Read Monitor AI visibility for details. # Sign in to Cactus > Verified against the product on 2026-10-05 ## Sign in Select **Google** or **GitHub** to sign in. Cactus creates your account the first time you sign in, including when you choose GitHub. # Create and set up a product > Verified against the product on 2026-10-06 ## Create a product Only a teamspace owner can create a product. If you aren’t an owner, ask one to create it. For team invitations and membership, see [Join and manage your teamspace](https://cactus.heycactus.ai/join-and-manage-teamspace). 1. On **New product**, enter a name in **Name**. 2. On **New product**, select **Create product**. Cactus selects the new product and opens **Home**. - detail: Open Members - form: **Create product** (1) *On New product, select Create product.* Product names can be up to 80 characters. To create another product, repeat these steps on **New product**. ## Product setup states **It reads your code.:** Cactus reads the product's code. **It writes your help center.:** Cactus writes Help Center pages for the product. **It answers your customers in your Messenger.:** Cactus answers customer questions through Messenger. **It hands what it can’t answer to your team.:** Cactus hands unanswered questions to your team. ## Set up your product Onboarding takes you through connecting code and confirming your product brand, then reviewing your current Help Center and Intercom together, choosing where Handoffs go, and starting the product map. For repository connection steps, see [Connect repositories and product sources](https://cactus.heycactus.ai/connect-repositories-and-product-sources). - repos: Repository choices have been recorded. - brand: The product brand has been confirmed. - support: The Help Center and Intercom choices have been recorded together. - handoffs: The handoff destination choice has been recorded. - map: The product map has been requested. - complete: The owner has completed setup. *Onboarding takes you through connecting code and confirming your product brand, then reviewing your current Help Center and Intercom together, choosing where Handoffs go, and starting the product map.* ### Choose current support 1. In **Where your support lives today**, choose a listed Help Center, or select **We don't have one**. 2. If **It's elsewhere** appears, select it. 3. If your Help Center is elsewhere, enter its URL in the field. 4. If Intercom is offered and isn't connected, select **Connect Intercom**. 5. In **Where your support lives today**, select **Continue**. Cactus records the Help Center and Intercom choices together. For help importing existing content and support conversations, see [Import existing help and support knowledge](https://cactus.heycactus.ai/import-existing-help-and-support-knowledge). The Handoffs step records a connected Slack or Discord destination, or that you skipped it. The product map starts later, after Handoffs; it needs at least one linked repository and requests a full map. Starting the map doesn't complete onboarding. In onboarding, select **Complete onboarding** when you're ready. ## During the first build While the first build runs, **Home** shows a dismissible **How Cactus works** panel. It disappears when the first build finishes, and dismissing it keeps it from returning. ### Change conversation translation On **Home** during that explanation, switch **Translate conversations** on to enable it. Cactus saves the same preference as **Settings › Languages**. When enabled, conversations are translated for your team and translated replies are sent in the customer's language. - Your product starts here.: Back to the live page, Show this edition, Show changes, See what Cactus takes as true, Open these lines on GitHub, Retire, **Translate conversations** (1), Set up the Messenger *On Home during that explanation, switch Translate conversations on to enable it.* ## Home setup links ### Set up Messenger On **Home** during the first-build explanation, select **Set up the Messenger**. For installation and appearance, see [Install and customize Messenger](https://cactus.heycactus.ai/install-and-customize-messenger). ### Open Handoffs On **Home** during the first-build explanation, select **Handoffs** to open its setup. For connecting a team channel, see [Connect Slack](https://cactus.heycactus.ai/connect-slack) or [Connect Discord](https://cactus.heycactus.ai/connect-discord). ### Open language settings On **Home** during the first-build explanation, select **Languages** to open language settings. For language preferences, see [Set team language and conversation translation](https://cactus.heycactus.ai/team-language-and-translation). ## Manage products Use **Settings › General** to rename this product, rebuild it from scratch, or delete it. Rebuilding and deleting require an owner. For team membership and invitations, see [Join and manage your teamspace](https://cactus.heycactus.ai/join-and-manage-teamspace). ### Rename the product 1. In **Settings › General**, change **Name**. 2. In **Settings › General**, select **Save**. Cactus saves the new name. - detail: Rebuild from scratch, Delete this product - dialog: Cancel - form: **Name** (1) *In Settings › General, change Name.* Product names can be up to 80 characters. ### Rebuild from scratch 1. In **Settings › General**, select **Rebuild from scratch**. 2. In the confirmation dialog, enter the exact product name in **Type the product name to confirm.** > Link at least one repository before rebuilding. Cactus stops a current run, removes the product knowledge and code index it derived, then builds again from linked repositories. ### Delete the product 1. In **Settings › General**, select **Delete this product**. 2. In the confirmation dialog, enter the exact product name in **Type the product name to confirm.** Cactus removes the product from your teamspace. # Join and manage your teamspace > Verified against the product on 2026-10-06 ## Your teamspace Your teamspace brings product help and knowledge, customer conversations, product connections, settings, and team membership together in Cactus. ## First entry After you [sign in to Cactus](https://cactus.heycactus.ai/sign-in-to-cactus), Cactus opens the app if your account already belongs to a teamspace. Otherwise, it checks for a pending invitation first, then checks whether a teamspace claims your work-email domain. If you have an invitation, the welcome page lets you accept it. If a teamspace claims your domain, you can join it or request access under its join policy. If no teamspace claims your domain, Cactus creates one and makes you an Owner. A work email creates a company teamspace; a public email creates a personal teamspace. Each account can belong to one teamspace. ## Join by email domain | Join policy | On the welcome page | What happens | | --- | --- | --- | | Owner approval | Select **Request access** | Cactus emails the owners. Your request waits for an Owner to decide, and you become a Member if approved. | | Direct joining | Select **Join** | Cactus adds you as a Member and opens the teamspace. | Your teamspace’s join policy determines whether you can join directly or need an Owner to approve you. | | approval | open | | --- | --- | --- | | line | An owner needs to let you in. | Join it to see its products. | | verb | Request access | Join | | busy | Requesting… | Joining… | | failure | Could not request access. | Could not join this teamspace. | *Your teamspace’s join policy determines whether you can join directly or need an Owner to approve you.* ## Accept an invitation On the welcome page, select **Accept invitation** to join with the role the invitation assigns. - is already here: Not now, make my own teamspace; **Accept invitation** (1); Log out *On the welcome page, select Accept invitation to join with the role the invitation assigns.* Opening an invitation link while signed in accepts it automatically if it’s still valid and was sent to the email address on your Cactus account. If you’re signed out, sign in with that address and open the link again. Invitations expire after 7 days. ## Manage a product For a selected product, use **Home** to read its help and knowledge, **Inbox** to review customer conversations, **Connect** to configure customer-facing surfaces, and **Settings** to manage settings. Teamspace membership is under **Settings › Members**. If your teamspace doesn’t have a product yet, see [Create and set up a product](https://cactus.heycactus.ai/create-and-set-up-product). ## Roles | Role | What you can manage or see | | --- | --- | | Owner | Manage the teamspace name, invitations, member roles, email domains, join policy, and access requests | | Member | View the teamspace name, members, their roles, and email domains | An Owner can make a Member an Owner. An Owner can become a Member only when another Owner remains. ``` ╭───────╮ ╭────────╮ │ │ │ │ │ owner │ │ member │ │ │ │ │ ╰───────╯ ╰────────╯ ``` *How teamRole moves between its states* ## Change a role In **Settings › Members**, use the person’s **Role** control to choose **Owner** or **Member**. At least one Owner must remain in the teamspace. - detail: Remove, **Role** (1), Approve, Cancel, Deny, Add *In Settings › Members, use the person’s Role control to choose Owner or Member.* ## Remove a member In **Settings › Members**, select **Remove** beside the person. You can’t remove the last Owner. ## Invite teammates Only Owners can invite teammates. In **Settings › Members**: 1. Enter the person’s email in **Email**. 2. Choose **Member** or **Owner** in **Role**. 3. Select **Send invite**. The invitation expires after 7 days. ### Cancel a pending invitation In **Settings › Members**, under **Invitations**, select **Cancel** beside the invitation. ## Manage email domains Owners can add only a domain that matches their own email address. A domain already claimed by another teamspace can’t be added. ### Add a domain In **Settings › Members**, select ****Add** [email domain]** to add your email domain. ### Remove a domain In **Settings › Members**, select **Remove** beside the domain. ## Join policies Owners set the policy in **Settings › Members**, under **Who can join**. With no email domains listed, colleagues can join only by invitation. ### Require approval In **Settings › Members**, under **Who can join**, select **Colleagues ask, and an owner lets them in.** ### Allow direct joining In **Settings › Members**, under **Who can join**, select the other option to let people with a listed email domain join on sign-in. ## Access requests Owners review requests in **Settings › Members**, under **Requests**. ### Approve a request Select **Approve**. Cactus adds the requester as a Member and emails them. ### Deny a request Select **Deny**. The requester is told to ask an Owner for an email invitation. ## If an invitation fails | What you see | What it means | What to do | | --- | --- | --- | | “This invitation has expired. Ask for a new one.” | The invitation is no longer valid | Ask an Owner to send another invitation | | “This invitation was sent to [Invited email]. Sign in with that account.” | You’re signed in with a different email address | Sign in with the invited account, then open the link again | | “Saved, but the email didn’t go” while inviting | The invitation is saved, but its email wasn’t sent | Ask an Owner to send another invitation | | “Saved, but the email didn’t go” after requesting access | Your request is saved, but the email didn’t go to the owners | Ask an Owner to check **Settings › Members**, under **Requests** | | “[Team name] didn’t approve your request” | An Owner denied your request | Ask an Owner to invite you by email | # Choose who can read a help page > Verified against the product on 2026-10-06 ## Make a page public 1. In **Home**, open the help page. 2. On the page, select the audience label beneath its title. 3. In **Who this page is for**, select **Everyone**. Cactus saves your choice. - detail: **Who this page is for** (1) *In Who this page is for, select Everyone.* Visitors can read the page only if Cactus marks it eligible for external display and the Help Center is public. If the Help Center is team-only, change its access in [Set up your Help Center and domain](https://cactus.heycactus.ai/set-up-help-center). ## Audience options Choose an audience based on who should read the page. - me - team - everyone *Choose an audience based on who should read the page.* | Audience | Who can read | | --- | --- | | Only you | The person who created the page can read it. Other team members and visitors can’t. | | Your team | Your team can read it in the app; visitors can’t. | | Everyone | Anyone with the link can read it if Cactus marks the page eligible for external display and the Help Center is public. | ## If a page is withheld For a page marked **Only you** or **Your team**, change its audience in **Who this page is for**. | What you see | What it means | What to do | | --- | --- | --- | | “Help Center is team only” | The Help Center is set to team-only access. | Change its access in Set up your Help Center and domain. | | “Only you can see this page” | The page is for the person who created it. | Set **Who this page is for** to **Your team** or **Everyone**. | | “Your team only” | The page is for your team, not visitors. | Set **Who this page is for** to **Everyone**. | | “Internal only” | The page is set to **Everyone**, but Cactus hasn’t marked it eligible for external display. | Choosing **Everyone** again won’t make it public. | # Build history and repository sync > Verified against the product on 2026-10-06 ## Review builds In **Settings › Builds**, review up to 50 of the newest runs across run types. Use the filters to narrow the list: - Builds - Code updates - Writing rules - Investigations - Daily checks In **Settings › Builds**, select a run in **Runs** to expand its details. You’ll see its start time and duration, phase timings, a summary, included GitHub pushes, publication failures, and errors. Some runs have no recorded phase timings. ## Check sync status On **Settings › Builds**, the status line shows when the product last synced as “Last synced [relative time].” Before the first sync, it says “Not synced yet.” If GitHub has pushed, the line also shows when: “GitHub pushed [relative time].” ## Sync or rebuild ### Sync now In **Settings › Builds**, select **Sync now** to sync the product from its current commit to GitHub’s latest push. ### Rebuild In **Settings › Builds**, select **Rebuild** to start a full build. At least one repository must be linked. Both controls are disabled while a build is running. ## Set automatic syncs In **Settings › Builds**, choose a value in **Automatic syncs from GitHub**. Cactus saves your choice when you select it. The usual choices are: - Off - 1 a day - 2 a day - 4 a day - 6 a day - 12 a day If the current setting is another value, that value also appears. Pushes wait for the next slot and go together as one sync. With **Off**, a push waits for you to select **Sync now**. # Write and publish product release updates > Verified against the product on 2026-10-06 ## What's New feed Your product’s Help Center has a **What's New** feed of published releases, newest first. Older releases follow newer ones, and entries can link to affected Help Center pages readers can access. ## Release writing Cactus groups product commits into dated releases, turning headline changes into chapters and smaller changes into rollup lines. When a release closes, Cactus regroups and rewrites it as a whole; it may combine it with the preceding release from that month. When a month has two or more releases, Cactus writes a monthly story. ## Publication Your team can see a release while Cactus is writing it. Customers see finished, non-maintenance releases in the public What's New feed. ## Open a release 1. In the **What's New** timeline, select a release title to open its page. 2. On the release page, select **‹ What's New** to return to the timeline. # Keep product knowledge current > Verified against the product on 2026-10-06 ## From code to help Cactus reads connected repositories, examines their code, and builds a map of your product. Each saved version is tied to the repository versions behind it. That map starts the help-page build; for how Cactus writes and publishes pages, see [Generate and manage help pages](https://cactus.heycactus.ai/generate-and-manage-help-pages). ## Repository change states | Shown as | What it means | | --- | --- | | Added | The repository change added this file. | | Modified | The repository change changed this file. | | Deleted | The repository change removed this file. | ## Trace the product map The product map captures your product’s customer-facing capabilities and how they connect. Each entry has a name, kind, and summary, and points to the code behind it. Each saved version is tied to the repository versions it was built from, so you can trace an entry back to that code snapshot. ## Sources for product knowledge Connected repositories give Cactus product code for its map. You can also attach a web page or a team note as evidence. Cactus reads a web page when you attach it; a note is saved as supplied. ## Follow repository changes When Cactus processes a repository push, it checks the changed files against the saved product map. It updates entries tied to changed or deleted files, and entries in directories where files were added. Cactus saves the updated map and refreshes the help pages affected by those changes. Other pages are left alone. ## When Cactus redraws On a first build, Cactus creates a product map from scratch. After a push, it creates a fresh map instead of updating the saved one when it can’t safely reconcile the changes: - There’s no saved product map. - The linked repositories don’t match the ones tied to the saved map. - Cactus has no code copy to compare, or can’t read the changes. - The saved map’s repository version isn’t an ancestor of the pushed version. - The push changes more than 30% of a repository’s files. - The repository’s workspace configuration changes, or Cactus can’t read its workspace files. ## When a web source changes Cactus checks an attached web page when someone opens help built on it or asks a question that involves it. Checks happen on demand, not on a schedule. Cactus may use a recent observation or read the page again. When a fresh read finds different text, Cactus marks every live help section that relies on the page as stale and refreshes the related product knowledge. That refresh can rewrite the affected help. # Choose featured help pages > Verified against the product on 2026-10-05 ## Choose and order pages Featured pages lead the Help Center catalogue in the order you save them. You can feature up to eight published pages. 1. In **Settings › Featured pages**, enter a title or topic in **Filter pages**. 2. In **Settings › Featured pages**, under **Published pages**, select **Add** beside each page you want to feature. 3. In **Settings › Featured pages**, drag selected pages by their handles into your preferred order, or focus a handle and press the up or down arrow. 4. In **Settings › Featured pages**, select **Save**. Your changes stay unsaved until you save them. > If you've featured eight pages, select **Remove** beside one before adding another. # Import existing help and support knowledge > Verified against the product on 2026-10-06 ## Import a Help Center Import your existing Help Center. Cactus reads the listed articles and creates product questions for review. - detail: Remove, Read pictures from your repositories, See what Cactus takes as true, Track website changes, Import conversations, Connect Intercom, Keep this reply, Disconnect - detail: **Docs site or old help center** (1) *Where Docs site or old help center sits on Imports* 1. In **Settings › Imports**, enter the address under **Docs site or old help center**. 2. Select **Import**. ## Connect Intercom 1. In **Settings › Imports**, select **Connect Intercom**. 2. Authorize the Intercom workspace. Cactus returns you to Imports. ## Import conversations In **Settings › Imports**, select **Import conversations**. Cactus imports closed conversations from the past 365 days, newest first, up to 1,000. It turns conversation excerpts into product questions for review. The excerpts include messages written by customers and your team, but leave out internal notes, AI-agent replies, and workflow events. You can keep a team reply as a source note for future product answers. ## Review old help topics On **Home**, check how many topics from your old Help Center your docs cover. Under **Probably gone**, select **Drop** beside an outdated topic to remove it. - Your product starts here.: Back to the live page, Show this edition, Show changes, See what Cactus takes as true, Open these lines on GitHub, Retire, Translate conversations, **Drop** (1) *Under Probably gone, select Drop beside an outdated topic to remove it.* ## Review Intercom replies Inspect imported replies before deciding whether to keep a team reply as a source note. 1. In **Settings › Imports**, select **Show** beside the Intercom import. 2. Read the question and reply under **What the team answered**. 3. Select **Keep this reply** to attach the team reply as a source note. You can also review replies on **Home**, under **Your team answered this before**. Select **Keep** to keep a reply, or **Dismiss** to dismiss the review. ## Keep useful pictures Under **Pictures Cactus found** in **Settings › Imports**, select **Keep** to allow a picture on help pages, or **Drop** to remove it from the kept set. Dropped pictures stay visible, so you can keep them again. ## Remove an import In **Settings › Imports**, select **Remove** beside the import run. This removes the saved import and its evidence from Cactus. ## Disconnect Intercom In **Settings › Imports**, select **Disconnect** in the Intercom row. Cactus deletes the imported conversation material and its import run. Material Cactus has already learned remains. # Review and correct what Cactus knows > Verified against the product on 2026-10-06 ## Inspect page sources A help page’s **Source** view shows its live sections and the citations behind them. Open a citation under **Sources** to read the quoted lines. Code citations identify the repository, path, line range, and pinned commit when available. 1. In a section’s **Sources**, open a citation to read its quoted lines. 2. In the citation, select **Open these lines on GitHub** when it appears to inspect that pinned revision. - Your product starts here.: Back to the live page, Show this edition, Show changes, See what Cactus takes as true, **Open these lines on GitHub** (1), Retire, Translate conversations, Set up the Messenger *In the citation, select Open these lines on GitHub when it appears to inspect that pinned revision.* The Source view also lists writing rules applied to the page and the text each rule was tied to. To manage product writing rules, see [Manage product writing rules](https://cactus.heycactus.ai/writing-rules). ## Find unanswered questions **Not covered yet** lists open questions tied to that help page. Select **See what Cactus takes as true** to review open questions across the product. **Needs you** holds conflicts and frequently asked questions when no page gives an answer. **Open items** groups other questions by help page, or under **Not on a page**. ## Correct saved knowledge ### Edit a kept answer 1. In **Settings › What Cactus takes as true**, select **Edit** beside the answer. 2. Replace the answer text in the editor. 3. Select **Save**. Cactus replaces the saved note and keeps its question. - What Cactus takes as true: Remove, Cancel, What is true, Your answer, Answer, **Edit** (1), Save, Keep *In Settings › What Cactus takes as true, select Edit beside the answer.* ### Remove a page or answer In **Settings › What Cactus takes as true**, select **Remove** beside an attached page or kept answer. You can remove items you added; a team owner can remove another member’s. ## Answer open questions You can answer a question from its row in **Needs you** or **Open items**. 1. In **Settings › What Cactus takes as true**, select **Answer** beside the question. 2. Enter your answer in **Your answer**. 3. Select **Keep**. Cactus saves your answer as a note, removes the question from the open list, and uses the note in the next build. # Manage product writing rules > Verified against the product on 2026-10-05 ## Keep pages in your style Rules that apply to page writing guide every Help Center page. Cactus rewrites existing pages when a rule changes their wording, and pages written later follow it. Rules learned from your writing guide page writing and answers. ## Review your rules In **Settings › Rules**, review each rule and open **Pages this reaches** to see the affected pages. - The instruction, any quoted text, where it was said, its audience, who set it and when, or whether Cactus learned it - Page progress and cited sections ## Audience choices Each rule's audience can be **Both**, **Customer**, or **Internal**. - both - external - internal *Each rule's audience can be Both, Customer, or Internal.* - **Both** - **Customer** - **Internal** ## Choose an audience 1. In **Settings › Rules**, choose a rule's audience under **Audience**. - detail: Learn from my writing, Cancel pending, Generate now, Retire, Cancel - detail: **Audience** (1) *In Settings › Rules, choose a rule's audience under Audience.* ## Retire a rule 1. In **Settings › Rules**, select **Retire** on a rule. Cactus stops applying the rule and reconciles affected pages. It doesn't restore the previous wording. > A team owner can also retire a rule another teammate set. ## Learn from your writing 1. In **Settings › Rules**, select **Learn from my writing**. Cactus reads your team's replies, Help Center, and site, then adds any guidance it finds as learned rules. The page reports when a learned rule appears or learning fails. If it's still reading, the page says the rules will appear here when it's done. ## Manage pending work **Pending work** lists rule changes waiting to run, with each item's instruction, action, scope, and affected pages. The page also indicates when it's writing pages from the current pass. ### Generate pending work 1. In **Settings › Rules**, select **Generate now** to run the pending batch. The control is unavailable when there's no pending work or pages are already writing. If a pass is already running, Cactus reports that. ### Cancel all pending work 1. In **Settings › Rules**, select **Cancel pending** to cancel all cancelable work that hasn't begun. > Published pages stay as they are. ### Cancel one item 1. In **Settings › Rules**, select **Cancel** on a cancelable item. # Set team language and conversation translation > Verified against the product on 2026-10-06 ## Choose your team language In **Settings › Languages**, choose a language under **Your team's language**. Cactus saves your choice right away, and your team reads and writes in that language. ## Translate conversations **Translate conversations** is on by default. When it’s on, Cactus translates customer messages into your team’s language and sends your replies in each customer’s language. To change it, go to **Settings › Languages** and switch **Translate conversations** on or off. Cactus saves your choice right away. # Product and Help Center appearance > Verified against the product on 2026-10-06 ## Product branding ### Brand In **Settings › Appearance**, under **Brand**, select **Set up the brand** when it says **No brand yet**, or **Review brand** when it says **Brand confirmed**. This starts setup or lets you review the detected brand. - detail: **Set up the brand** (1), Review brand, Agents page, Remove *In Settings › Appearance, under Brand, select Set up the brand when it says No brand yet, or Review brand when it says Brand confirmed.* ### Logos 1. In **Settings › Appearance**, under **Logo**, select **Upload** for **Light theme** or **Dark theme**. 2. In the file picker, choose a PNG, JPEG, or WebP file up to 512 KB. Your uploaded logo appears beside your product’s name in the app and Help Center. A theme without an upload uses the mark Cactus found for your site. To return to that mark, select **Remove** beside the upload. ### App accent In **Settings › Appearance**, under **Accent**, choose an option: | Accent choice | What it uses | | --- | --- | | **Use Cactus** | Cactus’s sage and cactus green | | **Use detected brand** | Your detected brand accent; this option is available when a brand accent has been detected | ## Help Center appearance ### Readers and figures 1. In **Settings › Appearance**, under **Readers**, choose a reader level for the Help Center and answers. 2. Under **Readers**, choose a figure style. 3. Turn on **Use your brand colour** if a brand colour is available. The brand-colour switch is unavailable until a brand colour is available. ### Type In **Settings › Appearance**, under **Type**, choose a typeface. - **Sans:** The existing Cactus interface typeface. - **Serif:** Signifier. Type changes the public Help Center; the Cactus app keeps its current typeface. The choices are unavailable until a brand is confirmed. ### What's New layout In **Settings › Appearance**, under **What's New layout**, choose a layout: | Layout | What readers see | | --- | --- | | **List** | A timeline by month; a release opens where it stands | | **Cards** | A grid of releases, each with its title and summary | ### Agents page In **Settings › Appearance**, turn **Agents page** on to show a page about connecting an AI agent to your help, or off to leave that page out. # Connect repositories and product sources > Verified against the product on 2026-10-06 ## Choose repositories The native repository connection is GitHub-based. Cactus doesn't provide a native GitLab repository connector. 1. In **Settings › Sources**, select **Connect GitHub** or **Manage GitHub**. 2. In GitHub, authorize Cactus or install its GitHub App. 3. Back in **Settings › Sources**, select **Pick repositories**. If the page says **No repositories selected**, select **Open setup** instead. 4. In the setup conversation, select the repositories that make up this product. 5. In the setup conversation, select **Continue** to save your selection. - detail: Pick repositories, the Slack page, Disconnect, Connect LaunchDarkly, Connect PostHog, Connect again, Find projects, **Connect GitHub** (1) *In Settings › Sources, select Connect GitHub or Manage GitHub.* ### Tracked branch Cactus saves each selected repository with its default branch. **Settings › Sources** shows the branch Cactus reads. ### Remove a repository In **Settings › Sources**, select **Remove** beside the repository. Cactus stops reading it in future product refreshes. Already-published pages stay until the next refresh. ## Connect feature flags **Connect PostHog** or LaunchDarkly to give Cactus feature-flag context. ### Connect PostHog 1. In **Settings › Sources**, select **Connect PostHog**. 2. Complete the PostHog authorization when prompted. ### Connect LaunchDarkly 1. In **Settings › Sources**, select **Connect LaunchDarkly**. 2. Enter a LaunchDarkly access token with the Reader role in **Reader token**. 3. Select **Find projects**. Cactus lists the projects the token can access. 4. Choose a **Project** and **Environment**. 5. Select **Save**. Cactus checks that the token can access the chosen project and environment before saving. Cactus initially selects the first project and its first environment. When you change **Project**, Cactus selects that project's first environment. ## Use feature-flag context Cactus reads flag state when it writes a page that checks a flag. **Settings › Sources** shows how many flag checks for each vendor Cactus finds in your code. If a flag changes, ask Cactus to republish the pages that check it. ## Refresh on pushes When GitHub reports a push to a selected repository's tracked branch, Cactus schedules a product refresh. For when that work runs and which pages it updates, see [Keep product knowledge current](https://cactus.heycactus.ai/keep-product-knowledge-current). # Generate and manage help pages > Verified against the product on 2026-10-06 ## Browse generated pages Open **Home** to browse generated pages. The catalogue groups pages by topic, with Featured pages above the topic rows. While a build runs, planned pages appear alongside published pages; pages that didn’t publish appear separately with a retry option. ## Build states **writing it now:** Cactus is writing the planned page. **publishing:** Cactus is making the page available. **written:** The page is published and can be opened. **Didn’t publish yet:** The page didn’t publish and isn’t available as a published page yet. **Checking [source]:** Cactus is checking whether the source still supports this page section. **Checked against [source] just now:** Cactus checked the source and found no change. **[source] changed; this section is being updated:** The source changed, and Cactus is updating this page section. **Couldn't reach [source]:** Cactus couldn’t reach the source to check it. **The team's answer still holds:** The team’s answer still holds after the source check. ## Page generation Cactus organizes a catalogue from what it knows about your product, then writes each page from that knowledge and supporting evidence. It checks the cited evidence and publishes each page as soon as it’s ready, so you can browse it while the rest of the build continues. ## Build progress **Home** shows a status line above the catalogue while a build is working. It names the current stretch of work and, while pages are being published, may show how many planned pages are live. The signed-in app’s tray or phone dock also shows the current phase and an estimated time remaining when available. A visible status line means the build is working. If you’re unsure whether a run ended or failed, check the build status in the tray or dock. ## Retry an unpublished page In **Home**, under **Didn’t publish yet**, select **Retry** beside the page; Cactus tries to publish that page again. - Built for teams that ship faster than they can document.: Back, **Retry** (1), Google, GitHub, Dismiss, Done *In Home, under Didn’t publish yet, select Retry beside the page; Cactus tries to publish that page again.* ## Review page sources Generated page sections include source citations. To inspect the evidence behind a page: - Your product starts here.: Back to the live page, Show this edition, Show changes, See what Cactus takes as true, Open these lines on GitHub, Retire, Translate conversations, Set up the Messenger - detail: **Sources** (1) *Where Sources sits on Your product starts here.* 1. On an open page, select **Sources**. 2. In **Sources**, select **Open these lines on GitHub** to inspect a cited code span. ## Page history **History of this page** lists earlier editions, newest first, with their dates and why they were written. An edition is read-only. 1. In **History of this page**, open an earlier edition. 2. On the edition, select **Show changes** to compare it with the live page. Added and removed words are marked. ## Page audience Each generated page has an audience setting that affects who can read it. For audience rules and how to change them, see [Choose who can read a help page](https://cactus.heycactus.ai/choose-page-audience). ## If a build fails | What you see | What it means | What to do | | --- | --- | --- | | “The build failed” | The build failed. | In the tray or phone dock, select **Rebuild** to start a full build again. | # Support customers in Messenger > Verified against the product on 2026-10-06 ## Get help in Messenger ### Ask a question Customers can ask product questions in Messenger. Cactus answers from the product's knowledge and shows source cards for cited pages. ### Browse help and releases When the Help Center is live, **Help** opens its pages inside Messenger. If Help is off, **Help** opens the Help Center in a new tab. **What's new** shows the release feed when the product has a public release. For a walkthrough of Help Center browsing, see [Browse and ask questions in the Help Center](https://cactus.heycactus.ai/browse-and-ask-in-help-center). ### Resume a conversation Conversation history stays in the browser. If a visitor reloads while Cactus is answering, Messenger reconnects to that turn and shows the answer if it finished while they were away. ### Send feedback Visitors can rate an answer positively or negatively. Messenger sends the rating with the question and answer. ## Ask for a person Visitors can select **Talk to a human** before asking a product question. The request opens a thread under **Waiting on you** in the Inbox. Your team handles the thread in [the Inbox](https://cactus.heycactus.ai/customer-conversations-in-inbox). # Resolve or escalate customer conversations > Verified against the product on 2026-10-06 ## Email recipients Every handoff goes to your team by email. Add addresses in **Handoff address** to include anyone else who should hear about it. ### Add an address 1. In **Connect › Email**, enter an address in **Handoff address**. 2. In **Connect › Email**, select **Add**. ### Remove an address In **Connect › Email**, select the added address to remove it. ## Choose a handoff channel Every handoff goes to your team by email, plus any extra addresses you've added in **Connect › Email**. A configured Slack handoff channel also gets the handoff card. If both Slack and Discord channels are configured, Slack gets the card; Discord gets it only when no Slack channel is set. If Slack or Discord isn't connected yet, connect it first: [Connect Slack](https://cactus.heycactus.ai/connect-slack) or [Connect Discord](https://cactus.heycactus.ai/connect-discord). 1. In **Connect › Email**, select **Pick a channel** for Slack or Discord. 2. In the channel menu, select **Use this channel** for the channel you want. - detail: Use this channel, **Pick a channel** (1) *In Connect › Email, select Pick a channel for Slack or Discord.* ## Resolve a conversation In the conversation thread, select **Mark resolved** to resolve it. ## Escalate a conversation In the conversation thread, select **Escalate**. The thread is handed to your team and reads **Waiting on you**. - form: Restore what I typed, Internal note, Draft a reply, Ask Cactus, **Escalate** (1), Reply - detail: Hide what they read, Show what they read, Public answer, Hide original, Show original, Mark resolved, Reopen *In the conversation thread, select Escalate.* ## Reopen a conversation In a resolved conversation thread, select **Reopen** to reopen it. # Reply to customers, draft replies, and leave notes > Verified against the product on 2026-10-05 ## Draft a reply In **the conversation composer**, select **Draft a reply**. Cactus puts the draft in reply mode for you to review. It doesn't send the draft. - form: Restore what I typed, Internal note, **Draft a reply** (1), Ask Cactus, Escalate, Reply - detail: Hide what they read, Show what they read, Public answer, Hide original, Show original, Mark resolved, Reopen *In the conversation composer, select Draft a reply.* If Cactus replaces text you typed, select **Restore what I typed** to bring your earlier text back. ## Reply to a customer 1. In **the conversation composer**, choose **Reply to customer**. 2. In **the conversation composer**, enter your message in **Reply**. 3. In **the conversation composer**, select **Send reply**. Cactus sends the reply to the customer. The thread identifies who wrote each reply. ## Add a private note 1. In **the conversation composer**, choose **Internal note**. 2. In **the conversation composer**, enter your note in **Internal note**. 3. In **the conversation composer**, select **Add note**. Only your team sees the note. It stays in the thread and isn't sent to the customer. The thread marks it **Internal** and identifies who wrote it. ## Ask Cactus 1. In **the conversation composer**, enter your question. 2. In **the conversation composer**, select **Ask Cactus**. Your question is added to the thread as a note. Cactus replies there with a note, using the conversation and its existing team notes for context. ## If a reply doesn't send | What you see | What it means | What to do | | --- | --- | --- | | “The reply was saved but could not be delivered. Try again.” | The reply is saved in the thread, but delivery didn't complete. | Select **Send reply** again. | # Customer conversations in the Inbox > Verified against the product on 2026-10-06 ## Find conversations The **Inbox** lists customer threads from Messenger, the Help Center, and AI clients. AI-client threads appear as **MCP**. - messenger - help - mcp *The Inbox lists customer threads from Messenger, the Help Center, and AI clients.* ## Conversation and process states **Open:** The thread hasn’t been handed to a person or resolved. If Cactus is answering, it appears under Cactus is answering. **Waiting on you:** The thread has been handed to a person and is waiting on your team, even if Cactus is still answering. **Resolved:** The thread has been resolved. ## Search threads In **Inbox**, enter a term in **Search threads** to match thread titles. - detail: Set up the messenger - detail: **Search threads** (1) *In Inbox, enter a term in Search threads to match thread titles.* ## Filter threads In **Filters**, choose **Waiting on you** for threads handed to your team or **Resolved** for resolved threads. Cactus may still be answering a thread in **Waiting on you**. If any threads are waiting, **Inbox** opens to **Waiting on you** by default; otherwise, it opens to **Everything**. ## Review a thread - Each row shows where the thread started, the customer’s name or **Visitor**, recent activity, and the customer’s language when it differs. - A failed Cactus turn appears with its failure label. - Open a thread to read its messages in time order. The header shows its source and, when relevant, **Waiting on you** or **Resolved**. Private notes are marked **Internal**. # Set up your Help Center and domain > Verified against the product on 2026-10-06 ## Choose the address Your Cactus-hosted Help Center uses `https://.heycactus.ai`. When your custom domain is live, it becomes the main address. The hosted address still works and sends visitors to your custom domain. 1. In **Connect › Help site**, enter a new hosted name in **Name**. 2. In **Connect › Help site**, select **Save**. The new hosted address takes effect straight away, and the old one stops answering. ## Custom domain status **Waiting for DNS:** Cactus is waiting for your DNS record to point to the required target. **Issuing certificate:** Your hostname is active while its certificate is being issued. **Live:** Your custom domain is active and is now your Help Center address. **Needs attention:** There’s a problem with your hostname or certificate. The panel shows advice about it. ## Make it public In **Connect › Help site**, select **Public**. Anyone with the address can read your Help Center and What's New. Visitors can read the public Help Center once at least one eligible page is listed. ## Connect a custom domain Yes, `help.ourcompany.com` fits the subdomain format. Your Help Center keeps working at its Cactus address until the custom domain is live. 1. In **Connect › Help site**, enter your subdomain in **Your own domain**. 2. In **Connect › Help site**, select **Connect**. 3. At your DNS provider, add a `CNAME` record with the displayed **Name** and **Target** `customers.heycactus.ai`. > If you use Cloudflare, set the record to DNS only. ## Track activation While DNS or certificate setup is pending, the panel checks for updates every five seconds when the browser tab is visible. DNS changes usually show up within a few minutes, and certificate issuance takes a minute or two. The first HTTPS request to your custom domain can also confirm it, so you don't need to keep the panel open. ## Remove a custom domain In **Connect › Help site**, hold **Hold to remove** to disconnect the custom domain. Visitors will be sent to the hosted Cactus address again. ## Add policy links 1. In **Connect › Help site**, enter your privacy policy URL in **Privacy policy address**. 2. In **Connect › Help site**, enter your terms URL in **Terms address**. 3. In **Connect › Help site**, select **Save**. When an address is set, Cactus links to it on every Help Center page. Leave either field empty to hide that link. ## If a domain needs attention | What you see | What it means | What to do | | --- | --- | --- | | Advice that your DNS provider is proxying the record | The record is proxied instead of set to DNS only | 1. Set the record to DNS only.
2. In **Connect › Help site**, select **Check again**. | | Advice that the hostname no longer points to Cactus | The custom domain no longer points to the required target | 1. Point the CNAME to `customers.heycactus.ai`.
2. In **Connect › Help site**, select **Check again**. | | Advice to add or check a CNAME | The record doesn't point to the required target, or ownership needs attention | Add a CNAME from your hostname to `customers.heycactus.ai`, set it to DNS only, then select **Check again** in **Connect › Help site**. | | Advice that Cloudflare will not serve the hostname | Cloudflare has blocked the hostname | Write to the Cactus team so they can look at it. | # Browse and ask questions in the Help Center > Verified against the product on 2026-10-05 ## Browse topics and featured pages The Help Center home lets you browse a product’s help catalogue. On the Help Center home, select **see all pages** to browse the full catalogue. Featured pages are selected for the home page. - detail: **see all pages** (1), Dismiss *On the Help Center home, select see all pages to browse the full catalogue.* ## Read a help page Choose a published page from the catalogue to read its sections. Cactus checks a page’s attached sources after the article appears, so you can start reading while a check runs. If Cactus can’t reach a source, it couldn’t verify it; that doesn’t mean the page is wrong. Follow a child page under **On this page** or a link under **Related pages** to keep reading. ## Ask about a page 1. On a help article, select **Ask about this page**. The composer opens with that article as context. 2. Enter your question in the composer and send it. The answer opens in its own thread, where **Ask a follow-up…** continues the conversation. ## Share an answer On an answer thread, select **Keep this answer. It has a link**. Cactus creates a public link, opens the answer at that address, and copies the link. ## What's New ### Read releases Open **What's New** in the Help Center to read the product’s public release timeline. ### Ask about a release Use the Help Center question composer and name the release in your question. ## Contact the team ### Ask Cactus On **Contact**, select **Ask Cactus** to open the question composer. ### Ask for a person On **Contact**, select **Talk to a human** when it appears to ask for a person. - detail: **Talk to a human** (1), Ask Cactus, Privacy policy, Terms, Docs *On Contact, select Talk to a human when it appears to ask for a person.* # Answer customer questions with Cactus > Verified against the product on 2026-10-06 ## Ask a product question Ask in your product’s Help Center or embedded Messenger. When you ask from a Help Center article, Cactus sends that article as context; Messenger includes details about the current page. For visitor steps, see [Browse and ask in the Help Center](https://cactus.heycactus.ai/browse-and-ask-in-help-center) or [Support customers in Messenger](https://cactus.heycactus.ai/support-customers-in-messenger). ## Answer from evidence Cactus first looks for an existing Help Center page that answers the question. It can answer from published help when those pages fully cover the question and the cited sources are unchanged. If they don’t, Cactus checks mapped product knowledge and the source pages cited by relevant material. When a cited source has changed, Cactus uses that page’s current text rather than relying on the older help section alone. ## Answer sources Composed answers can include links to the cited Help Center pages. Messenger answers can also include source entries when they’re returned with an answer. ## Ask for a person If your team has configured Handoffs, select **Talk to a human** in the answer thread. Cactus passes the thread to your team and confirms, “Got it. Someone from the team will pick this up.” - detail: Back to the Help Center, Keep this answer. It has a link, Ask a follow-up, **Talk to a human** (1), Couldn't copy, Link copied, Copy link, Retry - form: Ask a follow-up… *If your team has configured Handoffs, select Talk to a human in the answer thread.* ## Earlier conversations Cactus can use recent outcomes and relevant earlier exchanges from a visitor’s own conversations to keep answers continuous. That history is context, not product evidence; if it conflicts with product pages, the pages win. ## Where questions go - A Help Center question starts a conversation for the product it’s about. - When a teammate takes over a Messenger thread, Cactus records the customer’s message for your team in Inbox and doesn’t generate an automatic reply. - Handoffs go to the product’s configured Slack channel or the address your team saved. For teammate follow-up, see [Review customer conversations in the Inbox](https://cactus.heycactus.ai/customer-conversations-in-inbox). # Install and customize Messenger > Verified against the product on 2026-10-06 ## Install Messenger Get the generated snippet from **Connect › Messenger**. It includes your product’s public install key. 1. In **Connect › Messenger**, open **Or paste the snippet yourself**. 2. Choose your framework in **Framework**. 3. Select **Copy the snippet**. 4. Add the snippet once in the location for your framework. | Framework | Where to add it | | --- | --- | | Script tag | Shared root layout or footer template, just before the closing body tag | | Webflow | Site settings, Custom code, Footer code | | WordPress | Your theme’s footer, or a header-and-footer code plugin | | React | Mount it as a component once in the root layout | | Svelte | `src/app.html` for SvelteKit or `index.html` for Vite, before the closing body tag | | Vue | `index.html`, before the closing body tag | | Next.js | Save it as `app/cactus-messenger.tsx` and render `` once inside the root layout’s body | > Keep the copied `data-api-key` as supplied, and don’t add a second copy of the loader to a page. ## Allowed sites Until you save at least one allowed site, any site can load Messenger. After that, only sites on the saved list can load it. 1. In **Connect › Messenger**, open **Only these sites can load it**. 2. Enter the full site origin, including its scheme, in **Add an allowed domain**. For example, use `https://your-product.com`, not a bare host or a URL with a path. 3. Press Enter to add the origin to the list. 4. Select **Save** to apply the list. If you use both a root domain and its `www` version, add both. The editor may offer the other version to add. ## Verify installation **Check a site** tests whether the install key answers and whether the saved site list allows the origin. Save any domain edits first. The check doesn’t confirm that the snippet has loaded on your actual site. 1. In **Connect › Messenger**, open **Check a site**. 2. Enter the site in **Site to check**. 3. Select **Check**. 4. Load the page with the snippet in a browser. The site appears under **Sites** the first time Messenger loads there. ## Preview and customize 1. In **Connect › Appearance**, use **Preview site theme** to switch the simulated site’s background between **Light** and **Dark**. 2. Adjust the launcher, position, color scheme, and colors. 3. Select **Save** to apply the design to Messenger. - detail: Reset every option to the Cactus defaults, Discard, Saved, Save - detail: **Preview site theme** (1) *In Connect › Appearance, use Preview site theme to switch the simulated site’s background between Light and Dark.* Set primary and secondary colors separately for light and dark backgrounds. Unset colors use Cactus’s brand colors, and custom color values must be six-digit hex. The preview’s site theme changes the simulated background, not Messenger’s color scheme. ## Keep the launcher clear Add `data-cactus-launcher-hold` to a host-page element, such as your hero section, to hold back a due launcher while that element is visible. The element must be drawn, have a size, and overlap the window. When no marked element remains visible, the launcher arrives with its usual entrance and stays on the page. The hold is ignored on touch screens. It’s also bypassed when Messenger is open, a reply is waiting, or the launcher is otherwise needed immediately, such as when the dot is parked or being dragged. ## If a site check fails | What you see | What it means | What to do | | --- | --- | --- | | The site URL isn’t valid | The entry isn’t a valid site URL | Enter a full URL, such as `https://your-product.com`, and check again | | The site isn’t on the list | The saved site list blocks that origin | Select **Add [site URL]** to add and save it, then check again | | The install key isn’t answering | The key check failed or Cactus couldn’t be reached | Check your connection and retry. Make sure the snippet’s `data-api-key` matches the public key under **Key** | | The site doesn’t appear under **Sites** | Messenger hasn’t loaded on that site yet | Check that the snippet is installed and the site is allowed, then load the page in a browser | # Customer conversation memory > Verified against the product on 2026-10-06 ## What Cactus remembers When memory is on, Cactus keeps a scrubbed record for one person and one product. After a conversation closes, it can include a record if the person has said something. - The person’s messages - Cactus’s replies - The team’s replies - An outcome describing what they asked and how the conversation ended Cactus may also keep an answer’s title and which Help Center pages it cited. The remembered transcript excludes internal notes, handoff rows, and Help Center page bodies. This memory is separate from your team’s Inbox conversations. ## Use earlier conversations For a visitor’s own Help Center or Messenger conversations, Cactus can use recent outcomes and relevant earlier exchanges to maintain continuity, such as building on what the person asked before. That history is context, not product evidence. If it conflicts with Help Center pages, the pages win. ## Turn memory off In Messenger’s **Behavior** panel, turn off **Memory: remember people’s earlier conversations to answer them better** for the product. With memory off, Cactus neither reads nor keeps memory for that product. ## Review memory In a customer conversation, open **What Cactus remembers**. The disclosure shows when and how the latest remembered conversations ended, up to three outcomes. It shows outcomes, not remembered transcripts. ## Forget memory Only a product owner can make Cactus forget a person’s memory for the product. 1. In the customer conversation, open **What Cactus remembers**. 2. In that disclosure, hold **Hold to forget this person**. In that disclosure, hold **Hold to forget this person** to erase that person’s memory for this product. Their conversations stay in your Inbox. Cactus starts remembering again from their later conversations. - form: Restore what I typed, Internal note, Draft a reply, Ask Cactus, Escalate, Reply - detail: Hide what they read, Show what they read, Public answer, Hide original, Show original, Mark resolved, Reopen, **Hold to forget this person** (1) *In that disclosure, hold Hold to forget this person to erase that person’s memory for this product.* # Connect an AI client > Verified against the product on 2026-10-05 ## Choose an address Yes, you can connect an AI client over MCP. Choose an address based on what the client should access. | Address | What it can reach | Sign-in | | --- | --- | --- | | Team: `https://mcp.heycactus.ai/mcp` | Every product in your teamspace. With the access granted at sign-in, a client can read team pages, the code map, customer conversations, and investigations. | Sign in with a Cactus account or use a personal token. | | Product: `https://mcp.heycactus.ai/p//mcp` | Without a token, published Help Center pages for that product. The Help Center must be public. A teammate who signs in at this address can also use their granted team access. | No sign-in is needed for published pages. Use team credentials only if you want team access. | Use the product address without team credentials when you want the client limited to published pages. An unauthenticated client can search and read those pages and ask Cactus questions answered from them. It can’t use that access to read pages withheld from visitors or customer conversations. - team - product *Use the product address without team credentials when you want the client limited to published pages.* ## Connect a client 1. In **Connect › AI clients**, select **Add a client** to open setup. 2. Under **Who is it for**, choose **Your team** or **Your users**. 3. Select the AI client you want to connect. 4. Use the address or configuration shown in its setup panel. The setup panel gives you instructions for Claude Code, Cursor, VS Code, Claude, and ChatGPT. ChatGPT has separate web and desktop instructions. For another remote MCP client, the panel provides the address to add to that client. ### Claude Select **Claude** in the setup panel and follow the connection steps shown there. ### Cursor In the Cursor setup, select **Add to Cursor**. Cursor opens with the address filled in. ### Team sign-in or token The team setup can ask you to sign in with your Cactus account. The launch action for Claude Code, Cursor, or VS Code can instead create a personal token and include it in the setup prompt. You’ll see the token once. ## Approve access For a browser-based connection, sign in, then check the verified client host, requested access, and teamspace shown on the consent page. 1. On the consent page, check the client host, requested access, and teamspace. 2. On the consent page, select **Allow** only after checking those details. The client gets a grant for the listed access and acts with your access on that teamspace. The access listed on the consent page tells you what this client can do. Approve only the access you want to give it. ## Deny a connection On the consent page, select **Deny** to send your decision back to the AI client without granting access. ## Claim an agent A headless agent gives you a link and a code. Check the agent, its requested access, and the teamspace. Only enter a code from an agent you started yourself. 1. Open the claim link and review the agent and requested access. 2. On the claim page, enter the code in **The code the agent showed you**. 3. Select **Give it my team**. The agent picks up its team token on its next check. ## Revoke access Choose the action that matches how the client connected. In **Connect › AI clients**, select **Revoke** beside a personal token to stop it on the next call. | Connection | What to do | What happens | | --- | --- | --- | | Browser sign-in | In **Connect › AI clients**, select **Disconnect** beside the client. | Its grant ends, so the client must sign in again to use Cactus. | | Claimed agent | In **Connect › AI clients**, select **Disconnect** beside the agent. | The agent must be claimed again to use Cactus. | | Personal token | In **Connect › AI clients**, select **Revoke** beside the token. | The token is refused on its next call. Its old value stays in the client’s configuration. | | Connected-client record | Select **Forget** beside the record. | This removes the record only. The client keeps its access and appears again when it reconnects. | # Ask Cactus and investigate from an AI client > Verified against the product on 2026-10-06 ## Ask from an AI client From an AI client, you can search and read published Help Center pages, browse topics and What's New, and ask Cactus about published help. With team access, you can also ask about team-visible knowledge, inspect product knowledge and evidence, search and read conversations, and start or retrieve investigations. | Access | What you can do | | --- | --- | | Public Help Center | Use `search_help` or `search` to find published pages, `read_page` or `fetch` to read them, `list_topics` to browse topics, `read_timeline` to browse What's New, and `ask_help` to ask about published help. | | Team access | Use `list_products`, `ask`, `lookup_map`, `search_evidence`, `search_conversations`, `read_conversation`, `start_investigation`, and `get_investigation` for team products and knowledge. | Even with team access, `ask_help` uses the visitor view. Use `ask` for team-visible knowledge. The tools available depend on the permissions granted to the client. For connection and access setup, see [Connect an AI client](https://cactus.heycactus.ai/connect-an-ai-client). ## Search conversations With `cactus:read` access, use `search_conversations` to find customer conversations and `read_conversation` to retrieve one. A team member can also use `search` to find conversations and `fetch` to read one. Fetching a conversation requires the read scope. ## Investigate product code With team access, call `start_investigation` with your question to investigate your product's code. The call returns an `investigationId` and a status. ```json {"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"start_investigation","arguments":{"question":"Where is product signup validated?"}}} ``` ## Retrieve investigation results Call `get_investigation` on the same product with the `investigationId` returned by `start_investigation` to retrieve its current status and findings when available. ```json {"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_investigation","arguments":{"investigationId":"[investigationId]"}}} ``` The returned `status` can be `queued`, `running`, `done`, or `failed`. - queued - running - done - failed *The InvestigationStatus states* | Status | What it means | | --- | --- | | `queued` | The investigation hasn't finished. | | `running` | The investigation hasn't finished. | | `done` | Findings are ready. | | `failed` | The response includes a failure sentence. | # Agent-friendly help > Verified against the product on 2026-10-06 ## Give agents access If your Help Center is public, anyone can read its published pages without an account, key, or cookie, and its public MCP address answers from those pages. - Public Help Centers allow crawlers and set the Content Signal to `search=yes, ai-input=yes`. Team-only Help Centers disallow crawlers. - Team members can read a team-only Help Center in a browser signed in to Cactus or with a token from that Help Center’s sign-in. - Draft pages and pages meant for one person aren’t reachable through the Help Center or its MCP address. ## Machine-readable files These paths are relative to your Help Center’s origin. When enabled, its **Agents** page lists the MCP address, any available A2A address, browser tools, and machine-readable files. | File or address | What it provides | | --- | --- | | `robots.txt` | Public Help Centers allow crawlers and state `search=yes, ai-input=yes`; team-only Help Centers disallow crawlers. | | `/sitemap.xml` | Page addresses and, when known, when each page last changed. | | `/llms.txt` | Published pages, one line each, with guidance on when to read them. | | `/llms-full.txt` | Every page in one file. | | `//md` | A Markdown copy of a page. | | `/openapi.json` | The Help Center’s OpenAPI description. | | `/.well-known/mcp/server-card.json` | The MCP address, its sign-in requirements, and its tools. | | `/.well-known/agent-card.json` | The A2A address and its skill, on public Help Centers. | | `/.well-known/agent-skills/index.json` | The skill index and a digest of the skill file. | | `/.well-known/agent-skills/ask-help/SKILL.md` | Instructions for answering from published help over MCP or as text. | | `/auth.md` and `/.well-known/oauth-authorization-server` | Agent sign-in guidance and OAuth metadata. | | `/memory.git` | A read-only clone of a public Help Center’s published pages, topic and related-page links, and public What's New releases. | To clone a public Help Center, use its site address in this command: ```sh git clone https:///memory.git ``` - The API catalog associates the Help Center with its OpenAPI description, MCP address, and MCP card; public sites also include the A2A card. - The AI discovery catalog lists MCP and, on public Help Centers, A2A. ## Search and read - From an MCP client, use `search_help` to find pages about a word or feature, then `read_page` to read a page in full. - In a browser, `search_help` finds matching pages and `read_help_page` reads a page by its slug. - While your Help Center is live, browser agents can also list topics and read releases. - `ask_cactus` returns an answer with the pages it cites. ## Test browser tools 1. On your Help Center’s **Agents** page, check the registration status for this browser. 2. On your Help Center’s **Agents** page, select **Run** beside a sample tool. The result appears beneath it. - detail: Docs, **Run** (1) *On the Help Center's Agents page, select Run beside a sample tool.* If your browser doesn’t expose WebMCP tools or can’t list its registered tools, **Run** executes the same tool on the page. WebMCP requires enabling a browser flag; the **Agents** page lists steps for Chrome and Edge. # Connect Slack for questions and handoffs > Verified against the product on 2026-10-05 ## Connect Slack In **Connect › Slack**, select **Connect** to open Slack’s installation flow. When you return to Cactus, it connects your Slack workspace and creates or reuses `#cactus-escalations` as the initial handoff channel. - detail: Hold to disconnect, the Handoffs page, **Connect** (1) *In Connect › Slack, select Connect to open Slack’s installation flow.* ## Ask Cactus in Slack Ask a product question by mentioning `@Cactus` in a channel it’s in, sending it a direct message, or running `/cactus ask `. Cactus answers a channel mention in that channel. You can also opt selected public channels into reading and choose separate destinations for release announcements and handoffs. ## Choose channels Cactus reads 1. In **Connect › Slack**, choose a channel from **Pick a public channel**. 2. Select **Watch**. When you add a channel, Cactus reads the last two weeks of messages, then each new message. Private channels and DMs are never read. ### Remove a channel 1. Select **Remove** beside a channel to stop reading it. > Removing a channel also deletes its messages and artifacts. ## Configure release announcements Choose a channel under **Release announcements channel**, or select **Create #cactus-releases** to create or adopt that channel. Cactus posts release cards to the selected channel. Without a selected channel, releases aren’t posted to Slack. The release channel must be different from the handoff channel. ### Stop announcements 1. Select **Stop posting releases** to stop posting to Slack. ## Choose a handoff channel Connecting Slack creates or adopts `#cactus-escalations` as the initial handoff channel. To change it: 1. In **Connect › Slack**, select **the Handoffs page**. 2. On the Handoffs page, choose a channel under **Handoff channel**. For the full handoff setup, see [the Handoffs page](https://cactus.heycactus.ai/resolve-and-escalate-conversations). # Connect Discord for questions and handoffs > Verified against the product on 2026-10-05 ## Ask in Discord Use Cactus slash commands in a connected server. `/cactus ask` posts the answer in the channel for everyone; other commands are private to the person who runs them, except replies from a handoff thread, which go to the customer. | Command | What it does | | --- | --- | | `/cactus ask` | Ask a product question in the channel. | | `/cactus status` | Check what Cactus knows about the server’s product. | | `/cactus link` | Start linking your Discord account to your Cactus account. | | `/cactus reply` | In a handoff thread, send text to that handoff’s customer. | | `/cactus resolve` | In a handoff thread, mark the handoff resolved. | ## Connect your server 1. In **Connect › Discord**, select **Connect** to start the Discord authorization flow. 2. In Discord, choose the server and authorize Cactus, then return to Cactus. Cactus saves the server connection and sets up a handoff channel. - detail: Disconnect, **Connect** (1) *In Connect › Discord, select Connect to start the Discord authorization flow.* ## Choose a handoff channel Discord can receive human handoff cards. After you connect a server, Cactus tries to set up `#cactus-escalations`. If it can’t, choose a channel from the server’s listed text channels. Voice, forum, and category channels aren’t available. In **Connect › Discord**, choose a channel in **Discord handoff channel**. Cactus posts this product’s handoff cards to the channel you choose. For team-wide handoff settings, see [Resolve or escalate customer conversations](https://cactus.heycactus.ai/resolve-and-escalate-conversations). ## Link your account 1. In a connected server, run `/cactus link`. Cactus sends you a private link that works once and expires after ten minutes. 2. Open the link and sign in to Cactus if asked. 3. On the Cactus link page, select **Confirm** only if you typed `/cactus link` yourself. - detail: Back to Discord, **Confirm** (1) *Where Confirm sits on the screen* If you link an account from the team that connected the server, Cactus answers as you with everything your team can see. If your account belongs to another team, Cactus answers with published pages. ## If linking fails | What you see | What it means | What to do | | --- | --- | --- | | “That link expired.” | The link has expired. | Run `/cactus link` in Discord for a fresh link. | | “That link has already been used.” | Each link works once. | Run `/cactus link` in Discord for a fresh link. | | “That Discord account is linked to someone else.” | Another Cactus account has linked this Discord account. | Sign in as the Cactus account that linked it, or link a different Discord account. | | “That link is not valid.” | Cactus can’t use this link. | Run `/cactus link` in Discord for a fresh link. | # Seven-day support activity > Verified against the product on 2026-10-06 ## Question counts Overview shows a separate count for customer questions from each channel over the rolling seven-day window. - help - messenger - slack - discord - mcp *The Overview shows a separate count for customer questions from each channel over the rolling seven-day window.* - Help Center - Messenger - Slack - Discord - MCP The window covers the seven days before now and rolls continuously, rather than resetting at the start of a calendar week. A conversation counts when it starts. Setup conversations and conversations started in the app don't count. ## Handoffs Overview shows handoffs as a separate total. A handoff counts when a conversation is escalated during the rolling seven-day window, regardless of its channel. # Cactus Docs and agent formats > Verified against the product on 2026-10-06 ## What Cactus does Cactus's public site brings together Docs, What's New, AI-client instructions, pricing, company information, and legal and trust pages. ## Read Cactus Docs Browse Cactus's public Docs at `https://heycactus.ai/docs`. The catalogue groups published pages, and each page opens from the catalogue. ## Read Docs with an agent Cactus's public Docs are available without a sign-in, so an AI agent can read the same published pages. ## Get Markdown pages Cactus's home page is available at `/md`. For another public Cactus page, append `/md` to its address. The Docs catalogue is at `/docs/md`, and each published Docs page is at `/docs//md`. ## Machine-readable resources At `https://heycactus.ai`, these public resources help agents and crawlers find Cactus content and services: | Path | What it provides | | --- | --- | | `/robots.txt` | Crawler instructions and the sitemap address | | `/sitemap.xml` | Public site pages, What's New, and published Docs pages with update dates | | `/llms.txt` | An overview of Cactus and links to pages and agent resources | | `/llms-full.txt` | Public marketing pages together in one resource | | `/openapi.json` | An OpenAPI description of programmatic endpoints and agent resources | | `/.well-known/api-catalog` | API catalog | | `/.well-known/mcp/server-card.json` | MCP server card | | `/.well-known/agent-card.json` | A2A agent card | | `/.well-known/ai-catalog.json` | AI catalog | | `/.well-known/agent-skills/index.json` | Agent Skills index | | `/auth.md` | Sign-in guidance for agents | # Cactus release updates > Verified against the product on 2026-10-05 ## Read Cactus updates Open **What's New** on [heycactus.ai](https://heycactus.ai/) to read Cactus's public release feed and its individual release entries. # Cactus pricing and plans > Verified against the product on 2026-10-05 ## Plans Both plans offer the same pages and answers, with different model speeds. | Plan | Published price | For | Models | | --- | --- | --- | --- | | Pro | USD 100 a month | Teams that ship every day | The fastest models Cactus runs | | Lite | USD 30 a month | Teams shipping a few times a week | Open models on Cloudflare; the same pages and answers, but slower | ## Pro trial Every team gets 14 days of Pro free, with all of Pro and no card. The trial includes the fastest models Cactus runs. Customers can ask Cactus questions on your site, and every push updates the pages it touches. - A Help Center at yourname.heycactus.ai or your own domain - Cactus Messenger on your site - What’s New, written from your releases - Answers for your team in Slack and Discord - MCP addresses for your team and your customers - Unlimited teammates After your trial, you can keep Pro or move to Lite. Until you choose a plan, your Help Center stays up and Cactus pauses. # Join the Cactus waitlist > Verified against the product on 2026-10-05 ## Join the waitlist You can request an invitation with your work email. 1. On heycactus.ai, enter your work email in the waitlist form. 2. Select **Join the waitlist**. The form confirms your signup and sends a confirmation email saying Cactus will email you when it’s ready for your team. If the confirmation email can’t be sent, your signup stays on the list, and you can retry from the confirmation screen. # About Cactus > Verified against the product on 2026-10-05 ## Meet the founders Cactus is built by its founders, Nour and Kevin. # Contact Cactus > Verified against the product on 2026-10-05 ## Contact the team - Email **hello@heycactus.ai** with your question. - Ask Cactus in the Messenger in the corner of this page. Say **Ask for a person**, and someone from the team will join. We read every message. # Ask Cactus about Cactus > Verified against the product on 2026-10-06 ## Ask on homepage On heycactus.ai, ask Cactus about Cactus, read its answer and any cited pages, then continue the conversation in Messenger. ### Sample questions Open either sample question to read its answer: - **Can Cactus publish something wrong?** - **Does it replace my support team?** ### Ask your own question 1. On heycactus.ai, under **Ask Cactus about Cactus.**, select **Ask your own question**. 2. In the field that opens, enter your question and press Enter. Cactus adds your question to the list and answers it there. If the answer cites pages, expand the source list beneath it to see them. A page title opens its page when a link is available. Your questions stay available as you move between pages of the site. Reloading clears the list, and Cactus doesn't save your questions. ## Continue in Messenger ### Start a question On larger screens, select **Ask Cactus** in the homepage hero to open Messenger ready for a question. ### Continue a thread After an answer in the homepage question list, select the option beneath it to continue the same thread in Messenger. ## If an answer fails | What you see | What it means | What to do | | --- | --- | --- | | A failure message and a retry option | Cactus couldn't return an answer | Select the retry option beside the answer | # Cactus Privacy Policy > Verified against the product on 2026-10-06 ## What Cactus collects Cactus collects: - Your account name and email from the account you sign in with. - Sources an owner connects to a product: code repositories, a Help site, Intercom conversations, and Slack channels the owner picks. - Messages people send to Cactus on Slack and Discord. - Conversations people have with Cactus, including questions visitors ask on a published Help Center without an account. - Usage events and errors, including which pages are opened, which questions are asked, and whether an answer worked. Slack sends Cactus an event for every message in a workspace where Cactus is installed. Cactus keeps messages only from channels an owner picked and drops the rest without storing them. On Discord, Cactus keeps only messages addressed to Cactus. ## How Cactus uses it Cactus uses this information to answer questions and write pages for the product. It doesn't train models on it, sell it, or give it to anyone for advertising. ## How long Cactus keeps it | Data | How long Cactus keeps it | | --- | --- | | Slack channel messages | A rolling 90 days. Removing the channel or disconnecting Slack deletes the messages. | | Discord messages addressed to Cactus | With the conversation they belong to, until the conversation is deleted. | | Conversations and pages Cactus writes | Until an owner deletes them or closes the account. | | Data read from a repository, Help site, or Intercom | While the source is connected to a product. Delete the product and this data goes with it. | | Account name and email | Until the account is closed. | | Usage events and errors | While the account is open. You can ask Cactus to delete them sooner. | To request a copy of everything Cactus holds about you, or ask for it to be deleted, email hello@heycactus.ai. You don't need an account to write. Cactus replies within two business days. For cookie and browser-storage details, see [Cookie Notice](https://cactus.heycactus.ai/cactus-cookie-notice). For how Cactus handles personal data for a team, see [Data Processing Addendum](https://cactus.heycactus.ai/cactus-data-processing-addendum). ## Service providers Companies that run parts of Cactus receive data for their part of the service. # Cactus Trust Center > Verified against the product on 2026-10-05 ## Security controls The Trust Center groups its controls by SOC 2 category. This information was checked on September 26, 2026. | Category | Published controls | | --- | --- | | Security | Sign-in uses Google or GitHub, with no passwords. Session cookies are inaccessible to page scripts, use HTTPS, and expire after a week without use. Only Owners can make specified membership and product changes, and the server checks their role. The GitHub App is read-only. AI-client tokens last an hour and are stored as hashes. Other controls cover two-factor authentication for Cactus’s GitHub organization, signed-message checks, cross-site request protection, rate limits, HTTPS and encryption, logging, pull requests and checks, deploys, and locked dependencies. Anyone can report a security problem without an account. | | Availability | The website, app, and Help Centers use a distributed network. Jobs can resume after an interruption, up to six hours of database history is retained, and repository copies and the search index can be rebuilt from GitHub. | | Confidentiality | Visitors see eligible pages set to Everyone, and answers to visitors don’t list code files as sources. Code searches run in an isolated environment without network access and can’t change stored copies. Cactus’s answering system doesn’t write code to disk. Other controls cover secret scanning and removal, Slack secret replacement, and deletion of a product’s data and code copies. | | Processing integrity | Pushes are checked against GitHub’s signature. Changed page sections are saved as new versions. | | Privacy | For personal-information practices, read the Privacy Policy. For contractual processing terms, read the Data Processing Addendum. | ## SOC 2 status No. The Trust Center lists both SOC 2 Type I and Type II reports as **Being prepared**. Type I is an independent auditor’s report on control design; Type II covers how controls work over a period of months. ## Subprocessors The Trust Center’s Companies section lists each company’s name, location when available, what it does for Cactus, and what it receives. You’ll also find the same companies in the [Privacy Policy](https://cactus.heycactus.ai/cactus-privacy-policy) and [Data Processing Addendum](https://cactus.heycactus.ai/cactus-data-processing-addendum). ## Read the Trust Center Open `/security` on heycactus.ai to read the Trust Center. # Cactus Data Processing Addendum > Verified against the product on 2026-10-06 ## What the DPA covers The DPA is part of the [Terms of Service](https://cactus.heycactus.ai/cactus-terms-of-service). It applies whenever Cactus processes personal data for you, and you don’t need to sign it. If the DPA and the Terms disagree about personal data, the DPA controls. It covers the data Cactus processes and why, each side’s responsibilities, subprocessors, data locations and transfers, deletion, and liability. To request a copy signed by both parties, email hello@heycactus.ai. ## Personal data You decide why and how your personal data is processed, and Cactus processes it for you. Under the GDPR, you are the controller and Cactus is your processor; under the CCPA, you are the business and Cactus is your service provider. | Category | What it covers | | --- | --- | | People | Your teammates; people who read your Help Center, ask in Messenger, or use your public MCP address; people in connected conversations, channels, and messages; and people named in connected code and commits | | Data | Names and email addresses; messages and conversations, including anything a person writes in them; commit authors’ names; random visitor-browser IDs; the email a visitor leaves when they ask for a person; IP addresses in request logs and sign-in records; and recordings of visits to the app and Help Centers | | Purpose | Running Cactus for you: reading your sources, writing pages and answers, answering your customers, and keeping Cactus secure | | Memory | When memory is on, Cactus keeps each person’s earlier conversations with the product, readable only in that person’s conversations. A team owner can erase a person’s memory at any time, and memory can be turned off for the product | | Processing period | While you use Cactus, and afterward for the periods listed for each data type in the Privacy Policy | Cactus handles its own records of who uses Cactus, such as your name and email as a Cactus user, under the Privacy Policy. Cactus isn’t built for health records, payment card numbers, government ID numbers, or other special categories of data; the [Acceptable Use Policy](https://cactus.heycactus.ai/cactus-acceptable-use-policy) asks you not to connect them. ## Responsibilities ### Cactus - Processes your personal data only on your instructions. If Cactus thinks an instruction breaks data protection law, it tells you. - Binds people at Cactus who can access your personal data to confidentiality. - Protects your data with the measures on the [Trust Center](https://cactus.heycactus.ai/cactus-trust-center) and keeps them up to date. - Helps you respond to requests to access, correct, or delete personal data, and, within reason, with impact assessments and regulator questions. - Tells you without undue delay when it knows of a security incident affecting your personal data, and keeps you updated. - Gives you information to check its compliance with the DPA and answers security questionnaires. ### Your team - Have a lawful basis for the personal data you provide and tell the people it concerns, for example in your privacy notice. - Give Cactus only instructions allowed by data protection law. - Keep team sign-ins safe and choose carefully who can see what. ## Subprocessors Cactus uses these companies to process your personal data. Each receives only what it needs for its part, under data-protection terms that protect your personal data at least as well as the DPA does. | Company | What it does and receives | Processing location | | --- | --- | --- | | Cloudflare | Runs the website, app, and Help Centers; keeps a log of each request | Worldwide, on Cloudflare’s network | | Microsoft Azure | Runs the server where Cactus reads your sources and writes pages and answers | United States, East US 2, Virginia | | Restate | Runs Cactus jobs and keeps a record of each job’s steps, including what each step read, for seven days | United States, AWS us-east-2, Ohio | | Neon | Stores the database, including the search index of your code | United States, AWS us-east-1, Virginia | | Convex | Carries live updates, including the words of an answer while it is being written | Still being confirmed with Convex | | Modal | Copies your repositories, builds the search index of your code, and runs the commands Cactus reads it with | United States for stored copies; sandboxes can run in any region Modal uses | | Vercel | The Vercel AI Gateway carries every call Cactus makes to a model | Still being confirmed with Vercel | | OpenAI | Runs the models that read your sources and write pages and answers, and the model that turns text into search vectors | Still being confirmed with OpenAI | | TypeSafe AI | Runs Jev, the model that makes some small decisions, such as whether your customers would notice a release | Still being confirmed with TypeSafe AI | | Firecrawl | Reads your product’s public website to find its logo, colours, and links, and fetches a public page for Cactus when a site turns a plain request away | Still being confirmed with Firecrawl | | Resend | Sends Cactus email, including the email your customers get when they write to your team | United States | | PostHog | Records usage events, errors, and visit recordings from the app and Help Centers; keeps model-call traces for debugging that only Cactus’s two founders can open | United States, AWS us-east-1, Virginia | | Google and logo.dev | Supply the small logo beside a product’s name; the browser asks them for it by the product’s web address | Still being confirmed with the companies | | Google and GitHub | Sign you in when you choose either sign-in option | Still being confirmed with the companies | Before a new company starts receiving your personal data, Cactus adds it to the DPA and emails your team’s Owners. If you object on data-protection grounds, tell Cactus within 30 days. If Cactus can’t resolve it with you, you may end the Terms for the part of Cactus the change affects. ## Data location The database, the server that reads your sources, and Cactus’s job records are in the United States. When personal data leaves the European Economic Area, the UK, or Switzerland for a country the law does not already recognise as protecting it, the Standard Contractual Clauses apply between you and Cactus, as completed by the DPA. ## Deletion You can handle many requests yourself by deleting a page, conversation, or product, or disconnecting a source. For other requests, write to Cactus. Cactus deletes your personal data when you delete it and when your account closes. Until then, you can ask for a copy. The [Privacy Policy](https://cactus.heycactus.ai/cactus-privacy-policy) lists retention periods for each type of data. ## Liability What you and Cactus owe each other under the DPA is limited as the [Terms of Service](https://cactus.heycactus.ai/cactus-terms-of-service) say. # Cactus acceptable use policy > Verified against the product on 2026-10-05 ## Who it covers This policy applies to: - People on a team. - People who read a Help Center or write through Messenger. - Agents and AI clients connected to Cactus. This policy is part of the [Terms of Service](https://cactus.heycactus.ai/cactus-terms-of-service). Each team is responsible for making sure its people follow it. ## Connect sources Connect only sources you have the right to share with Cactus. Don’t connect personal data you weren’t allowed to collect or share. Don’t connect payment card numbers, health records, government ID numbers, or a source that exists to hold them. Cactus isn’t built to hold those kinds of data. ## What you publish Don’t use Cactus to create, publish, or send: - Illegal content, or content that helps someone break the law. - Content that violates someone’s copyright, trademark, privacy, or other rights. - Deceptive content, such as phishing, fake reviews, or impersonation. - Harassment, threats, or content promoting violence or hatred against people for who they are. - Sexual content involving children. - Malware or links to malware. - Spam, including bulk messages to people who didn’t ask for them. ## Use Cactus Don’t try to access another team’s pages, conversations, or code, or anything your role doesn’t let you access. Don’t probe, scan, or attack Cactus, or try to get around its sign-in or limits. Don’t send enough requests to slow Cactus down for others. Don’t copy or take apart Cactus, use it to build a competing product, or resell access without written agreement. To report a security problem, follow the [Trust Center](https://cactus.heycactus.ai/cactus-trust-center). ## Ask Cactus Don’t try to make Cactus ignore its rules, reveal what it shouldn’t, or act against the team it works for, including by hiding instructions in a question, page, or file Cactus reads. People and agents may read a published Help Center, its llms.txt, its markdown pages, and its public MCP address; keep requests slow enough that these stay quick for everyone else. ## If the policy is broken | What happens | What it means | What to do | | --- | --- | --- | | Cactus removes content, stops reading a source, takes a Help Center or Messenger offline, or suspends a team | These are possible responses to a policy breach | The team’s Owners are told what happened and why, unless the law or the risk prevents it | | You find misuse | Anyone can report it; you don’t need an account | Email hello@heycactus.ai | | The law requires a report | Cactus reports what it finds to the authorities | No action is specified for you | # Cactus Terms of Service > Verified against the product on 2026-10-06 ## Using Cactus ### Agreement These terms are between Cactus and the company that uses it. If you accept them for a company, you confirm that you’re allowed to do so. They cover Cactus’s websites and app, Help Centers, Messenger, AI-client addresses, Slack, and Discord. Using Cactus means accepting these terms and the [Acceptable Use Policy](https://cactus.heycactus.ai/cactus-acceptable-use-policy). The [Data Processing Addendum](https://cactus.heycactus.ai/cactus-data-processing-addendum) applies when Cactus handles personal data for you. The [Privacy Policy](https://cactus.heycactus.ai/cactus-privacy-policy) explains what Cactus collects and why. ### Accounts and teams You sign in with Google or GitHub, and Cactus doesn’t keep a password. Anyone who can sign in to your account can access Cactus as you. - The person who creates a team becomes its first Owner. Owners can invite and remove people, change roles, and delete products. - Everyone on the team can read its pages, conversations, and code map, and connect sources. - A team created with a work email address is open to anyone who signs in with an address at that domain. An Owner can change this on the Team page. You’re responsible for who joins your team, what they connect, and what they publish. ### Sources and content - Cactus reads connected repositories through its GitHub App. The app can read your code but can’t change it. - Cactus reads connected help sites, Intercom conversations, the Slack channels you choose, and Discord messages addressed to Cactus. - Disconnecting a source in Settings stops Cactus from reading it. Connect only sources you have the right to share. Get permission before connecting a source that belongs to someone else. Your code, other sources, customers’ messages, and the pages and answers Cactus writes for you remain yours. You allow Cactus to copy, store, and process them only to run Cactus for you: to read sources, write pages and answers, show them to people you choose, and keep Cactus working and secure. - Cactus doesn’t train models on your content. - Cactus doesn’t sell your content or give it to anyone for advertising. Some companies run parts of Cactus and receive parts of your content. The [Privacy Policy](https://cactus.heycactus.ai/cactus-privacy-policy) and [Data Processing Addendum](https://cactus.heycactus.ai/cactus-data-processing-addendum) list those companies and what each receives. ### Answers and customers Cactus links each answer to what it read so you can check it. Answers can still be wrong or out of date, so check anything that matters before acting on it. - You choose each page’s audience: Only you, Your team, or Everyone. - Your Help Center, its address for AI clients, and Messenger show visitors only pages set to Everyone that Cactus has written for readers outside your team. In your Help Center and Messenger, Cactus speaks to your customers on your behalf. If you publish a Help Center or put Messenger on your site, tell its readers and users in your own privacy notice that their questions are sent to Cactus. You decide what Cactus does with your customers’ personal data, and Cactus acts for you. The [Data Processing Addendum](https://cactus.heycactus.ai/cactus-data-processing-addendum) explains how. ## Draft status These Terms of Service are a working draft until a lawyer has read them. The governing law and where disputes are heard are still being settled. The terms say those details will be added before anyone is charged. ## Plans and legal terms ### Plans and payment - Every team starts on Pro, free for 14 days from when you connect GitHub. The trial needs no card. - When the trial ends, you can keep Pro or move to Lite. Until you choose, your Help Center stays up as it is, and Cactus stops writing pages and answering questions. - You can change plans whenever you want. Teammates cost nothing extra. - The [pricing page](https://cactus.heycactus.ai/cactus-pricing) shows the plans and prices. Nobody is charged today. Billing, taxes, cancellation, and refunds will be written here before anyone is charged. ### Service Cactus works to keep the service running and your data safe. The [Trust Center](https://cactus.heycactus.ai/cactus-trust-center) explains how Cactus protects data. Cactus may add, change, or remove features. If a change takes away something your team uses, Cactus emails your Owners first. Cactus may be unavailable or have mistakes, and there’s no uptime commitment. If a service Cactus relies on is down or changes what it allows, parts of Cactus may stop working until it’s back. ### Ending You can stop whenever you want: disconnect your sources in Settings, delete your products, and email [hello@heycactus.ai](mailto:hello@heycactus.ai) to close your account. Cactus may suspend or close a team that breaks these terms or the [Acceptable Use Policy](https://cactus.heycactus.ai/cactus-acceptable-use-policy), or puts Cactus or other teams at risk. Where possible, Cactus tells you first and gives you time to fix the issue. - When a product or account is deleted, what Cactus holds follows the [Privacy Policy](https://cactus.heycactus.ai/cactus-privacy-policy). - Before closing your account, you can ask for a copy of everything Cactus holds about you. The terms on ownership, confidentiality, liability, and governing law continue after your account closes. ### Confidentiality Each side uses the other’s confidential information only for this agreement and shares it only with people who need it for that purpose and keep it confidential too. This doesn’t cover information that’s already public, was already known, or must be disclosed by law. If the law requires Cactus to disclose your content, Cactus tells you first unless the law forbids it. ### Ownership These terms let you use Cactus. Cactus keeps ownership of its software, website, name, and mark. Cactus may use ideas or feedback you send without owing you anything for them. ### Liability Cactus is provided as it is. As far as the law allows, Cactus makes no promise about it beyond these terms, including that it suits a particular purpose. Neither side is liable to the other for lost profits, lost revenue, or indirect or consequential loss. Each side’s total liability under these terms is no more than what you paid Cactus in the 12 months before the claim. These limits don’t apply where the law doesn’t allow them. ### Changes and disputes When these terms change, Cactus updates this page and its date. For a change that matters to how you use Cactus, Cactus emails your team’s Owners before it takes effect. Continuing to use Cactus after that means you accept the new terms. The governing law and where disputes are heard are still being settled with a lawyer. Until then, write to [hello@heycactus.ai](mailto:hello@heycactus.ai) first if something goes wrong, and Cactus will try to settle it with you directly. ### Other terms The Terms of Service, Acceptable Use Policy, and Data Processing Addendum are the whole agreement between you and Cactus about Cactus. If one part can’t be enforced, the rest still applies. Not enforcing a part straight away doesn’t prevent either side from enforcing it later. Either side may pass the terms to a company that takes over its business. Otherwise, neither side may pass them on without the other’s agreement. Neither side is liable for delays or failures caused by something outside its reasonable control, such as a natural disaster, war, power cut, or provider outage. Cactus sends notices to the email address on your account. You send notices to [hello@heycactus.ai](mailto:hello@heycactus.ai), and email counts as written notice. The terms are written in English, and the English version controls. # Cactus Cookie Notice > Verified against the product on 2026-10-05 ## Cookies Cactus uses cookies for themes, Help Center conversations, sign-in, analytics, and temporary service connections. It uses no advertising cookies, and nothing it keeps in your browser is shared for advertising. PostHog's cookie is the only one that isn't Cactus's own. Messenger sets no cookies; its browser storage is covered below. ### Website and Help Centers | Cookie | Lasts | What it holds | | --- | --- | --- | | Theme, `cactus-theme` | 1 year | Your light or dark theme. Each address keeps its own. | | Visitor, `cactus_visitor` | 1 year | A random ID set when a visitor first asks a question or asks for a person. It keeps that visitor's questions and answers together in the browser. | | Signed link, `cactus_end_user` | 30 days | Set when a customer arrives through a link your product signed. Their conversations follow them across devices. | | Analytics, `ph_[PostHog project key]_posthog` | 1 year | A random browser ID and the current visit. Addresses under Cactus's site domain share one; a Help Center on your own domain keeps a separate one for that domain and its subdomains. | ### App The app also sets the Theme and Analytics cookies listed above. | Cookie | Lasts | What it holds | | --- | --- | --- | | Sign-in, `__Secure-better-auth.session_token` | 7 days, renewed when you use the app | Keeps you signed in. Each day you use the app, its seven days start again. | | Session copy, `__Secure-better-auth.session_data` | 5 minutes | A signed copy of your session, so the app doesn't need to look it up on every page. | | Signing in, `__Secure-better-auth.state` | 5 minutes | Checks that a Google or GitHub sign-in response returns to the browser that started it. | ### Service connections | Cookie | Lasts | What it holds | | --- | --- | --- | | Slack, `cactus_slack_oauth` | 10 minutes | Temporary connection state and return details. | | Discord, `cactus_discord_oauth` | 10 minutes | Temporary connection state and return details. | | PostHog, `cactus_posthog_oauth` | 10 minutes | Temporary connection state and return details, including a PKCE verifier. | | Intercom, `cactus_intercom_oauth` | 10 minutes | Temporary connection state and return details. | These connection cookies use Secure, HttpOnly, and SameSite=Lax. Cactus deletes them when the browser returns from the connection flow. ## Analytics PostHog records which pages you open, what you press, page errors, and a recording of each visit to heycactus.ai, the app, and Help Centers. For what else it receives and how long it is kept, read the [Privacy Policy](https://cactus.heycactus.ai/cactus-privacy-policy). ## Messenger storage Messenger keeps a random visitor ID, conversations, an email address left when someone asks for a person, an unread count, and whether the visitor put the Cactus dot away in local storage. Local storage stays until it's cleared; session storage goes when the tab closes. Messenger uses session storage to remember what it has already shown in the tab, such as a greeting. When the browser sends Global Privacy Control or Do Not Track, Messenger keeps no visitor ID or conversations in local storage. Each visit starts with a new ID and no past conversations. Messenger storage names start with `cactus_messenger_` or `cactus-`. ## Browser choices Your browser settings can delete or block cookies and storage for every site or for Cactus alone. Blocking the app's sign-in cookies signs you out. Without other cookies and storage, a Help Center forgets a visitor's earlier questions and the theme returns to its default. For other personal-information practices, read the [Privacy Policy](https://cactus.heycactus.ai/cactus-privacy-policy).