Skip to main content
Almost all tags on this page build form fields. That sounds monotonous, but it is the reason why they are so easy to learn: they follow the same three-part pattern almost without exception. Once you have understood it, you can write any field on this page without reading the individual description. That is why this pattern comes first. It is followed by the forms built from it, from the simple login through the combined login in the order process to the confirmation of the email address. At the end are the links that lead from the shop into the customer account. Reference: The introduction to the prefix WS- and the overview of the eight pages are on Shop, page and technology

The three-part pattern

Almost every input field comes with three tags.
As a single tag, the suffix _error returns the string _error and nothing else. Append it to a class name, and the class is called eingabe_error in case of an error and eingabe otherwise. This lets you design the error display entirely via CSS, without a second area tag in the template.
Every _error tag also works as an area tag, which applies when the input is incorrect. This is the way to show an error message in words next to the field.
The value tags return the most recently entered value so that the buyer does not have to retype everything after an error. This also applies to password fields. For a password field, consider whether you really want to write the value back, or whether an empty field is the better choice.

Login and registration

The same fields serve different purposes depending on the process. This is the most common stumbling block on the login template.
The example on the previous page for WS-PW shows an input element with type="text". A password field must have type="password", otherwise the password is visible on the screen. The examples for WS-NewPW and WS-PWAgain do it correctly. The corrected version is shown above.
The difference between WS-Email and WS-NewEmail is not old versus new, but existing customer versus new customer. On a template that covers both cases, you need both fields, and they must not carry the same name attribute.
WS-UserID belongs to shops in which the buyer does not log in with their email address but with an assigned ID. This is common above all in the B2B area. In a shop without this login type, the three tags simply remain unused.

The password strength indicator

WS-SecureLoginConfigurationJS outputs the content of the secure login section of the shop configuration as a script in the page. This tells the password strength indicator in the browser which rules apply to a valid password. Without this tag, the indicator cannot check anything.
The tag belongs exclusively on the templates on which the buyer sets a new password, that is, on registration and on password change. It has no place on the ordinary login page.

Forgotten password

WS-PWRequestZip generates a ready-made input field for the postal code. You only write the tag, not the surrounding input element. The additional query prevents someone from requesting a password using only a guessed email address.
WS-RequestPWLink generates the link to the login page for this purpose. It behaves like WS-LoginLink, but does not tie the process to the order process. The tag exists in the shop system but is not described in the previous documentation.

Staying logged in

A buyer who has to type their password on every visit comes back less often. Two checkboxes offer them the option to stay logged in, and they differ in one important point.
Both tags must be placed inside the login form, that is, inside FORM-LoginNewUser, FORM-LoginStart, FORM-QuickLogin, FORM-CombinedLogin or another login form. Outside it, they do generate a field name, but it is never submitted.
Only offer WS-StayFullySignedIn_input if you know that buyers shop on private devices. In a shop that is also used on shared computers, WS-StaySignedIn_input is the right choice, because there the password prompt before critical actions protects the account.

Re-authentication before critical actions

WS-UserRequiresReAuthForCritAction applies when three things are true at the same time: the buyer was logged in automatically, they have not yet entered a password in this session, and the page meets one of the configured criteria for a critical action.
Put sensitive content such as address data, bank details or the order history in the negative area tag. Otherwise an automatically logged-in buyer sees it without having confirmed their password. The tag is permitted on all templates precisely so that you can use it wherever it is needed.

The combined login

In the order process, the buyer is presented with three options: log in as an existing customer, register as a new customer, or order as a guest. Because this takes place in one form, there is a dedicated tag family with a regular structure. The selection consists of a name and, for each option, a value and a marker: The fields again follow the three-part pattern:
The email address appears only once in the form, because it is needed in all three cases. Only the password fields differ.
As single tags, the _radioselected tags return _checked. They therefore go directly into the input element, without an attribute name before them. As area tags, they apply when the respective option is selected. This lets you show and hide the matching password field, as in the example.
All 18 tags of this family apply exclusively in the LoginUser area of the login template.

Registration after a guest order

If a buyer has ordered without an account, you can offer them immediately afterwards to create an account from the data they entered.
Only the password is still requested. Everything else, from the address to the email address, the buyer has already entered when ordering.
Offer the cancellation visibly. Without WS-CreateAccountAfterGuestOrder_cancellink, the buyer has no way out of the registration, and they have only just placed an order.
The tags apply on the login page and on the order receipt confirmation. The cancel link applies only on the login page.

