So I'm taking the plunge from ExpressionEngine to Craft! I have a ton of entries I need to move over, though - and I used the "matrix image haystack" technique for my blog posts to inject the images into the body copy.

I love the Matrix layouts in Craft and would like to essentially put those images in their own "block" and separate the text around the haystack tags into their own blocks as well. I'm doubting that's possible, but I'm not going to be able to re-publish hundreds of blog posts a new way, either :)

Has anyone attempted anything like this?

  • Don't have a solid answer for you other than that's going to be some messy migration code. :) You should be able to use something like this to get started, though: github.com/boboldehampsink/import
    – Brad Bell
    Commented Jun 10, 2016 at 18:38

1 Answer 1


You have two main options with a challenge like this.

1) Do it manually - While this option doesn't always sound like the most glamourous option, it's often a fairly reasonable step to consider during migrations. Writing and debugging advanced code that is only going to be used once can be costly, and there are plenty of people who specialize in data entry who are capable of helping out if you prepare a good workflow and take the time to train them on the task.

2) Do it programatically - If you take this approach, you'll probably be using an Extract, transform, load Process (also referred to as an ETL Process). In your case this would roughly equate to:

  1. Extract the data from your ExpressionEngine database
  2. Transform that data – processing the body and EE matrix haystack fields and updating the data into the format which you wish to import it into Craft
  3. Load your new data into Craft (using a script or import plugin like Brad mentioned in the above comments)

My firm runs a database migration service, The Great Migration, and I can confirm that it is possible to migrate ExpressionEngine sites using a "matrix image haystack" technique to Craft CMS. We have used both programmatic and manual steps in doing so for images, videos, and quotes using this technique. Your final solution will largely depend on the format and integrity of your source data and the desired format of your target data.

  • +1 for #1... I've often found that cheap data entry labor is the best way to go for something like this. Human eyes help prevent bizarre importing mistakes, and the cost of someone like that is usually about 1/10 of our hourly rate. Basically, 3 hours to write a script is more expensive than 20 hours of cheap manual labor.
    – Lindsey D
    Commented Jun 12, 2016 at 20:34
  • I ended up manually copying the data over myself. It was horrible :) Too bad there's not a better solution out there. I'd be moving over a lot more EE sites if there were. Commented Jun 24, 2016 at 17:07

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.