Why use this?
When you host an HTML form in Pinkfish file storage, you can generate personalized signed links for each customer that include a unique ID as a query parameter. The form reads that ID from the URL and uses it to save and retrieve the customer’s responses from a datastore. This means customers can fill out a form over multiple sessions — their progress is saved and pre-populated when they return.This guide builds on the two-workflow pattern described in Create a Backend for Your Frontend. If you’re new to building web pages with backends in Pinkfish, start there first.
Example Use Cases
- Customer intake forms — Send each customer a personalized link. They can fill out the form at their own pace, and their answers are saved automatically when they return.
- Application forms — Generate a unique link per applicant so they can save progress and come back to complete their submission.
- Surveys with follow-up — Send personalized survey links where responses are tied to a specific customer record for follow-up actions.
How It Works
- You create an HTML form page and save it in a file storage collection
- When you want to share the form with a customer, you generate a signed link that includes a unique customer ID (e.g.
?customerId=JohnSmith-90210) - You email that link to the customer
- When the customer opens the link, the HTML page reads the customer ID from the URL
- The page checks the datastore for an existing entry with that ID — if found, it pre-populates the form
- When the customer submits, the page saves their responses to the datastore using that ID as the key
- If the customer returns later using the same link, their previous answers are already filled in
Prerequisites
- A file storage collection to host the HTML form
- A datastore collection to store customer responses
Step 1: Create the HTML Form
Build your HTML page with a prompt like this:Step 2: Generate Signed Links with Customer IDs
You can generate personalized signed links from either an agent or a workflow step. Both use the same filestorage skill.Option A: Generate from an Agent
Enter a prompt like this:Option B: Generate from a Workflow
In a workflow step, use the filestorage skill to get a signed URL:Option C: Add to Your Agent’s System Prompt
If you want your agent to generate links on demand without repeating the full instructions each time, add this to your agent’s system prompt:“Generate a form link for John Smith, zip 90210”
The Result
The agent or workflow will return a signed URL like:What the Customer Experiences
- They receive an email with a personalized link
- They click the link and see the form — empty on first visit, pre-filled on return visits
- They fill out fields and click Submit — their responses are saved
- If they return later using the same link, everything they entered before is already there
Summary
| Component | Purpose |
|---|---|
| HTML form page | Hosted in file storage — reads customer ID from URL, loads/saves data |
| Customer responses | Stored in a datastore collection, keyed by customer ID |
| Signed link with query params | Generated via filestorage skill (from Chat Mode or a Workflow) with query_params containing the customer ID |

