diff --git a/modules/radar/radar_event_ical/radar_event_ical.module b/modules/radar/radar_event_ical/radar_event_ical.module
index 0ccc0a13596846049d2a8cc72c0eb95163377fbb..f1d2fb7cc513fb3c688d625db90a7eb643c895af 100644
--- a/modules/radar/radar_event_ical/radar_event_ical.module
+++ b/modules/radar/radar_event_ical/radar_event_ical.module
@@ -122,4 +122,47 @@ function radar_event_ical_date_ical_export_raw_event_alter(&$event, $view, $cont
   if (isset($event['rrule'])) {
     unset($event['rrule']);
   }
+
+  // Add LOCATION
+  // Only one location is valid in iCal. We join on the first field_offline.
+  if (!empty($context['row']->field_field_address)) {
+    $location_html = render($context['row']->field_field_address[0]['rendered']);
+    $location_array = [];
+    preg_match_all("'<[^>]*>(.*?)</[^>]*>'si", $location_html, $location_array);
+    if (!empty($location_array)) {
+      foreach ($location_array[0] as $delta => $row) {
+        $location_array[0][$delta] = strip_tags($row);
+      }
+      $event['location'] = implode(', ', $location_array[0]);
+    }
+  }
+
+  // Add GEO.
+  if (
+    !empty($context['row']->field_field_map)
+    && $context['row']->field_field_map[0]['raw']['geo_type'] == 'point'
+  ) {
+    $event['geo']['lat'] = $context['row']->field_field_map[0]['raw']['lat'];
+    $event['geo']['lon'] = $context['row']->field_field_map[0]['raw']['lon'];
+  }
+
+  // Add STATUS.
+  if (!empty($context['row']->field_field_event_status)) {
+    $event['status'] = strtoupper(render($context['row']->field_field_event_status[0]['rendered']));
+  }
+
+}
+
+/**
+ * Implements hook_ical_date_ical_export_vevent_alter().
+ */
+function radar_event_ical_date_ical_export_vevent_alter(&$vevent, $view, $event) {
+  // Location is already set.
+  // Add GEO and STATUS.
+  if (!empty($event['geo'])) {
+    $vevent->setGeo($event['geo']['lat'], $event['geo']['lon']);
+  }
+  if (!empty($event['status'])) {
+    $vevent->setStatus($event['status']);
+  }
 }