How to open a page without the #id parameter, even though the page has :id

Hi! I have a page in my Baserow app that uses a dynamic URL with an id parameter (e.g., /page-here:id). On that page, I have a form that populates based on the record ID.

However, I’d also like to open this same page without an ID parameter — for example, to use the form for creating a new record instead of editing an existing one.

I tried asking the ol’ ChatGPT for help, and it suggested I try adding a ?. When I tried making the parameter optional (using /page-here:id?), it returned an error. Though I am not surprised this didn’t work. I was just hoping for a quick answer…:sweat_smile:

Is there a way to allow this page to open without an ID (for creating a new record), or do I need to duplicate the page to handle that use case?

Hi @Iokaar,

In Baserow Application Builder you can use two types of parameters:

1. Path parameters

  • Location: They appear within the path of the URL, replacing variable parts of the endpoint.
    Example: GET /api/database/tables/{table_id}/rows/{table_id} is a path parameter.

  • Purpose: Identify specific resources. Each value determines what resource is being accessed (a particular table, a particular row, etc.).

  • Format: Usually they appear without special symbols, simply as segments of the path separated by /.

  • Requirement: They are mandatory for the request to make sense; if missing or incorrect, the server typically returns a 404 or 400 error.

  • Practical example in Baserow:

    GET https://api.baserow.io/api/database/tables/42/rows/
    

    Here 42 is the table ID and it is a path parameter.

2. Query parameters

  • Location: They are added to the end of the URL after the ? character and can be concatenated with &.
    Example: GET /api/database/tables/42/rows/?page=2&page_size=50&search=client.

  • Purpose: Modify or refine the operation on the already‑identified resource. They are used for pagination, filtering, sorting, searching, etc.

  • Format: key=value. Each pair represents an additional option for the request.

  • Requirement: They are optional; if omitted, the API applies default values (e.g., page 1, page size 25).

  • Practical example in Baserow:

    GET https://api.baserow.io/api/database/tables/42/rows/?page=2&page_size=20&search=sales
    
    • page=2 indicates the second page of results.

    • page_size=20 defines how many rows are returned per page.

    • search=sales filters rows whose content matches “sales”.


In the application’s page configuration (Page Settings), you’ll find both options. Below is a screenshot illustrating where they appear.

I am not very technical, so none of that made sense to me. :sweat_smile:

/page:id

which turns into

www.baserowpage.baserow.site/page1

I tried simply taking off the :id part at the end of the PAGE URL, but, surprise, page not found.

I tried just adding this custom URL in the menu element:

www.baserowpage.baserow.site/page

Returned page not found. :face_with_diagonal_mouth:

I will just clone the page and have two submission form pages…..

Sorry, perhaps the simplified answer is:

Yes, it can be done. There are two types of parameter configurations:

  1. Path parameters (:id)

  2. Query parameters (?id=123)

Both must be configured on the destination page. For example, in my application I have two pages: /home and /destination. Both the Path parameter (:id) and the Query parameter (id=) need to be set up on /destination because they require a user action on the source page before they can be used.

Steps to follow

a. In the settings of the /destination page (where you see the “URL” section), you will find two sections for configuring parameters—one for Path parameters and one for Query parameters. Add a Query parameter, for instance: id and Numeric (because the id will always be numeric).

b. Then go back to the /home page. On the button or form that triggers the Open Page event, you need to configure the Query Parameter id. Here you can insert the id value that you obtain (using the Create row action and selecting a value that comes from this Previous Action, {rowid} for example).

Results

The result with this will be /destination?id={rowid}, avoiding the need to have an id in order to access /destination.

Error in your example

I also notice another mistake in how you’re using the Path Parameter (:id).

Unless you know exactly what you want to achieve with a redirect, the basic usage should be as follows: /page/:id, because /page1 is not the same as /page/1. You can read more about this here: https://baserow.io/user-docs/application-builder-page-settings

To elaborate, here’s why I need both an ID path and a non-ID path:

As shown in the video below, users can submit information requests through a public form. These requests appear in a list, and when someone clicks the button on a specific request, it opens a form where the Request ID is automatically prefilled. This, in turn, creates a link on the request on the requests page that can be clicked and viewed by the person who submitted the request in the first place.

However, I also want users to be able to open that same form page without selecting a specific request — meaning the form would load blank, with no prefilled data. This way, people can click on the link in the MENU ELEMENT to open a blank form to fill out. Essentially, I want the same form page to work in two ways:

  1. With the Request ID prefilled when accessed from the request list.

  2. As an empty form when accessed directly from a separate link.

I’ve tried using a prefilled form link before using a prefill_ parameter, but couldn’t get it to work properly with the RECORD SELECTOR element.

Baserow pages take a long time to load….so it take awhile for the video to move on to the next step.

I think you didn’t try the Query Parameters, nor did you correct the Path Parameter I mentioned, and you also didn’t check the Links. I recommend reviewing them and responding to the proposed solutions; it’s a useful parameter for moving forward and getting feedback to resolve your issues. Regards.

Please note: when trying to add a menu element, it was still demanding an ID input, even with the query setup you mentioned — something you failed to include in your explanation. This made it seem like your explanation didn’t actually work, or that you didn’t understand what I was describing.

Please also be aware that not everyone knows code. I chose Baserow because it was supposed to be a no-code option. Still, you pasted a wall of API/database instructions that seemed completely irrelevant to what I was asking about — I was asking about application builder links (i.e. www.site.com). The second answer was slightly more understandable and relevant (thanks).

However, for future reference for anyone who finds this thread, here is a step-by-step guide:

Using One Form Page for Both Prefilled and Blank Submissions

How to Reuse the Same Form Page with or Without an ID Parameter

  1. Open page settings

  1. Fill out the settings like this:

  2. Select a link from the drop-down menu; it will look like this:
    Page Name /page-name/?id=# and will appear to require you to enter an id . However, you can leave the id input field blank. You can also pass an id parameter if needed. Just ensure that the page includes a data source linked to the table you want to pull or display records from.

I understand that the code in the first answer may have overwhelmed you. Fortunately, in your second attempt you were able to read the simplified second answer and apply what was explained about the query parameter (thanks for the screenshots—illustrations are always helpful).

It looks like it worked for you, and that’s what matters.


Important notes (outside the issue):

While Baserow is a no‑code solution, keep in mind that there are other users with the same question who take a deeper approach (using APIs and additional features). They can refer to this thread to resolve their doubts. That’s the beauty of an open forum—what’s irrelevant to you may be relevant to others.

Also keep in mind that the assistance you receive here is provided voluntarily, with the best intentions, aiming to understand your question or need and spending time responding (and, as in this case, helping you find a solution by offering tools and showing you information that even ChatGPT couldn’t give you when you asked). There are demands that are truly irrelevant, coming from people who receive free help; I’ll never understand those.

Best regards!