Extensions let you change any part of Magento, which is powerful but dangerous.


  1. Buy vs. build — If you can buy an extension or write a little code, then write the code (as an in-house extension). It’s cleaner and easier to maintain.
  2. More extensions, more problems — The extension marketplace is like candy. Too much makes you sick.
  3. Vetting — Invest a little time/money and be prepared to walk away.
  4. Always integrate — Extensions probably won’t gel out of the box. Always plan to integrate.

Vetting extensions

This is how GravDept evaluates Magento extensions:


  • Documentation is public (all of it) before buying.
  • Documentation is encyclopedic and empathetic to all skill levels.
  • Documentation that goes above and beyond is the highest indicator of quality.


  • The maker is not anonymous. The real people making the product are identifiable to the Magento community.
  • The maker has no history of community abuse or piracy (this is real).

Negligible indicators

  • Certification badges show competence, but not necessarily excellence.
  • Partner badges show size and willingness to pay-to-play. Independent makers are no lesser.
  • Refund guarantees cost nothing to offer. They’re worth as much.
  • Testimonials are always full of rainbows and unicorns.


  • Must pass code review (or you commit to refactoring).
  • Must be maintained by maker (or you commit to maintainance).

Integrating extensions

Step 1 — Code review

Every extension should undergo a comprehensive code review evaluating the following areas:

  • Code standards (industry + platform + internal)
  • Performance (backend + frontend)
  • Security
  • Responsive design
  • Content (SEO + localization)
  • Accessibility
  • Customization and extensibility

If you buy an extension and it fails code review, remember you can walk away. Finding a better fit can save money/time.

Step 2 — Enrollment

Extensions probably don’t align with your project’s standards, practices, and workflows. GravDept performs enrollment on every extension to make it fit the project better. Unfortunately, this usually means rewriting most of the frontend code.

Enrollment practices

  • Refactor to code standards.
  • Adapt CSS to Sass.
  • Reduce CSS using the project’s design system.
  • Modularize JS.
  • Reduce JS using the project’s common libraries.


  • Learn the extension’s code deeply.
  • Avoid short-term fault potential.
  • Avoid long-term technical debt (code conforms to project).
  • Faster customization.


  • Slower initial implementation.
  • More long-term technical debt (extension updates require effort).

It’s a double-edged sword, but enrollment is better for projects where most things are customized.

Step 3 — Customization

Customizations are easier to implement and maintain with a standardized codebase. Follow your normal development practices going forward.

GravDept extensions

Designed and developed by GravDept, so they’re excellent.

Acumen Theme
The best supported and most extensible Magento theme in the world — and a best seller too.

Trusted extensions

Extensions I’ve implemented and recommend.


Aheadworks: Knowledge Base
Articles that are searchable with categories, tags, and ratings.


Ashley Schroder: Magento SMTP Pro
Full SMTP and Gmail/Google Apps email support for Magento.

ebizmarts: MageMonkey
Replace Magento’s newsletter with MailChimp integration.

Fontis: Campaign Monitor
Replace Magento’s newsletter with Campaign Monitor integration.

Kalen Jordan: MageMail
Triggered email for automated marketing.


Meanbee: Magento SVG Helper
Inline SVG files in PHTML templates.


Paradox Labs: Authorize.net CIM with Recurring Payments
Store credit cards securely with Authorize.net.


WebShopApps: MatrixRate
Apply shipping rates by destination (and other attributes).

Interesting extensions

Extensions I’ve evaluated, but not implemented yet.


Cyrill Schumacher: Magento Markdown
Write CMS content in Markdown in the Magento admin.

Johann Reinke: Magento Highlighter
Syntax highlighting for HTML in the Magento admin.


Catalin Ciobanu: Improved Magento Layered Navigation
AJAX filters and multi-select filters from the same attribute.

Tom Robertshaw: Magento Footer JS
Move Magento’s inline JS to the footer.


FFM Engineering: Localise API
Integration with Loco for translation syncing.

Painful extensions

Extensions I’ve implemented, but were not ideal at the code level. I chose to use them over building from scratch, but they didn’t fit the project’s code standards well.

Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering. Yoda, wise swamp frog


MageWorld: One Step Checkout Pro
Removes step-driven UI with BackboneJS to refresh sections.

  • HTML: unreadable indentation.
  • HTML: elements nested invalidly.
  • CSS: disorganized selector order.
  • CSS: errors from unclosed selectors.
  • CSS: uses outdated hacks.
  • JS: too many libraries (jQuery, jQuery UI, Backbone, Underscore, and more).
  • Performance: JavaScript (750 KB) — refactored to 114 KB.
  • Performance: CSS (77 KB) — refactored to 2 KB.
  • Performance: HTTP requests (13) — refactored to 1.
  • Cache: config cannot be cleared. You must manually delete this file: /media/mw_onestepcheckout/{domain}-onestep-config-default.js


Unicode Systems: Product Attachments
Add media files (PDF, image, video, etc) to product pages.

  • HTML: hidden in PHP class.
  • CSS: inlined in HTML.

Blacklisted extensions

Extensions you should avoid like the plague.

You are banished forthwith from the kingdom of Rohan, and all its domains, under pain of death. Gríma Wormtongue, Assistant to the Regional Manager of Rohan

I don’t use extensions often enough to get burned by the really bad ones. They don’t pass vetting usually, and never get to code reviews. If one does, I’ll update the blacklist.