Product Variable Reference
Every product configured in a funnel exposes a set of computed properties derived from its store price data. These properties are available in Liquid templates, conditions, and dynamic properties.
Access Patterns
Products are accessed by name or via the special selected key:
{{ products.monthly.price }}
{{ products.yearly.rawPrice }}
{{ products.selected.period }}products.{name}.{property}— Access a specific product by the name you assigned in funnel settings (e.g.,monthly,yearly,lifetime).products.selected.{property}— Access the currently selected product. Updates automatically when the visitor selects a different plan.
Product names are case-sensitive and must match exactly what you configured in the funnel’s product settings. Common convention is lowercase: monthly, yearly, weekly.
Property Reference
All product variables are read-only and computed from your payment provider’s price data.
Identity
| Property | Type | Description |
|---|---|---|
id | string | Unique product entry UUID (internal to AppFunnel). |
name | string | Product name as configured in funnel settings. |
displayName | string | Human-readable name from the payment provider (price name or product name). |
index | number | Zero-based position of the product in the funnel’s product list. |
Pricing
| Property | Type | Description |
|---|---|---|
price | string | Formatted price with currency symbol (e.g., $9.99). |
rawPrice | number | Raw numeric price without formatting (e.g., 9.99). |
dailyPrice | string | Formatted price normalized to a daily rate (e.g., $0.33). |
weeklyPrice | string | Formatted price normalized to a weekly rate (e.g., $2.31). |
monthlyPrice | string | Formatted price normalized to a monthly rate (e.g., $9.99). |
yearlyPrice | string | Formatted price normalized to a yearly rate (e.g., $119.88). |
Normalized prices (daily, weekly, monthly, yearly) are calculated by dividing or multiplying the raw price based on the billing interval. For example, a $59.99/year plan has a monthlyPrice of $5.00 and a dailyPrice of $0.16.
Currency
| Property | Type | Description |
|---|---|---|
currencyCode | string | ISO 4217 currency code (e.g., USD, EUR, GBP). |
currencySymbol | string | Currency symbol derived from the code (e.g., $, EUR, GBP). |
Billing Period
| Property | Type | Description |
|---|---|---|
period | string | Human-readable billing period noun (e.g., month, year, quarter, one-time). |
periodly | string | Human-readable billing period adjective (e.g., monthly, yearly, quarterly, one-time). |
periodDays | number | Billing period length in days (e.g., 30 for monthly, 365 for yearly). |
periodWeeks | number | Billing period length in weeks (e.g., 4 for monthly, 52 for yearly). |
periodMonths | number | Billing period length in months (e.g., 1 for monthly, 12 for yearly). |
The period and periodly values handle common intervals with natural language:
| Interval | Count | period | periodly |
|---|---|---|---|
day | 1 | day | daily |
week | 1 | week | weekly |
week | 2 | 2 weeks | biweekly |
month | 1 | month | monthly |
month | 3 | quarter | quarterly |
month | 6 | 6 months | semiannually |
year | 1 | year | yearly |
one_time | - | one-time | one-time |
Trial
| Property | Type | Description |
|---|---|---|
hasTrial | boolean | Whether this product has a trial period configured. |
trialDays | number | Number of trial days (e.g., 7, 14). 0 if no trial. |
paidTrial | boolean | Whether the trial requires an upfront payment (has a trial price). |
trialPrice | string | Formatted trial price with currency symbol (e.g., $0.99). $0.00 if free trial. |
trialRawPrice | number | Raw numeric trial price (e.g., 0.99). 0 if free trial. |
trialDailyPrice | string | Formatted trial price normalized to a daily rate. |
trialCurrencyCode | string | Trial price currency code. Falls back to the main price currency. |
trialCurrencySymbol | string | Trial price currency symbol. Falls back to the main price currency symbol. |
trialStorePriceId | string | Internal store price ID for the trial price. Empty if no paid trial. |
Common Patterns
Pricing Display
{{ products.selected.price }}/{{ products.selected.period }}Renders: $9.99/month
Price Comparison (Yearly Savings)
{{ products.monthly.rawPrice | times: 12 | minus: products.yearly.rawPrice | to_fixed: 2 }}Renders the dollar amount saved by choosing yearly over monthly.
Trial Messaging
{% if products.selected.hasTrial %}
Start your {{ products.selected.trialDays }}-day free trial, then {{ products.selected.price }}/{{ products.selected.period }}
{% else %}
{{ products.selected.price }}/{{ products.selected.period }}
{% endif %}Daily Price Breakdown
That's just {{ products.yearly.dailyPrice }}/daySee Liquid Templates for the full filter reference and more template examples.