--- title: "Document Portal formula URL parameters" slug: "document-portal-formula-url-parameters" updated: 2026-10-09T18:05:45Z published: 2026-10-09T18:05:45Z canonical: "help.quickbase.com/document-portal-formula-url-parameters" --- > ## Documentation Index > Fetch the complete documentation index at: https://help.quickbase.com/llms.txt > Use this file to discover all available pages before exploring further. # Document Portal formula URL parameters ## Formula URL parameters—what's behind the button? Document Portal runs from a button field: the **Document Portal** button is a Formula - Text field with **Allow some HTML tags** selected, and the **Document Portal - Mobile** button is a Formula - URL field. The following list shows each URL parameter and a brief description. A few terms used on this page: - **Parent table** (sometimes called the *master* table)—the table the Document Portal button is on. Each parent record has its own set of files. - **Details table** (the child table)—the table that holds one record per file in Details mode. See [Details Mode](https://help.quickbase.com/quickbase-extensions/docs/en/details-mode-dependent-child-table). - **DBID**—a table's unique identifier. In a formula, *Dbid()* returns the current table's DBID, and a table alias such as *[_DBID_FILE_DETAILS]* returns another table's. See [Table aliases](https://help.quickbase.com/docs/table-aliases). - **FID**—a field ID, the number Quickbase gives each field. You can find it in the field's properties in Quickbase. **Record ID#** is always field 3. ### How the wizard writes the formula The installation wizard joins all parameters together and wraps them in *Base64Encode( )* after *request=*. When you add or change a parameter, put it **inside** *Base64Encode( )*, before the closing *);*. When *request=* is used, any parameter outside it is ignored. Parameter names are not case-sensitive. ``` var Text url = "https://..."  // your Document Portal server URL, created by the installation wizard & "request=" & Base64Encode( "clientid=Q1234" & "&appid=" & AppID() & "&dbid=" & Dbid() & "&cloud=s3" & "&msid=" & [Record ID#] & "&archivefiles=y"   // a parameter you added ); "Document Portal" ``` The samples in the table below show each parameter on its own, as it appears inside *Base64Encode( )*. The wizard also creates a **Document Portal - Mobile** button with the same parameters; change both. For a full example of a wizard formula, see [Add more columns to display](https://help.quickbase.com/quickbase-extensions/docs/en/add-more-columns-to-display). Parameters marked **(required)** must always be present. Others are required only in the case noted. If a required parameter is missing or not valid, the portal shows an error when it opens. See [Document Portal messages and troubleshooting](https://help.quickbase.com/quickbase-extensions/docs/en/document-portal-messages#launch). | **Parameter** | **Description** | **Sample in Formula** | | --- | --- | --- | | **Authorization parameters** **Indicates the client and application that is executing the Document Portal.** | | **clientid** (required) | The **Quickbase Extensions client identifier** assigned to your account during the setup process. | "clientid=Q1234" | | **appid** (required) | The Unique identifier for the Quickbase application. This is used to verify that your application is authorized to use Document Portal. | "&appid=" & AppID() | | | | | | **Cloud parameters** **Indicates which Cloud the Document Portal should use, and other properties about the Cloud.** | | **cloud** (required) | Denotes the cloud that should be used. The following are the currently supported options: - Amazon S3: **s3** (or **amazons3**) - Dropbox: **db** (or **dropbox**) - Egnyte: **eg** (or **egnyte**) - Quickbase: **qb** (or **quickbase**) For Amazon S3, Dropbox, and Egnyte, we use the connection details saved to your account by the installation wizard, stored encrypted. To set them up, see [Cloud provider overview](https://help.quickbase.com/quickbase-extensions/docs/en/cloud-provider-overview). To change them later, see [Manage saved credentials](https://help.quickbase.com/quickbase-extensions/docs/en/cloud-provider-overview#manage-saved-credentials). For Quickbase as a cloud, keep in mind that you must use **Details Mode**, which is discussed below. Quickbase cannot be utilized without details mode turned on. | "&cloud=s3" or "&cloud=db" or "&cloud=eg" or "&cloud=qb" | | **cloudbasedirectory** | The directory/folder/bucket that we should be storing files in. This is always the first part of the path of the file in the Cloud. If not given as a parameter, we use the directory we have on file. This parameter is to override the primary directory if needed. | "&cloudbasedirectory=testbucket" | | **cloudcustomkey** | This parameter allows you to set the structure of the file's key when stored in your cloud. This only applies for Clouds where the key is able to be set, which is currently only **Amazon S3**. For example, we default this in details mode to be: *{detailsdbid}_{detailsrecid}* So instead, if you wanted it to be the File Name + Today's date, you could set this to *{filename}_Today()* The following replacements are made: - {dbid} with the parent dbid (like the dbid in the dbid param) - {detailsdbid} with the details dbid (like the dbid in the detailsdbid param) - {detailsrecid} with the detail record's record id (details mode only) - {filename} with the name of the File We always end the key with the file's original extension, regardless of custom key. Note that in Details Mode, you must have the {detailsrecid} somewhere in your key. If you do not add it, we add it to the end of the key. | "&cloudcustomkey={filename}" (default for no details) or "&cloudcustomkey={detailsdbid}_{detailsrecid}" (default for details) or "&cloudcustomkey={filename}_" & ToText(Today()) (filename + today's date) | | | | **Parent table parameters** **Indicates the table and record that you are launching the Document Portal from** | | **dbid** (required) | Unique identifier for a Quickbase table. This is used to denote where the parent record lives that all of the files are effectively "connected" to. | "&dbid=" & Dbid() | | **msid** (required) | Record ID# (Field ID #3)—this allows us to relate the data back to your record properly. If the key value for the table is not Record ID# (Field ID #3), then also pass in **keyfid** and **keyval** as discussed below. | "&msid=" & [Record ID#] | | **keyval** | Used when the key field in the parent table is not Record ID#. If this is the case, then pass in the value of the Key Field. | "&keyval=" & [Project ID] | | **keyfid** | Used when the key field in the parent table is not Record ID#. If this is the case, then pass in the Field ID# of the key field. | "&keyfid=12" //where 12 is the Field ID of [Project ID] from above. | | **clouddirectory** | The value on the parent record which is the full directory path of where the files are stored. The **Document Portal** uses the passed in value as the directory during usage—so you may pass in some custom value if you would like the files to be stored in a specific location. For example, if you want to have the base directory of your files be "Project_RecordID#"—you can set this parameter to "&clouddirectory=Project_" & [Record ID#] If you do decide to change the Cloud Directory to something custom, we highly recommend keeping the Record ID# somewhere in it, as this forces the folder to be unique. | "&clouddirectory=" & [Cloud Directory] | | **clouddirectoryfid** (required for Amazon S3, Dropbox, and Egnyte, unless you pass **clouddirectory**) | The Field ID of the field that holds the Cloud Directory from the above parameter. Only pass this in if you would like the Document Portal to handle the cloud directory for you—otherwise, this may overwrite whatever custom directory you have input. Must be a normal text field. If you are using a custom Cloud Directory instead of letting us populate the Cloud Directory, you should remove this parameter entirely. | "&clouddirectoryfid=11" | | | | **Details mode parameters** **Indicates what mode the Document Portal should be in, and various details mode settings.** | | **details** | This denotes what mode you would like to use. The modes are as follows: - **No Details** (not recommended) - Stores the files only on the cloud. Only the parent table is used. Cannot store additional details with the files. - **Details** (recommended) - Stores the files in the cloud and on a child table in your application. Requires a details table (which is the child table.) Allows you to store additional data with each file as a record in Quickbase. If you would like to use **Details** mode, set this to **y** (the wizard writes **true**, which also works). You also have to use the details parameters below. See [Details Mode](https://help.quickbase.com/quickbase-extensions/docs/en/details-mode-dependent-child-table) and [Cloud Only / No Details Mode](https://help.quickbase.com/quickbase-extensions/docs/en/cloud-only-no-details-mode). > [!NOTE] > Note > > Quickbase can only be used in **Details Mode**. | "&details=y" or "&details=n" | | **detailsdbid** (required in Details mode) | The unique identifier of the Quickbase table that holds the file details. | "&detailsdbid=" & [_DBID_FILE_DETAILS] | | **detailskeyfid** | If the key field on the details table is **not** Record ID# (Field 3)—then please pass in the Key Field's Field ID here. | "&detailskeyfid=10" //where 10 is the Field ID# of the Key Field on the details table | | **detailsrelatedkeyfid** (required in Details mode) | The Relationship Field's Field ID on the Details table. | "&detailsrelatedkeyfid=8" | | **detailscloudkeyfid** | The Field ID of the field on the Details Table which holds the Cloud Key. Not needed when using Quickbase as a cloud. | "&detailscloudkeyfid=10" | | **detailsclist** | This is the list of fields and their settings to display in the portal. This allows you to change the behavior of the control. The fields are delimited by periods, and the field settings are delimited by colons. The field settings in order: **Field** **Width** **Read-Only** **Fill-Out** **Fill-Out Default Value** **Related Proxy Choice Field** **Required** **Hidden** You may leave any field setting blank if desired, but in order to get down the list, you must supply the colons before that setting. For example, if you only want to set Fill-Out to true for field 5, you would need **5:::true** **Field** is the Field ID# of the field on the Details table that you would like to display in the portal as a column. We support most field types—the major exception is File Attachments. Note - You can display Rich-Text fields in the portal, but they are always non-editable. We also cannot guarantee a good viewing experience based on the Rich-Text as it is place as-is in the portal. **Width** controls the default size of the column when you open up the portal. **Read-Only** stops the users from editing that field during edit. Keep in mind that if a field is non-editable on Quickbase, you cannot edit it in the portal regardless (like lookup fields, summary fields, formula fields) **Fill-Out** allows you to ask the user to enter in a value for that field when the user is uploading file(s). This can be leveraged to have the user enter in specific information that is needed on the record. **Fill-Out Default Value** allows you to set a default value for the **Fill-Out** form for this field. This is still changeable when the form pops up—but it is pre-filled so that if no changes are necessary, the flow can be sped up. If you are using **Fill-Out Default Value**, and it is possible that there are colons or periods in the value, wrap the default fill-out value like this: SearchAndReplace(SearchAndReplace([Field Name], ":", ";;;"), ".", ",,,") We automatically re-replace triple semicolons with a normal colon, and triple commas with a period. This is because colons and periods are used to delimit the clist. If you specify that the column is Read-Only but give it a Fill-Out Default Value, it still appears in the pop-up, but is not editable. If you specify a Fill-Out Default Value but set Fill-Out to false, it is not included in the pop-up, but the value is still set when uploading the detail record. **Related Proxy Choice Field** allows you to fill out relationships. The column field should be a reference field on some table, and then this proxy choice field would be some other field from that table that populates the drop-down. This mimics the way that choosing a related record on Quickbase works with proxy fields. Note that this does not give you unlimited choices—so on larger tables, you may not see the choice you would like. **Required** allows you to force your end-users to fill in the field while using fill-out. This also removes the "blank" option from multiple-choice fields. **Hidden** allows you to hide the column from the list. This can be used in conjunction with **Read-Only, Fill-Out, and Default Value** in order to effectively fill out details without showing them in the grid. Setting **Read-Only** to true, **Fill-Out** to false, and set a **Default Value** effectively sets the field on the record without showing anything in Document Portal. For step-by-step examples, see [Add more columns to display](https://help.quickbase.com/quickbase-extensions/docs/en/add-more-columns-to-display) and [Set default values for new records](https://help.quickbase.com/quickbase-extensions/docs/en/set-default-values-for-new-records). Some field types are always read-only in the portal; see [Add more columns to display](https://help.quickbase.com/quickbase-extensions/docs/en/add-more-columns-to-display). | "&detailsclist=8.19.20" -- include details fields 8, 19, and 20 or "&detailsclist=7:500:false:true:" & [Account Number] & ".19" --include details fields 7 and 19, where 7's column should be 500 px wide, is not read-only, should be filled out on new files uploaded, and is pre-set to the value of [Account Number] on the parent record when new files are uploaded. > [!NOTE] > Note > > If you are using the above example, and it is possible that there are colons or periods in the value, wrap the default fill-out value like this: > > *SearchAndReplace( SearchAndReplace( [Account Number], ":", ";;;"), ".", ",,,")* > > We automatically re-replace triple semicolons with a normal colon, and triple commas with a period. This is because colons and periods are used to delimit the clist. or "&detailsclist=8.42:::true:1:6" --include details fields 8 and 42, where 42 should be filled out on new files uploaded, and is pre-set to 1 (in this case it is a reference field, so the first record on that table), and the proxy field to show choices in the portal is field 6 on the related table | | **detailsfafid** (required with Quickbase as the cloud) | The Field ID of the field on the Details Table that holds the File Attachment. Currently only used with using Quickbase as a cloud. | "&detailsfafid=11" | | **detailsnamefid** | The Field ID of the field on the Details Table that holds the Name of the File Attachment. This is an optional field, however, if you would like to see the File Name in Quickbase, we suggest you use this. | "&detailsnamefid=7" | | **detailssizefid** | The Field ID of the field on the Details Table that holds the Size of the file in Kilobytes. This is an optional field, however, if you would like to see the Size of the file in Quickbase, we suggest you use this. Additionally, if you are using Quickbase as a cloud and you would like to see the File Size inside the Document Portal, you **must** use this. Quickbase does not return File Sizes natively, so we need to use a field to store them. | "&detailssizefid=8" | | **detailstypefid** | The Field ID of the field on the Details Table that holds the File's Type (extension). This is an optional field, however, if you would like to see the file type (extension) in Quickbase, we suggest you use this. Note - We grab the File Type from the file's name—so if you upload a file with no extension in the name, we cannot grab what type the file is. | "&detailstypefid=9" | | **detailsuploadedfid** | The Field ID of the field on the Details Table that holds whether a File has been uploaded or not. This is an optional field, however, if you would like this to be denoted in Quickbase as a checkbox, we suggest you use this. Note - We expect this to be a checkbox field, as we populate this with either a *1* or a *0* depending on if a file has been uploaded or not. | "&detailsuploadedfid=10" | | **detailspreserve** | When set to **y**, when files are deleted/archived, we do not clear out the values for the file's Key, Name, Size, or Type—only switching Uploaded to false. This allows a breadcrumb trail in Quickbase to show you which exact files may have been deleted/archived. See [Archive Mode](https://help.quickbase.com/quickbase-extensions/docs/en/archive-mode). | "&detailspreserve=y" | | **detailsdeleterecord** | Details mode only. When set to **y**, deleting a file in the portal also deletes its record in the details table. The **Confirm Delete** window then also says *NOTE: This will also delete the Quickbase records where the files are kept.* When not set, deleting a file keeps the record and clears its file information (see **detailspreserve**). In Archive Mode, the file is archived and the record is deleted. See [Archive Mode](https://help.quickbase.com/quickbase-extensions/docs/en/archive-mode). Defaults to **n**. | "&detailsdeleterecord=y" | | **detailsnosize** | Set to **y** to turn off the File Size column. Defaults to n. | "&detailsnosize=y" | | **grouplist** | This is the list of fields that you would like to use to display groups. The fields are delimited by periods. Grouping precedence is in left to right order. If a field in the list is not inside the **detailsclist**, then it is grouped without being displayed as a column. | "&grouplist=15.17" | | **livegrouping** | If set to **y**, this allows the user to change grouping conditions while using the Document Portal. You can drag a column header to the top of the grid to add it to the grouping. Defaults to n. | "&livegrouping=y" | | | | **Settings parameters** **Various settings for the Document Portal to fit your specific desired use-case.** | | **archivefiles** | If set to **y**, the Document Portal **archives** instead of **deleting**. This means that when a user attempts to delete files, instead of being deleted, they are put into a sub-folder for archived files in your cloud. This makes it so that you can "remove" files from the Document Portal, but they are still kept in your cloud storage. This option is unavailable for Quickbase as a Cloud—you can use file revisions on Quickbase itself for this purpose. Defaults to **false**. See [Archive Mode](https://help.quickbase.com/quickbase-extensions/docs/en/archive-mode). | "&archivefiles=y" | | **archivefolder** | When **archivefiles** is **on**, this is the sub-folder name we place the archived files into. Keep in mind that this is the **subfolder** from the folder we're placing files into already. For example, if we are placing the files into the folder **bxxxxxxxx_4,** the archive folder could be **bxxxxxxxx_4/Deleted** Defaults to "Deleted" | "&archivefolder=ArchivedFiles" | | **defaultsortfid** | If set to a Field ID that is used in the **detailsclist**, it automatically sorts by that column. If the Field ID is not included in the clist, it is ignored. If not supplied, the Document Portal defaults to sorting by File Name. | "&defaultsortfid=14" | | **pagesize** | Denotes the number of rows allowed on a single page in the file grid. Defaults to 20. | "&pagesize=15" | | **theme** | Sets the "theme" of the Document Portal. The current choices are as follows: - "light" - Portal Light, primarily blue. - "dark" - Portal Dark, primarily blue. - "studio" - Studio Light, primarily orange. - "studiodark" - Studio Dark, primarily orange. - "spread" - Spreadsheet Light, primarily green. - "spreaddark" - Spreadsheet Dark, primarily green. - "industrial" - Industrial Light, primarily gray. - "industrialdark" - Industrial Dark, primarily gray. - "rp" - Rebecca Purple Light, primarily purple. - "rpdark" - Rebecca Purple Dark, primarily purple. Defaults to "light". Users can change the theme in the Settings window; see [User interface](https://help.quickbase.com/quickbase-extensions/docs/en/user-interface#settings). | "&theme=dark" or "&theme=studio" or "&theme=rp" | | **hostedpreviews** | When set to **y**, previews are loaded through our server instead of directly from your cloud. Use this if previews fail for an Amazon S3 bucket whose name contains a period (.). Egnyte previews always load this way. Not used with Quickbase as the cloud. Previews loaded this way support common image types (such as JPG, PNG, and GIF) and PDF files; SVG files can't be previewed. Defaults to **n**. See [Previewing files](https://help.quickbase.com/quickbase-extensions/docs/en/document-portal-messages#preview). | "&hostedpreviews=y" | | **allowdelete** | This parameter allows you to set the default behavior of the Document Portal for the users—being able to delete/archive files. There are two parts to this: - y/n : if you give it **y**, it allows the users to delete/archive. If you give it **n**, it disallows users to delete/archive. However, the users can then change this in the settings while they are using the portal. So, if you wish to "lock" it to allow/disallow, - l (L) : if you also pass in **l**, it locks the portal to whatever you have set. We suggest either setting this to **y** or **nl**. The other options are supported, but there are few cases where you would want them. Defaults to **y**. Write the values in lowercase. See [End-user permissions](https://help.quickbase.com/quickbase-extensions/docs/en/end-user-permissions). | Default to no delete/archive, but allow users to turn delete/archive on: "&allowdelete=n" Default to delete/archive, but allow users to turn delete/archive off: "&allowdelete=y" Default to no delete/archive, and force this behavior: "&allowdelete=nl" Default to delete/archive, and force this behavior: "&allowdelete=yl" | | **allowupload** | This parameter allows you to set the default behavior of the Document Portal for the users—being able to upload files. There are two parts to this: - y/n : if you give it **y**, it allows the users to upload. If you give it **n**, it disallows users to upload. However, the users can then change this in the settings while they are using the portal. So, if you wish to "lock" it to allow/disallow, - l (L) : if you also pass in **l**, it locks the portal to whatever you have set. We suggest either setting this to **y** or **nl**. The other options are supported, but there are few cases where you would want them. Defaults to **y**. Write the values in lowercase. See [End-user permissions](https://help.quickbase.com/quickbase-extensions/docs/en/end-user-permissions). | Default to no upload, but allow users to turn upload on: "&allowupload=n" Default to upload, but allow users to turn upload off: "&allowupload=y" Default to no upload, and force this behavior: "&allowupload=nl" Default to upload, and force this behavior: "&allowupload=yl" | | **allowreplace** | This parameter allows you to set the default behavior of the Document Portal for the users—being able to replace/overwrite files. There are two parts to this: - y/n : if you give it **y**, it allows the users to replace/overwrite. If you give it **n**, it disallows users to replace/overwrite. However, the users can then change this in the settings while they are using the portal. So, if you wish to "lock" it to allow/disallow, - l (L) : if you also pass in **l**, it locks the portal to whatever you have set. We suggest either setting this to **y** or **nl**. The other options are supported, but there are few cases where you would want them. Defaults to **y**. Write the values in lowercase. See [End-user permissions](https://help.quickbase.com/quickbase-extensions/docs/en/end-user-permissions). | Default to no replace/overwrite, but allow users to turn replace/overwrite on: "&allowreplace=n" Default to allow replace/overwrite, but allow users to turn replace/overwrite off: "&allowreplace=y" Default to no replace/overwrite, and force this behavior: "&allowreplace=nl" Default to replace/overwrite, and force this behavior: "&allowreplace=yl" | | **allowedit** | This parameter allows you to set the default behavior of the Document Portal for the users—being able to edit file records in details mode. There are two parts to this: - y/n : if you give it **y**, it allows the users to edit. If you give it **n**, it disallows users to edit. However, the users can then change this in the settings while they are using the portal. So, if you wish to "lock" it to edit, - l (L) : if you also pass in **l**, it locks the portal to whatever you have set. We suggest either setting this to **y** or **nl**. The other options are supported, but there are few cases where you would want them. Defaults to **y**. Write the values in lowercase. See [End-user permissions](https://help.quickbase.com/quickbase-extensions/docs/en/end-user-permissions). | Default to disable editing, but allow users to turn editing on: "&allowedit=n" Default to allow editing, but allow users to turn editing off: "&allowedit=y" Default to no editing, and force this behavior: "&allowedit=nl" Default to allow editing, and force this behavior: "&allowedit=yl" | | **allowgridedit** | This parameter allows you to set the default behavior of the Document Portal for the users—being able to grid edit file records in details mode. There are two parts to this: - y/n : if you give it **y**, it allows the users to use grid edit. If you give it **n**, it disallows users to edit. However, the users can then change this in the settings while they are using the portal. So, if you wish to "lock" it to allow/disallow grid editing, - l (L) : if you also pass in **l**, it locks the portal to whatever you have set. We suggest either setting this to **y** or **nl**. The other options are supported, but there are few cases where you would want them. Defaults to **y**. Write the values in lowercase. See [End-user permissions](https://help.quickbase.com/quickbase-extensions/docs/en/end-user-permissions). | Default to no grid edit, but allow users to turn editing on: "&allowgridedit=n" Default to allow grid edit, but allow users to turn grid editing off: "&allowgridedit=y" Default to no grid editing, and force this behavior: "&allowgridedit=nl" Default to allow grid editing, and force this behavior: "&allowgridedit=yl" | | |