diff --git a/homeassistant/components/datadog/__init__.py b/homeassistant/components/datadog/__init__.py
index b5b7664f8b02944f7ed4d3f779d0b7af35847164..5d3aae3de2034f23ce56b324e1ff104dfa9a2bdf 100644
--- a/homeassistant/components/datadog/__init__.py
+++ b/homeassistant/components/datadog/__init__.py
@@ -82,6 +82,7 @@ def setup(hass, config):
         for key, value in states.items():
             if isinstance(value, (float, int)):
                 attribute = f"{metric}.{key.replace(' ', '_')}"
+                value = int(value) if isinstance(value, bool) else value
                 statsd.gauge(attribute, value, sample_rate=sample_rate, tags=tags)
 
                 _LOGGER.debug("Sent metric %s: %s (tags: %s)", attribute, value, tags)
diff --git a/tests/components/datadog/test_init.py b/tests/components/datadog/test_init.py
index 9ba64bb43ff3a235995d25a57daba05736de2e13..da4076944d0389c03348e39d5222b1896e43cf6c 100644
--- a/tests/components/datadog/test_init.py
+++ b/tests/components/datadog/test_init.py
@@ -134,7 +134,7 @@ class TestDatadog(unittest.TestCase):
 
         valid = {"1": 1, "1.0": 1.0, STATE_ON: 1, STATE_OFF: 0}
 
-        attributes = {"elevation": 3.2, "temperature": 5.0}
+        attributes = {"elevation": 3.2, "temperature": 5.0, "up": True, "down": False}
 
         for in_, out in valid.items():
             state = mock.MagicMock(
@@ -145,9 +145,10 @@ class TestDatadog(unittest.TestCase):
             )
             handler_method(mock.MagicMock(data={"new_state": state}))
 
-            assert mock_client.gauge.call_count == 3
+            assert mock_client.gauge.call_count == 5
 
             for attribute, value in attributes.items():
+                value = int(value) if isinstance(value, bool) else value
                 mock_client.gauge.assert_has_calls(
                     [
                         mock.call(