Home > widget-integration > RecommendationService > transformVariantData

RecommendationService.transformVariantData() method

Transforms a single product variant from Shopify format.

This method can be overridden to customize variant data transformation, such as applying custom pricing, adding custom fields, modifying image URLs, or applying shop-specific business logic.

Signature:

protected transformVariantData(variant: Product$2["variants"][0]): {
		price: number;
		image: string;
		available: boolean;
		barcode: string;
		compare_at_price: string | null;
		fullfillment_service: string;
		id: string;
		inventory_management: string;
		inventory_policy: string;
		inventory_quantity: number;
		merged_options: Array<string>;
		original_merged_options?: Array<string>;
		sku: string;
		title: string;
		featured_image: FeaturedImage;
	};

Parameters

Parameter

Type

Description

variant

Product$2["variants"][0]

Shopify product variant object containing price in cents, featured_image, and other variant data

Returns:

{ price: number; image: string; available: boolean; barcode: string; compare_at_price: string | null; fullfillment_service: string; id: string; inventory_management: string; inventory_policy: string; inventory_quantity: number; merged_options: Array<string>; original_merged_options?: Array<string>; sku: string; title: string; featured_image: FeaturedImage; }

Transformed variant object with price converted to dollars and image URL extracted

Example

Override to apply VIP customer discount:

protected transformVariantData(variant: ShopifyProduct['variants'][0]) {
  const baseTransform = super.transformVariantData(variant);
  const customer = this.platformLoader.platform.customer;
  // Apply VIP discount
  if (customer?.tags?.includes('vip-member')) {
    baseTransform.price = baseTransform.price * 0.9;
    baseTransform.compare_at_price = variant.price / 100;
  }
  return baseTransform;
}