Attentive

Sync subscriber data, custom attributes, and custom events to Attentive for personalized SMS marketing campaigns. Zeotap keeps your Attentive subscriber profiles enriched with the latest warehouse data for better segmentation and targeting.

Prerequisites

  • An Attentive account with API access enabled
  • An Attentive API key with the required scopes (attributes:write, subscriptions:write, events:write)
  • Phone numbers in E.164 format (e.g., +15551234567) for subscriber operations

Authentication

Attentive uses API Key authentication with a Bearer token.

  1. Log in to your Attentive dashboard
  2. Navigate to Settings > API keys
  3. Click Create API Key (or use an existing key)
  4. Ensure the key has the required scopes for your sync type:
    • attributes:write for Custom Attributes syncs
    • subscriptions:write for Subscriber syncs
    • events:write for Custom Events syncs
  5. Copy the API key
  6. In Zeotap, paste the key into the API Key field when creating the destination

Configuration

Attentive does not require any additional configuration fields beyond authentication.

Target Settings

FieldTypeRequiredDescription
Object TypeSelectYesThe type of data to sync. Options: Custom Attributes, Custom Events, Subscribers. Default: Custom Attributes.

Custom Attributes

Syncs profile attributes to Attentive subscribers. Use this to enrich subscriber profiles with data from your warehouse such as loyalty tier, lifetime value, or preferences. Attentive creates new custom attributes automatically if they do not already exist.

Custom Events

Sends custom event data to Attentive for triggering journeys and building segments. Event type names are case-sensitive. Events older than 12 hours do not trigger journeys.

Subscribers

Manages subscriber opt-in and opt-out status. Use audience sync modes (Add, Remove, Mirror) to control subscription membership.

Supported Operations

Sync Modes

ModeSupportedDescription
UpsertYesCreate or update custom attributes for subscribers
InsertYesSend custom events to Attentive
Update
Mirror

Audience Sync Modes

ModeSupportedDescription
AddYesSubscribe users (opt-in)
RemoveYesUnsubscribe users (opt-out)
MirrorYesSubscribe new members and unsubscribe removed members
Upsert

Features

  • Field Mapping: Yes
  • Schema Introspection: No

Required Mapping Fields

FieldObject TypeDescription
phoneCustom Attributes, SubscribersSubscriber phone number in E.164 format. Required if email is not provided (for Custom Attributes). Always required for Subscribers.
typeCustom EventsThe custom event type name (case-sensitive)

Default Destination Fields

FieldTypeAvailable For
phonestringAll object types
emailstringAll object types
first_namestringCustom Attributes, Subscribers
last_namestringCustom Attributes, Subscribers
client_user_idstringAll object types
typestringCustom Events
timestamptimestampCustom Events
propertiesjsonCustom Events

How It Works

Custom Attributes Flow

  1. Zeotap reads rows from your model
  2. Each row is sent individually to Attentive’s POST /v1/attributes/custom endpoint
  3. The subscriber is identified by phone or email
  4. All non-identifier fields are sent as custom attribute key-value pairs
  5. Attentive creates new attributes or updates existing ones

Custom Events Flow

  1. Zeotap reads rows from your model
  2. Each row is sent as a custom event to Attentive’s POST /v1/events/custom endpoint
  3. The event type, user identifier, timestamp, and properties are extracted from the row
  4. Events can trigger journeys and are available for segmentation in Attentive

Subscriber Management Flow

  1. For Add syncs: each row sends a subscribe request via POST /v1/subscriptions
  2. For Remove syncs: each row sends an unsubscribe request via POST /v1/subscriptions/unsubscribe
  3. For Mirror syncs: new/changed rows are subscribed, removed rows are unsubscribed

Rate Limits

Attentive enforces per-second rate limits on API endpoints:

EndpointRate Limit
Custom Attributes150 requests/second
Custom Events150 requests/second
Subscribe10 requests/second
Unsubscribe5 requests/second

Zeotap automatically retries requests that receive a 429 Too Many Requests response with exponential backoff. Monitor the x-ratelimit-remaining header to track consumption.

Best Practices

  • Use E.164 phone format: Attentive requires phone numbers in E.164 format (e.g., +15551234567). Use a SQL transform in your model to normalize phone numbers before syncing.
  • Prefer phone over email for identification: Phone is the primary identifier in Attentive. While email works for custom attributes, subscriber operations always require phone.
  • Keep event types consistent: Custom event type names are case-sensitive. Use a consistent naming convention (e.g., purchase_completed) across your models.
  • Mind the 12-hour journey window: Custom events older than 12 hours do not trigger Attentive journeys. Schedule syncs frequently if you rely on event-triggered journeys.
  • Avoid sensitive data: Attentive prohibits sending sensitive or special categories of information as defined by CCPA and CPRA. Do not sync fields like SSN, health data, or financial account numbers.
  • Custom attribute naming: Attribute keys are case-sensitive. favorite_color and Favorite_Color are treated as different attributes.

Troubleshooting

Authentication failed: invalid API key

Verify your API key is correct and has not been revoked. Generate a new key in Settings > API keys if needed. Ensure the key has the required scopes for your sync type.

Phone number rejected

Attentive requires phone numbers in E.164 format (e.g., +15551234567). Ensure your phone numbers include the country code prefix. Numbers without the + prefix or with formatting characters (dashes, spaces, parentheses) are rejected.

Custom attribute not appearing in Attentive

Custom attributes created via API may take a few minutes to appear in the Attentive UI. If the attribute was previously created in the Attentive UI, you cannot add new values for it via the API — you must define all possible values in the Attentive platform first.

Rate limit exceeded (429 errors)

Zeotap retries 429 responses automatically with exponential backoff. If you see persistent rate limit errors, reduce your sync frequency or batch size. Subscribe and unsubscribe endpoints have lower rate limits (10 req/s and 5 req/s respectively).

Custom event not triggering journey

Events older than 12 hours do not trigger Attentive journeys. Ensure your sync schedule runs frequently enough and that the timestamp field contains recent ISO 8601 timestamps. Also verify the event type name matches exactly (case-sensitive) with the journey trigger configuration.

Subscriber already opted out

If a subscriber has previously opted out, re-subscribing them via the API may not succeed depending on their opt-out status and applicable regulations. Check the subscriber’s status in the Attentive dashboard and ensure you have proper consent documentation.