Skip to content

CRM · Beta

Totango
API integration

Ship CRM features without building the integration. Full Totango API access via Proxy and 40+ MCP-ready tools for AI agents — extend models and mappings to fit your product.

Built for specific customer use cases. Issues are resolved quickly.

Talk to us
Totango

Use Cases

Why integrate with Totango

Common scenarios for SaaS companies building Totango integrations for their customers.

01

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.

02

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.

03

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.

04

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.

05

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

Ship these features with Truto + Totango

Concrete product features your team can ship faster by leveraging Truto’s Totango integration instead of building from scratch.

01

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.

02

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.

03

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.

04

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.

05

Objective-based onboarding tracker

Create Objectives from templates and bulk-update milestones to mirror external project progress against Totango success plans.

06

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.

SuperAI

Totango AI agent tools

Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.

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.

Why Truto

Why use Truto’s MCP server for Totango

Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 850+ integrations.

01

Auto-generated, always up to date

Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.

02

Fine-grained access control

Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.

03

Multi-tenant by design

Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.

04

Works with every MCP client

Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.

05

Built-in auth, rate limits, and error handling

Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.

06

Expiring and auditable servers

Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.

How It Works

From zero to integrated

Go live with Totango in under an hour. No boilerplate, no maintenance burden.

01

Link your customer’s Totango account

Use Truto’s frontend SDK to connect your customer’s Totango account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.

02

We handle authentication

Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.

03

Call our API, we call Totango

Truto’s Proxy API is a 1-to-1 mapping of the Totango API. You call us, we call Totango, and pass the response back in the same cycle.

04

Unified response format

Every response follows a single format across all integrations. We translate Totango’s pagination into unified cursor-based pagination. Data is always in the result attribute.

FAQs

Common questions about Totango on Truto

Authentication, rate limits, data freshness, and everything else you need to know before you integrate.

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.

Totango

Get Totango integrated into your app

Our team understands what it takes to make a Totango integration successful. A short, crisp 30 minute call with folks who understand the problem.