> ## Documentation Index
> Fetch the complete documentation index at: https://docs.accountcanvas.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Variables

> Use Account Canvas variables to personalize blocks, sections, and pages.

Variables let merchants insert customer, shop, market, page, and time values into supported text fields.

Use variables inside double curly braces:

```text theme={null}
Hi {{ customer.first_name | default: "there" }}
```

## Insert a variable

1. Open the builder's **Variables** panel and copy the variable you need.
2. Paste it into a supported text setting, such as a heading or body.
3. Add a fallback with the `default` filter where the value may be missing.
4. Check the preview, then verify the real signed-in customer experience.

For a store-name heading:

```text theme={null}
{{ shop.name | default: "Our store" }} picks for this month
```

Variables are not the full Shopify Liquid language. Use the supported tokens and filters below; arbitrary Liquid objects, loops, or code are not supported by this text-token feature. Do not put sensitive customer values in external links, image URLs, or public labels merely because a variable is available.

## Supported variables

### Customer

* `customer.id`
* `customer.first_name`
* `customer.last_name`
* `customer.display_name`
* `customer.email`
* `customer.phone`
* `customer.created_at`
* `customer.accepts_marketing`
* `customer.email_marketing_state`
* `customer.order_count`
* `customer.amount_spent`
* `customer.amount_spent_last_orders`
* `customer.store_credit_balance`
* `customer.store_credit_currency`
* `customer.tags`
* `customer.default_address`
* `customer.is_b2b`

### Shop

* `shop.name`
* `shop.domain`
* `shop.currency`

### Market

* `market.language`
* `market.country_code`

### Order and line item

Order variables are available on order-aware surfaces when Shopify provides
order context.

* `order.id`
* `order.name`
* `order.total_price`
* `order.fulfillment_status`
* `order.financial_status`
* `order.cancelled`
* `order.return_status`
* `order.processed_at`
* `line_item.quantity`
* `line_item.product_title`
* `line_item.variant_title`
* `line_item.price`
* `line_item.discounted`

### Product

Product variables are available when a block or action is rendered with product
context.

* `product.id`
* `product.vendor`
* `product.type`
* `product.tags`
* `product.available`

### B2B/company

* `company.id`
* `company.location_id`

### Page and time

* `page.scope`
* `time.current_date`
* `time.current_day`
* `time.current_month`
* `time.current_year`

## Filters

Filters format or transform values:

* `default`
* `upcase`
* `downcase`
* `capitalize`
* `strip`
* `truncate`
* `replace`
* `join`
* `money`
* `date`
* `number`

## Examples

```text theme={null}
Welcome back, {{ customer.first_name | default: "friend" }}.
```

```text theme={null}
You have {{ customer.order_count | number }} orders with us.
```

```text theme={null}
Store credit: {{ customer.store_credit_balance | money }}
```

## Availability

Some variables only resolve after Shopify has authenticated the customer account session. If a value is unavailable, use the `default` filter so the content still reads naturally.

Order, line item, product, B2B, and metafield variables require the matching
Shopify customer account context. If the current surface does not provide that
context, Account Canvas leaves the value blank unless a `default` filter is
present.

## Preview does not prove live data

The visual builder can use sample customer or order values. Your store name should resolve from the store context, while a live customer's name comes from the verified customer context. If a fallback or unexpected value appears, check the token spelling, location, and available permissions before contacting [support](/support).


## Related topics

- [Troubleshooting](/troubleshooting.md)
- [Quickstart](/quickstart.md)
- [Welcome to Account Canvas](/index.md)
- [Changelog](/changelog.md)
- [Privacy Policy](/privacy.md)