Login via an external account

If a buyer logs in via an external account, the shop system has to find out whether a customer account already belongs to it. For this, it requests the email address and, if an account exists, the associated password as well.
Put the password field in {WS-ExternLogin_facebook_Connect_pw_needed}. If there is no account for the address yet, no password is needed, and a field displayed anyway only causes confusion.
Pay attention to upper and lower case: in the email branch it is connect_email, in the password branch Connect_pw with a capital C. This is how it is stored in the shop system.

Confirming the email address

In the email template is the link that confirms the address:
In the shop is the notice about the still pending status:
WS-EmailVerified is only meaningful in the logged-in state. Put it in {ST-LoggedIn}, otherwise the negative area tag also applies to every visitor who is not logged in, and they get a notice about an account they do not even have.
WS-DoubleOptInLink and WS-VoluntaryDoubleOptInVerificationLink belong in the email templates defined in the sections NewCustomerDoubleOptInMail, ChangeEmailDoubleOptInMail and CustomerVoluntaryDoubleOptInMail of the shop configuration. The two request links belong in the shop.
WS-RequestDeleteAccountDoubleOptInEmailLink does not trigger a deletion, only the sending of the email. The deletion only happens when the buyer clicks the link in this email. Word the text in the template accordingly so that no one gets the wrong impression.

The registration code

If the shop works with a registration code for new customers, WS-LoginRegistrationCode outputs the code and, as an area tag, checks whether one is present. WS-LoginRegistrationCode_error returns the error style suffix. Both tags exist in the shop system but are not described in the previous documentation.
If no one is logged in and no code is stored in the account, the tag falls back on the value stored in the shop configuration.

The customer account

After a new registration, WS-LastLoginDate and WS-LastLoginTime return nothing on the first visit, because there is no earlier login yet. The value only appears from the second login onward. Without the area tag, the first visit would show a sentence with an empty gap on the page.

The number of orders

Without a parameter, the tag counts all orders in the active subshop. The area tag applies if there are any orders at all, and takes the same period into account.
The count is the fastest way to distinguish first-time buyers from regular customers without loading the order history. {!WS-OrderCount(1y)} applies to everyone who has not bought anything in the last year.
WS-SubAccountID exists in the shop system but is not described in the previous documentation. It outputs the ID of the sub-account and applies as an area tag when one is present. In a shop without multiple accounts, it stays silent.
The example on the previous page for WS-UserDownloadLink writes <a href="~WS-UserDownloadLink~> without a closing quotation mark. This breaks the element in the browser. The corrected version is shown above.
Most of these links only make sense for a logged-in buyer. Put them in {ST-LoggedIn} instead of relying on the shop system sending a visitor who is not logged in to the login page anyway.
Three of these tags come with their own check and also work as area tags. WS-BankManageLink only applies if saving bank details is enabled. WS-SavedBasketsManageLink only applies when the buyer is logged in. WS-PPCVaultManageLink only applies if storing PayPal payment methods is allowed.
WS-SavedBasketsManageLink and WS-PPCVaultManageLink exist in the shop system but are not described in the previous documentation. Both generate a complete address via HTTPS.
WS-OSBLink is the odd one out: it does not lead into the customer account but into the shop operator’s online service area, and it belongs in the order receipt email to the shop operator. The address comes from the shop configuration.
The selection list for the search type has the fixed name user_search_type. There is no dedicated tag for it. WS-UserSearchType only returns the selected value so that a JavaScript can mark the correct option again.
The page title of the previous documentation writes the tag as WS-SuperUser-ID with an additional hyphen. In the shop system and in the source’s own examples it is called WS-SuperUserID. Only this spelling works.
Reference: You build the hit list itself with the UL- tags, described on UL- (SuperUser)

The tags at a glance

The login and registration fields apply on the login template, the CombinedLogin family there in the LoginUser area. WS-BankManageLink and WS-PrimePackagesManage apply on the customer account overview, WS-DoubleOptInLink and WS-VoluntaryDoubleOptInVerificationLink in the associated email templates, WS-OSBLink in the order receipt email to the shop operator, and the customer search tags on their template. All others are permitted on all templates.
  • Guide: Login and registration
  • Guide: Persistent login
  • Guide: Double opt-in
  • Guide: Forgotten password
  • Guide: SuperUser function
  • Reference: UL- (SuperUser)