Skip to content
Dashboard

Attentive

Use the Attentive connector to sync segment definitions, product catalog upload status, and account metadata into your Athena lakehouse. This is a Blotout custom connector built on the Airbyte Connector Builder (declarative manifest).

  • A tag with Blotout Cloud set up (green checkmark in the Tags table)
  • An Attentive API key — generated under Custom Apps in the Attentive UI (not Settings → API Keys). A new custom app starts with every API set to “No Access” — grant scopes explicitly.
  • The following scopes granted on the Custom App:
StreamScope RequiredNotes
segmentssegments:writesegments:read is Open Beta and may not appear in the UI. segments:write is GA and satisfies the read endpoint.
product_catalog_uploadsproduct_catalogs:read
accountNoneWorks with just the key itself.

Follow the shared Create a pipeline steps until the source catalogue appears, then select Attentive.

On the Source step, configure the connector:

FieldPurpose
Schedule TypeHow the pipeline runs — typically Scheduled
Sync FrequencyHow often Airbyte syncs (for example, Every 24 hours)
Source NameName for this pipeline — used in the Athena schema <SOURCE_NAME>_<ENV>

Every request carries Authorization: Bearer <api key>. The key is long-lived with no refresh step.

  1. Under Attentive Configuration, paste your API Key into the API Key field.
FieldTypeRequiredDefaultDescription
api_keysecret stringYes—Attentive API key, sent as Authorization: Bearer <key>. Generated under Custom Apps in the Attentive UI.
start_datestringYes—Earliest segment modification date to pull (YYYY-MM-DD), sent as updatedSince. Applies to segments server-side and to product_catalog_uploads client-side.
page_sizeintegerNo1000Page size for the segments stream (limit param). API max is 1000; Attentive’s own default is only 20.
lookback_hoursintegerNo24Hours to rewind before the stored cursor on each incremental sync (range 0–168).
base_urlstringNohttps://api.attentivemobile.comOverride only if Attentive provides a dedicated host. v1 and v2 paths both hang off this host.
  • Incremental Sync — Append (segments, product_catalog_uploads)
  • Full Refresh (account)
StreamEndpointCursorPaginatedSync Mode
segmentsGET /v2/segmentsupdated (server-side)Yes (cursor/hasMore)Incremental
product_catalog_uploadsGET /v1/product-catalog/uploadslastUpdated (client-side)NoIncremental
accountGET /v2/meNoneNoFull Refresh

Segment definitions — externalId, name, description, created, updated. This is NOT membership data. Attentive publishes no endpoint listing a segment’s subscribers. If you need membership, derive it from subscription events in the SFTP feed.

FieldTypeNotes
externalIdstringPrimary key — segment ID used by every Attentive surface
namestringSegment name
descriptionstring
createdstringISO-8601
updatedstringISO-8601 — cursor field

Operational monitoring for the nightly catalog push. The endpoint only keeps recent uploads.

FieldTypeNotes
uploadIdstringPrimary key
statusstringinitialized → validating → validated → completed
productsReceivedinteger
productsProcessedinteger
lastUpdatedstringISO-8601 — cursor field
expiresstringISO-8601
uploadUrlstring
validateOnlyboolean
errorsarray<object>errorType, errorMessage, lineNum

One row identifying the company behind the key. Also the check stream.

FieldTypeNotes
companyIdstringPrimary key — joins to company_id in the SFTP feed tables
companyNamestring
attentiveDomainNamestringThe {attn_domain} in SFTP feed filenames
applicationNamestring
contactEmailstring

Message performance, subscriber events, and attributed revenue live in Attentive’s nightly SFTP data feeds. No custom connector is needed — Airbyte ships an SFTP Bulk source.

SettingValue
Hostsftp.client.attentivemobile.com (port 22)
AuthPassword — username from the SFTP account-creation email
Folder/downloads
Glob (events)**/*_attentive_email_SMS_*.csv
Glob (conversions)**/*_attentive_conversions_*.csv
CadenceNightly, available by 10:00 UTC

One row per event. The type column discriminates 24 distinct event types including subscription, impression, click, message, email delivery, commerce, and user property events.

Conversions attributed to Attentive messages: phone, email, external_id, client_id, amount, uuid, timestamp, message_id, message_name, order_id, product_skus, coupon, quantity. This is what joins Attentive attribution to Shopify/commerce revenue.

  • Schema: attentive_<client>_prod.*
  • account.attentiveDomainName is the {attn_domain} that prefixes SFTP feed filenames; account.companyId joins these rows to the feed tables
  • Deduplication for incremental streams:
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (
PARTITION BY externalId
ORDER BY _airbyte_extracted_at DESC
) AS rn
FROM attentive_<client>_prod.segments
) WHERE rn = 1
VersionDateDescription
1.1.02026-09Removed webhooks stream — GET /v1/webhooks returns 403 with API keys and the webhooks:write scope is not grantable in the Custom App UI. A 403ing stream fails the entire sync. Streams are now: segments, product_catalog_uploads, account.
1.0.02026-08Initial release with 4 streams: segments, webhooks, product_catalog_uploads, account

Continue through the Schema and Summary steps to choose streams and confirm the connection. Save and run the first sync.

After a successful sync, Airflow creates an organization-scoped DAG for the pipeline, and dbt models feed downstream analytics.