Home

Membership Metaobjects

The membership system allows you to create and manage tiered membership programs with various benefits. Each membership can have multiple benefits attached to it, such as free shipping, special cashback rates, referral bonuses, free products, and tier-reached bonuses.

Accessing Memberships

To access membership data in your Liquid templates, use the following code:


_10
{%- assign membership = shop.metaobjects.app--60169453569--membership.v2 -%}

Membership Fields

Field NameTypeDescription
nameTextName of the membership tier
memberr_idTextInternal memberr identifier
is_activeBooleanWhether this membership tier is currently active
revenue_thresholdMoneyRevenue amount required to qualify for this tier
qualification_period_daysIntegerNumber of days over which the revenue threshold is calculated
membership_duration_daysIntegerHow long the membership remains valid once earned
is_lockedBooleanWhen true, the membership tier won't change until expiration, even if customer qualifies for a different tier
is_manualBooleanWhen true, this membership can only be assigned manually, not through automatic qualification
benefit_free_shippingReferenceLink to free shipping benefit configuration
benefit_referral_overrideReferenceLink to referral program overrides
benefit_cashback_overrideReferenceLink to cashback program overrides
benefit_free_productsReferenceLink to free products benefit
benefit_tier_reached_bonusReferenceLink to tier reached bonus configuration

Membership Types

Manual vs. Automatic Assignment

Memberships can be configured for either manual or automatic assignment:

  • When is_manual is true, the membership can only be assigned by an administrator
  • When is_manual is false, customers can automatically qualify based on the revenue_threshold and qualification_period_days

Locked vs. Dynamic Tiers

The is_locked field controls tier change behavior:

  • When is_locked is true, the membership tier remains fixed until expiration, regardless of customer qualification for other tiers
  • When is_locked is false, the membership tier can change if the customer qualifies for a different tier

Example of checking membership type:


_11
{% if membership %}
_11
{% if membership.is_manual %}
_11
<p>This is an exclusive membership tier, available by invitation only.</p>
_11
{% else %}
_11
<p>Qualify by spending {{ membership.revenue_threshold.value | money }} within {{ membership.qualification_period_days }} days.</p>
_11
{% endif %}
_11
_11
{% if membership.is_locked %}
_11
<p>Your tier is locked until {% if membership.membership_duration_days %}{{ membership.membership_duration_days }} days from activation{% else %}expiration{% endif %}.</p>
_11
{% endif %}
_11
{% endif %}

Membership Benefits

Free Shipping Benefit


_10
{%- assign free_shipping = membership.benefit_free_shipping -%}
_10
{% if free_shipping %}
_10
{% if free_shipping.is_active %}
_10
<p>Free shipping is available on qualifying orders!</p>
_10
{% endif %}
_10
{% endif %}

Field NameTypeDescription
membership_idTextAssociated membership ID
is_activeBooleanWhether free shipping is active
discount_idTextInternal reference ID (not for display)

Cashback Override


_10
{%- assign cashback = membership.benefit_cashback_override -%}
_10
{% if cashback %}
_10
{% if cashback.is_active %}
_10
<p>Special cashback rate: {{ cashback.cashback_percentage }}%</p>
_10
<p>Available after {{ cashback.credit_availability_delay_days }} days</p>
_10
<p>Expires in {{ cashback.credit_expiry_days }} days</p>
_10
{% endif %}
_10
{% endif %}

Field NameTypeDescription
membership_idTextAssociated membership ID
is_activeBooleanWhether the override is active
cashback_percentageDecimalSpecial cashback percentage for this tier
credit_expiry_daysIntegerDays until cashback credit expires
credit_availability_delay_daysIntegerDays before cashback becomes available

Referral Override


