Public Page using Private Record Parameters to Filter Data?

I’m trying to put together a semi-private page that customers can access to see photos related to car work being done. Semi-private in the sense that the page itself can be publicly accessible but the parameters or method of getting to the page makes it impossible for people to stumble upon it. The rest of the app is private and requires login, relating to managing customers, projects and uploading the photos. Photos are attached to the Projects. I feel like there’s probably a simple way of approaching this but I’m just having a hard time trying to figure out an approach that would work.

Anyone run into a similar use case before? Thanks in advance!

Hi @Christophe07388,

You could remove the page from the page menu via the page’s settings:

This way, users won’t be able to see that page as an option to click and navigate to in the page menu. Your app users would need the URL to access that page or there would need to be a link navigating to that page somewhere else in your app.

1 Like

@Christophe07388 - @Les identified one key step: make sure the page isn’t in the Page Menu. If the page (e.g. customer-job-update) is based on a record (e.g. ‘job’ object), then the URL will have the Record ID in it. You can include a direct link to that page in an email you create. It will look something like this when you add it into the email body on the task or email on form submit:

Knack: No-Code Application Development Platform{RECORD ID}. (you will insert your specifics for ‘mybusiness’ and ‘amazingapp’ and ‘customer-job-update’)

when the email is sent for a particular record (job) it will be included like this:

So, unless the customer forwards the link on, no-one is going to guess it or find it (including a bot I’d dare to say)

In my experience, you are best to create the page customer-job-update as a child page off a public page with just a jobs table, but that customer table only has one column (which is the child page customer-job-update). Delete all other columns in that table, and filter for something that is never true (e.g. some mandatory field is blank). That way is anyone stumbles on the parent page (which has to be public in order for the child page to be public) they will basically see no data. If you are not careful with that, you could expose the list of all your jobs to the public. As an added measure, you could add custom javascript to redirect users away from the url of the parent page if they end up on it.

Let me know if you have any questions.