diff --git a/commerce_google_analytics.module b/commerce_google_analytics.module
index 9c72f39..820cd5e 100644
--- a/commerce_google_analytics.module
+++ b/commerce_google_analytics.module
@@ -17,7 +17,7 @@
  *   The order to be pushed.
  */
 function commerce_google_analytics_build_push_array($order) {
-  $push = array();
+
   // Make sure the order is an order object.
   if (!($order instanceof EntityMetadataWrapper)) {
     $order = entity_metadata_wrapper('commerce_order', $order);
@@ -81,15 +81,64 @@ function commerce_google_analytics_build_push_array($order) {
   // Build the transaction array.
   $transaction = array(
     'order_id' => $order->order_id->value(),
-    'store' => variable_get('site_name', 'Commerce Shop'),
+    'affiliation' => variable_get('site_name', 'Commerce Shop'),
     'total' => commerce_currency_amount_to_decimal($order->commerce_order_total->amount->value(), $order->commerce_order_total->currency_code->value()),
-    'tax' => $tax_sum,
-    'shipping' => $shipping,
+    'total_tax' => $tax_sum,
+    'total_shipping' => $shipping,
     'city' => (isset($address['locality']) ? $address['locality'] : ''),
-    'state' => (isset($address['administrative_area']) ? $address['administrative_area'] : ''),
+    'region' => (isset($address['administrative_area']) ? $address['administrative_area'] : ''),
     'country' => (isset($address['country']) ? $address['country'] : ''),
   );
-  return $transaction;
+  
+  // Loop through the products on the order.
+  $items = array();
+  foreach ($order->commerce_line_items as $line_item) {
+    $category = '';
+
+    // TODO: Add find a category for the line item.
+    if (empty($category)) {
+      $category = t('No category');
+    }
+
+    $properties = $line_item->getPropertyInfo();
+    if (isset($properties['commerce_product']) && !empty($line_item->value()->commerce_product[LANGUAGE_NONE][0]['product_id'])) {
+      // Build the item arguments.
+      $item = array(
+        'order_id' => $order->order_id->value(),
+        'sku' => $line_item->commerce_product->sku->value(),
+        'name' => $line_item->commerce_product->title->value(),
+        'category' => $category,
+        'price' => commerce_currency_amount_to_decimal($line_item->commerce_unit_price->amount->value(), $line_item->commerce_unit_price->currency_code->value()),
+        'quantity' => (int) $line_item->quantity->value(),
+      );
+    }
+    else {
+      $item = array(
+        'order_id' => $order->order_id->value(),
+        'sku' => $line_item->type->value(),
+        'name' => $line_item->line_item_label->value(),
+        'category' => $category,
+        'price' => commerce_currency_amount_to_decimal($line_item->commerce_unit_price->amount->value(), $line_item->commerce_unit_price->currency_code->value()),
+        'qty' => $line_item->quantity->value(),
+      );
+    }
+
+    // Allow modules to alter the item arguments.
+    $context = array(
+      'transaction' => $transaction,
+      'order' => $order,
+    );
+    drupal_alter('commerce_google_analytics_item', $item, $line_item, $context);
+
+    $items[] = $item;
+  }
+  
+  $push = array(
+    'trans' => $transaction,
+    'items' => $items,
+  );
+  
+  return $push;
 }
 /**
  * Callback for the rules action which creates the javascript.
