Send cart abandonment signals with the API

Send a cart abandonment signal to Connect with the createSignals mutation. For authentication, contact mapping, consent and the response, see Send signals with the API (GraphQL).

To learn what this signal captures and how to use it in Connect, see Cart abandonment signal guide. Connect also infers this signal automatically, so there's no Log signal call for it.

Cart abandonment occurs when there is an add-to-cart behavior in a session without an order before the session expires.

mutation {
  createSignals(
    signals: [
      {
        appKey: "{YOUR_APP_KEY}"
        audience: [{ name: "Customer ID", value: "AAUN-1417508" }]
        sessionId: "SESS-78945613AB"
        signalContent: {
          signalType: "cartAbandonment"
          currency: "USD"
          abandonedCartValue: 159.97
          abandonmentReason: "USER_ERRORS"
          abandonmentReasonDescription: "Payment form validation errors"
          shoppingCartUrl: "https://www.example.com/cart"
          abandonedItems: [
            {
              productId: "AC-PNT-WHT-SM"
              productName: "AWESOME COLORS Interior Paint Satin Finish 32 Fl Oz"
              productDescription: "Premium interior paint with satin finish"
              unitPrice: 39.99
              itemQuantity: 2
              discount: 5.00
              productCategory: "Painting & Decorating / Paint"
              productUrls: [
                "https://www.example.com/painting-and-decorating/paint/awesome-colors-interior-satin-paint"
              ]
              imageUrls: [
                "https://www.example.com/images/awesome-colors-paint.jpg"
              ]
              shoppingCartUrl: "https://www.example.com/cart"
            }
            {
              productId: "BR-2IN-PRO"
              productName: "Professional Paint Brush 2 Inch"
              productDescription: "High-quality synthetic bristle brush"
              unitPrice: 12.99
              itemQuantity: 3
              discount: 2.00
              productCategory: "Painting & Decorating / Tools"
              productUrls: [
                "https://www.example.com/painting-and-decorating/tools/professional-paint-brush-2in"
              ]
              imageUrls: ["https://www.example.com/images/paint-brush-2in.jpg"]
              shoppingCartUrl: "https://www.example.com/cart"
            }
          ]
          signalTimestamp: "2026-02-22T08:29:30.001Z"
        }
      }
    ]
  ) {
    signalIds
  }
}

Required fields

  • abandonedCartValue: Number - Total value of the abandoned cart
  • abandonedItems: Array of objects - List of items abandoned in the cart. See the abandoned items object below.
  • abandonmentReason: Enum - Reason for abandonment. Valid values: APPLICATION_ERROR, LARGEST_CONTENTFUL_PAINT, CUMULATIVE_LAYOUT_SHIFT, FIRST_INPUT_DELAY, RAGE_CLICK, USER_ERRORS, EXCESSIVE_SCROLLING. See the descriptions in Send browse abandonment signals with the API.
  • signalType: String - Valid value: cartAbandonment.

Optional fields

  • abandonmentReasonDescription: String - Additional description of the abandonment reason.
  • category: String - Signal category. Valid value: Behavior.
  • currency: String - ISO 4217 currency code (for example, "USD", "EUR", "GBP").
  • description: String - Description of the signal
  • name: String - Name to differentiate this signal from others (for example, "Cart abandonment on checkout page"). Max length: 256 chars.
  • shoppingCartUrl: String - URL of the shopping cart page
  • signalTimestamp: Date - When signal happened (if omitted, Connect uses time when signal was received). Valid values: DateTime strings (ISO 8601). Example: 2026-02-28T16:22:15.001Z.

Abandoned items object

Objects in the abandonedItems array represent products left in the cart. Supported fields:

  • discount: Number - Discount applied to the item
  • imageUrls: Array of strings - Product image URLs
  • inventoryQuantity: Number - Quantity of the product in stock [TODO: confirm meaning with engineering; the definition only labels it "Inventory Quantity"]
  • itemQuantity: Number - Quantity of product added to cart
  • productCategory: String - Product category name based on catalog
  • productCategoryId: String - Product category identifier
  • productDescription: String - Product description
  • productId (required): String - Product identifier (may match SKU)
  • productName (required): String - Product name
  • productUrls: Array of strings - Product page URLs
  • promotionId: String - ID from marketing campaigns (hero images, CTAs) that led to this action
  • shoppingCartUrl: String - Shopping cart URL
  • unitPrice (required): Number - Price per unit
  • virtualCategory: String - Category based on navigation path (e.g., "New arrivals", "Sale")