Skip to main content
Skip table of contents

Remote Data Sender (XML/JSON)

This plugin allows you to send form data to a third party application in the form of an HTTP(s) request depending on the answers given to form in an XML or JSON format.

To apply this plugin specify the following parameters:

  1. *Remote URL - Specify a third party application URL you would like to send the data to. Use the following format: https://remoteURL.com/.

  2. Logical Expression to Enable sending - Specify the logical expression that should be met to send the request. If this field is blank, the request will always be sent. Use Qx.Ay.Cz notation, where x is a question number, y is an answer option number and z is a column number.

  3. *Format - Select, whether data will be sent in JSON or XML format.

  4. *Data format - Select Compact or Full format. Compact format includes the response data only. Full format will output the full form structure (including unanswered questions) along with the response data.

  5. Choose version - You can specify whether to use the latest changes made to the XML/JSON exporting format or keep your current structure. Select one of the options from the dropdown list:

    • Use version 1 – uses the current version of the XML/JSON export structure.

    • Use version 2 – uses the changed version of the XML/JSON export structure.

    • Always use latest version - uses the latest version of the XML/JSON export structure (this option is set as default).

Versions of the Export Structure

We have made certain additions to the structure of the XML exported file in 2019. allowing users to choose between two versions of the export file formatting. 

The following was added to the version 2 of the format:

  1. For the File Upload type of questions, the following information is added about the file being uploaded:

    1. content type

    2. file size

    3. original filename

  2. The RDR request containing the rbrLink parameter (and if the link to RBRs has been made available for each responded in responses.xml) also gives each user a link to download an RBR in PDF format.

The plugins that were set before the introduction of versioning are using the version 1 by default. 

Example of the Plugin Setup

For this response, the exported files will have the following structure:

XML format

JSON format

These files contain the following tables:

  1. Respondent

    • RespondentID - ID of a respondent, unique for the xml file. Field type is integer, field length is 4 bytes, unsigned;

    • SurveyID - ID of a form/survey that this respondent was taking. Field type is integer, field length is 4 bytes, unsigned;

    • SurveyName - Name of a form/survey that this respondent was taking;

    • Completed - Indicates whether the respondent has finished completing the form/survey. 1 - the form/survey has been completed, 0 - it is partially completed by this respondent. Field type is byte, field length is 1 byte, unsigned;

    • SubmitDateTime- Date and time when the response was submitted. Field type is dateTime;

    • ResponseLabel - Text label for the response based on responses providedin the form/survey. Field type is string, field length is 1024.

  2. Response

  1. QuestionID - ID of the corresponding question. Field type is integer, filed length is 4 bytes, unsigned;

    • QuestionType - Type of the corresponding question;

    • CustomQuestionID - Custom Question identifier;

    • QuestionText - Text of the question;

    • Fields -  "Fields" array with all answer options/columns related to this question;

    • AnswerID - ID of the corresponding answer option. Field type is integer, field length is 4 bytes, unsigned;

    • AnswerType - Type of respective answer option in respective question; 

    • CustomAnswerID - Answer Identifier assigned by the form/survey administrator;

    • Value - Text value of a response;

    • Weight - Numeric value of the selected answer option as defined in the form/survey. Field type is decimal, may contain up to 16 numbers in total and up to 5 decimal points;

    • HasResponse - "True"/"False" field:

      • For choice questions (Pick one, Checkbox, Dropdown Box, Listbox, Rate along scale), HasResponse will be equal to "true" only for those answer options that were selected by the respondent;

      • For text questions (Single Line, Numeric Allocation, Multiline, Lookup, File Upload), HasResponse will be equal to "true" if there is data present in the given field;

      • For Matrix questions, HasResponse will be equal to "true" if a particular column contains data.

    • DataModelD - ID of Data Model associated with Object Lookup/Multiple Object Lookup question;

    • Object (only available for questions with type MULTIPLE_LOOKUP) - Object selected in the multiple lookup question;

    • ObjectID (only available for questions with type MULTIPLE_LOOKUP) - Unique identifier ob an object within the data model. The field type is a string, field length is 65535;

    • ObjectName (only available for questions with type MULTIPLE_LOOKUP) - Formatted name for selected object. The field type is a string, field length is 65535.

Errors Processing 

if there are multiple plugins set up in a form/survey, the requests generated by the plugins will be sent via separate queues. These queues are unique per User Identifier and remote URL.

Depending on the received errors codes, messages sending will be retried according to the following rules:

  • Code 500. Module retries to send a request after 1,5,25 min, then every 30 min for 3 hours, and then sends it to the error queue.

  • Codes 408,502,503,504. Module retries to send a request after 1, 5, 25 min, then every 30 min for 24 hours, and then sends it to the error queue.

  • Module retries to send exceptions without code (timeouts, etc.) after 1, 5, 25 min, then every 30 min for 24 hours.

  • Other (404,401) codes are logged as errors and module does not try to send a request again.

For more information, please refer to the following table:

HTTP Code(s)

1st Interval

2nd Interval

3rd Interval

4th Interval

4th Interval Duration

500 (Internal Server Error)

1 minute

5 minutes

25 minutes

30 minutes

3 hours

408 (Request Timeout)

1 minute

5 minutes

25 minutes

30 minutes

24 hours

502 (Bad Gateway)

1 minute

5 minutes

25 minutes

30 minutes

24 hours

503 (Service Unavailable)

1 minute

5 minutes

25 minutes

30 minutes

24 hours

504 (Gateway Timeout)

1 minute

5 minutes

25 minutes

30 minutes

24 hours

404 (Not Found)

Does not Resend

401 (Unauthorized)

Does not Resend

409 (Conflict)

Does not Resend

400 (Bad Request)

Does not Resend

All Other Valid HTTP Codes

Does not Resend

Exceptions without code (timeouts etc)

1 minute

5 minutes

25 minutes

30 minutes

24 hours

 The initial request should happen near real time and if a failure occurs, the retry attempts will wait according to the above. Each request that retries will block all other requests for the same endpoint and the same user that the form belongs to. If there is the same endpoint but different forms that were created by different users – requests will be blocked in separate queues.

  • Please note, that this plugin also works with the question and answer identifiers, so you can use them instead of question and answer numbers in plugin parameters.

  • The Remote Data Sender can only send data to URLs on HTTP ports 80 and 443, FTP port 21.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.