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 namesignalType: 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 descriptionbrandName: String - Product brand namecategories: String - Product categoriescategory: 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 signaldiscount: Number - Discount from original priceeffect: String - Signal engagement effect (valid values:negative,positive) - We suggestpositivefor all product viewsimageUrls: Array of strings - Product image URLsinventoryQuantity: Number - Number of units available. Use integers.model: String - Model number or descriptionmsrp: 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 signalsproductCategory: String - Product category name based on catalogproductCategoryId: String - Product category identifierproductDescription: String - Product descriptionproductRating: Number - Product ratingproductStatus: String - Product lifecycle state (e.g., "Active", "Discontinued", "Upcoming")productUrls: Array of strings - Product page URLspromotionId: String - ID from marketing campaigns (hero images, CTAs) that led to this viewshoppingCartUrl: String - Shopping cart URLsignalCustomAttributes: Array of objects - Additional custom attributes (each object needsnameandvaluestring 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 productunitPrice: Number - Unit price of productvirtualCategory: String - Category based on navigation path (e.g., "New arrivals", "Sale")
