Send product view signals with the API

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

📘

Other ways to send this signal

Web · Android · iOS

All signals and methods: Signals overview

Records user activity on product pages. Provides insights into product and category attention, crucial for segmentation and tying product interest to identified visitors.

mutation {
  createSignals(
    signals: [
      {
        appKey: "{YOUR_APP_KEY}"
        audience: [
          { name: "Customer ID", value: "AAUN-1417508" }
          { name: "Email", value: "[email protected]" }
        ]
        sessionId: "SESS-789456123AB"
        consent: {
          enableOverrideExistingOptOut: true
          whatsapp: [
            {
              status: OPT_IN_UNVERIFIED
              consentGroupIds: [
                "0a026d9b-e9d1-544a-ab07-91d7c35a0000"
                "46129a12-1982-5c7c-b7cd-bc7d45200000"
              ]
            }
          ]
        }
        signalContent: {
          signalType: "productView"
          category: "Behavior"
          name: "Product view from online store"
          effect: "positive"
          productId: "AC-DBL-BRSH-6"
          productName: "AWESOME COLORS Double Thick Chip Paint Brush"
          currency: "USD"
          unitPrice: 9.49
          availability: "In Stock"
          brandName: "Awesome Colors"
          discount: 0
          productCategory: "Painting & Decorating / Tools"
          inventoryQuantity: 150
          signalTimestamp: "2026-02-22T08:29:30.001Z"
        }
      }
    ]
  ) {
    signalIds
  }
}

Required fields

  • productId: String - Product identifier (may match SKU)
  • productName: String - Product name
  • signalType: String - Signal type (valid values: productView)

Optional fields

  • availability: String - Product availability status (e.g., "In Stock", "Out of Stock", "Back Order")
  • brandDescription: String - Brand description
  • brandName: String - Product brand name
  • categories: String - Product categories
  • category: String - Signal category (valid value: Behavior)
  • currency: String - Product price currency on website (valid values: ISO 4217 currency codes)
  • dateAdded: Date - When product was added to catalog. Format: yyyy-MM-dd HH:mm:ss.SSS.
  • description: String - Description of the signal
  • discount: Number - Discount from original price
  • effect: String - Signal engagement effect (valid values: negative, positive) - We suggest positive for all product views
  • imageUrls: Array of strings - Product image URLs
  • inventoryQuantity: Number - Number of units available. Use integers.
  • model: String - Model number or description
  • msrp: Number (decimal/float) - Suggested retail price or original price. Must be a decimal or float.
  • name: String (up to 256 characters) - Signal name to differentiate from other signals
  • productCategory: String - Product category name based on catalog
  • productCategoryId: String - Product category identifier
  • productDescription: String - Product description
  • productRating: Number - Product rating
  • productStatus: String - Product lifecycle state (e.g., "Active", "Discontinued", "Upcoming")
  • productUrls: Array of strings - Product page URLs
  • promotionId: String - ID from marketing campaigns (hero images, CTAs) that led to this view
  • shoppingCartUrl: String - Shopping cart URL
  • signalCustomAttributes: Array of objects - Additional custom attributes (each object needs name and value string fields)
  • 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.
  • sku: String - SKU (if different from product ID)
  • tags: Array of strings - Tags assigned to the product
  • unitPrice: Number - Unit price of product
  • virtualCategory: String - Category based on navigation path (e.g., "New arrivals", "Sale")