Skip to main content
The user object contains information about logged-in customers when the login/account feature is enabled in your store. It’s used to create account management functionality and personalized experiences.
Usage: Available globally when shop.login_active is true - check login status and display account-related content

Basic Usage

The user object helps you create login/logout functionality and personalized content:
<!-- Check if customer accounts are enabled -->
{{#shop.login_active}}
    {{#user.logged_in}}
        <p>Welcome back!</p>
        <a href="{{user.login_url}}">{{#lang}}My Account{{/lang}}</a>
    {{/user.logged_in}}
    
    {{^user.logged_in}}
        <a href="{{user.login_url}}">{{#lang}}Log In{{/lang}}</a>
    {{/user.logged_in}}
{{/shop.login_active}}

Available Properties

PropertyTypeDescription
user.logged_inBooleanCheck if visitor is logged in
user.login_urlStringOutput link to Login / My Account page

Conditional Content Examples

Personalized Header

<header class="site-header">
    <div class="user-section">
        {{#shop.login_active}}
            {{#user.logged_in}}
                <!-- Logged in state -->
                <div class="logged-in-user">
                    <span class="welcome-text">{{#lang}}Welcome back{{/lang}}</span>
                    <a href="{{user.login_url}}" class="account-btn">
                        {{#lang}}My Account{{/lang}}
                    </a>
                </div>
            {{/user.logged_in}}
            
            {{^user.logged_in}}
                <!-- Guest state -->
                <div class="guest-user">
                    <a href="{{user.login_url}}" class="login-btn">
                        {{#lang}}Sign In{{/lang}}
                    </a>
                </div>
            {{/user.logged_in}}
        {{/shop.login_active}}
    </div>
</header>
{{#shop.login_active}}
    {{#user.logged_in}}
    <div class="account-dashboard">
        <h2>{{#lang}}Account Dashboard{{/lang}}</h2>
        <div class="dashboard-links">
            <a href="{{user.login_url}}" class="dashboard-link">
                <i class="icon-orders"></i>
                <span>{{#lang}}My Orders{{/lang}}</span>
            </a>
            <a href="{{user.login_url}}" class="dashboard-link">
                <i class="icon-settings"></i>
                <span>{{#lang}}Account Settings{{/lang}}</span>
            </a>
            <a href="{{user.login_url}}" class="dashboard-link">
                <i class="icon-addresses"></i>
                <span>{{#lang}}My Addresses{{/lang}}</span>
            </a>
        </div>
    </div>
    {{/user.logged_in}}
{{/shop.login_active}}

Checkout Experience

{{#shop.login_active}}
    {{^user.logged_in}}
    <div class="checkout-login-prompt">
        <h3>{{#lang}}Returning Customer?{{/lang}}</h3>
        <p>{{#lang}}Sign in for faster checkout{{/lang}}</p>
        <a href="{{user.login_url}}" class="signin-btn">
            {{#lang}}Sign In{{/lang}}
        </a>
    </div>
    {{/user.logged_in}}
    
    {{#user.logged_in}}
    <div class="checkout-welcome">
        <p>{{#lang}}Signed in and ready to checkout{{/lang}}</p>
    </div>
    {{/user.logged_in}}
{{/shop.login_active}}

Complete Examples

Responsive Account Menu

{{#shop.login_active}}
<div class="account-menu">
    {{#user.logged_in}}
    <!-- Logged in: Account dropdown -->
    <div class="account-dropdown">
        <button class="account-toggle" aria-expanded="false">
            <i class="icon-user"></i>
            <span>{{#lang}}Account{{/lang}}</span>
            <i class="icon-chevron-down"></i>
        </button>
        
        <div class="dropdown-content">
            <div class="dropdown-header">
                <span class="user-status">{{#lang}}Signed in{{/lang}}</span>
            </div>
            
            <div class="dropdown-links">
                <a href="{{user.login_url}}" class="dropdown-link">
                    <i class="icon-orders"></i>
                    {{#lang}}My Orders{{/lang}}
                </a>
                <a href="{{user.login_url}}" class="dropdown-link">
                    <i class="icon-user"></i>
                    {{#lang}}Account Details{{/lang}}
                </a>
                <a href="{{user.login_url}}" class="dropdown-link">
                    <i class="icon-location"></i>
                    {{#lang}}Address Book{{/lang}}
                </a>
                <div class="dropdown-divider"></div>
                <a href="/logout" class="dropdown-link logout">
                    <i class="icon-logout"></i>
                    {{#lang}}Sign Out{{/lang}}
                </a>
            </div>
        </div>
    </div>
    {{/user.logged_in}}
    
    {{^user.logged_in}}
    <!-- Logged out: Simple login link -->
    <a href="{{user.login_url}}" class="login-link">
        <i class="icon-login"></i>
        <span>{{#lang}}Sign In{{/lang}}</span>
    </a>
    {{/user.logged_in}}
</div>
{{/shop.login_active}}

Mobile-Friendly Account Section

{{#shop.login_active}}
<div class="mobile-account-section">
    {{#user.logged_in}}
    <!-- Mobile logged in menu -->
    <div class="mobile-account-menu">
        <div class="account-header">
            <i class="icon-user-circle"></i>
            <span class="account-title">{{#lang}}My Account{{/lang}}</span>
        </div>
        
        <nav class="account-nav">
            <a href="{{user.login_url}}" class="nav-item">
                <i class="icon-orders"></i>
                <span>{{#lang}}Order History{{/lang}}</span>
                <i class="icon-chevron-right"></i>
            </a>
            <a href="{{user.login_url}}" class="nav-item">
                <i class="icon-settings"></i>
                <span>{{#lang}}Account Settings{{/lang}}</span>
                <i class="icon-chevron-right"></i>
            </a>
            <a href="/logout" class="nav-item logout">
                <i class="icon-logout"></i>
                <span>{{#lang}}Sign Out{{/lang}}</span>
            </a>
        </nav>
    </div>
    {{/user.logged_in}}
    
    {{^user.logged_in}}
    <!-- Mobile login prompt -->
    <div class="mobile-login-prompt">
        <div class="login-content">
            <i class="icon-user-plus"></i>
            <h3>{{#lang}}Sign In{{/lang}}</h3>
            <p>{{#lang}}Access your account and order history{{/lang}}</p>
            <a href="{{user.login_url}}" class="login-btn-mobile">
                {{#lang}}Sign In{{/lang}}
            </a>
        </div>
    </div>
    {{/user.logged_in}}
</div>
{{/shop.login_active}}

Implementation Notes

Feature Check

Always wrap user object usage with {{#shop.login_active}} to ensure the feature is enabled

Login URL

The user.login_url leads to the same page for both login and account management

Logout Handling

Logout is typically handled via /logout endpoint, not through the login_url

State Management

Use {{#user.logged_in}} and {{^user.logged_in}} for clear conditional logic

Best Practices

Accessible Login Forms

{{#shop.login_active}}
    {{^user.logged_in}}
    <div class="login-section" role="region" aria-label="{{#lang}}User Login{{/lang}}">
        <a href="{{user.login_url}}" 
           class="login-button"
           aria-describedby="login-description">
            {{#lang}}Sign In{{/lang}}
        </a>
        <p id="login-description" class="sr-only">
            {{#lang}}Access your account to view orders and manage settings{{/lang}}
        </p>
    </div>
    {{/user.logged_in}}
{{/shop.login_active}}
{{#shop.login_active}}
    {{#user.logged_in}}
    <nav aria-label="{{#lang}}Account Navigation{{/lang}}">
        <a href="{{user.login_url}}" 
           title="{{#lang}}View and manage your account{{/lang}}">
            {{#lang}}My Account{{/lang}}
        </a>
    </nav>
    {{/user.logged_in}}
{{/shop.login_active}}

Next Steps

Settings Object

Learn about theme-specific customizable settings

Basket Object

Work with shopping cart data and functionality

Order Object

Display order information on thank you pages

Shop Object

Back to shop settings and global store information