Send browse abandonment signals with the API

Send a browse 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 Browse abandonment signal guide. Connect also infers this signal automatically, so there's no Log signal call for it.

Indicates strong interest in a product without addition to cart or purchasing. For example, a user viewed a product, selected a size but didn't take further action.

mutation {
  createSignals(
    signals: [
      {
        appKey: "{YOUR_APP_KEY}"
        sessionId: "SESS-789456123AB"
        audience: [{ name: "Email", value: "[email protected]" }]
        signalContent: {
          signalType: "browseAbandonment"
          category: "Behavior"
          name: "Browse abandonment on outdoor furniture"
          effect: "negative"
          currency: "USD"
          abandonmentReason: "EXCESSIVE_SCROLLING"
          abandonmentReasonDescription: "User scrolled through 35 products without engagement"
          promotionId: "SPRING2026"
          abandonedItems: [
            {
              productId: "OUT-CHAIR-TEAK-001"
              productName: "Premium Teak Outdoor Dining Chair"
              productDescription: "Weather-resistant teak wood dining chair with cushions"
              unitPrice: 249.99
              inventoryQuantity: 24
              productCategory: "Outdoor Living / Furniture / Dining"
              productUrls: [
                "https://www.example.com/outdoor/furniture/dining/teak-chair"
              ]
              imageUrls: [
                "https://www.example.com/images/teak-chair-front.jpg"
                "https://www.example.com/images/teak-chair-side.jpg"
              ]
            }
            {
              productId: "OUT-TABLE-ALU-002"
              productName: "Aluminum Extendable Patio Table 84 Inch"
              productDescription: "Rust-proof aluminum table extends to seat 8-10 people"
              unitPrice: 899.99
              inventoryQuantity: 8
              discount: 100.00
              productCategory: "Outdoor Living / Furniture / Dining"
              productUrls: [
                "https://www.example.com/outdoor/furniture/dining/aluminum-table-84"
              ]
              imageUrls: [
                "https://www.example.com/images/alu-table-closed.jpg"
                "https://www.example.com/images/alu-table-extended.jpg"
              ]
              promotionId: "BESTIES"
            }
            {
              productId: "OUT-UMBERELLA-BLK-003"
              productName: "Cantilever Patio Umbrella 11 Foot Black"
              productDescription: "UV-resistant fabric with 360-degree rotation base"
              unitPrice: 329.99
              inventoryQuantity: 3
              productCategory: "Outdoor Living / Furniture / Accessories"
              productUrls: [
                "https://www.example.com/outdoor/furniture/accessories/cantilever-umbrella-11ft"
              ]
              imageUrls: [
                "https://www.example.com/images/umbrella-black-11ft.jpg"
              ]
            }
          ]
          signalTimestamp: "2026-02-28T16:22:15.001Z"
        }
      }
    ]
  ) {
    signalIds
  }
}

Required fields

  • signalType: String - Signal type. Valid value: browseAbandonment.

Optional fields

  • abandonmentReason: Enum - Reason for abandonment. Valid values: APPLICATION_ERROR, LARGEST_CONTENTFUL_PAINT, CUMULATIVE_LAYOUT_SHIFT, FIRST_INPUT_DELAY, RAGE_CLICK, USER_ERRORS, EXCESSIVE_SCROLLING.
  • abandonmentReasonDescription: String - Additional description of the abandonment reason
  • abandonedItems: Array of objects - List of items that the user interacted with but didn't add to the cart
  • category: String - Signal category. Valid value: Behavior.
  • currency: String - Price currency. Valid values: 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, "Browse abandonment on product listing page"). Max length: 256 chars.
  • promotionId: String - Promotion identifier associated with the browse session
  • productCategoryId: String - Product category identifier
  • 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.

Descriptions of the abandonment reasons:

  • APPLICATION_ERROR - The user encountered a technical error in the application such as "404 - Page not Found".
  • CUMULATIVE_LAYOUT_SHIFT - The page layout shifted unexpectedly, disrupting the user experience.
  • EXCESSIVE_SCROLLING - The user scrolled excessively, possibly searching for information or due to poor design.
  • FIRST_INPUT_DELAY - There was a significant delay between the user's first interaction and the app's response.
  • LARGEST_CONTENTFUL_PAINT - The page took too long to load frustrating the user.
  • RAGE_CLICK - The user repeatedly clicked on a UI element out of frustration.
  • USER_ERRORS - There were validation errors such as form entry mistakes which led to frustration.

Abandoned items object

Objects in the abandonedItems array represent products the user viewed or interacted with. Supported fields:

  • discount: Number - Discount applied to the item
  • imageUrls: Array of strings - URLs of product images
  • inventoryQuantity: Number - Available inventory quantity
  • itemQuantity: Number - Quantity of items
  • productCategory: String - Product category name based on catalog
  • productCategoryId: String - Product category identifier
  • productDescription: String - Description of the product
  • productId (required): String - Unique product identifier
  • productName (required): String - Name of the product
  • productUrls: Array of strings - URLs of product pages
  • promotionId: String - Associated promotion identifier
  • shoppingCartUrl: String - URL of the shopping cart
  • unitPrice (required): Number - Price per unit
  • virtualCategory: String - Category based on navigation path (e.g., "New arrivals", "Sale")