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).

To learn what this signal captures and how to use it in Connect, see Product view signal guide. To send it from your website or app instead, use Log signal: web, Android, iOS.

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")