Automatic customer segmentation by yearly spending

I am trying to build a tier-based loyalty program that is based on yearly spending.

Requirements for the loyalty program:

  • Not point-based

  • Based on yearly spending (not based on calendar year - year starts with first purchase)

  • 4 tiers:

over $450 yearly spent: 5% on all orders

over $650 yearly spent: 10% on all orders

over $850 yearly spent: 15% on all orders

I’d prefer not to use any app and use the “native” customer segmentation feature with discounts based on customer segments.
I can’t find a solution that adds a customer to a customer segment based on yearly spending.

4 Likes

Hi @joel-vl ,

Within the Customers section, you can create your own segments by adding filters. One of the things you can filter by is “amount spent”. In order to do that:

  1. Go to Customers

  2. In the top right, click “Add filter”

  3. Click “Amount spent”

  4. Now, in the filter box, type in “amount_spent BETWEEN 450 AND 650” (repeat for each tier you want to create)

  5. Click “Apply filter”

  6. Click “Save segment” and name your Segment for future use.

Hope this helps!

2 Likes

@Bluesoft_Design , thanks for your suggestion.

This gives me the total amount spent, not the yearly amount spent. Is it possible to narrow down the result to a specific date range?

1 Like

Wondering the same thing

1 Like

Did you resolve this? I’m also trying to do the same thing.

1 Like

Wondering the same thing. Can’t figure out how to find a yearly total.

1 Like

Hi! I am wondering what dollar value you would include in total spend for your loyalty tiers… Would you include shipping? taxes?

1 Like

I wouldn’t want to include taxes or shipping. Not sure what the tier amounts would be, but would like to see yearly spending.

2 Likes

thank you! I work on the product team, so this helps us as we plan out future releases.

2 Likes

Thanks for considering this feature for future releases. Seeing yearly spending per customer and being able to segment customers based on that would be highly valuable.

I would want to have taxes included. In Switzerland, retail prices always include VAT, and customers never even see prices excl. VAT.

Shipping shouldn’t be included.

2 Likes

VAT doesn’t work properly in Europe for regions like Canary Islands, so we are not even using tax on the platform.

We’ve been asking for this to be fixed for quite some time, please talk internally with the right staff to fix this.

Also thanks for considering include this in the future plans of Shopify.

You could build this in Flows as well. I’m trying to do something using Flows, but you need to segment by a date range. I can do it based on the lifetime spent but not over the last 12 months.

1 Like

Any new on it ?

Segments on historical data are useless, we need to time-phase them.

Thanks

1 Like

Any updates on this?? I’m using Shopify Flow and need to create tiered pricing discounts. Customers need to maintain a range within a year range relative to the current day to stay in a tier and receive those tier benefits. I agree, shipping shouldn’t be included.

1 Like

Thank you for considering the yearly spending feature in the future release, we are looking forward to.

Hi,

I was wondering if there is any update on this?

I’m trying to do the same thing and can’t seem to be able to in customer segments nor in flow.

I want to set a loyalty program based on the spend tier yearly.

Thanks

I think we’re using the paid Growave App, but we haven’t gotten enough people or time to see if it works based off of yearly spending.

Hello - this is possible. Shopify supprot has tried to push me to pay an expert or use a 3rd party app instead of providing the code but here are two ways to accomplish it:

Since A Date
orders_placed(since: 2023-11-01, sum_amount_at_least: 500) = true

Between Two Dates
orders_placed(since: 2023-11-19, until: 2023-11-30, sum_amount_at_least: 500) = true

Since A Date
orders_placed(since: 2023-11-01, sum_amount_at_least: 500) = true

Between Two Dates
orders_placed(since: 2023-11-19, until: 2023-11-30, sum_amount_at_least: 500) = true

Try either of these codes.