diff --git a/src/Makefile.am b/src/Makefile.am
index 583e533..55a2d06 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -20,11 +20,13 @@
 	$(SDBUSPLUS_LIBS) \
 	$(PHOSPHOR_DBUS_INTERFACES_LIBS) \
 	$(PHOSPHOR_LOGGING_LIBS) \
+	$(PHOSPHOR_SNMP_LIBS) \
 	-lstdc++fs
 phosphor_dbus_monitor_CXXFLAGS = \
 	$(SDBUSPLUS_CFLAGS) \
 	$(PHOSPHOR_DBUS_INTERFACES_CFLAGS) \
-	$(PHOSPHOR_LOGGING_CFLAGS)
+	$(PHOSPHOR_LOGGING_CFLAGS) \
+	$(PHOSPHOR_SNMP_CFLAGS)
 
 BUILT_SOURCES = generated.hpp
 CLEANFILES = generated.hpp
diff --git a/src/snmp_trap.cpp b/src/snmp_trap.cpp
index 06e8b18..27b8133 100644
--- a/src/snmp_trap.cpp
+++ b/src/snmp_trap.cpp
@@ -1,14 +1,55 @@
 #include "snmp_trap.hpp"
+#include <snmp.hpp>
+#include <snmp_notification.hpp>
+#include <phosphor-logging/log.hpp>
+#include <phosphor-logging/elog.hpp>
+#include <phosphor-logging/elog-errors.hpp>
+#include <xyz/openbmc_project/Logging/Entry/server.hpp>
+#include <xyz/openbmc_project/Common/error.hpp>
 namespace phosphor
 {
 namespace dbus
 {
 namespace monitoring
 {
+using namespace phosphor::logging;
+using namespace sdbusplus::xyz::openbmc_project::Logging::server;
+using namespace phosphor::network::snmp;
+using InternalFailure =
+    sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure;
+
+static constexpr auto entry = "xyz.openbmc_project.Logging.Entry";
+
 void ErrorTrap::trap(sdbusplus::message::message& msg) const
 {
-    // TODO openbmc/openbmc#3059
-    // TODO: Send trap to SNMP to be added after phoshpor-snmp is merged
+    sdbusplus::message::object_path path;
+    msg.read(path);
+    PathInterfacesAdded intfs;
+    msg.read(intfs);
+    auto it = intfs.find(entry);
+    if (it == intfs.end())
+    {
+        return;
+    }
+    auto& propMap = it->second;
+    auto errorID = propMap.at("Id").get<uint32_t>();
+    auto timestamp = propMap.at("Timestamp").get<uint64_t>();
+    auto sev = propMap.at("Severity").get<std::string>();
+    auto isev = static_cast<uint8_t>(Entry::convertLevelFromString(sev));
+    auto message = propMap.at("Message").get<std::string>();
+    try
+    {
+        sendTrap<OBMCErrorNotification>(errorID, timestamp, isev, message);
+    }
+    catch (const InternalFailure& e)
+    {
+        log<level::INFO>(
+            "Failed to send SNMP trap",
+            phosphor::logging::entry("ERROR_ID=%d", errorID),
+            phosphor::logging::entry("TIMESTAMP=%llu", timestamp),
+            phosphor::logging::entry("SEVERITY=%s", sev.c_str()),
+            phosphor::logging::entry("MESSAGE=%s", message.c_str()));
+    }
 }
 } // namespace monitoring
 } // namespace dbus
