The Exact Forms Plus Batch Processor creates documents in the background. A Quickbase email notification sends the value of the Batch Processing Arguments field to the Batch Processor, and the arguments tell it which template to use, which records to process, and where to save the documents. This page lists every argument. To set up the notification, see Email notification setup.
The setup wizard builds the Batch Processing Arguments formula for you. Open the field's properties to see it, and edit it there to change what the batch run does.
How the arguments are written
The arguments are mostly the same parameters as the formula URL parameters of the buttons, written differently:
Separate parameters with spaces, not
&, and don't include a web address. For example:"clientid=Q1234" & " appid=" & AppID() &" msid=" & [Record ID#].Put values that can contain spaces in double quotes. In a formula, write the quotes as
\":& " fn=\"Purchase Order\"", or for a field value& " fn=\"" & [Customer Name] & "\"". A space outside quotes stops the batch run, and nothing is written back to your records.Parameter names aren't case-sensitive (
MSIDandmsidare the same), with one exception: writeclientid=in lowercase.Values are URL-decoded.
%20becomes a space, and a+becomes a space too. To pass a literal plus sign, write%2B. Don't use&in values; write it as%26.Use plain ASCII text. Accented letters and other non-ASCII characters are removed from the arguments before the run.
Give each parameter once. A parameter that appears twice stops the run.
A
=inside a value is fine, for example in a query.If the notification sends several lines (one per record changed, for example with Grid Edit), each line is processed as a separate run. See Email notification setup.
Required parameters
Parameter | What it does | Example |
|---|---|---|
| Your Quickbase Extensions client ID. Write the name in lowercase. |
|
| The app the arguments come from. |
|
| Sends the request to the Exact Forms Plus Batch Processor: |
|
| The template: the Record ID# of the Document Templates record, or the Quickbase Document Creation template ID with |
|
| The Document Templates table. Required for Word templates; leave it empty with |
|
| The table that holds the records to process (the master table). |
|
| Which records to process: one record ( |
|
| The batch configuration for these arguments. Required if your app's batch configurations are checked (see Batch configuration). The wizard fills it in. |
|
msid, tpid, faid, efpdte, docsize, and mrgdocsize must be numbers.
Parameters that work as on the buttons
These parameters do the same as on the buttons. For details and examples, follow the links to Exact Forms Plus formula URL parameters.
Purpose | Parameters | Batch notes |
|---|---|---|
| Without | |
| See Limits for how many records a run processes. | |
|
| |
| A watermark in the wrong format stops the run: use | |
| A merged document is created only when both | |
| ||
| ||
| With | |
Other |
| Not needed; the wizard leaves it empty. |
Not available in batch: test, preqbaction, and ver. stream is accepted but ignored, because nothing is opened in a browser.
Batch-only parameters
These parameters tell the Batch Processor where to report what happened.
Status field on the master record
Parameter | What it does | Example |
|---|---|---|
| A text field on the master record that gets the result of the run (see What the Batch Processor writes back). For a single-record setup, the wizard uses EFP Batch Trigger - Msg Field. |
|
Batch Processing, Logs, and Errors tables (bulk setup)
Parameter | What it does | Example |
|---|---|---|
| The Batch Processing table, which holds the record the run was started from. |
|
| The Record ID# of that Batch Processing record. |
|
| The record's key value, if the Batch Processing table's key field isn't Record ID#. Optional. |
|
| The Trigger Field on the Batch Processing record. It gets the result of the run. |
|
| The Batch Processing Logs table. Each run adds a log record. |
|
| The Batch Processing Errors table. |
|
| The Errors table field for the error message. |
|
| The Errors table's reference field to the Batch Processing table. |
|
| The value to put in |
|
| The Errors table field for the arguments of the failed run. |
|
Errors are logged to the Errors table only when all five err… parameters are given.
Examples
Single-record setup (master table)
Creates a PDF for the record that changed and saves it to EFP Document:
"clientid=Q1234"
& " appid=" & AppID()
&" tpdbid=" & [_DBID_DOCUMENT_TEMPLATES]
&" tpid=1"
& " msid=" & [Record ID#]
&" msdb=" & Dbid()
&" faid=51"
& " efpdte=52"
& " docfmt=pdf"
& " fn=\"EFP_Document\""
& " apptoken="
&" msdbefid=53"
& " type=efpbatch"
& " configid=a1b2c3d4…"Bulk setup (Batch Processing table)
Creates a document for every record in report 12 of the master table, logs the run, and merges the documents into one PDF on the Batch Processing record:
"clientid=Q1234"
& " appid=" & AppID()
&" tpdbid=" & [_DBID_DOCUMENT_TEMPLATES]
&" tpid=1"
& " msdb=" & [_DBID_PURCHASE_ORDERS]
&" msqid=12"
& " fn=\"EFPBatchFile\""
& " faid=51"
& " efpdte=52"
& " docfmt=pdf"
& " efpbdbid=" & Dbid()
&" efpbrid=" & [Record ID#]
&" efptfid=6"
& " efpadbid=" & [_DBID_BATCH_PROCESSING_LOGS]
&" errdbid=" & [_DBID_BATCH_PROCESSING_ERRORS]
&" errmsgfid=6"
& " errrfid=7"
& " errrfidval=" & [Record ID#]
&" errargsfid=8"
& " mrgdbid=" & Dbid()
&" mrgrid=" & [Record ID#]
&" mrgfa=9"
& " mrgfn=\"MergedFile\""
& " mrgdte=10"
& " apptoken="
&" configid=a1b2c3d4…"
& " type=efpbatch"Use your own field IDs, table aliases, and configuration ID. To send these arguments to the Batch Processor, see Email notification setup.
Batch configuration
When the setup wizard creates a batch setup, it also saves a batch configuration: a list of parameters and the values they're allowed to have, for example the file attachment field in faid. If batch configurations are checked for your app, every run is compared with the configuration given in configid:
Only parameters listed in the configuration are checked. Others aren't.
A listed parameter's value must match one of its allowed values exactly, including upper and lower case. A listed parameter that you leave out of the arguments passes.
If you change a checked value in the formula, add the new value in the Batch Configuration Portal too. See Manage batch configurations.
If the arguments don't match, the run stops and one of these messages is written back:
No ConfigID was passed in. This configuration requires a ConfigID.
Could not find a Config with ConfigID … - this configuration requires a ConfigID.
The following parameters do not match the configuration: […]
Encountered duplicate parameter […]
What the Batch Processor writes back
When a run finishes, the Batch Processor writes the result to the field in msdbefid (single-record setup) or efptfid (bulk setup), replacing Batch Execution Requested_ and the time that the Execute EFP Batch or Execute Batch button put there:
Result | Text written |
|---|---|
Success | PROCESS COMPLETED_ and the date and time, for example PROCESS COMPLETED_10/7/2026 2:15:03 PM |
Error | ERROR ENCOUNTERED_, the date and time, and the error message |
No records found | PROCESS COMPLETED_, the date and time, and NO RECORDS TO PROCESS. With an Errors table, an error record There were NO Master records returned to process is added and the field shows ERROR ENCOUNTERED_ instead. |
The time is in your app's time zone. Once the text no longer contains Requested, the button to start a run appears again.
In a bulk setup, each run also adds a record to the Batch Processing Logs table, with Status, Notes, Documents Processed, Start, and End (Run Duration is a formula). The Batch Processor writes these fields by name, so don't rename them. If error logging is set up, each error adds a Batch Processing Errors record with the Error Message and the Arguments.
Limits
Documents per run: your account sets the maximum number of documents a batch run creates. If the records to process are more than that, only the first ones are processed and the rest are skipped, with no error. Split large runs into smaller reports or queries if needed.
Records per embedded report: also set by your account. If an embedded report returns more, the run stops with ERROR: Maximium # of records for a subtable exceeded.
An error stops the run. Documents created for earlier records are kept, but the rest aren't created, and the log shows 0 documents processed.
If the batch run doesn't work
What you see | What to do |
|---|---|
The status field still says Batch Execution Requested_ long after the run should have finished | Either the email notification didn't send, or the arguments couldn't be read. For the notification, see If nothing happens. In the arguments, check that |
The following parameters do not match the configuration | A value in the arguments isn't an allowed value in the batch configuration. Fix the formula, or add the value in the Batch Configuration Portal (see Batch configuration). |
The template record was not found. … or The template table was not found. … | Check |
A clist is required. … | Add the fields to the template's clist with the EFP Configurator, or pass |
File Name error: … | A field used in |
ERROR CREATING WATERMARK IN DOCUMENT. … | Write |
Document NOT Saved to Amazon S3...Error: …, Error occured saving file to Dropbox. …, or Error occured saving file to REPOSITORY TABLE. … | The document couldn't be saved to that destination. Check the cloud storage or repository parameters. |
Fewer documents than records | The run reached your account's document limit (see Limits). |
If you still need help, open a technical support case.
See also: Email notification setup, Exact Forms Plus formula URL parameters, Set up Exact Forms Plus with the installation wizard.