Attentive Tag

Send your event data from RudderStack to Attentive.

Attentive is a text message marketing platform. It provides personalized text messaging solutions to help you create customer-first connections. It also provides Attentive Tag which you can add to your website to capture events and behavioral data, track revenue, and more.

Find the open source transformer code for this destination in the GitHub repository.

Getting started

RudderStack supports sending event data to Attentive via the following connection modes:

Connection ModeWebMobileServer
Device mode---
Cloud modeSupportedSupportedSupported

Once you have confirmed that the source platform supports sending events to Attentive, follow these steps:

  1. From your RudderStack dashboard, add a source. Then, from the list of destinations, select Attentive Tag.
  2. Assign a name to the destination and click Continue.

Connection settings

To successfully configure Attentive as a destination, you will need to configure the following settings:

  • API Key: Enter the Attentive API key for the app you have created in your Attentive dashboard.
  • Sign Up Source Id: Enter the signup method’s ID present in the Sign-up Units option in the Attentive dashboard.
info
For more information on getting the API Key and Sign Up Source ID, see FAQ.

Identify

You can subscribe or unsubscribe a user from an Attentive list using the identify call.

info
The default behavior of identify call is to subscribe a user. To unsubscribe, you can pass identifyOperation as unsubscribe in the integrations object.

Subscribing users

RudderStack maps the following traits to the Attentive properties while subscribing a user:

RudderStack traitAttentive property
traits.email/context.traits.email/properties.email
Required, if phone is not provided.
user.email
traits.phone/context.traits.phone/properties.phone
Required, if email is not provided.
user.phone
integrations.attentive_tag.signUpsourceId
Required, if not specified in the RudderStack dashboard.
signUpSourceId
externalIdexternalIdentifiers
context.traits.customIdentifiers/traits.customIdentifiersexternalIdentifiers.customIdentifiers
info

Note that:

  • The externalIdentifiers property can be an array of objects containing identifiers like clientUserId, shopifyId, klaviyoId.
  • RudderStack prioritizes the signUpSourceId property in the integrations object over the value specified in the Sign Up Source Id dashboard setting.

A sample identify call to subscribe a user is as follows:

rudderanalytics.identify("jbu3471", {
  "email": "alex@example.com",
  "phone": "+1-202-555-0146",
  "customIdentifiers": [{
    "name": "string",
    "value": "string"
  }]
}, {
  "externalId": [{
      "type": "clientUserId",
      "id": "144"
    },
    {
      "type": "shopifyId",
      "id": "224"
    },
    {
      "type": "klaviyoId",
      "id": "132"
    }
  ],
  "integrations": {
    "signUpSourceId": "347393"
  }
});
warning
The externalId fields are case-sensitive. Also, RudderStack expects them to be in the above format for mapping them correctly.

Unsubscribing users

You can set identifyOperation to unsubscribe in the integrations object to unsubscribe a user:

rudderanalytics.identify("jbu3471", {
  "email": "alex@example.com",
  "phone": "+1-202-555-0146",
}, {
  "integrations": {
    "attentive_tag": {
      "identifyOperation": "unsubscribe",
    },
    "subscriptions": [{
      "type": "MARKETING",
      "channel": "TEXT"
    }],
    "notification": {
      "language": "en-US"
    }
  }
});

RudderStack maps the following traits to the Attentive properties while unsubscribing a user:

RudderStack traitAttentive property
traits.email/context.traits.email/properties.email
Required, if phone is not provided.
email
traits.phone/context.traits.phone/properties.phone
Required, if email is not provided.
phone
integrations.attentive_tag.subscriptionssubscriptions
integrations.attentive_tag.notificationnotification
warning
Passing an email attribute does not locate or unsubscribe a user from SMS subscription. Similarly, passing the phone attribute does not locate or unsubscribe a user from email subscription.

You can also unsubscribe a user from a channel by specifying it in subscriptions within the integrations object. The supported values for subscriptions are:

"subscriptions": [{
    "type": "MARKETING" || "TRANSACTIONAL" || "CHECKOUT_ABANDONED"
    "channel": "TEXT" || "EMAIL"
  }]
info
You can also provide the language in the notification inside the integrations object to change the notification language. Currently, RudderStack supports only en-US and fr-CA as the notification languages, which are case-sensitive.

Track

The track call lets you capture the user actions along with the associated properties.

