Use code to automatically fill the form of a content type
You need to do something similar to what you do to set the body of the note for each of your additional field (City, Country, Event Date, Duration, Email Address). The exact data structure for each filed depends on its type.

The general pattern is

$node-&gt;{$field_machine_name}[$language][0] = array(...);


The hard part if figuring the content of the array(...) which is the value of the field. The value of a field is actually always an associative array. Its keys (also called columns) depend on the type of the field. A text field, for instance, as only one value key/column. A taxonomy term reference field has also only one key/column, but named tid.

For instance your city and duration field are a simple text fields whose machine names are field_location and field_duration you can set their values with

$node-&gt;field_location['und'][0] =  array('value' =&gt; 'Oxford');
$node-&gt;field_duration['und'][0] =  array('value' =&gt; '2');


You country field is a Taxonomy Term Reference field, its value can be set with

$node-&gt;field_country['und'][0] = array('tid' =&gt; 1);


Where 1 is the ID of a term in the proper taxonomy vocabulary.

If you were using an single address field name field_location to store the location, the code should be something like

$node-&gt;field_location['und'][0] = array(
  'country' =&gt; 'GB',
  'locality' =&gt;  'Oxford',
);


The structure to set a date field depends on the date format. If the field uses the ISO format, you can set it with something like

$node-&gt;field_date['und'][0] =  array(
  // The start date.
  'value' =&gt; '2014-04-02T10:00:00',
  // The end date.
  'value2' =&gt; '2014-04-02T11:00:00',
);


To discover the structure of a field, I suggest to use the Devel module. It provides a devel tab on node that let you explore the structure of the $node object for an existing node. You can also check the hook_field_schema() implementation of the module defining the field type.