Ecommerce with Silverstripe

Ecommerce with Silverstripe
StripeCon 2021
Karl-Johan Smeds, CEO
Niklas Forsdahl, Chief Software Developer
Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com
Creamarketing
- Established in 1998, Vaasa Finland
- Our team consists of 11 dedicated and skilled team members
- Highly specialized in web development and ecommerce
- We have been using SilverStripe since 2009
- Turnover 720.000 € (2020)
- Highest creditworthiness (AAA) since 2009
Ecommerce with Silverstripe
Ecommerce with Silverstripe
Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com
Ecommerce experience
- First webshop published 2001
- We did all the design and coding from scratch 
- Continued to do webshop projects with OSCommerce
- Switched from OSCommerce to Prestashop
- 2 years ”Time-out” session before next step
- First webshop with Silverstripe published in year 2016
Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com
Ecommerce today
• About 30 ecommerce projects with SilverStripe
• The majority of our turnover today is from ecommerce projects
• Wide range of projects, from only about 100 products to about 500000
products, both B2B and B2C
• Integrations to ERP and POS systems is very common
• Successfully worked with core web vitals and content creation to get very
good search ranking results
Ecommerce with Silverstripe
Ecommerce with Silverstripe
Ecommerce with Silverstripe
• Community modules used
• Changes made
• Custom functionality we created
Technical overview
Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com
SilverShop core
• Overall a good technical and flexible base
• silvershop/core forked to change Product and
ProductCategory base class to DataObject instead of SiteTree
• To support over 100k products
• To make search and filtering easier
• To make multilingual translation of products easier to handle
Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com
SilverShop discounts
• Extended with custom product discount, which actually modifies selling
prices of products, based on different criteria
• Include products by category, manufacturer, attribute values, etc.
• Store best selling price / discount percent on products and variations for
efficient sorting and rendering
Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com
Silvershop stock
• Some extensions to support large number of products
• Store in stock status per variation/product on product stock changes
• Options for out-of-stock behaviour per product and variation
• Custom out-of-stock messages per manufacturer and product
Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com
Fulltextsearch
• Used for site search and product filtering
• SolrIndex subclassed to support Solr 8
• Support for highlighting, spellchecking, grouped queries, facet queries,
tagged queries, etc.
• Solr grouped query used for site search
• Product filtering using Solr facet queries
Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com
Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com
Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com
Staticpublishqueue
• Publish pages, product category pages, product pages statically
• Some pages are deliberetly not statically published, like the checkout page
• Dynamic data, like the shopping cart, are filled in via ajax on each request
• FilesystemPublisher subclassed to do the actual page rendering in a
separate process, to not run out of memory
• Custom StaticCacheFullBuildJob to build full static cache for all
pages and product urls in all Fluent locales
Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com
Queued jobs
• Used in combination with fulltextsearch and staticpublishqueue
• One fast and one large queue (plus an immediate queue)
• Custom QueueRunner subclass that writes mark and lock files per queue
• To make a queue completely sequential, and to make checking for jobs to run
on the fast queue more efficient
• Custom CronJob queued job, that parses crontab syntax in yml-files, for
scheduling jobs on the large queue
Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com
Frontend
• Heavy use of image manipulations for core web vitals scores
• Custom image manipulation for doing webp transcoding, using image
magick and libwebp
• Picture-tags in templates with multiple croppings for different media
queries
• Bundling requirements via yarn and webpack
Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com
Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com
Admin
• Simple custom dashboard to show some analytics and sales data
Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com
Admin
• Custom ModelAdmin subclass for webshop administration
• Splits webshop administration in multiple top-level tabs
• Custom GridField components
• Filtering component
• Bulk actions via colymba/gridfield-bulk-editing-tools
• Component for nested grid fields
• Component for tooltip data in grid fields
Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com
Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com
Reports
• Custom reports, based on nested GridFields
• Custom ReportList, as a subclass of SQLQueryList
• Focus on sales and stock reports
Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com
Other custom modules and extensions
• Google shopping feeds
• Campaigns
• Manufacturer pages
• Sample products
• Abandoned carts
• Integrations to Finnish and Swedish payment providers
Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com
Future plans
• More marketing automation
• More related content on product pages and at checkout, either through site
logic or via Google Vision AI API
• More admin improvements for merchants
1 of 26

