diff --git a/django/website/chn_spreadsheet/importer.py b/django/website/chn_spreadsheet/importer.py
index f47c3c5b2031eb00e7de7bee2bc00474b53876ba..6d4957142ea601cd481828c79f34ae11fc230122 100644
--- a/django/website/chn_spreadsheet/importer.py
+++ b/django/website/chn_spreadsheet/importer.py
@@ -117,9 +117,10 @@ class Importer(object):
             {}
         )
 
-    def save_rows(self, objects, data_type):
+    def save_rows(self, objects, item_type):
         for obj in objects:
-            transport.items.create(obj)
+            item = transport.items.create(obj)
+            transport.items.add_term(item['id'], 'item-types', item_type)
 
         return len(objects)
 
@@ -128,11 +129,12 @@ class Importer(object):
 
         file_format = profile.get('format')
         skip_header = profile.get('skip_header', False)
+        item_type = profile.get('type')
 
         rows = self.get_rows_iterator(fobject, file_format)
         items = self.process_rows(rows, profile['columns'], skip_header)
 
-        return self.save_rows(items, 'message')
+        return self.save_rows(items, item_type)
 
 
 class CellConverter(object):
diff --git a/django/website/chn_spreadsheet/migrations/0005_update_geopoll_config.py b/django/website/chn_spreadsheet/migrations/0005_update_geopoll_config.py
new file mode 100644
index 0000000000000000000000000000000000000000..605bd5182d42a62facfaede37d72d73f3e535a77
--- /dev/null
+++ b/django/website/chn_spreadsheet/migrations/0005_update_geopoll_config.py
@@ -0,0 +1,53 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+GEOPOLL_CONFIG = {
+    "label": "geopoll",
+    "name": "Geopoll",
+    "format": "excel",
+    "type": "question",
+    "columns": [
+        {
+            "name": "Province",
+            "type": "ignore",
+            "field": "ignore"
+        },
+        {
+            "name": "CreatedDate",
+            "type": "date",
+            "field": "timestamp",
+            "date_format": "%m/%d/%y"
+        },
+        {
+            "name": "AgeGroup",
+            "type": "ignore",
+            "field": "ignore"
+        },
+        {
+            "name": "QuestIO",
+            "type": "text",
+            "field": "body"
+        }
+    ],
+    "skip_header": 1
+}
+
+
+def update_geopoll_config(apps, schema_editor):
+    Profile = apps.get_model('chn_spreadsheet', 'SheetProfile')
+    Profile.objects.filter(label='geopoll').update(
+        profile=GEOPOLL_CONFIG)
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('chn_spreadsheet', '0004_add_rapidpro_config'),
+    ]
+
+    operations = [
+        migrations.RunPython(update_geopoll_config)
+    ]
diff --git a/django/website/chn_spreadsheet/migrations/0006_update_rapidpro_config.py b/django/website/chn_spreadsheet/migrations/0006_update_rapidpro_config.py
new file mode 100644
index 0000000000000000000000000000000000000000..be58c6eb2bf84559c5ac104f3d7b02ca57aa2bc3
--- /dev/null
+++ b/django/website/chn_spreadsheet/migrations/0006_update_rapidpro_config.py
@@ -0,0 +1,62 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+RAPIDPRO_CONFIG = {
+    "label": "rapidpro",
+    "name": "RapidPro",
+    "format": "excel",
+    "type": "rumor",
+    "columns": [
+        {
+            "name": "Phone",
+            "type": "ignore",
+            "field": "ignore"
+        },
+        {
+            "name": "Name",
+            "type": "ignore",
+            "field": "ignore"
+        },
+        {
+            "name": "Groups",
+            "type": "ignore",
+            "field": "ignore"
+        },
+        {
+            "name": "Last Seen",
+            "type": "date",
+            "field": "timestamp",
+            "date_format": "%m/%d/%y %H:%M:%S"
+        },
+        {
+            "name": "Rumors (Text) - DEY Say sample flow",
+            "type": "text",
+            "field": "body"
+        },
+        {
+            "name": "Channel",
+            "type": "ignore",
+            "field": "ignore"
+        }
+    ],
+    "skip_header": 1
+}
+
+
+def update_rapidpro_config(apps, schema_editor):
+    Profile = apps.get_model('chn_spreadsheet', 'SheetProfile')
+    Profile.objects.filter(label='rapidpro').update(profile=RAPIDPRO_CONFIG)
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('chn_spreadsheet', '0005_update_geopoll_config'),
+    ]
+
+    operations = [
+        migrations.RunPython(update_rapidpro_config)
+    ]
diff --git a/django/website/chn_spreadsheet/tests/geopoll_tests.py b/django/website/chn_spreadsheet/tests/geopoll_tests.py
index eb8a6dd7d8e9ff89ad115918b6bc5e45b9de97a5..097ea3ce4af888e6732b1de52506be1564493b53 100644
--- a/django/website/chn_spreadsheet/tests/geopoll_tests.py
+++ b/django/website/chn_spreadsheet/tests/geopoll_tests.py
@@ -27,3 +27,10 @@ def test_items_imported(importer):
     assert items[0]['body'] == "What  is  the  cuse  of  ebola?"
     assert items[0]['timestamp'] == pytz.utc.localize(
         datetime.datetime(2015, 5, 1))
