![]()
Power Pages allows you to auto-populate form fields based on existing data from Dataverse. This is particularly useful when you’re dealing with logged-in users, related records, or pre-existing values tied to a session or user profile. Here’s a step-by-step deep dive into how this works.
Common Use Cases
- Pre-fill user profile forms with logged-in user details
- Populate fields based on URL parameters (e.g.,
?id=123) - Auto-load values from related tables (e.g., contact info from an account)
- Enable seamless multi-step forms with field carry-over
Step-by-Step Guide
Step 1: Create Your Table in Dataverse
Ensure the Dataverse table contains the fields you want to populate. Example:
- Table:
CustomerFeedback - Fields:
Name,Email,Phone,CustomerID
Step 2: Configure the Basic Form or Entity Form
- Go to Power Pages Studio or Power Apps portal management.
- Add or edit a form (Entity Form / Basic Form).
- Select the table where the data resides.
- Choose Insert Mode (for new records) or Edit Mode (for updating).
Step 3: Enable Pre-population Using Metadata
You can configure pre-filled values using one of these methods:
Method 1: Use Liquid to Auto-populate Logged-in User Info
In the web page where your form is embedded, use Liquid to get user details:
{% assign currentUser = user %}
<input type="text" name="email" value="{{ currentUser.emailaddress1 }}" />
If you’re using a Basic Form, you can include a hidden field pre-filled with a value using Liquid.
Method 2: Use Query Strings to Populate Fields
Pass values in the URL:
https://portalsite.com/form-page?email=user@domain.com&name=John
In the form configuration:
- Go to the field’s Default Value
- Use
Request Query Stringas the source - Map
emailfield to theemailquery string
This is a quick way to link data across pages or from external systems.
Method 3: Use JavaScript to Set Field Values on Load
You can use jQuery or JavaScript in the Custom JavaScript section of the form:
$(document).ready(function(){
$("#email").val("{{user.emailaddress1}}");
});
Or if you’re pulling from a FetchXML lookup:
fetch(`/_api/customers?$filter=contactid eq '{{user.id}}'`)
.then(res => res.json())
.then(data => {
if(data.value.length > 0){
$("#phone").val(data.value[0].telephone1);
}
});
Method 4: Using Metadata and Relationships
If your form includes a lookup field (e.g., to the Contact or Account table), configure the metadata to:
- Set a default value from a relationship (e.g., logged-in contact ID)
- Use a FetchXML query behind the form to return the default
Step 4: Secure the Experience
- Ensure Web Roles and Table Permissions are configured to allow read access to needed tables and fields.
- Avoid exposing sensitive data via query strings unless using encryption or server-side logic.
Pro Tips
- Use Hidden Fields to carry values that users shouldn’t change.
- You can also use Power Automate flows triggered on page load (via virtual table or form submission) to populate data dynamically.
- Use Pre-fill Form Metadata JSON for advanced options.