_19
{%- assign referral = membership.benefit_referral_override -%}
_19
{% if referral %}
_19
{% if referral.is_active %}
_19
{% if referral.referring_customer_gets_type == 'PERCENTAGE' %}
_19
<p>Referrer gets: {{ referral.referring_customer_gets_value_percentage }}%</p>
_19
{% else %}
_19
<p>Referrer gets: {{ referral.referring_customer_gets_value_money.value | money }}</p>
_19
{% endif %}
_19
_19
{% case referral.referred_customer_gets_type %}
_19
{% when 'PERCENTAGE' %}
_19
<p>New customer gets: {{ referral.referred_customer_gets_value_percentage }}% off</p>
_19
{% when 'FIXED' %}
_19
<p>New customer gets: {{ referral.referred_customer_gets_value_money.value | money }} off</p>
_19
{% when 'FREE_SHIPPING' %}
_19
<p>New customer gets: Free Shipping</p>
_19
{% endcase %}
_19
{% endif %}
_19
{% endif %}

Field NameTypeDescription
membership_idTextAssociated membership ID
is_activeBooleanWhether the override is active
referring_customer_gets_typeTextType of reward ('PERCENTAGE' or 'FIXED')
referring_customer_gets_value_percentageDecimalPercentage reward for referrer
referring_customer_gets_value_moneyMoneyFixed amount reward for referrer
referring_customer_expiry_daysIntegerDays until referrer reward expires
referring_customer_availability_delay_daysIntegerDelay before referrer gets reward
referred_customer_gets_typeTextType of reward ('PERCENTAGE', 'FIXED', or 'FREE_SHIPPING')
referred_customer_gets_value_percentageDecimalPercentage reward for new customer
referred_customer_gets_value_moneyMoneyFixed amount for new customer
referred_customer_minimum_order_valueMoneyMinimum purchase required
referred_customer_must_be_new_customerBooleanWhether only new customers qualify

Free Products Benefit


_10
{%- assign free_products = membership.benefit_free_products -%}
_10
{% if free_products %}
_10
{% if free_products.is_active %}
_10
<p>Choose {{ free_products.max_selectable_free_products }} free products from collection {{ free_products.collection_id }}</p>
_10
<p>Minimum order: {{ free_products.minimum_order_value.value | money }}</p>
_10
{% endif %}
_10
{% endif %}

Field NameTypeDescription
membership_idTextAssociated membership ID
is_activeBooleanWhether the benefit is active
collection_idReferenceCollection containing free product options
max_selectable_free_productsIntegerNumber of free products allowed
hide_cart_linesBooleanWhether to hide free products in cart
minimum_order_valueMoneyMinimum purchase required
discount_idTextInternal reference ID (not for display)

Tier Reached Bonus


_10
{%- assign bonus = membership.benefit_tier_reached_bonus -%}
_10
{% if bonus %}
_10
{% if bonus.is_active %}
_10
<p>Tier bonus: {{ bonus.amount.value | money }}</p>
_10
{% if bonus.is_one_time %}
_10
<p>One-time bonus!</p>
_10
{% endif %}
_10
<p>Expires in {{ bonus.credit_expiry_days }} days</p>
_10
{% endif %}
_10
{% endif %}

Field NameTypeDescription
membership_idTextAssociated membership ID
is_activeBooleanWhether the bonus is active
is_one_timeBooleanWhether this is a one-time bonus
amountMoneyBonus amount
credit_expiry_daysIntegerDays until bonus expires

Best Practices

  1. Always check if the membership and benefit exist before accessing:

_10
{% if membership and membership.benefit_cashback_override %}
_10
// Access cashback override
_10
{% endif %}

  1. Remember to use .value for money fields:

_10
{{ membership.revenue_threshold.value | money }}
_10
{{ bonus.amount.value | money }}

  1. Handle different reward types appropriately:

_10
{% if referral.referring_customer_gets_type == 'PERCENTAGE' %}
_10
{{ referral.referring_customer_gets_value_percentage }}%
_10
{% else %}
_10
{{ referral.referring_customer_gets_value_money.value | money }}
_10
{% endif %}

  1. Consider qualification period when displaying thresholds:

_10
<p>Spend {{ membership.revenue_threshold.value | money }} within {{ membership.qualification_period_days }} days to qualify</p>