+
+    item_types = transport.taxonomies.term_itemcount(
+        slug='item-types')
+
+    counts_per_item = {t['name']: t['count'] for t in item_types}
+
+    assert counts_per_item['question'] == num_saved
diff --git a/django/website/chn_spreadsheet/tests/importer_tests.py b/django/website/chn_spreadsheet/tests/importer_tests.py
index defcbc03b1474dadba3a66fed6bf3cc9de9aca46..c94b4653a9f2358ee869559f127d9f7ec4b3d57b 100644
--- a/django/website/chn_spreadsheet/tests/importer_tests.py
+++ b/django/website/chn_spreadsheet/tests/importer_tests.py
@@ -6,6 +6,8 @@ import pytz
 
 from django.utils.translation import ugettext as _
 
+import transport
+
 from ..importer import (
     Importer,
     SheetProfile, SheetImportException
@@ -300,3 +302,17 @@ def test_process_rows_ignores_empty_lines(importer):
     ]
 
     assert objects == expected_objects
+
+
+@pytest.mark.django_db
+def test_save_rows_creates_item_with_term(importer):
+    objects = [{'body': "Text", 'timestamp': datetime.datetime(2014, 7, 21)}]
+    assert importer.save_rows(objects, 'question') == 1
+
+    item_types = transport.taxonomies.term_itemcount(
+        slug='item-types')
+
+    counts_per_item = {t['name']: t['count'] for t in item_types}
+
+    assert counts_per_item['question'] == 1
+    assert counts_per_item['rumor'] == 0
diff --git a/django/website/chn_spreadsheet/tests/rapidpro_tests.py b/django/website/chn_spreadsheet/tests/rapidpro_tests.py
index bd9518039d243c5777479d878d244129846d3089..cf26497c4b5638f6c23af22e67dc4fb4cdcd137d 100644
--- a/django/website/chn_spreadsheet/tests/rapidpro_tests.py
+++ b/django/website/chn_spreadsheet/tests/rapidpro_tests.py
@@ -27,3 +27,10 @@ def test_items_imported(importer):
     assert items[0]['body'] == "That there is a special budget to give money to the family of each dead in Liberia since the Ebola outbreak."
     assert items[0]['timestamp'] == pytz.utc.localize(
         datetime.datetime(2015, 4, 19, 21, 35, 20))