Recommended

ChatGPT and the Future of Work - Clark Boyd by
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
23.4K views69 slides
Getting into the tech field. what next by
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
5.6K views22 slides
Google's Just Not That Into You: Understanding Core Updates & Search Intent by
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
6.3K views99 slides
How to have difficult conversations by
How to have difficult conversations How to have difficult conversations
How to have difficult conversations Rajiv Jayarajah, MAppComm, ACC
4.9K views19 slides
Introduction to Data Science by
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data ScienceChristy Abraham Joy
82.2K views51 slides
Time Management & Productivity - Best Practices by
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
169.7K views42 slides

More Related Content

Recently uploaded

PORTFOLIO 1 (Bret Michael Pepito).pdf by
PORTFOLIO 1 (Bret Michael Pepito).pdfPORTFOLIO 1 (Bret Michael Pepito).pdf
PORTFOLIO 1 (Bret Michael Pepito).pdfbrejess0410
8 views6 slides
Is Entireweb better than Google by
Is Entireweb better than GoogleIs Entireweb better than Google
Is Entireweb better than Googlesebastianthomasbejan
12 views1 slide
IETF 118: Starlink Protocol Performance by
IETF 118: Starlink Protocol PerformanceIETF 118: Starlink Protocol Performance
IETF 118: Starlink Protocol PerformanceAPNIC
354 views22 slides
How to think like a threat actor for Kubernetes.pptx by
How to think like a threat actor for Kubernetes.pptxHow to think like a threat actor for Kubernetes.pptx
How to think like a threat actor for Kubernetes.pptxLibbySchulze1
5 views33 slides
Building trust in our information ecosystem: who do we trust in an emergency by
Building trust in our information ecosystem: who do we trust in an emergencyBuilding trust in our information ecosystem: who do we trust in an emergency
Building trust in our information ecosystem: who do we trust in an emergencyTina Purnat
106 views18 slides
WEB 2.O TOOLS: Empowering education.pptx by
WEB 2.O TOOLS: Empowering education.pptxWEB 2.O TOOLS: Empowering education.pptx
WEB 2.O TOOLS: Empowering education.pptxnarmadhamanohar21
16 views16 slides

Recently uploaded(9)

PORTFOLIO 1 (Bret Michael Pepito).pdf by brejess0410
PORTFOLIO 1 (Bret Michael Pepito).pdfPORTFOLIO 1 (Bret Michael Pepito).pdf
PORTFOLIO 1 (Bret Michael Pepito).pdf
brejess04108 views
IETF 118: Starlink Protocol Performance by APNIC
IETF 118: Starlink Protocol PerformanceIETF 118: Starlink Protocol Performance
IETF 118: Starlink Protocol Performance
APNIC354 views
How to think like a threat actor for Kubernetes.pptx by LibbySchulze1
How to think like a threat actor for Kubernetes.pptxHow to think like a threat actor for Kubernetes.pptx
How to think like a threat actor for Kubernetes.pptx
LibbySchulze15 views
Building trust in our information ecosystem: who do we trust in an emergency by Tina Purnat
Building trust in our information ecosystem: who do we trust in an emergencyBuilding trust in our information ecosystem: who do we trust in an emergency
Building trust in our information ecosystem: who do we trust in an emergency
Tina Purnat106 views
Marketing and Community Building in Web3 by Federico Ast
Marketing and Community Building in Web3Marketing and Community Building in Web3
Marketing and Community Building in Web3
Federico Ast12 views

