# Update ATC Events

## Add `useIgCart()` or `useIgCheckout()` Hook

* Use the [`useIgCart()`](https://headless.intelligems.io/version-1.0.0-beta/reference/hooks/cart-and-checkout-hooks#useigcart) hook if your site uses the Storefront **Cart** API
* Use the [`useIgCheckout()`](https://headless.intelligems.io/version-1.0.0-beta/reference/hooks/cart-and-checkout-hooks#useigcheckout) hook if your site uses the Storefront **Checkout** API

## Add Intelligems Script to `checkout.liquid`

The Intelligems script may be found under *settings* at [app.intelligems.io](https://app.intelligems.io). Copy this script tag and add it to the header of `checkout.liquid`

## Add Intelligems Checkout Script to Script Editor

Add the following script to your Script Editor app as a Line Item discount.

{% code overflow="wrap" %}

```ruby
class Intelligems
  def initialize(discount_property = '_igp', allow_free = false)
    @volume_discount_property = '_igvd'
    @volume_discount_message_property = '_igvd_message'
    @depreciated_property = '_igLineItemDiscount'
    @discount_property = discount_property
    @allow_free = allow_free
  end

  def discount_product(line_item)
    ig_price = Money.new(cents: line_item.properties[@discount_property])

    discount = line_item.line_price - ig_price
    if discount > Money.zero
      discount *= line_item.quantity
      line_item.change_line_price(line_item.line_price - discount, message: 'Discount')
    end

  end

  def depreciated_discount_product(line_item)
    discount = Money.new(cents: line_item.properties[@depreciated_property])
    discount *= line_item.quantity

    if @allow_free or discount < line_item.line_price
      line_item.change_line_price(line_item.line_price - discount, message: 'Intelligems')
    end
  end

  def volume_discount(line_item)
    discount = Money.new(cents: line_item.properties[@volume_discount_property])
    discount *= line_item.quantity

    if discount < line_item.line_price
      message = line_item.properties[@volume_discount_message_property]
      line_item.change_line_price(line_item.line_price - discount, message: message)
    end
  end

  def run(cart)
    cart.line_items.each do |line_item|
      if !line_item.properties[@discount_property].nil? && !line_item.properties[@discount_property].empty?
        discount_product(line_item)
      elsif !line_item.properties[@volume_discount_property].nil? && !line_item.properties[@volume_discount_property].empty?
        volume_discount(line_item)
      elsif !line_item.properties[@depreciated_property].nil? && !line_item.properties[@depreciated_property].empty?
             depreciated_discount_product(line_item)
      end
    end
  end
end

intelligems = Intelligems.new()
intelligems.run(Input.cart)

Output.cart = Input.cart

```

{% endcode %}
