diff --git a/apps/app_dial.c b/apps/app_dial.c
index 9f00347a77..5658e9127e 100644
--- a/apps/app_dial.c
+++ b/apps/app_dial.c
@@ -168,6 +168,8 @@ static char *descrip =
 "           You cannot use any additional action post answer options in conjunction\n"
 "           with this option. Also, pbx services are not run on the peer (called) channel,\n"
 "           so you will not be able to set timeouts via the TIMEOUT() function in this macro.\n"
+"           Be aware of the limitations that macros have, specifically with regards to use of\n"
+"           the WaitExten application. For more information, see the documentation for Macro()\n"
 "    n    - This option is a modifier for the screen/privacy mode. It specifies\n"
 "           that no introductions are to be saved in the priv-callerintros\n"
 "           directory.\n"
diff --git a/apps/app_macro.c b/apps/app_macro.c
index bbef7683a3..f1d87b3540 100644
--- a/apps/app_macro.c
+++ b/apps/app_macro.c
@@ -42,6 +42,10 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 /* special result value used to force macro exit */
 #define MACRO_EXIT_RESULT 1024
 
+#define WAITEXTENWARNING "Use of the application WaitExten within a macro will not function as expected.\n" \
+	"Please use the Read application in order to read DTMF from a channel currently\n" \
+	"executing a macro.\n"
+
 static char *descrip =
 "  Macro(macroname,arg1,arg2...): Executes a macro using the context\n"
 "'macro-<macroname>', jumping to the 's' extension of that context and\n"
@@ -61,20 +65,23 @@ static char *descrip =
 "         Asterisk to crash earlier than this limit. It is advised that if you\n"
 "         need to deeply nest macro calls, that you use the Gosub application\n"
 "         (now allows arguments like a Macro) with explict Return() calls\n"
-"         instead.\n";
+"         instead.\n"
+WAITEXTENWARNING;
 
 static char *if_descrip =
 "  MacroIf(<expr>?macroname_a[,arg1][:macroname_b[,arg1]])\n"
 "Executes macro defined in <macroname_a> if <expr> is true\n"
 "(otherwise <macroname_b> if provided)\n"
-"Arguments and return values as in application Macro()\n";
+"Arguments and return values as in application Macro()\n"
+WAITEXTENWARNING;
 
 static char *exclusive_descrip =
 "  MacroExclusive(macroname,arg1,arg2...):\n"
 "Executes macro defined in the context 'macro-macroname'\n"
 "Only one call at a time may run the macro.\n"
 "(we'll wait if another call is busy executing in the Macro)\n"
-"Arguments and return values as in application Macro()\n";
+"Arguments and return values as in application Macro()\n"
+WAITEXTENWARNING;
 
 static char *exit_descrip =
 "  MacroExit():\n"
diff --git a/main/pbx.c b/main/pbx.c
index 4c9ecb368e..b4e5f1189a 100644
--- a/main/pbx.c
+++ b/main/pbx.c
@@ -722,6 +722,9 @@ static struct pbx_builtin {
 	"  Options:\n"
 	"    m[(x)] - Provide music on hold to the caller while waiting for an extension.\n"
 	"               Optionally, specify the class for music on hold within parenthesis.\n"
+	"Warning: Attempting to use this application from within a Macro will not work as\n"
+	"desired. The Read() application is recommended as an alternative to WaitExten when\n"
+	"used from a macro\n"
 	"See Also: Playback(application), Background(application).\n"
 	},
 };