Featured

Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present... by
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
55.5K views138 slides
12 Ways to Increase Your Influence at Work by
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
401.7K views64 slides
ChatGPT webinar slides by
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slidesAlireza Esmikhani
30.3K views36 slides
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G... by
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...DevGAMM Conference
3.6K views12 slides
Barbie - Brand Strategy Presentation by
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationErica Santiago
25.1K views46 slides

Featured(20)

Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present... by Applitools
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Applitools55.5K views
12 Ways to Increase Your Influence at Work by GetSmarter
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
GetSmarter401.7K views
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G... by DevGAMM Conference
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
DevGAMM Conference3.6K views
Barbie - Brand Strategy Presentation by Erica Santiago
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy Presentation
Erica Santiago25.1K views
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well by Saba Software
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Saba Software25.2K views
Introduction to C Programming Language by Simplilearn
Introduction to C Programming LanguageIntroduction to C Programming Language
Introduction to C Programming Language
Simplilearn8.4K views
The Pixar Way: 37 Quotes on Developing and Maintaining a Creative Company (fr... by Palo Alto Software
The Pixar Way: 37 Quotes on Developing and Maintaining a Creative Company (fr...The Pixar Way: 37 Quotes on Developing and Maintaining a Creative Company (fr...
The Pixar Way: 37 Quotes on Developing and Maintaining a Creative Company (fr...
Palo Alto Software88.4K views
9 Tips for a Work-free Vacation by Weekdone.com
9 Tips for a Work-free Vacation9 Tips for a Work-free Vacation
9 Tips for a Work-free Vacation
Weekdone.com7.2K views
How to Map Your Future by SlideShop.com
How to Map Your FutureHow to Map Your Future
How to Map Your Future
SlideShop.com275.1K views
Beyond Pride: Making Digital Marketing & SEO Authentically LGBTQ+ Inclusive -... by AccuraCast
Beyond Pride: Making Digital Marketing & SEO Authentically LGBTQ+ Inclusive -...Beyond Pride: Making Digital Marketing & SEO Authentically LGBTQ+ Inclusive -...
Beyond Pride: Making Digital Marketing & SEO Authentically LGBTQ+ Inclusive -...
AccuraCast3.4K views
Exploring ChatGPT for Effective Teaching and Learning.pptx by Stan Skrabut, Ed.D.
Exploring ChatGPT for Effective Teaching and Learning.pptxExploring ChatGPT for Effective Teaching and Learning.pptx
Exploring ChatGPT for Effective Teaching and Learning.pptx
Stan Skrabut, Ed.D.57.7K views
How to train your robot (with Deep Reinforcement Learning) by Lucas García, PhD
How to train your robot (with Deep Reinforcement Learning)How to train your robot (with Deep Reinforcement Learning)
How to train your robot (with Deep Reinforcement Learning)
Lucas García, PhD42.5K views
4 Strategies to Renew Your Career Passion by Daniel Goleman
4 Strategies to Renew Your Career Passion4 Strategies to Renew Your Career Passion
4 Strategies to Renew Your Career Passion
Daniel Goleman122K views
The Student's Guide to LinkedIn by LinkedIn
The Student's Guide to LinkedInThe Student's Guide to LinkedIn
The Student's Guide to LinkedIn
LinkedIn87.9K views
Different Roles in Machine Learning Career by Intellipaat
Different Roles in Machine Learning CareerDifferent Roles in Machine Learning Career
Different Roles in Machine Learning Career
Intellipaat12.4K views
Defining a Tech Project Vision in Eight Quick Steps pdf by TechSoup
Defining a Tech Project Vision in Eight Quick Steps pdfDefining a Tech Project Vision in Eight Quick Steps pdf
Defining a Tech Project Vision in Eight Quick Steps pdf
TechSoup 9.7K views

Ecommerce with Silverstripe

  • 1. Ecommerce with Silverstripe StripeCon 2021 Karl-Johan Smeds, CEO Niklas Forsdahl, Chief Software Developer
  • 2. Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com Creamarketing - Established in 1998, Vaasa Finland - Our team consists of 11 dedicated and skilled team members - Highly specialized in web development and ecommerce - We have been using SilverStripe since 2009 - Turnover 720.000 € (2020) - Highest creditworthiness (AAA) since 2009
  • 5. Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com Ecommerce experience - First webshop published 2001 - We did all the design and coding from scratch  - Continued to do webshop projects with OSCommerce - Switched from OSCommerce to Prestashop - 2 years ”Time-out” session before next step - First webshop with Silverstripe published in year 2016
  • 6. Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com Ecommerce today • About 30 ecommerce projects with SilverStripe • The majority of our turnover today is from ecommerce projects • Wide range of projects, from only about 100 products to about 500000 products, both B2B and B2C • Integrations to ERP and POS systems is very common • Successfully worked with core web vitals and content creation to get very good search ranking results
  • 10. • Community modules used • Changes made • Custom functionality we created Technical overview
  • 11. Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com SilverShop core • Overall a good technical and flexible base • silvershop/core forked to change Product and ProductCategory base class to DataObject instead of SiteTree • To support over 100k products • To make search and filtering easier • To make multilingual translation of products easier to handle
  • 12. Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com SilverShop discounts • Extended with custom product discount, which actually modifies selling prices of products, based on different criteria • Include products by category, manufacturer, attribute values, etc. • Store best selling price / discount percent on products and variations for efficient sorting and rendering
  • 13. Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com Silvershop stock • Some extensions to support large number of products • Store in stock status per variation/product on product stock changes • Options for out-of-stock behaviour per product and variation • Custom out-of-stock messages per manufacturer and product
  • 14. Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com Fulltextsearch • Used for site search and product filtering • SolrIndex subclassed to support Solr 8 • Support for highlighting, spellchecking, grouped queries, facet queries, tagged queries, etc. • Solr grouped query used for site search • Product filtering using Solr facet queries
  • 15. Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com
  • 16. Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com
  • 17. Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com Staticpublishqueue • Publish pages, product category pages, product pages statically • Some pages are deliberetly not statically published, like the checkout page • Dynamic data, like the shopping cart, are filled in via ajax on each request • FilesystemPublisher subclassed to do the actual page rendering in a separate process, to not run out of memory • Custom StaticCacheFullBuildJob to build full static cache for all pages and product urls in all Fluent locales
  • 18. Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com Queued jobs • Used in combination with fulltextsearch and staticpublishqueue • One fast and one large queue (plus an immediate queue) • Custom QueueRunner subclass that writes mark and lock files per queue • To make a queue completely sequential, and to make checking for jobs to run on the fast queue more efficient • Custom CronJob queued job, that parses crontab syntax in yml-files, for scheduling jobs on the large queue
  • 19. Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com Frontend • Heavy use of image manipulations for core web vitals scores • Custom image manipulation for doing webp transcoding, using image magick and libwebp • Picture-tags in templates with multiple croppings for different media queries • Bundling requirements via yarn and webpack
  • 20. Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com
  • 21. Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com Admin • Simple custom dashboard to show some analytics and sales data
  • 22. Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com Admin • Custom ModelAdmin subclass for webshop administration • Splits webshop administration in multiple top-level tabs • Custom GridField components • Filtering component • Bulk actions via colymba/gridfield-bulk-editing-tools • Component for nested grid fields • Component for tooltip data in grid fields
  • 23. Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com
  • 24. Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com Reports • Custom reports, based on nested GridFields • Custom ReportList, as a subclass of SQLQueryList • Focus on sales and stock reports
  • 25. Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com Other custom modules and extensions • Google shopping feeds • Campaigns • Manufacturer pages • Sample products • Abandoned carts • Integrations to Finnish and Swedish payment providers
  • 26. Ratakatu 7, 65100 VAASA, Finland +358 10 421 8860 www.creamarketing.com Future plans • More marketing automation • More related content on product pages and at checkout, either through site logic or via Google Vision AI API • More admin improvements for merchants