warning
RudderStack does not trigger an event if the timestamp is older than 12 hours.

Property mapping

RudderStack maps the following track call properties to the Attentive properties:

RudderStack propertyAttentive property
event
Required
type
traits.email/context.traits.email/properties.emailuser.email
traits.phone/context.traits.phone/properties.phoneuser.phone
externalIduser.externalIdentifiers
propertiesproperties
originalTimestamp/timestampoccuredAt
properties.eventIdexternalEventId
context.traits.customIdentifiers/traits.customIdentifiersuser.externalIdentifiers.customIdentifiers
warning

Note that:

  • You must specify the timestamp in the ISO 8601 format.
  • The event type is case-sensitive. For example, Attentive considers Order shipped and Order Shipped as different events.
  • The keys of the properties object should not contain characters, like [', ", {, }, [, ], \ , ,]

Ecommerce events

RudderStack converts the following ecommerce events to the corresponding Attentive events:

RudderStack eventAttentive event
Product List Viewed
Product Viewed
product-view
Product Addedadd-to-cart
Order Completedpurchase

Product List Viewed

RudderStack maps the Product List Viewed event properties to the following Attentive properties:

RudderStack propertyAttentive Tag property
properties.products.$.product_id
Required
items.productId
properties.products.$.price
Required
items.price.$.value
properties.products.$.variant
Required
items.productVariantId
traits.email/context.traits.email/properties.emailuser.email
traits.phone/context.traits.phone/properties.phoneuser.phone
externalIduser.externalIdentifiers
properties.products.$.currencyitems.price.$.currency
properties.products.$.nameitems.name
properties.products.$.urlitems.productUrl
properties.products.$.image_urlitems.productImage
context.traits.customIdentifiers/traits.customIdentifiersuser.externalIdentifiers.customIdentifiers

Product Viewed/Product Added

RudderStack maps the Product Viewed and Product Added event properties to the following Attentive properties:

RudderStack propertyAttentive property
properties.product_id
Required
items.productId
properties.price
Required
items.price.$.value
properties.variant
Required
items.productVariant.Id
properties.currencyitems.price.$.currency
properties.nameitems.name
properties.urlitems.productUrl
properties.image_urlitems.productImage
traits.email/context.traits.email/properties.emailuser.email
traits.phone/context.traits.phone/properties.phoneuser.phone
externalIduser.externalIdentifiers
context.traits.customIdentifiers/traits.customIdentifiersuser.externalIdentifiers.customIdentifiers

Order Completed

RudderStack maps the Order Completed event properties to the following Attentive properties:

RudderStack propertyAttentive property
properties.products.$.variant
Required
items.productVariantId
properties.products.$.product_id
Required
items.productId
properties.products.$.price
Required
items.price.$.value
properties.products.$.currencyitems.price.$.currency
properties.products.$.nameitems.name
properties.products.$.urlitems.productUrl
properties.products.$.image_urlitems.productImage
traits.email/context.traits.email/properties.emailuser.email
traits.phone/context.traits.phone/properties.phoneuser.phone
externalIduser.externalIdentifiers
context.traits.customIdentifiers/traits.customIdentifiersuser.externalIdentifiers.customIdentifiers

The following snippet highlights a sample track call for the above ecommerce event parameters:

rudderanalytics.track("Order Completed", {
  "products": [{
    "product_id": "507f1f77bcf86cd799439011",
    "name": "MOBILE",
    "variant": "green",
    "price": "19",
    "image_url": "image.com",
    "url": "url.com",
    "quantity": "2",
    "currency": "USD"
  }]
}, {
  "traits": {
    "email": "alex@example.com",
    "phone": "+1-202-555-0146"
  },
  "externalId": [{
      "type": "clientUserId",
      "id": "144"
    },
    {
      "type": "shopifyId",
      "id": "224"
    },
    {
      "type": "klaviyoId",
      "id": "132"
    }
  ]
});

FAQ

Where can I find the Attentive Tag API Key?

  1. In your Attentive dashboard, go to Marketplace.
  2. Create an app by clicking Create App.
  3. Then, click Create and you will be able to see the API key for the app:
Attentive Tag Connection Settings

Where can I find the Attentive Tag Sign Up Source Id?

Go to the Sign-up Units option in your Attentive dashboard. Locate the ID next to Sign-up method:

Attentive Tag Connection Settings

Questions? Contact us by email or on Slack