diff --git a/src/switch_ivr_originate.c b/src/switch_ivr_originate.c
index 0042f5b472..12cebbbf9b 100644
--- a/src/switch_ivr_originate.c
+++ b/src/switch_ivr_originate.c
@@ -826,19 +826,6 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess
 				peer_channels[i] = switch_core_session_get_channel(new_session);
 				switch_channel_set_flag(peer_channels[i], CF_ORIGINATING);
 				
-				if (var_event) {
-					switch_event_t *event;
-					switch_event_header_t *header;
-					/* install the vars from the {} params */
-					for (header = var_event->headers; header; header = header->next) {
-						switch_channel_set_variable(peer_channels[i], header->name, header->value);
-					}
-					switch_event_create(&event, SWITCH_EVENT_CHANNEL_ORIGINATE);
-					switch_assert(event);
-					switch_channel_event_set_data(peer_channels[i], event);
-					switch_event_fire(&event);
-				}
-
 				if (vdata) {
 					char *var_array[1024] = { 0 };
 					int var_count = 0;
@@ -857,6 +844,19 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess
 					}
 				}
 				
+				if (var_event) {
+					switch_event_t *event;
+					switch_event_header_t *header;
+					/* install the vars from the {} params */
+					for (header = var_event->headers; header; header = header->next) {
+						switch_channel_set_variable(peer_channels[i], header->name, header->value);
+					}
+					switch_event_create(&event, SWITCH_EVENT_CHANNEL_ORIGINATE);
+					switch_assert(event);
+					switch_channel_event_set_data(peer_channels[i], event);
+					switch_event_fire(&event);
+				}
+
 				if (!table) {
 					table = &originate_state_handlers;
 				}