# Price Hooks

The returned price `useIgPrices()` follow the following logic:

1. If no `productId` or `variantId` is provided, the `originalPrice` is returned
2. If the `productId` and/or `variantId` is part of a Test, and the Test is live, or the test and user are both in preview mode:
   1. If a `productId` is provided but a `variantId` is not, the lowest-priced variant price is returned
   2. If the `currencyCode` of the Experiment does not match `activeCurrencyCode`, `originalPrice` is returned&#x20;
   3. If a `productId` and `variantId` is provided, the test-group variant price is returned
3. If the `productId` is not in an active test, the `originalPrice` is returned

## `useIgPrices()`

Returns the product price based on the user's test group.  Intelligems will return the original prices if updated prices are not found.

```typescript
export interface UseIgPricesProps {
  productId?: string;
  variantId?: string;
  originalPrice: number;
  originalCompareAtPrice?: number;
  currencyCode?: string;
}

export interface UseIgPricesReturn {
  igPrice: IgPriceReturn;
  igCompareAtPrice?: IgPriceReturn;
  isIgPrice: boolean;
  isReady: boolean;
}

export interface IgPriceReturn {
  value: number | null;
  currencyCode: string;
}

const useIgPrices = (props: UseIgPricesProps) => UseIgPricesReturn
```

## `useIgStyles`

Useful for manually styling components for integration mode.

```tsx
const igStyles = useIgStyles();
```
