CraftCMS gives us so many ways/options on how to build pages that I'd love to see what people are doing with their pricing pages!

I'm planning on building something similar to Amilia.com or Slack.com.

My thoughts:

  • Create 1 single page for the pricing page.
  • Create 3 entries in a structure for the 3 plans? (Or I don't need this?)
  • Create a features structure for all features?
  • For each feature entry put a field for each pricing plan?
  • Or do I just make it using a matrix field with a super table field?

I'd love to hear the best practices and what would be the best way to build a pricing page and all of its content. Thanks!

1 Answer 1


I've done something similar to this recently, and I went through the same though process as you've done!

I initially added a new Channel for plans, and built each plan as an entry in that channel. These were then selected in an Entries field for the pricing page entry. However, after building this solution locally, I felt like it was overkill for my particular use case.

In the end, I asked myself 'Will I need to reuse any of the data that's shown for each pricing plan anywhere else?' and the answer was 'no'. I removed the plans channel and ended up using a Super Table field in my pricing page entry type, with fields for the plan details inside the Super Table.

This was specific to my use case though, where I knew I wouldn't need to surface the plan data on any other pages. If you do need to reuse plan data elsewhere - and you probably will - then I'd stick with my original solution of defining the plans in a Channel as entries that can then be selected in an Entries field in your pricing page entry type. This way, the data for each plan is held in a single place and you get all the standard entry functionality (like draft entries, date expiry etc.) for your plans, which can be helpful.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.