---
title: Attentive API Integration on Truto
slug: attentive
category: Marketing Automation
canonical: "https://truto.one/integrations/detail/attentive/"
---

# Attentive API Integration on Truto



**Category:** Marketing Automation  
**Status:** Beta

## MCP-ready AI tools

Truto exposes 50 tools for Attentive that AI agents can call directly.

- **list_all_attentive_authorizations** — Exchange an OAuth2 Authorization Code for an Attentive access token. Returns: token_type, access_token, refresh_token, scope, expires_in. Required: code.
- **create_a_attentive_oauth_access_token** — Exchange Attentive OAuth2 client credentials for an access token. Returns: token_type, access_token, scope, expires_in. Required: client_id and client_secret.
- **create_a_attentive_add_purchase** — Post purchase events to Attentive. Sends a JSON array of purchase objects, each identifying the visitor by phone (E.164 format), email, or clientId, with the order amount in cents and its item states. Returns an empty 201 Accepted response on success. Each itemStates array must contain at least 1 item.
- **list_all_attentive_webhooks** — List all webhooks configured in Attentive. Returns each webhook's id, url, subscribed topics, optedOut flag, and companyIds.
- **create_a_attentive_webhook** — Create a webhook in Attentive to subscribe a URL to event notifications. Returns the created webhook's id, url, subscribed events, optedOut flag, and disabledAt. Required: url. Events are case sensitive (e.g. sms.subscribed, email.opened).
- **delete_a_attentive_webhook_by_id** — Delete a webhook in Attentive by id. Returns an empty 204 response on success. Required: id.
- **update_a_attentive_webhook_by_id** — Update an existing webhook in Attentive by id. Returns the updated webhook's id, url, subscribed events, optedOut flag, and disabledAt. Required: id, url. Set disabled to true to disable the webhook endpoint.
- **list_all_attentive_custom_attributes** — List all custom attributes configured in Attentive. Returns the customAttributes collection where each attribute includes its name, displayName, and description. No required parameters.
- **list_all_attentive_signature_keys** — Get your Attentive webhook signature keys, the signing secrets Attentive generates for your webhooks so you can verify that payloads were actually sent from Attentive. Returns: signatureKeys. No required parameters.
- **list_all_attentive_hellos** — Test authentication with Attentive to verify your Authorization header is configured correctly; the response includes information specific to your company. Returns: company, platform.
- **list_all_attentive_users** — Verify your Attentive authentication credentials and get details about the authenticated company. Returns: id, company, platform, scopes, webhooks, userProperties, segments, timestamp, subscriber, creative, subscription.
- **get_single_attentive_user_property_by_id** — Get a user property in Attentive by id. Returns: id, name, displayName, description, createdAt. Required: id.
- **create_a_attentive_user_property** — Set a user property for a subscriber in Attentive. Returns an empty 201 Created response on success. Accepts userPropertyId, externalId, phone, email, and values (array of strings) in the JSON body.
- **create_a_attentive_user_properties_batch** — Bulk set user properties for a user in Attentive. Accepts the user's externalId, the target userPropertyIds, and the operations to apply, and returns an empty 200 response on success.
- **list_all_attentive_segments** — List segments in Attentive. Returns segment records including id, name, and description.
- **attentive_segments_bulk_delete** — Remove members from an Attentive segment in bulk. Requires segment_id and users. Returns an empty response on success.
- **delete_a_attentive_segment_by_id** — Clear all members from an Attentive segment by id. Requires id. Returns an empty 202 response on success.
- **create_a_attentive_segment** — Create a new empty segment in Attentive. Returns the created segment's id and description. Requires name.
- **delete_a_attentive_segments_external_id_by_id** — Delete a segment in Attentive by its external ID. Returns an empty 204 response on success. Required: id.
- **get_single_attentive_segments_bulk_operation_by_id** — Get the status of a bulk job in Attentive for segment member add or remove operations, using the job status endpoint linked from the bulk operation responses. Returns: id, status, errors, startedAt, completedAt. Required: id (the bulk job ID returned when the bulk operation was submitted).
- **create_a_attentive_user_attribute** — Create or update a single Attentive user with attributes, subscriptions, and identifiers — an existing user matching the provided identifiers is updated, otherwise a new user is created. Requires a JSON body carrying the user's identifiers, subscriptions, and custom-attribute keys (max 100 attributes; arrays or maps of attribute values are rejected). Returns a 202 Accepted acknowledgement body;…
- **attentive_user_attributes_bulk_create** — Bulk submit Attentive user attribute updates — accepts up to 256 records per request, validated and processed asynchronously. Requires a JSON array of user-attribute records. Returns: timestamp, company, subscriber, creative, subscription.
- **get_single_attentive_bulk_job_by_id** — Get the status of a bulk ingestion job in Attentive by id. Returns: id. Once the job is COMPLETED, the per-request results are downloadable as a .jsonl file for up to 2 weeks. Required: id.
- **create_a_attentive_segments_member** — Add members to an Attentive segment in bulk, identified by email, phone, and/or clientUserId. The request is queued for asynchronous processing. Returns: message, batchJobId. Required: members. Accepts 1 to 10,000 members per request, with at least one identifier per member.
- **attentive_segments_members_bulk_delete** — Remove members from an Attentive segment in bulk, identified by email, phone, and/or clientUserId. The request is queued for asynchronous processing. Returns: message, batchJobId. Required: members. Accepts 1 to 10,000 members per request, with at least one identifier per member.
- **get_single_attentive_segments_external_by_id** — Get segment details in Attentive by external ID. Returns the segment record: id plus attributes (upstream-defined segment fields). Required: id (the segment's external ID, 1-255 characters).
- **update_a_attentive_segments_external_by_id** — Partially update an existing Attentive segment by external ID; only the fields you provide are changed. Returns the updated segment record: id plus attributes (upstream-defined segment fields). Required: id (the segment's external ID, 1-255 characters).
- **delete_a_attentive_segments_external_by_id** — Archive (soft-delete) an Attentive segment by external ID; the segment is hidden from list operations but can be restored. Returns an empty 204 response on success. Required: id (the segment's external ID, 1-255 characters).
- **list_all_attentive_test_authentications** — Test that the Attentive API token is valid by getting information about the authenticated caller. Returns: id, company, platform, scopes, webhooks, userProperties, segments. Takes no request parameters.
- **create_a_attentive_authorization_codes_token** — Exchange a temporary Attentive authorization code for an access token, which does not expire. Returns: access_token, token_type, scope, expires_in, and optionally refresh_token. Supply grant_type (authorization_code), code, redirect_uri, client_id, and client_secret. The authorization code expires two minutes after it is issued if not used.
- **create_a_attentive_ecommerce_product_view** — Create a product view event in Attentive when a user views a product. Requires a JSON body matching the ProductViewRequest schema. Returns a 200 OK response with no response body on success.
- **create_a_attentive_ecommerce_add_to_cart** — Report an add-to-cart event to Attentive when a shopper adds a product to their shopping cart. Requires a JSON request body (AddToCartRequest). Returns an empty 200 Ok response on success.
- **create_a_attentive_ecommerce_purchase** — Create a purchase event in Attentive when a user generates an order or purchase. Returns a 200 Ok success acknowledgment; no response body fields are documented. Requires a JSON request body (upstream PurchaseRequest schema).
- **create_a_attentive_events_custom** — Send an event-based record of a user action to Attentive as a custom event, for use in Segment Builder and Journey Builder. Returns an "Ok" success status without a documented response body. Required: a JSON request body matching the CustomEventsRequest schema, including the event type and the user associated with the action. Note that event type names are case sensitive.
- **list_all_attentive_attributes_customs** — Get all custom attribute data associated with a user in Attentive. Returns the user's attribute data (properties) and the associated user record (email, phone, externalIdentifiers). Requires exactly one of phone or email — passing both returns a 400 error.
- **create_a_attentive_attributes_custom** — Create custom attribute data for a user in Attentive. Returns the stored attributes (properties) and the associated user (email, phone, externalIdentifiers). Requires properties and user. Attribute names are limited to 200 characters, arrays are rejected, and new values cannot be added to an existing property created in the Attentive platform.
- **list_all_attentive_subscriptions** — Get subscription eligibility for a user in Attentive, listing all subscription types and channels the user is subscribed to so you can check SMS or email eligibility before messaging. Returns a subscription-eligibility response; Attentive does not enumerate its fields in the API reference. Required: phone or email — one lookup parameter must be provided.
- **create_a_attentive_subscription** — Opt a user in to a subscription in Attentive. Requests are accepted asynchronously and the response reports which subscriptions already exist and which will be created; Attentive does not enumerate the response's fields in the API reference. Required: user (phone and/or email), plus either signUpSourceId or both locale and subscriptionType. Phone numbers must be in e164 format.
- **list_all_attentive_product_catalog_uploads** — List recent Attentive product catalog uploads with their ingestion statuses, in order of creation. Returns: uploadId, status, Expires (how long you can wait before uploading the file, after which the upload is no longer processed).
- **create_a_attentive_product_catalog_upload** — Start an Attentive product catalog upload and receive a pre-signed AWS S3 URL to upload your full or partial catalog file to. Returns: uploadId, status, Expires. Processing is asynchronous: the status moves through validating, validated, and completed.
- **get_single_attentive_product_catalog_upload_by_id** — Look up an Attentive product catalog upload by id to check its ingestion status. Returns: uploadId, status, Expires. Required: id (the upload ID returned from a previous call).
- **create_a_attentive_privacy_delete_request** — Create a new privacy delete request in Attentive to remove a subscriber within thirty days. Returns: id. The request must specify either subscriberPhone or subscriberEmail (the API rejects calls that include neither). Use the returned id with the GET endpoint to confirm deletion.
- **get_single_attentive_privacy_delete_request_by_id** — Get a CCPA privacy delete request by id in Attentive to check its processing status. Returns: id, processed, type, subjectPhone, subjectEmail, requestMsg, requestDateTime, processingStartDateTime, processingEndDateTime. Required: id (the alphanumeric request id returned when the delete request was created).
- **create_a_attentive_identity_resolution_user_identifier** — Associate a client user identifier or custom identifiers with a user's other identifiers in Attentive. At least one of phone, email, shopifyId, klaviyoId, clientUserId, or customIdentifiers is required, and a clientUserId or customIdentifiers value must be accompanied by at least one other identifier. Returns an empty 202 Accepted response with no body on success.
- **create_a_attentive_coupon** — Add new discount codes to an existing Attentive offer (coupon pool). The upload is processed asynchronously — returns an empty 202 Accepted response with no body; check the offer's sync status in the Attentive Offers page. Required: coupon_pool_id. Max 200,000 codes per request; distributionStart must precede distributionStop.
- **create_a_attentive_custom_event** — Create a custom event in Attentive to send user actions for use in the Segment Builder and Journey Builder. Returns the created event with type, externalEventId, occurredAt, properties, and user. Required: type, properties, user. Event type names are case sensitive, and an occurredAt older than 12 hours will not trigger Journeys.
- **get_single_attentive_clear_status_by_id** — Get the status of an asynchronous clear-members request for a segment in Attentive. Returns: status, clearId, clearStartedAt, clearCompletedAt. Required: id (the segment id).
- **create_a_attentive_clear_segment** — Clear all members from an Attentive segment identified by its external ID; the removal runs asynchronously after the request is accepted for processing. Returns the acceptance response with its id and schema-defined attributes. Only segments created via the Public API can be cleared. Required: external_id.
- **get_single_attentive_clear_segment_status_by_id** — Get the status of the most recent clear-segment operation for an Attentive segment identified by its external ID. Returns: status, clearId, clearStartedAt, clearCompletedAt. Required: id (the segment's external ID, 1-255 characters). Only segments created via the Public API can be queried.
- **create_a_attentive_subscriptions_unsubscribe** — Unsubscribe an Attentive user from a subscription type or channel — or from all subscriptions when none are specified. Returns unsubscribeResults covering subscriptions already unsubscribed and those being unsubscribed asynchronously, each with its type, channel, created timestamp, and destination address. Required: user (email and/or phone; email matches only email subscriptions, phone only text…

## How it works

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

- **Trigger SMS Journeys from Product Events** — Help your users turn in-app actions like ticket closures, subscription renewals, or review submissions into Attentive-triggered SMS flows. This makes your platform the behavioral engine behind their highest-converting marketing channel.
- **Sync Computed Audiences into Attentive Segments** — If your SaaS is a CDP, analytics tool, or loyalty platform, let users push cohorts like 'High LTV' or 'Churn Risk' directly into Attentive segments for targeted SMS campaigns. Bulk segment endpoints handle up to 10,000 members per request without rate limit headaches.
- **Unify Identity Across the Marketing Stack** — Resolve your internal user IDs, Shopify IDs, or Klaviyo IDs with Attentive subscriber profiles via phone or email. This gives your users a single source of truth for cross-platform attribution and personalization.
- **Keep Subscription Status in Sync Across Systems** — Subscribe to Attentive webhooks for SMS opt-ins, opt-outs, and privacy deletion requests so your CRM, helpdesk, or marketing tool never messages a user who's legally opted out. Critical for TCPA and CCPA compliance.
- **Power E-commerce Flows from Headless Storefronts** — If your platform handles storefronts, landing pages, or checkout, pipe product views, add-to-carts, and purchases into Attentive to activate native cart abandonment and post-purchase SMS journeys.

## What you can build

- **Custom Event Dispatcher** — Let users map any in-app event to an Attentive custom event with arbitrary JSON properties that marketers can use as branching logic in Journey Builder.
- **Bulk Segment Sync Engine** — Ship a background sync that creates Attentive segments and pushes thousands of members in and out asynchronously, with job status tracking via the bulk operation endpoints.
- **Custom User Attribute Enrichment** — Push attributes like loyalty tier, points balance, or lifecycle stage onto Attentive user profiles so marketers can personalize SMS copy with merge tags.
- **Identity Resolution Bridge** — Associate your platform's user IDs with Attentive subscribers via phone or email, enabling unified reporting and cross-tool orchestration.
- **Compliance Webhook Listener** — Register webhooks for subscription and privacy events so your product automatically updates consent status and processes deletion requests in sync with Attentive.
- **E-commerce Telemetry Pipeline** — Forward product views, add-to-carts, and purchases from your storefront or checkout into Attentive to power native abandonment and post-purchase journeys.

## FAQs

### How does authentication work with Attentive via Truto?

Attentive uses OAuth, and Truto handles the full token exchange flow. Your end users authorize once, and Truto manages token storage, refresh, and injection into every API call so you never touch credentials.

### Can we send arbitrary custom data into Attentive to drive SMS journeys?

Yes. The custom events endpoint accepts any JSON property payload, and marketers can reference those exact fields inside Attentive's Journey Builder to branch logic or personalize message content.

### How do we handle syncing large audiences without hitting rate limits?

Use the bulk segment member endpoints, which process asynchronously and support large batches per request. You can poll the bulk operation status endpoint to track completion and surface progress to your users.

### Can we receive real-time updates when users subscribe or unsubscribe?

Yes. Truto exposes Attentive's webhook management endpoints so you can register, update, and delete subscriptions programmatically, keeping your system in sync with opt-in and opt-out events as they happen.

### Does Truto support bi-directional identity resolution between our platform and Attentive?

Yes. The identity resolution endpoint lets you associate your internal user ID, Shopify ID, or Klaviyo ID with an Attentive subscriber identified by phone or email, enabling unified cross-platform tracking.

### How are privacy and deletion requests handled?

You can submit CCPA-style deletion requests through the privacy delete endpoint and check status by ID, making it straightforward to honor data subject requests originating in your product across Attentive as well.

## Related reading

- [Connect Attentive to ChatGPT: Manage Segments and Subscriber Data](https://truto.one/blog/connect-attentive-to-chatgpt-manage-segments-and-subscriber-data/) — Learn how to connect Attentive to ChatGPT using a managed MCP server. Automate subscriber segmentation, custom events, and CCPA deletions via natural language.
