---
title: Totango API Integration on Truto
slug: totango
category: CRM
canonical: "https://truto.one/integrations/detail/totango/"
---

# Totango API Integration on Truto



**Category:** CRM  
**Status:** Beta

## MCP-ready AI tools

Truto exposes 45 tools for Totango that AI agents can call directly.

- **update_a_totango_account_by_id** — Create or update Totango accounts in batch with their attributes and tags. Returns: batch_id, service_id, status, time_received, num_received, num_accepted, invalid_updates. Required: accounts. Max 1,000 accounts per request; accepted updates cannot be undone.
- **totango_accounts_search** — Search Totango accounts matching filter criteria. Returns the response envelope: response.status, response.stats.total_hits, and response.accounts.hits with name, display_name, last_activity_time, and selected_fields. Max 1,000 per page; page via offset. Required: accounts.
- **totango_accounts_get_plan_summary** — Get the plan summary of a Totango account. Returns: plan, updated_by, updated_date, _version. Required: account_id.
- **update_a_totango_accounts_attribute_by_id** — Create or update Totango account attribute definitions in batch. Returns: batch_id, service_id, status, time_received, num_received, num_accepted, invalid_updates. Asynchronous ingestion: attributes cannot be deleted via this endpoint and only name is updatable afterwards. Required: attribute_definitions.
- **update_a_totango_accounts_user_by_id** — Create or update Totango account users along with their attributes and tags, in batches of up to 1,000 users per request; received updates are irreversible and cannot be undone. Returns: updateId, service_id, status, time_received, num_received, num_accepted, invalid_updates. Required: users.
- **update_a_totango_users_attribute_by_id** — Create or update user attribute definitions in Totango. Returns: updateId, service_id, status, time_received, num_received, num_accepted, invalid_updates. Required: attribute_definitions. Only name and is_sensitive are updatable on existing definitions; once received, update requests are irreversible and cannot be undone.
- **update_a_totango_collection_by_id** — Update a batch of Totango collections of a given type along with their attributes. Returns: batch_id, service_id, status, time_received, num_received, num_accepted, invalid_updates. Required: collection_type, collections. Max 1,000 collections per request; attribute keys must already be defined; updates are irreversible once accepted.
- **totango_collections_search** — Search collections linked to accounts in Totango by matching criteria. Returns the matching collection records including their id, account_id, and attribute values.
- **update_a_totango_collection_attribute_by_id** — Update collection attribute definitions for a Totango collection type. Accepted updates are ingested asynchronously; returns batch_id, service_id, status, time_received, num_received, and num_accepted. Required: collection_type, attribute_definitions.
- **update_a_totango_usage_by_id** — Submit usage updates for account users in Totango. Accepts a batch of up to 1,000 usage updates per request and Returns: batch_id, service_id, status, time_received, num_received, num_accepted, invalid_updates. Required: usages. Updates are irreversible once received.
- **get_single_totango_status_by_id** — Get the processing status of a Totango attribute records batch by batch id. Returns: batchId, serviceId, status, percentComplete, totalRecords, processedRecords, validRecords, invalidRecords, startTime, finishTime, duration. Required: id.
- **totango_users_search** — Search Totango users that match segment-style filter criteria and choose which fields to return for each hit. Returns the response envelope with total_hits, the users.hits entries (name, display_name, first/last activity times, selected_fields), and status. Required: query, terms, fields. Max 1000 results per call; 10,000 records total.
- **delete_a_totango_user_by_id** — Permanently delete an end user associated with a Totango account — irreversible (e.g. for GDPR removals), not intended for bulk deletes, and may take a few minutes to fully apply. Returns an empty 204 response on success. Required: account_id, id.
- **list_all_totango_whoami** — Get the currently authenticated Totango user (whoami). Returns the authenticated user record including its id. No additional parameters are required.
- **list_all_totango_events** — List the Totango events on an account's timeline, including touchpoints (type 'note'), tasks, alerts, and campaign events. Returns each event with id, timestamp, type, account, note_content, and properties. Required: account_id.
- **totango_events_search** — Search Totango events by criteria such as event type or date range. Returns a status envelope (status, service_id) with matching events in response.events.hits (id, timestamp, type, note_content, properties) and the total in response.events.total. Required: terms, fields, count, offset. Max 1000 events per call.
- **list_all_totango_audit_logs** — List Totango audit log entries showing who viewed or changed end-user PII data. Returns one JSON entry per line with action, timestamp, totango_user, and service_id, plus action-specific fields (user_id, account_id, attribute_id, includes_sensitive_data). Required: startDate, endDate. Query span max one year; start and end years must be equal.
- **list_all_totango_scim_users** — List Totango system users for a service via the SCIM API. Returns user records: schemas, meta, userName, name, externalId, title, groups, active, and license attributes. Required: service_id. Only one filter field (userName or externalId) can be used at a time.
- **get_single_totango_scim_user_by_id** — Get a Totango system user by id (the user's email) via the SCIM API. Returns the user record: schemas, meta, userName, name, externalId, title, groups, active, and license attributes. Required: service_id, id.
- **create_a_totango_scim_user** — Create a Totango system user via the SCIM API. Returns: schemas, meta, userName, access_token, token_type, expires_in, scope. Required: service_id, schemas, userName (email, max 100 chars), and name.givenName / name.familyName (max 30 chars each).
- **update_a_totango_scim_user_by_id** — Update a Totango system user with a SCIM PatchOp — sent attributes override existing ones, others remain unchanged. Supports userName, name, externalId, title, managerEmail, managerExternalId, active, license, and groups. Returns an empty 204 response on success. Required: service_id, id, schemas, Operations.
- **totango_scim_users_replace** — Replace a Totango system user by id — sent attributes override existing ones and attributes not sent are deleted, so send the full user record. Returns an empty 204 response on success. Required: service_id, user_id, schemas, userName.
- **list_all_totango_scim_groups** — List the Totango SCIM groups (teams) of a service. Returns: schemas, id, displayName, members, meta, access_token, token_type, expires_in, scope. Required: service_id.
- **get_single_totango_scim_group_by_id** — Get a single Totango SCIM group (team) by id. Returns: schemas, id, displayName, members, meta, access_token, token_type, expires_in, scope. Required: service_id, id.
- **totango_scim_groups_replace** — Set the users of a Totango SCIM group (team), overwriting its member list with the submitted SCIM Group payload. Returns the updated group with id, displayName, members, and meta. Required: service_id, group_id, displayName, and members.
- **update_a_totango_scim_group_by_id** — Add or remove users from a Totango SCIM group (team) via SCIM PatchOp operations. Returns the updated group with id, displayName, members, and meta. Required: service_id, id, Operations.
- **get_single_totango_team_by_id** — Get a single Totango team by id. Returns the full team object including its id, display_name, terms, color, type, team_members, and team_role_settings. Required: id.
- **totango_successplays_run** — Run a manual Totango SuccessPlay for a given account, triggering its configured action (create a task or request information via form). Returns the plain string 'Success' when triggered. Required: successplayId, accountId. The SuccessPlay must be configured as manual and active.
- **totango_objective_settings_get_status** — Read the legacy objective status settings in Totango. Returns each status with id, displayName, createdBy, updatedBy, createdAt, and updatedAt. Custom objective status is no longer supported — results cover legacy objectives only.
- **totango_objective_settings_get_category** — Read the objective category settings in Totango. Returns each category with id, displayName, createdBy, updatedBy, createdAt, and updatedAt.
- **create_a_totango_objective** — Create an objective on a Totango account. A UUID objectiveId is generated when not supplied, and milestones may be automatic (attribute-driven) or manual. HTML markup is not supported. Required: accountId, objectiveData.
- **totango_objectives_create_by_template** — Create a Totango objective from an objective template in the template library. If a template role or owner fallback does not exist, the owner becomes the user performing the request. Required: accountId, ObjectiveTemplateId.
- **totango_objectives_bulk_update** — Update an objective on a Totango account, or reopen a completed one by setting status back to In Progress. Use milestonesIdsToDelete to remove milestones. Required: accountId, objectiveId, objectiveData.
- **totango_objectives_bulk_delete** — Delete an objective from a Totango account and choose how its tasks are handled: deleteAllTasks, assignToOtherObjective, or keepOrphaned. newObjectiveId is required only when moving tasks to another objective. Required: accountId, objectiveId, objectiveTasksHandling.
- **list_all_totango_objective_templates** — List Totango objective templates. Returns: id, displayName, createdBy, updatedBy, createdAt, updatedAt. Optional: objectiveTemplateIds to filter; extended=true returns full milestones and tasks, addCounts=true (not with extended) returns only their counts.
- **get_single_totango_osp_report_by_id** — Get the data of an Outcome Success Plan (OSP) standard report in Totango by its SBID. Returns the report's data payload, whose fields depend on the specific report definition. Required: id (the report's SBID).
- **create_a_totango_task** — Create a task in Totango. Returns a plain 'Success' confirmation on success. Requires activity_type_id (the flow ID); an unknown account_id returns a 400 'Account not found' error.
- **update_a_totango_task_by_id** — Update a task in Totango by id — change its priority, due_date, assignee, account, status, or status label. Returns a plain 'Success' confirmation on success. Required: id.
- **delete_a_totango_task_by_id** — Delete a task in Totango by id. Returns a plain 'Success' confirmation on success. Required: id, account_id.
- **create_a_totango_touchpoint** — Create a new touchpoint on a Totango account. Returns: terms, fields, offset, count. Required: account_id and content. Content is limited to 12K characters.
- **update_a_totango_touchpoint_by_id** — Update an existing touchpoint in Totango by its note id. Returns: terms, fields, offset, count. Required: id, event_id, account_id, and content. Content is limited to 12K characters.
- **delete_a_totango_touchpoint_by_id** — Delete a touchpoint from a Totango account by its note id. Required: id and event_id, both retrieved from the account's events.
- **list_all_totango_touchpoint_types** — List the touchpoint types defined in Totango — the ids used as the meeting_type value on touchpoints. Returns a map of each type's id and name.
- **list_all_totango_touchpoint_tags** — List all touchpoint reason tags in Totango. Returns a map of reason ids to names (id -> name); the ids are the values accepted by touchpoint_tags when creating or updating touchpoints.
- **list_all_totango_activity_types** — List Totango SuccessFlow activity types available for touchpoints and tasks. Returns each entry with activity_type_id, display_name, icon_class, system_type, default_type, disabled, and num_of_activities_assign_to. Takes no parameters.

