Marketing Automation · Beta
Attentive
API integration
Ship Marketing Automation features without building the integration. Full Attentive API access via Proxy and 50+ 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 usUse Cases
Why integrate with Attentive
Common scenarios for SaaS companies building Attentive integrations for their customers.
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
Ship these features with Truto + Attentive
Concrete product features your team can ship faster by leveraging Truto’s Attentive integration instead of building from scratch.
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.
SuperAI
Attentive AI agent tools
Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.
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…
Why Truto
Why use Truto’s MCP server for Attentive
Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 800+ integrations.
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.
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.
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.
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.
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.
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 Attentive in under an hour. No boilerplate, no maintenance burden.
Link your customer’s Attentive account
Use Truto’s frontend SDK to connect your customer’s Attentive account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.
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.
Call our API, we call Attentive
Truto’s Proxy API is a 1-to-1 mapping of the Attentive API. You call us, we call Attentive, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate Attentive’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about Attentive on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
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.
From the Blog
Attentive integration guides
Deep dives, architecture guides, and practical tutorials for building Attentive integrations.
Attentive
Get Attentive integrated into your app
Our team understands what it takes to make a Attentive integration successful. A short, crisp 30 minute call with folks who understand the problem.