Skip to content
Dashboard

CartRush

Use the CartRush connector to sync subscription orders, active and cancelled subscriptions, order analytics, and conversion analytics 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)
  • A CartRush API Key — obtain it from the CartRush dashboard or your CartRush account manager
  • A CartRush Account ID — identifies which CartRush account (store/brand) to pull data for

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

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>

CartRush authenticates via request headers on every API call:

  1. Under CartRush Configuration, paste your API Key into the API Key field.
  2. Enter your Account ID in the Account ID field.
FieldRequiredDefaultDescription
API KeyYesCartRush API key (secret). Sent as the X-Api-Key header on every request.
Account IDYesCartRush account ID (secret). Sent as the X-Account-Id header. Identifies which store/brand to pull data for.
Start DateYesEarliest date to pull in YYYY-MM-DD format. Filters on the charge/processed date for order streams.
End DateNotodayLatest date to pull in YYYY-MM-DD format. Leave blank to always sync through today (recommended for scheduled syncs). Set only for bounded historical backfills.
Records per pageNo100Page size for the CartRush paginator (range 1–250). The API returns empty data if per_page exceeds its cap — keep at or below 250. If a sync returns 0 records, lower this value.
Lookback Window (days)No1Days to re-fetch before the last cursor to catch late-arriving or updated rows — renewals, status changes, cancellations (range 1–14).

The CartRush source connector supports the following sync modes:

  • Incremental Sync — Append
StreamEndpointCursor FieldFilterSupports Incremental
subscription_orders_new/get-subscription-orders-newprocessed_atServer-side
subscriptions_new/get-subscriptions-newupdated_atClient-side
cancelled_subscriptions/get-cancelled-subscriptionsexpired_dateClient-side
subscription_additional_columns/get-subscription-additional-columnscancellation_attempted_atServer-side
order_analytics/get-order-analyticsupdated_atServer-side
conversion_analytics/get-conversion-analyticsupdated_atServer-side

Subscription order charges with product and renewal details. The external_order_id field maps to the Shopify order ID — this is the join key used for the Landing Page dashboard (Sub Take Rate) and CAC/LTV models.

FieldTypeDescription
storestringStore name
brandstringBrand name
subscription_idintegerCartRush subscription ID
shopify_customer_idstringShopify customer ID
currencystringCurrency code
created_atstringSubscription created date (MM/DD/YYYY)
first_created_atstringFirst subscription created date (MM/DD/YYYY)
external_order_idstringShopify order ID — join key to Shopify orders
external_product_idintegerShopify product ID
external_variant_idintegerShopify variant ID
product_titlestringProduct title
purchase_item_typestringe.g. Renewal / New
processed_atstringCharge processed time (epoch ms); from_date/to_date filter on this field
scheduled_atstringCharge scheduled time (epoch ms)
statusstringOrder status
bundle_namestringBundle name (if applicable)
skustringProduct SKU

Active subscriptions with frequency and status details. The API returns the full subscription set regardless of date — the connector filters client-side on the cursor.

FieldTypeDescription
brandstringBrand name
platform_namestringPlatform name
order_channelstringOrder channel
store_namestringStore name
subscription_idintegerCartRush subscription ID
cartrush_customer_idintegerCartRush internal customer ID
Shopify_customer_idstringShopify customer ID (note capital S in the API)
created_atstringSubscription created date (epoch ms)
external_product_idintegerShopify product ID
external_variant_idintegerShopify variant ID
next_charge_scheduled_atstringNext charge date (epoch ms)
order_interval_frequencyintegerDelivery frequency value
order_interval_unitstringDelivery frequency unit (e.g. day, week, month)
product_titlestringProduct title
variant_titlestringVariant title
quantityintegerQuantity
skustringProduct SKU
statusstringSubscription status
updated_atstringLast updated (epoch ms)
cancellation_datestringCancellation date (if cancelled)
cancellation_reasonstringCancellation reason
presentment_currencystringDisplay currency

Cancelled or expired subscriptions. The expired_date field is used as the cursor because cancellation_date is typically empty on this endpoint.

FieldTypeDescription
brandstringBrand name
subscription_idintegerCartRush subscription ID
shopify_customer_idstringShopify customer ID
paid_atstringLast payment date (epoch ms, often empty)
shopify_product_titlestringProduct title
shopify_variant_titlestringVariant title
pricenumberSubscription price
expired_datestringExpiry date (epoch ms) — cursor field
cancellation_datestringCancellation date (epoch ms, often empty)
cancellation_reasonstringReason for cancellation
purchase_typestringPurchase type
bundle_namestringBundle name

Cancellation flow and save-offer data. Tracks whether a customer attempted cancellation, which offer was shown, and the outcome.

FieldTypeDescription
brandstringBrand name
shopify_customer_idstringShopify customer ID
subscription_idintegerCartRush subscription ID
email_idstringCustomer email
attempt_idstringCancellation attempt ID
cancellation_attempted_flagbooleanWhether cancellation was attempted
cancellation_attempted_atstringAttempt timestamp (e.g. 2026-08-01 00:18:46 PDT)
cancellation_reasonstringReason selected by customer
offer_shown_flagbooleanWhether a save offer was shown
offer_accepted_atstringWhen the offer was accepted (if applicable)
cancellation_confirmed_atstringWhen cancellation was confirmed
post_flow_outcomestringOutcome of the flow — e.g. Cancelled / Saved

Order-level analytics with line items, revenue, and upsell tracking. The API returns a nested array-of-arrays envelope — the connector flattens it to emit one record per line item.

FieldTypeDescription
order_idstringShopify order ID (null on offer-catalog rows)
order_line_idintegerLine item ID
customer_id_shopifystringShopify customer ID
subscription_idintegerCartRush subscription ID
product_idstring/integerProduct ID
order_datestringOrder date (MM/DD/YY)
pricestringLine price (e.g. $275.94)
quantityintegerQuantity
gross_salestringGross sale amount (e.g. $266.01)
discountstring/integerDiscount amount
refundstringRefund amount
upsell_idinteger1 = purchased line; >1 = offer shown
product_titlestringProduct title
order_statusstringOrder status
auto_manual_orderstringWhether auto or manual order
created_atstringCreated at (MM/DD/YY HH:MM AM)
updated_atstringUpdated at (MM/DD/YY HH:MM AM) — cursor field

Conversion and session data tied to landing pages. Tracks visitor sessions, device types, and the path from landing page to order.

FieldTypeDescription
transaction_idintegerTransaction ID
datestringTransaction date (MM/DD/YY HH:MM AM)
landing_page_urlstringFull landing page URL
landing_page_pathstringLanding page path
full_urlstringFull URL with parameters
visitor_idstringVisitor identifier
session_idstringSession identifier
customer_idstringCustomer ID
order_idstringAssociated order ID
product_titlestringProduct title
cart_idstringCart identifier
device_typestringDevice type
product_idintegerProduct ID
created_atstringCreated timestamp
updated_atstringUpdated timestamp (MM/DD/YY HH:MM AM) — cursor field
  • subscription_orders_new.external_order_id joins to Shopify orders.id — this is the subscription flag used by the Landing Page dashboard (Sub Take Rate) and CAC/LTV models
  • All streams use additionalProperties: true, so any new fields the API returns are automatically captured
  • The per-id endpoints (/get-order-analytics/{orderId}, /get-conversion-analytics/{orderId}) are intentionally not ingested — the list endpoints return the same data in bulk
VersionDateDescription
1.0.02026-08-13Initial release with 6 streams: subscription_orders_new, subscriptions_new, cancelled_subscriptions, subscription_additional_columns, order_analytics, conversion_analytics

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.