## How it works

1. **Link your customer's Totango 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 Totango.** The Proxy API is a 1-to-1 mapping of the Totango 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

- **Stream product telemetry into customer health scores** — Product analytics and telemetry platforms can offer a native Totango destination so mutual customers can push DAU, feature adoption, and usage aggregations into Totango to power churn-risk alerts and health scoring.
- **Log AI meeting summaries to customer timelines** — Conversational intelligence and meeting tools can automatically post call summaries, transcripts, and action items as Touchpoints on the right Totango account, keeping CSMs informed without manual note-taking.
- **Sync onboarding milestones to Totango Objectives** — Client onboarding and project management SaaS can mirror project phases and milestones as Totango Objectives, giving CSMs real-time visibility into implementation status and automating the handoff from onboarding to ongoing success.
- **Surface support tickets inside Totango accounts** — Helpdesk and ticketing platforms can push active tickets into Totango Collections so CSMs see support context on the account profile, and trigger SuccessPlays when VIP customers hit critical issues.
- **Trigger SuccessPlays from external events** — Billing, security, and workflow tools can programmatically run Totango SuccessPlays when key events occur — like a failed payment or a security incident — to automatically generate CSM tasks and escalation sequences.

## What you can build

- **Batch usage ingestion pipeline** — Push up to 1,000 usage records per request into Totango to keep account-level and user-level activity metrics continuously fresh.
- **Timeline Touchpoint logging** — Create rich Touchpoints (up to 12K characters) with the correct touchpoint type and tags so meeting notes, emails, and AI summaries land on the Totango account timeline automatically.
- **Collections widget sync** — Maintain a custom Collection on each Totango account — support tickets, invoices, provisioned users, devices — so CSMs see relational context without leaving Totango.
- **SuccessPlay auto-triggering** — Run specific SuccessPlays via API in response to external events like churn signals, payment failures, or NPS drops to kick off the right playbook instantly.
- **Objective-based onboarding tracker** — Create Objectives from templates and bulk-update milestones to mirror external project progress against Totango success plans.
- **SCIM user and group provisioning** — Automate CSM team provisioning in Totango through SCIM — creating, updating, and deprovisioning users and group membership from your IdP or admin UI.

