diff --git a/cmd/termmapper/main.go b/cmd/termmapper/main.go
index 006a009..37de2da 100644
--- a/cmd/termmapper/main.go
+++ b/cmd/termmapper/main.go
@@ -423,32 +423,54 @@
 
 	if data.MapID != "" {
 
-		serviceURL, err := url.Parse(data.ServiceURL)
+		queryServiceURL, err := url.Parse(data.ServiceURL)
 		if err != nil {
 			log.Warn().Err(err).Msg("Failed to join URL path")
 		}
 
 		// Use path.Join to normalize the path part
-		serviceURL.Path = path.Join(serviceURL.Path, data.MapID+"/query")
+		queryServiceURL.Path = path.Join(queryServiceURL.Path, data.MapID+"/query")
+		queryServiceURL.RawQuery = "dir=atob"
+
+		responseServiceURL, err := url.Parse(data.ServiceURL)
+		if err != nil {
+			log.Warn().Err(err).Msg("Failed to join URL path")
+		}
+
+		// Use path.Join to normalize the path part
+		responseServiceURL.Path = path.Join(responseServiceURL.Path, data.MapID+"/response")
 
 		html += `   <script>
   		<!-- activates/deactivates Mapper. -->
   		  
-       let data = {
+       let qdata = {
          'action'  : 'pipe',
-         'service' : '` + serviceURL.String() + `'
+         'service' : '` + queryServiceURL.String() + `'
        };
 
+       let rdata = {
+         'action'  : 'pipe',
+         'service' : '` + responseServiceURL.String() + `'
+       };
+
+
        function pluginit (p) {
          p.onMessage = function(msg) {
            if (msg.key == 'termmapper') {
              if (msg.value) {
-               data['job'] = 'add';
+               qdata['job'] = 'add';
              }
              else {
-               data['job'] = 'del';
+               qdata['job'] = 'del';
              };
-             KorAPlugin.sendMsg(data);
+             KorAPlugin.sendMsg(qdata);
+			 if (msg.value) {
+               rdata['job'] = 'add-after';
+             }
+             else {
+               rdata['job'] = 'del-after';
+             };  
+             KorAPlugin.sendMsg(rdata);
            };
          };
        };
diff --git a/cmd/termmapper/main_test.go b/cmd/termmapper/main_test.go
index 8030b37..530ab68 100644
--- a/cmd/termmapper/main_test.go
+++ b/cmd/termmapper/main_test.go
@@ -1167,7 +1167,7 @@
 
 			// Check that the HTML contains the expected service URL in the JavaScript
 			expectedJSURL := tt.expectedServiceURL + "/test-mapper/query"
-			assert.Contains(t, htmlContent, "'service' : '"+expectedJSURL+"'")
+			assert.Contains(t, htmlContent, "'service' : '"+expectedJSURL)
 
 			// Ensure it's still a valid HTML page
 			assert.Contains(t, htmlContent, "KoralPipe-TermMapper")
@@ -1225,7 +1225,7 @@
 
 	htmlContent := string(body)
 	expectedJSURL := "https://custom.example.com/api/termmapper/config-mapper/query"
-	assert.Contains(t, htmlContent, "'service' : '"+expectedJSURL+"'")
+	assert.Contains(t, htmlContent, "'service' : '"+expectedJSURL)
 }
 
 func TestServiceURLDefaults(t *testing.T) {
@@ -1288,7 +1288,7 @@
 
 	htmlContent := string(body)
 	expectedJSURL := "https://korap.ids-mannheim.de/plugin/termmapper/main-config-mapper/query"
-	assert.Contains(t, htmlContent, "'service' : '"+expectedJSURL+"'")
+	assert.Contains(t, htmlContent, "'service' : '"+expectedJSURL)
 }
 
 func TestGenerateKalamarPluginHTMLWithURLJoining(t *testing.T) {
@@ -1302,31 +1302,31 @@
 			name:       "Service URL without trailing slash",
 			serviceURL: "https://example.com/plugin/termmapper",
 			mapID:      "test-mapper",
-			expected:   "'service' : 'https://example.com/plugin/termmapper/test-mapper/query'",
+			expected:   "'service' : 'https://example.com/plugin/termmapper/test-mapper/query",
 		},
 		{
 			name:       "Service URL with trailing slash",
 			serviceURL: "https://example.com/plugin/termmapper/",
 			mapID:      "test-mapper",
-			expected:   "'service' : 'https://example.com/plugin/termmapper/test-mapper/query'",
+			expected:   "'service' : 'https://example.com/plugin/termmapper/test-mapper/query",
 		},
 		{
 			name:       "Map ID with leading slash",
 			serviceURL: "https://example.com/plugin/termmapper",
 			mapID:      "/test-mapper",
-			expected:   "'service' : 'https://example.com/plugin/termmapper/test-mapper/query'",
+			expected:   "'service' : 'https://example.com/plugin/termmapper/test-mapper/query",
 		},
 		{
 			name:       "Both with slashes",
 			serviceURL: "https://example.com/plugin/termmapper/",
 			mapID:      "/test-mapper",
-			expected:   "'service' : 'https://example.com/plugin/termmapper/test-mapper/query'",
+			expected:   "'service' : 'https://example.com/plugin/termmapper/test-mapper/query",
 		},
 		{
 			name:       "Complex map ID",
 			serviceURL: "https://example.com/api/v1/",
 			mapID:      "complex-mapper-name_123",
-			expected:   "'service' : 'https://example.com/api/v1/complex-mapper-name_123/query'",
+			expected:   "'service' : 'https://example.com/api/v1/complex-mapper-name_123/query",
 		},
 	}
 
