diff --git a/Cargo.lock b/Cargo.lock
index 46007d537..3030d8317 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -737,7 +737,7 @@ dependencies = [
  "ansi_term",
  "atty",
  "bytes",
- "dap-types",
+ "debug_types",
  "futures",
  "getrandom 0.2.6",
  "httparse",
diff --git a/src/bin.rs b/src/bin.rs
index d570ea907..171840b4a 100644
--- a/src/bin.rs
+++ b/src/bin.rs
@@ -20,7 +20,6 @@ mod generate;
 mod indexer;
 mod integrate;
 mod lsp;
-mod dap;
 mod poke;
 mod publish;
 mod runnner;
diff --git a/src/frontend/cli.rs b/src/frontend/cli.rs
index d42f96e7d..0cbc70920 100644
--- a/src/frontend/cli.rs
+++ b/src/frontend/cli.rs
@@ -4,7 +4,6 @@ use std::io::{prelude::*, BufReader, Read};
 use std::path::PathBuf;
 use std::{env, process};
 
-use crate::dap::run_dap;
 use crate::generate::{
     self,
     changes::{Changes, TOMLEdition},
@@ -668,7 +667,7 @@ pub fn main() {
             }
         }
         Command::LSP => run_lsp(),
-        Command::DAP => match run_dap() {
+        Command::DAP => match super::dap::run_dap() {
             Ok(_) => (),
             Err(e) => {
                 println!("{}: {}", red!("error"), e);
diff --git a/src/dap/mod.rs b/src/frontend/dap.rs
similarity index 56%
rename from src/dap/mod.rs
rename to src/frontend/dap.rs
index db00131f1..56c3983a4 100644
--- a/src/dap/mod.rs
+++ b/src/frontend/dap.rs
@@ -3,18 +3,32 @@ use crate::types::Network;
 use clarity_repl::clarity::debug::dap::DAPDebugger;
 use std::path::PathBuf;
 
+#[cfg(feature = "telemetry")]
+use super::telemetry::{telemetry_report_event, DeveloperUsageDigest, DeveloperUsageEvent};
+
 pub fn run_dap() -> Result<(), String> {
     let mut dap = DAPDebugger::new();
     match dap.init() {
         Ok((manifest, expression)) => {
             let manifest_path = PathBuf::from(manifest);
-            let mut session = match load_session(&manifest_path, false, &Network::Devnet) {
-                Ok((session, _, _, _)) => session,
-                Err((_, e)) => {
-                    println!("{}: unable to load session: {}", red!("error"), e);
-                    std::process::exit(1);
-                }
-            };
+            let (mut session, project_manifest) =
+                match load_session(&manifest_path, false, &Network::Devnet) {
+                    Ok((session, _, project_manifest, _)) => (session, project_manifest),
+                    Err((_, e)) => {
+                        println!("{}: unable to load session: {}", red!("error"), e);
+                        std::process::exit(1);
+                    }
+                };
+
+            if project_manifest.project.telemetry {
+                #[cfg(feature = "telemetry")]
+                telemetry_report_event(DeveloperUsageEvent::DAPDebugStarted(
+                    DeveloperUsageDigest::new(
+                        &project_manifest.project.name,
+                        &project_manifest.project.authors,
+                    ),
+                ));
+            }
 
             for contract in &session.settings.initial_contracts {
                 dap.path_to_contract_id.insert(
diff --git a/src/frontend/mod.rs b/src/frontend/mod.rs
index 23bb30c49..ac917a0ef 100644
--- a/src/frontend/mod.rs
+++ b/src/frontend/mod.rs
@@ -1,3 +1,4 @@
 pub mod cli;
+pub mod dap;
 #[cfg(feature = "telemetry")]
 mod telemetry;
diff --git a/src/frontend/telemetry.rs b/src/frontend/telemetry.rs
index 2f968e7e9..079d32792 100644
--- a/src/frontend/telemetry.rs
+++ b/src/frontend/telemetry.rs
@@ -15,6 +15,7 @@ pub enum DeveloperUsageEvent {
     DevnetExecuted(DeveloperUsageDigest),
     ContractPublished(DeveloperUsageDigest, Network),
     DebugStarted(DeveloperUsageDigest, u32),
+    DAPDebugStarted(DeveloperUsageDigest),
     UnknownCommand(DeveloperUsageDigest, String),
 }
 
@@ -121,6 +122,15 @@ async fn send_event(event: DeveloperUsageEvent) {
                 "sessions": num_sessions,
             }),
         ),
+        DeveloperUsageEvent::DAPDebugStarted(digest) => (
+            "DAPDebugStarted",
+            json!({
+                "project_id": digest.project_id,
+                "team_id": digest.team_id,
+                "clarinet_version": clarinet_version,
+                "ci_mode": ci_mode,
+            }),
+        ),
         DeveloperUsageEvent::UnknownCommand(digest, command) => (
             "UnknownCommand",
             json!({