## FAQs

### How does authentication work for connecting a user's Totango account?

Truto handles the Totango auth flow and token storage on your behalf, so your end users connect their Totango account once and your app can call the API without you managing credentials or refresh logic.

### How large can batch updates be when syncing accounts, users, or usage?

Totango accepts up to 1,000 records per request on batch endpoints like account updates, account-user updates, and usage updates, making it well-suited for high-volume telemetry and sync pipelines.

### Are batch updates reversible if we send bad data?

No — accepted batch updates in Totango are irreversible, so pre-validation on your integration side is critical before pushing data through endpoints like update_a_totango_account_by_id or update_a_totango_usage_by_id.

### Can we trigger Totango SuccessPlays from our product?

Yes. The successplays_run action lets you programmatically execute a specific SuccessPlay against an account, which is useful for escalations, churn-risk responses, or kicking off standard CSM playbooks from external triggers.

### What's the character limit on Touchpoints when logging notes or transcripts?

Touchpoints created via the API support up to 12,000 characters, which is enough for most AI-generated meeting summaries, call notes, and email bodies.

### Can we provision Totango users via SCIM?

Yes. Truto exposes Totango's SCIM endpoints for users and groups, so you can list, create, update, and replace users and groups to automate team provisioning from your IdP or admin console.

### How do we push relational data like tickets or invoices into Totango?

Use the Collections endpoints to sync arrays of related records (support tickets, invoices, devices, provisioned users) against a parent account, which Totango renders as a widget on the account profile.
