diff --git a/indra/newview/llpanelclassified.cpp b/indra/newview/llpanelclassified.cpp
index 49614348d03ea44dca4dbe383139de4aaeaed2b4..03c4da93c4cde6e78d5faff3fe1ffd5ccbc5c9e7 100644
--- a/indra/newview/llpanelclassified.cpp
+++ b/indra/newview/llpanelclassified.cpp
@@ -1548,17 +1548,25 @@ void LLPanelClassifiedInfo::stretchSnapshot()
 	mSnapshotStreched = true;
 }
 
-void LLPanelClassifiedInfo::sendClickMessage(const std::string& type)
+// static
+// *TODO: move out of the panel
+void LLPanelClassifiedInfo::sendClickMessage(
+		const std::string& type,
+		bool from_search,
+		const LLUUID& classified_id,
+		const LLUUID& parcel_id,
+		const LLVector3d& global_pos,
+		const std::string& sim_name)
 {
 	// You're allowed to click on your own ads to reassure yourself
 	// that the system is working.
 	LLSD body;
 	body["type"]			= type;
-	body["from_search"]		= fromSearch();
-	body["classified_id"]	= getClassifiedId();
-	body["parcel_id"]		= getParcelId();
-	body["dest_pos_global"]	= getPosGlobal().getValue();
-	body["region_name"]		= getSimName();
+	body["from_search"]		= from_search;
+	body["classified_id"]	= classified_id;
+	body["parcel_id"]		= parcel_id;
+	body["dest_pos_global"]	= global_pos.getValue();
+	body["region_name"]		= sim_name;
 
 	std::string url = gAgent.getRegion()->getCapability("SearchStatTracking");
 	llinfos << "Sending click msg via capability (url=" << url << ")" << llendl;
@@ -1566,6 +1574,18 @@ void LLPanelClassifiedInfo::sendClickMessage(const std::string& type)
 	LLHTTPClient::post(url, body, new LLClassifiedClickMessageResponder());
 }
 
+
+void LLPanelClassifiedInfo::sendClickMessage(const std::string& type)
+{
+	sendClickMessage(
+		type,
+		fromSearch(),
+		getClassifiedId(),
+		getParcelId(),
+		getPosGlobal(),
+		getSimName());
+}
+
 void LLPanelClassifiedInfo::onMapClick()
 {
 	sendClickMessage("map");
diff --git a/indra/newview/llpanelclassified.h b/indra/newview/llpanelclassified.h
index 04dea00e5f4abdd25bfe45d696aec0c7cda3c664..31f585e9cc567e6727b302992cb065012b683298 100644
--- a/indra/newview/llpanelclassified.h
+++ b/indra/newview/llpanelclassified.h
@@ -266,6 +266,14 @@ class LLPanelClassifiedInfo : public LLPanel, public LLAvatarPropertiesObserver
 		S32 profile,
 		bool from_new_table);
 
+	static void sendClickMessage(
+			const std::string& type,
+			bool from_search,
+			const LLUUID& classified_id,
+			const LLUUID& parcel_id,
+			const LLVector3d& global_pos,
+			const std::string& sim_name);
+
 	void setExitCallback(const commit_callback_t& cb);
 
 	void setEditClassifiedCallback(const commit_callback_t& cb);
diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp
index 59642c6a67894d16d305aca76de343d005279890..f0860e70275dc7cfeaddc7d60d95385483243996 100644
--- a/indra/newview/llpanelpicks.cpp
+++ b/indra/newview/llpanelpicks.cpp
@@ -578,7 +578,11 @@ void LLPanelPicks::onClickTeleport()
 	if(pick_item)
 		pos = pick_item->getPosGlobal();
 	else if(c_item)
+	{
 		pos = c_item->getPosGlobal();
+		LLPanelClassifiedInfo::sendClickMessage("teleport", false,
+			c_item->getClassifiedId(), LLUUID::null, pos, LLStringUtil::null);
+	}
 
 	if (!pos.isExactlyZero())
 	{
@@ -597,7 +601,11 @@ void LLPanelPicks::onClickMap()
 	if (pick_item)
 		pos = pick_item->getPosGlobal();
 	else if(c_item)
+	{
+		LLPanelClassifiedInfo::sendClickMessage("map", false,
+			c_item->getClassifiedId(), LLUUID::null, pos, LLStringUtil::null);
 		pos = c_item->getPosGlobal();
+	}
 
 	LLFloaterWorldMap::getInstance()->trackLocation(pos);
 	LLFloaterReg::showInstance("world_map", "center");