There are 2 ways that we use to pass user information to Landing Pages:
Option 1: QueryParameter
In Email:
%%[VAR @email,@name,@landingpage
Set @email = 'email@example.com'
Set @name = 'Test'
Set @landingpage = Concat('https://pub.exacttarget.com/landingpage?email=',@email,'&name=',@name)
]%%
<a href = "%%=RedirectTo(@landingpage)=%%">Click Here</a>
On LandingPage:
<form>
Name:<br>
<input type="text" name="name" value="%%=v(QueryParameter('name'))=%%"><br>
Email:<br>
<input type="text" name="email" value="%%=v(QueryParameter('email'))=%%">
</form>
Option 2: LookupRows & DataView
In Email:
%%[VAR @subscriberkey,@landingpage
Set @subscriberkey= '123456789'
Set @landingpage = Concat('https://pub.exacttarget.com/landingpage?key=',@subscriberkey)
]%%
<a href = "%%=RedirectTo(@landingpage)=%%">Click Here</a>
On LandingPage:
%%[
var @key, @email, @name
set @key = QueryParameter("key")
set @email = FIELD(ROW(LookupRows("_Subscribers","SubscriberKey",@key),1), "EmailAddress")
set @name = FIELD(ROW(LookupRows("Example_Customer_Data_DE","SubscriberKey",@key),1), "Name")
]%%
<form>
Name:<br>
<input type="text" name="name" value="%%=v(@name)=%%"><br>
Email:<br>
<input type="text" name="email" value="%%=v(@email)=%%">
</form>
Note that both of these methods are taking values from AMPScript at the time of send, and appending them to the destination URL string. For this reason, you may need some security/hashing/encoding to prevent malicious attempts to access your customer data via the form.
I hope that helps.
The easiest solution would be to have the URL directing your user to the CloudPage to use CloudPagesURL function. This will allow you to pass all the sendable data from your sending DE.
e.g. (in email)
<a href="%%=RedirectTo(CloudPagesURL(77))=%%" >yourPage</a>
e.g. (on page)
<input type="text" Name="FirstName" value="%%=AttributeValue("FirstName")=%%">
The other option is to use Lookups or LookupRows functions on the CloudPage prior to your form. To do this you will need to pass a subscriberkey or similar unique key to match inside the DE. I would recommend passing this via the CloudPagesURL as shown above. Otherwise you will need to append this to the target url in the link, which will expose it for all to see.
e.g.
%%[
SET @SubKey = AttributeValue("SubscriberKey")
SET @FirstName = Lookup('CustomerA', "FirstName", "SubscriberKey", @SubKey)
SET @LastName = Lookup('CustomerA', "LastName", "SubscriberKey", @SubKey)
SET @Genre = Lookup('CustomerA', "Genre", "SubscriberKey", @SubKey)
/* If Subkey is not Email then use below to get email */
SET @EmailAddress = Lookup('CustomerA', "EmailAddress", "SubscriberKey", @SubKey)
]%%
<form ...> /* your form content */
<input type="text" name="FirstName" value="%%=v(@FirstName)=%%">
...... /* continued for the rest */
Best Answer
That documentation is for Smart Capture forms for legacy Landing Pages/Microsites within Email Studio. The Cloud Pages Smart Capture documentation is below.
https://help.salesforce.com/articleView?id=mc_cp_smart_capture_block.htm&type=5
No upsert option exists in CloudPages currently. The workaround is to create a custom form via HTML on your landing page and then within the form you could implement the upsert via ampscript.
https://developer.salesforce.com/docs/atlas.en-us.noversion.mc-programmatic-content.meta/mc-programmatic-content/upsertde.htm