+
+    item_types = transport.taxonomies.term_itemcount(
+        slug='item-types')
+
+    counts_per_item = {t['name']: t['count'] for t in item_types}
+
+    assert counts_per_item['rumor'] == num_saved
diff --git a/django/website/hid/migrations/0004_item_types.py b/django/website/hid/migrations/0004_item_types.py
new file mode 100644
index 0000000000000000000000000000000000000000..e978ec107ee0a4477197a1be1947b317a4abf254
--- /dev/null
+++ b/django/website/hid/migrations/0004_item_types.py
@@ -0,0 +1,36 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+def create_item_types(apps, schema_editor):
+    Taxonomy = apps.get_model('taxonomies', 'Taxonomy')
+    taxonomy = Taxonomy(name="Item Types", slug="item-types")
+    taxonomy.save()
+
+    item_types = (
+        ("question", "Question"),
+        ("rumor", "Rumor"),
+    )
+
+    Term = apps.get_model('taxonomies', 'Term')
+    new_terms = [Term(
+        name=name,
+        long_name=long_name,
+        taxonomy=taxonomy) for name, long_name in item_types]
+
+    db_alias = schema_editor.connection.alias
+    Term.objects.using(db_alias).bulk_create(new_terms)
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('hid', '0003_rename_question_type_terms'),
+        ('taxonomies', '0002_auto_20150716_2018')
+    ]
+
+    operations = [
+        migrations.RunPython(create_item_types)
+    ]
diff --git a/django/website/hid/tables.py b/django/website/hid/tables.py
index b8914a7bb290ee493e4db7851056765dc60db00e..3a19116eb1943545c8aed8e3a8ac6ff585b7844b 100644
--- a/django/website/hid/tables.py
+++ b/django/website/hid/tables.py
@@ -31,7 +31,7 @@ class ItemTable(tables.Table):
     body = tables.Column(verbose_name=_('Message'))
     category = tables.TemplateColumn(
         template_name='hid/categories_column.html',
-        accessor='terms.0.name',
+        accessor='terms'
     )
 
     def __init__(self, *args, **kwargs):
@@ -40,9 +40,13 @@ class ItemTable(tables.Table):
 
     def render_category(self, record, value):
         Template = loader.get_template('hid/categories_column.html')
+        selected = []
+        for term in value:
+            if term['taxonomy'] == 'ebola-questions':
+                selected.append(term['name'])
         ctx = {
             'categories': self.categories,
-            'category': value,
+            'selected': selected,
             'record': record
         }
 
diff --git a/django/website/hid/templates/hid/categories_column.html b/django/website/hid/templates/hid/categories_column.html
index 5a224cdbc741390bbecf5a403d3e44a79aadbce8..d4ecaf522b7dc6efe35e0c00764786c1c6ff86ad 100644
--- a/django/website/hid/templates/hid/categories_column.html
+++ b/django/website/hid/templates/hid/categories_column.html
@@ -1,10 +1,10 @@
 {% if categories %}
 <select name="category-{{ record.id }}" class="form-control">
-        {% if not category %}
+        {% if not selected %}
             <option value="" selected="selected">---------</option>
         {% endif %}
         {% for cat in categories %}
-        <option value="{{ cat.0 }}"{% if category == cat.0 %} selected="selected"{% endif %}>{{ cat.1 }}</option>
+        <option value="{{ cat.0 }}"{% if cat.0 in selected %} selected="selected"{% endif %}>{{ cat.1 }}</option>
         {% endfor %}
     </select>
 {% endif %}
diff --git a/django/website/transport/tests/taxonomy_list_tests.py b/django/website/transport/tests/taxonomy_list_tests.py
index 6bab5ee449aecae78379d3d692bb565d00292e71..50f96258fa013daff6ebe54f1ed4f2993647c3aa 100644
--- a/django/website/transport/tests/taxonomy_list_tests.py
+++ b/django/website/transport/tests/taxonomy_list_tests.py
@@ -11,6 +11,6 @@ def test_list_taxonomies_returns_taxonomies():
 
     taxonomies = transport.taxonomies.list()
 
-    assert len(taxonomies) == 1
-    [taxonomy] = taxonomies
-    assert taxonomy['name'] == 'Ebola Questions'
+    names = [t['name'] for t in taxonomies]
+
+    assert taxonomy.name in names