---
title: Chameleon API Integration on Truto
slug: chameleon
category: Product Development
canonical: "https://truto.one/integrations/detail/chameleon/"
---

# Chameleon API Integration on Truto



**Category:** Product Development  
**Status:** Generally available

## MCP-ready AI tools

Truto exposes 97 tools for Chameleon that AI agents can call directly.

- **chameleon_account_verify** — Verify your Chameleon Account Secret token to confirm it is valid and API access is working. Returns the account object including its id.
- **list_all_chameleon_profiles** — List user profiles (your product's end-users identified to Chameleon), newest first, with cursor pagination and optional company expansion. Returns profile records with id, uid, email, company_id, created_at, updated_at, last_seen_at, browser fields, percent, delivery_ids and any custom properties. Optional: limit, before, after, expand.

- **chameleon_profiles_search** — Search user profiles with Segmentation filter expressions: match on any property you have sent (role, plan, last_seen_at ...), on experience interactions (completed or exited a tour, answered a microsurvey with a given score) or on events, combined with and/or and nested groups. Returns matching profile records with id, uid, email, company_id, created_at, updated_at, last_seen_at, browser fields, percent, delivery_ids and any custom properties. Required: filters.

- **chameleon_profiles_count** — Count the user profiles matching a set of Segmentation filter expressions (same filters as profiles.search), without returning the profiles. Returns: count. Optional: filters, filters_op.

- **chameleon_profiles_get_id** — Get a single user profile by its Chameleon ID. Returns the profile with id, uid, email, company_id, created_at, updated_at, last_seen_at, browser fields, percent, delivery_ids and any custom properties. Required: profile_id.

- **chameleon_profiles_get_number** — Look up a single user profile by your own identifier: uid (your user id) or email. Pass exactly one of them. Returns the profile with id, uid, email, company_id, created_at, updated_at, last_seen_at, browser fields, percent, delivery_ids and any custom properties. Required: one of uid or email (or id).

- **chameleon_profiles_delete_id** — Clear (reset) a user profile: resets browser and activity properties, removes microsurvey responses and tracked events, reverts the user's experience counts and assigns a new percent. The profile itself remains. Returns the cleared profile with last_cleared_at. Required: profile_id.

- **chameleon_profiles_delete_number** — Clear (reset) a user profile identified by your uid: resets browser and activity properties, removes microsurvey responses and tracked events, reverts the user's experience counts and assigns a new percent. The profile itself remains. Returns the cleared profile with last_cleared_at. Required: uid.

- **chameleon_profiles_forget_id** — Permanently delete a user profile and all associated data (experiences, events, metrics) for data-privacy opt-outs. Irreversible; backups are purged within 3 months. Returns the profile id and a deletion record id as proof of the request. Required: profile_id.

- **chameleon_profiles_forget_number** — Permanently delete a user profile identified by your uid or email and all associated data (experiences, events, metrics) for data-privacy opt-outs. Irreversible; backups are purged within 3 months. Returns the profile id and a deletion record id as proof of the request. Required: uid or email.

- **list_all_chameleon_companies** — List companies (accounts your users belong to), newest first, with cursor pagination. Returns company records with id, uid, created_at, updated_at, last_seen_at, profile_count and any custom company properties (domain, plan, clv ...). Optional: limit, before, after, expand.

- **chameleon_companies_search** — Search companies with Segmentation filter expressions on any company property (only the property and group kinds are supported), with optional sorting by any property and offset paging. Returns matching company records with id, uid, created_at, updated_at, last_seen_at, profile_count and any custom company properties (domain, plan, clv ...). Required: filters.

- **chameleon_companies_count** — Count the companies matching a set of Segmentation filter expressions (property and group kinds), without returning them. Returns: count. Optional: filters, filters_op.

- **chameleon_companies_get_id** — Get a single company by its Chameleon ID. Returns the company with id, uid, created_at, updated_at, last_seen_at, profile_count and any custom company properties (domain, plan, clv ...). Required: company_id.

- **chameleon_companies_get_number** — Look up a single company by your own identifier (uid). Returns the company with id, uid, created_at, updated_at, last_seen_at, profile_count and any custom company properties (domain, plan, clv ...). Required: uid.

- **chameleon_companies_delete_id** — Delete a company by its Chameleon ID. Returns the deleted company record. Required: company_id.

- **chameleon_companies_delete_number** — Delete a company identified by your own uid. Returns the deleted company record. Required: uid.

- **list_all_chameleon_segments** — List Chameleon segments (saved audience definitions), newest first, with cursor pagination. Returns segment records with id, name, items (filter expressions), items_op, created_at and updated_at. Optional: limit, before, after.

- **get_single_chameleon_segment_by_id** — Get a single Chameleon segment by id, including its filter items. Returns: id, name, items, items_op, created_at, updated_at. Required: id.

- **chameleon_segments_list_experiences** — List the experiences attached to a Chameleon segment of one kind: tours, microsurveys or launchers. Returns the experience records (id, name, style, position, published_at ...) under the chosen kind, with cursor pagination. Required: segment_id, kind.

- **list_all_chameleon_tours** — List Chameleon tours (multi-step product tours), newest first, with cursor pagination. Returns tour records with id, name, style, position, published_at, segment_ids, tag_ids, dashboard_url, content_summary, audience_summary and all-time stats (started, completed, exited counts). Optional: limit, before, after.

- **get_single_chameleon_tour_by_id** — Get a single Chameleon tour by id. Returns: id, name, style, position, published_at, experiment_at, experiment_range, segment_ids, tag_ids, rate_unlimit_at, dashboard_url, content_summary, content_semantics, audience_summary, stats. Required: id.

- **update_a_chameleon_tour_by_id** — Update a Chameleon tour: publish it by setting published_at to the current ISO 8601 time, unpublish it by setting published_at to null, or add/remove an Environment (url_group_id) or Tag (tag_id) using a + or - prefix on the id. Returns the updated tour. Required: id.

- **list_all_chameleon_tour_interactions** — List interactions users had with a specific Chameleon tour (started, displayed, completed, exited), newest first, with cursor pagination and optional profile/company expansion. Use before/after together to stop at your last imported interaction. Returns interaction records with id, state, tour_id, group_id, group_kind, defer_count, defer_until, goal_at, created_at, updated_at and the profile. Required: id (the tour id).

- **list_all_chameleon_surveys** — List Chameleon Microsurveys. Returns each survey's id, name, position, published_at, dashboard_url, and aggregated stats. Optional: limit (defaults to 50, max 500), before, and after.
- **get_single_chameleon_survey_by_id** — Get a single Chameleon Microsurvey by id. Returns the survey including id, name, position, published_at, dashboard_url, and aggregated stats. Required: id.
- **update_a_chameleon_survey_by_id** — Update a Chameleon Microsurvey by id to change its Environments, attach or remove Tags, or publish it. Returns the updated survey including id, name, position, published_at, and stats. Required: id.
- **list_all_chameleon_survey_responses** — List Chameleon Microsurvey responses for a given Microsurvey, including the button clicked, any text or dropdown input, and when the survey was finished. Returns: id, created_at, updated_at, survey_id, profile_id, href, button_text, button_order, button_id, input_text, comment_step_input_text2, dropdown_items, other_text, comment_step_dropdown_items, comment_step_other_text,…
- **delete_a_chameleon_survey_response_by_id** — Delete a Chameleon Microsurvey response by id; deleting also clears the response's associated metrics and summaries. Returns: id. Required: id.
- **list_all_chameleon_deliveries** — List Chameleon Deliveries that directly trigger an Experience to specific users. Returns delivery records including id, model_kind, model_id, profile_id, from, until, at, and options. Filterable by Experience or User Profile.
- **create_a_chameleon_delivery** — Create a Chameleon Delivery to directly trigger an Experience (a tour or survey) to one specific user, optionally within a from/until time window. Returns the created delivery object including id, model_kind, model_id, profile_id, from, until, and options. Required: model_kind and model_id. Pending Deliveries are limited to 3 per User Profile.
- **update_a_chameleon_delivery_by_id** — Update a pending Chameleon Delivery by id, adjusting its time window, personalization options or filters. Returns the updated delivery object including id, model_kind, model_id, profile_id, from, until, and options. Required: id. Accepts the same parameters as create. A Delivery that is already triggered (at timestamp set) can no longer be updated.
- **delete_a_chameleon_delivery_by_id** — Cancel a Chameleon Delivery that has yet to happen by id. Returns an empty 204 response on success. Required: id. A Delivery that is already triggered (at timestamp set) can no longer be deleted.
- **list_all_chameleon_limit_groups** — List all Chameleon Rate Limit Groups. Returns: id, created_at, updated_at, name, description, kind, rate_limit_size, rate_limit_kind, tag_ids, campaign_ids. An account typically has 1-5 Limit Groups so the response is small.
- **get_single_chameleon_limit_group_by_id** — Get a single Chameleon Limit Group by id. Returns: id, created_at, updated_at, name, description, kind, rate_limit_size, rate_limit_kind, tag_ids, campaign_ids. Required: id.
- **chameleon_limit_groups_list_experiences** — List the Experiences (Tours and Microsurveys) attached to a Chameleon Limit Group. Returns limit_group with its attached tours and surveys, plus tags when the group's kind is tags; only published Experiences are included by default. Required: limit_group_id.
- **list_all_chameleon_alert_groups** — List all Chameleon alert groups together with the Experiences currently matching each group's alert conditions. Returns: id, name, kind, interval, style, experiences, tag_ids, campaign_ids, created_at, updated_at, published_at, last_notified_at, slack_uid, opt_in_slack_at, emails, opt_in_email_at. Accounts typically have only a handful of alert groups, so the response is small.
- **get_single_chameleon_alert_group_by_id** — Get a single Chameleon alert group by id, including all Experiences currently matching its alert conditions. Returns: id, name, kind, interval, style, experiences, tag_ids, campaign_ids, created_at, updated_at, published_at, last_notified_at, slack_uid, opt_in_slack_at, emails, opt_in_email_at. Required: id.
- **list_all_chameleon_launchers** — List Chameleon launchers configured for your product. Returns: id, created_at, updated_at, name, title, description, preset, segment_ids, published_at, tag_ids, position, list_type, search_placeholder, quantifier_url, quantifier_urls, trigger_text, blocked_domains, empty_state_content, icon_size, screen_position, position_type, trigger, trigger_type, items, stats. Max 500 per page.
- **get_single_chameleon_launcher_by_id** — Get a single Chameleon launcher by id. Returns the full launcher record including its name, preset, segment_ids, menu items, and all-time stats. Required: id.
- **update_a_chameleon_launcher_by_id** — Update a Chameleon launcher to change its properties or publish/unpublish it via published_at. Returns the updated launcher including its id, name, published_at, segment_ids, tag_ids, and items. Required: id.
- **list_all_chameleon_tooltips** — List Chameleon tooltips. Returns each tooltip's id, name, position, published_at, created_at, updated_at, style, and tag_ids. Max 500 per page.
- **get_single_chameleon_tooltip_by_id** — Get a single Chameleon tooltip by id. Returns the tooltip's id, name, style, position, published_at, created_at, updated_at, and tag_ids. Required: id.
- **update_a_chameleon_tooltip_by_id** — Update a Chameleon tooltip by id to change its properties or to publish or unpublish it. Returns the updated tooltip including its id, name, style, position, published_at, and tag_ids. Required: id. Prefix url_group_id with + or - to add or remove an Environment; set published_at to a timestamp to publish or null to unpublish.
- **list_all_chameleon_webhook_subscriptions** — List all Chameleon webhook subscriptions in a complete, un-paginated result. Returns: id, uid, name, last_item_at, last_item_state, last_item_error. Required: kind (webhook or zapier_hook).
- **create_a_chameleon_webhook_subscription** — Create a new Chameleon webhook subscription that POSTs to a https endpoint. Returns: id. Requires kind, url, topics, and experience_ids. Limited to 5 total webhook endpoints.
- **delete_a_chameleon_webhook_subscription_by_id** — Delete a Chameleon webhook subscription by id. Returns the deleted webhook's id. Required: id.
- **list_all_chameleon_urls** — List all Chameleon domains (Urls), optionally filtered by top-level domain. Returns: id, created_at, updated_at, url_group_id, host, domain, enabled, installed_at, first_seen_at, last_seen_at, unlisted, archived_at. Max 500 per page.
- **get_single_chameleon_url_by_id** — Get a single Chameleon domain (Url) by id. Returns: id, created_at, updated_at, url_group_id, host, domain, enabled, installed_at, first_seen_at, last_seen_at, unlisted, archived_at. Required: id.
- **create_a_chameleon_url** — Create a Chameleon Url to enable a new domain. Returns the created Url with id, host, domain, and enabled state. Requires host and enabled (one of on, off, or subdomain).
- **update_a_chameleon_url_by_id** — Update a Chameleon domain (Url) by id: change its authorization state, archive it, or assign it to an Environment. Returns: id, created_at, updated_at, url_group_id, host, domain, enabled, installed_at, first_seen_at, last_seen_at, unlisted, archived_at. Required: id.
- **chameleon_urls_bulk_update** — Bulk update multiple Chameleon domains (Urls) with the same enabled, archived_at, or url_group_id change. Returns the updated Urls with id, host, domain, and enabled. Requires ids.
- **list_all_chameleon_url_groups** — List Chameleon Environments (Url Groups) used to group Domains and split Experience data by environment. Returns: id, created_at, updated_at, archived_at, name, description, short_name, style_short_name_color. Max 500 per page.
- **get_single_chameleon_url_group_by_id** — Get a single Chameleon Environment (Url Group) by id. Returns the Url Group including its id, name, description, short_name, and style_short_name_color. Required: id.
- **create_a_chameleon_url_group** — Create a Chameleon Environment (Url Group) to group Domains and split Experience data by environment. Returns the created Url Group including its id, name, description, short_name, and style_short_name_color. Required: name.
- **update_a_chameleon_url_group_by_id** — Update a Chameleon Environment (Url Group) by id — rename it, restyle it, or archive it. Returns the updated Url Group including its id, name, description, short_name, and style_short_name_color. Required: id.
- **list_all_chameleon_tags** — List Chameleon tags used to group and filter Experiences in the dashboard. Returns each tag's id, uid, name, description, models_count, and last_seen_at.
- **get_single_chameleon_tag_by_id** — Get a single Chameleon tag by id. Returns: id, created_at, updated_at, uid, name, description, models_count, disabled_at, last_seen_at. Required: id.
- **chameleon_tags_bulk_update** — Apply multiple tag operations (add, remove, or replace tags) across Chameleon Experiences in one request. Returns each updated model's final tag state: model_id, model_type, tag_ids. Required: updates. Tag names are normalized and created automatically if they don't exist.
- **list_all_chameleon_properties** — List Chameleon properties for a given kind, optionally filtered by integration and ordered by most recent. Returns: id, created_at, updated_at, name, description, kind, prop, integration, last_seen_at, types, values. Required: kind. The list is un-paginated.
- **create_a_chameleon_property** — Create a property in Chameleon to track custom data sent to User Profiles, Events, or Companies. Returns the created property including its id, name, description, kind, prop, and created_at. Requires name, description, and kind (one of profile, event, or company).
- **update_a_chameleon_property_by_id** — Update a Chameleon property by id, changing its name or display description. Returns the updated property including id, name, description, kind, prop, created_at, and updated_at. Required: id.
- **list_all_chameleon_imports** — List Chameleon data imports used to bulk-add User Profiles or Companies via CSV. Returns: id, created_at, updated_at, name, kind, model_kind, tag_import_id, on_model_missing, head_columns, import_at, properties, filters, segment_ids, excluded_segment_ids, stats.
- **create_a_chameleon_import** — Create a Chameleon data import to bulk-tag, update, or delete User Profiles or Companies from an uploaded CSV file. Returns the created import object including its id, kind, name, model_kind, properties, head_columns, and run stats. Requires properties (each with name and prop) and file.
- **get_single_chameleon_import_by_id** — Get a single Chameleon import by id, useful for tracking import progress via its stats. Returns: id, created_at, updated_at, name, kind, model_kind, tag_import_id, on_model_missing, head_columns, import_at, properties, filters, segment_ids, excluded_segment_ids, stats.
- **update_a_chameleon_import_by_id** — Update a Chameleon import by id — upload the CSV file separately and/or trigger the import with import_at set to now. Returns the import record: id, kind, name, model_kind, properties, head_columns, and stats including last_import_state. Required: id. Once triggered (import_at set), an import can no longer be updated.
- **chameleon_imports_download_csv** — Download the originally uploaded CSV data for a Chameleon import by id — same endpoint as show with a .csv suffix. Returns the raw CSV file as the response body rather than a JSON import record. Required: id.
- **list_all_chameleon_embeddables** — List Chameleon Embeddables (persistent in-app widgets rendered inline in your product) that follow a specified set of parameters. Returns: id, created_at, updated_at, archived_at, name, description, style, position, segment_ids, published_at, tag_ids, rate_unlimit_at, dashboard_url, stats.
- **get_single_chameleon_embeddable_by_id** — Get a single Chameleon Embeddable by id. Returns: id, created_at, updated_at, archived_at, name, description, style, position, segment_ids, published_at, tag_ids, rate_unlimit_at, dashboard_url, stats. Required: id.
- **update_a_chameleon_embeddable_by_id** — Update a Chameleon Embeddable by id to change its Environments or Tags, or to publish/unpublish it (send the current timestamp in published_at to publish, or null to unpublish). Returns: id, created_at, updated_at, published_at. Required: id.
- **list_all_chameleon_themes** — List all Themes configured for your Chameleon account. Returns: id, created_at, updated_at, name, description, css, content_summary, dashboard_url, style_font, style_font_size, style_font_weight, style_line_height, style_title_font_size, style_title_font_weight, style_title_line_height, style_button_font_size, style_color_background, style_color_text, style_color_title,…
- **get_single_chameleon_theme_by_id** — Get a single Chameleon Theme by id. Returns the full Theme record including id, name, description, css, default, created_at, updated_at, dashboard_url, and style_* typography, color, and spacing properties. Required: id.
- **list_all_chameleon_event_names** — List Chameleon event names, including events sent via the JavaScript API and integrations like Segment. Returns: id, created_at, updated_at, name, description, uid, kind, source, published_at, last_seen_at, filters, content_summary, dashboard_url. Max 500 per page.
- **get_single_chameleon_event_name_by_id** — Get a single Chameleon event name by id. Returns: id, created_at, updated_at, name, description, uid, kind, source, published_at, last_seen_at, filters, content_summary, dashboard_url. Required: id.
- **list_all_chameleon_changes** — List Chameleon Changes across all Experiences. Returns changes with id, model_type, kind, object diff, and the admin user who made them.
- **chameleon_changes_list_for_model** — List Chameleon Changes for a specific model. Returns changes with id, model_type, kind, object diff, and the admin user who made them. Required: model_kind, model_id.
- **chameleon_changes_summary_for_model** — Get the Change Summary for a specific Chameleon model. Returns: model_id, kind, change_id, path, object, changes. Required: model_kind, model_id.
- **list_all_chameleon_helpbar** — List the HelpBar configured in Chameleon (there is only one per account). Returns the Search record including its id, placeholder, keyboard shortcut settings (key_meta, key_uid), recent/pinned group titles, published_at, and label_themes.
- **chameleon_helpbar_upsert** — Create or update the HelpBar in Chameleon — one exists per account, so this single endpoint upserts it. Returns the saved Search record including id, placeholder, key_meta, key_uid, title_recent, title_pinned, published_at, and label_themes. Publish it by setting published_at to the current time.
- **list_all_chameleon_search_items** — List the SearchItems indexed for the Chameleon HelpBar. Returns each item's id, uid, title, description, pinned_at, icon, actions, and title_labels. Pass search_import_id to fetch only items created or updated by a given SearchImport.
- **chameleon_search_items_upsert** — Create or update a SearchItem in the Chameleon HelpBar; sending an existing uid updates that item instead of creating a new one. Returns the saved item with id, uid, title, description, pinned_at, actions, and title_labels. Required: uid.
- **update_a_chameleon_search_item_by_id** — Update a HelpBar SearchItem in Chameleon by id. Returns the updated item with id, uid, title, description, pinned_at, actions, and title_labels. Required: id.
- **delete_a_chameleon_search_item_by_id** — Delete a previously created HelpBar SearchItem in Chameleon by sending its uid. Returns an empty 204 response on success. Required: uid.
- **chameleon_search_items_bulk_delete** — Bulk delete previously created HelpBar SearchItems in Chameleon by sending an array of their Chameleon IDs. Returns an empty 204 response on success. Required: ids.
- **chameleon_search_items_bulk_update** — Batch update multiple Chameleon SearchItems (HelpBar searchable content) in one request, applying the same property changes to every listed item (e.g. update the icon or the SearchGroup of many items at once). Returns the updated SearchItem record including its id, uid, title, description, actions, and title_labels. Required: ids (array of Chameleon SearchItem IDs to update).
- **create_a_chameleon_search_import** — Create a Chameleon search import by uploading a CSV of your product navigation so Users can jump to those items from the HelpBar. Returns the created search import with id, created_at, and updated_at. Required: file (CSV).
- **get_single_chameleon_search_import_by_id** — Get a Chameleon search import by id to track the progress of the CSV import. Returns: id, created_at, updated_at. Required: id.
- **chameleon_profile_ingest_upsert** — Create or update a Chameleon user profile via the incoming webhook; a profile that does not yet exist by uid is created first. Returns the profile's Chameleon id. Identify the profile by uid, email, or id; all other properties are stored on the profile and processed synchronously.
- **chameleon_profile_ingest_bulk_upsert** — Bulk create or update multiple Chameleon user profiles in one request; profiles not previously sent to Chameleon are created first. Returns the id of the accepted batch. Required: profiles (an array of profile objects, each identified by uid or email). Batch requests are limited to 16mb.
- **chameleon_company_ingest_upsert** — Create or update a Chameleon company — a company that does not yet exist by uid is created first, then updated with the other properties in the request. Returns: id. Pass uid (or the Chameleon id) plus any properties to store; property names are normalized to lower case and underscores and updates are processed synchronously.
- **chameleon_company_ingest_bulk_upsert** — Bulk create or update Chameleon companies by sending an array of company objects, each with the same schema as a single company update. Returns: id. Required: companies (each item must include its Company ID as uid). Each batch is limited to 16mb and processed asynchronously; on_model_missing defaults to create.
- **create_a_chameleon_event_ingest** — Track an event for a user in Chameleon. Returns: id. Required: name; pass uid or id to address the user. Events are processed asynchronously, typically within thirty seconds, and any additional body keys are attached as event properties.
- **chameleon_event_ingest_bulk_create** — Track up to 1,000 events for Chameleon users in a single request. Returns: count. Required: events (a non-empty array; each item needs name plus a user identifier — id, uid, or email). Invalid items are reported by index without blocking valid neighbours.
- **chameleon_translations_download** — Download the translation file for a single Chameleon Experience in YAML or JSON format. Returns the translation set: id, language, and experiences with per-step translatable text. Required: kind, edit_id, format.
- **chameleon_translations_download_for_kind** — Download the translation file for all Chameleon Experiences of a given kind in YAML or JSON format. Returns the translation set: id, language, and experiences with per-step translatable text. Required: kind, format.
- **chameleon_translations_download_mixed** — Download a combined translation file covering a mixture of many different Chameleon Experience types in YAML or JSON format. Returns the translation set: id, language, and experiences with per-step translatable text. Required: format.
- **chameleon_translations_upload** — Upload one or more translated Chameleon translation files (YAML or JSON) for processing. Returns the processed translation set: id, language, and experiences. Provide either file (single) or files (multiple); each file's language.code must be set to the target language code, as leaving it as default overwrites primary content.

## How it works

1. **Link your customer's Chameleon account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Chameleon.** The Proxy API is a 1-to-1 mapping of the Chameleon API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Sync CRM data to power in-app targeting** — Let your users push account, user, and health-score data from your platform into Chameleon so their product teams can segment tours, surveys, and launchers by firmographics or lifecycle stage without manual CSV imports.
- **Stream product events to trigger contextual guidance** — Forward behavioral events from your SaaS into Chameleon so PMs can trigger tooltips, tours, or microsurveys the moment a user hits a specific action, limit, or milestone.
- **Pipe Chameleon feedback into your analytics or CRM** — Capture tour completions, survey responses, and launcher interactions via webhooks so your customers can measure adoption ROI inside the tools they already use for reporting, CS workflows, or lifecycle automation.
- **Federate knowledge base content into HelpBar** — If you're a docs, helpdesk, or content platform, push articles into Chameleon's HelpBar search index so your users' end-customers can find your content natively via CMD+K inside their own product.
- **Automate in-app interventions from external triggers** — Allow CS platforms, workflow builders, or lifecycle tools to programmatically schedule a specific Chameleon tour or survey for an individual user when an external condition is met — such as a dropping health score or renewal risk.

## What you can build

- **User & company identity sync** — Continuously upsert user profiles and company records with standard and custom properties into Chameleon using the profile and company ingest endpoints, individually or in bulk.
- **Custom event streaming pipeline** — Push product usage events into Chameleon in real-time or batched, enabling event-triggered tours, tooltips, and surveys based on behavior in your SaaS.
- **HelpBar content indexer** — Bulk upsert, update, and delete search items in Chameleon's HelpBar so external articles, docs, or records appear in the in-app spotlight search.
- **Programmatic delivery scheduler** — Create, update, and cancel Chameleon deliveries to force-trigger a specific tour or microsurvey for a target user profile within a defined time window.
- **Webhook-driven interaction listener** — Subscribe to Chameleon webhook events to capture tour, survey, launcher, and tooltip interactions and route them to downstream systems without polling.
- **Survey response exporter** — Pull raw survey responses — including NPS, ratings, and open-text answers — from Chameleon to centralize feedback in a VoC, analytics, or data warehouse workflow.

## FAQs

### How does authentication work for the Chameleon integration?

Truto handles Chameleon authentication on your behalf. Your end users connect their Chameleon account once, and Truto manages the credentials and token lifecycle so your product code only deals with normalized API calls.

### Can I sync custom user and company properties into Chameleon?

Yes. The profile and company ingest endpoints accept arbitrary custom properties alongside standard fields, and you can also manage property definitions directly via the properties endpoints.

### Does the integration support bulk operations?

Yes. Chameleon exposes bulk upsert endpoints for profiles, companies, events, and HelpBar search items, as well as bulk update endpoints for tags, URLs, and search items — so you can backfill or sync large datasets efficiently.

### How do I get real-time updates from Chameleon instead of polling?

Use the webhook subscription endpoints to create and manage subscriptions for Chameleon events like tour completions, survey responses, and launcher interactions. Truto normalizes delivery so you receive events reliably.

### Can I programmatically trigger a tour or survey for a specific user?

Yes. The deliveries endpoints let you create a scheduled delivery of a specific experience (tour or microsurvey) to an individual profile within a time window, and update or cancel it later.

### Which Chameleon resources can I read and manage?

Through Truto you can access profiles, companies, segments, tours, tooltips, launchers, surveys and responses, deliveries, URLs and URL groups, tags, properties, imports, embeddables, themes, event names, changes, HelpBar search items, translations, and webhook subscriptions.
