Yesterday, I went down a frustrated rabbit hole as I looked for the best way to copy and paste blog posts written in Google Docs to WordPress.
If you’ve ever tried to do this before, you’ll have encountered a bunch of formatting and image embed problems. In fact, that’s probably why you’re here reading this right now.
After hours of searching and trying to implement suboptimal solutions, I found the best solution for me. It isn’t perfect, but it was close enough to keep me sane:
It’s a combination of manual copy and pasting and the Gutenberg block editor’s upload external image button available in the toolbar.
At the bottom of this post, I go into more detail about the problem I was trying to solve and why this was the best solution for me.
The best resource to dig deep
I searched “ import Google Docs into WordPress” and “copy and paste into WordPress”.
Kinsta’s post, Google Docs to WordPress — 6 Tricks You Need to Know, was the best post I could find on the subject. They gave 3 detailed solutions which I’ll review briefly below. If you want to see exactly how to implement them, I suggest you read their article.
Here are the 3 solutions I tried:
Wordable seemed like the answer to my prayers. Their headline literally says Publish content from Google Docs to your blog in 2 minutes. Yes!!! It’s a service made exactly to solve the problem I had: formatting and image embed issues when importing content from Google Docs into WordPress.
Unfortunately, their pricing plans are prohibitively expensive and start at $49/month. Clearly they are meant for much larger companies than mine! So I quickly moved on…
Enjoying this post? Don't miss the next one.
Subscribe to get 10% OFF any Newsletter Glue license your first year.
Mammoth .docx converter plugin
This was the next suggestion in Kinsta’s post. However, I quickly dismissed the Mammoth plugin because of the suggested workflow, which was:
- Download your Google doc as a .docx file
- Upload .docx file into WordPress via Mammoth
This method could’ve worked. But manually exporting an entire Google doc and re-uploading it into WordPress felt like I was dealing with Microsoft Word in the late 90s and I just couldn’t bring myself to do it.
Jetpack and WordPress.com for Google Docs add-on
The WordPress.com for Google Docs add-on seemed like the perfect solution. Better yet, it was free! If you don’t have a WordPress.com account, you can simply use the free version of Jetpack instead.
I didn’t already have Jetpack installed on my blog, so I jumped through the hoops to install it. The process was fairly simple, but they do downplay the free plans and strongly encourage you to purchase a paid version.
I felt ridiculous installing Jetpack, which is a plugin that offers a zillion features (literally — I counted), just for a tiny integration. But I was committed to finding a solution at this point and can be pretty stubborn!
I then installed the WordPress.com for Google Docs add-on. Again, the installation process was quick and easy. But when I tried to connect my blog to Google Docs, I kept getting this error:
“That site does not seem to be accessible or no longer has the Jetpack plugin installed.”
After hunting around, I learnt that I could debug the issue using Jetpack Debug. Ok, I have to admit that’s pretty cool!
I quickly learnt I had an XML-RPC problem, which made me go down a whole other rabbit hole. Eventually, I found out that the reason for this problem is that my host, Cloudways, disables XML-RPC by default for security reasons. So I had to login and enable it.
Trust me, having to manually enable something that someone disabled by default across their entire hosting solution for security reasons didn’t make me feel good. 😅
Anyway, I did that, finally managed to connect Jetpack to Google Docs and tried to import my first Google doc into WordPress.
Major anticlimax. I got stuck in “saving” mode. The post never actually saved to WordPress.
At this point, I had already spent 2 hours trying to make this work. I was tired and hungry, so I gave up.
Holler Box to the rescue!
As a last ditch attempt, I searched “copy and paste google docs into wordpress -jetpack -wordable” and found this simple blog post, Copy/Paste Google Docs to WordPress (With Images), by Scott Bollinger at Holler Box.
This wasn’t perfect. But given the constraints, this solution was perfect for me.
The biggest import problem is images
You see, the block editor has actually solved most of the formatting problems that the classic editor had.
It’s now actually pretty easy to select all and copy a post in Google Docs, then paste it into a WordPress post. Everything actually works and comes out pretty nicely. Including the images!
Images are still hosted on Google
However, the images are still hosted on Google. Meaning, you won’t find the images in your media library because the images haven’t been imported.
Now, you definitely don’t want this because that means your images will break if you delete your Google doc. And pulling your images from Google this way is less efficient and not helpful for your SEO (if you care about that).
No direct way to save images from Google Docs
Another problem is that there’s no direct way to download and save embedded images from Google Docs. So if you’re working with other writers and they embed an image in the doc, you can’t simply right click and save the image to import into WordPress.
Instead, when you right click an embedded image, your only saving-related option is save to Keep. Keep is a note-storing product by Google and they don’t make it easy for you to download images from Keep either. So this means your images are stuck in Google.
The most common way to solve this is by duplicating the work. You first embed images in the Google doc so everyone knows where in the post the image goes, then you create a separate folder and add all the images in there for easy downloading.
This is really annoying because when you’re writing, you want to quickly create screenshots, embed them into the post, then keep writing. You don’t want to spend time adding them into a separate folder as that breaks your flow. Or worse, hunting down the million images you used after your post is done.
And if that’s not painful enough, when publishing the post to WordPress, you have to bulk upload all the images into the media library, then manually go through the post and match and replace the external images.
This laborious task is so painful, I even explored Dropbox Paper in the hope I could circumvent this issue. Unfortunately, Google Docs’ suggest edit and collaboration features were lacking in Dropbox Paper and I found myself missing them enough to subject myself to this crazy rabbit hole.
My solution and final workflow
Coming back to Scott Bollinger’s article, I realised I could skip:
- Creating a duplicate separate folder of images used
- Bulk uploading images into WordPress
- Manually matching and replacing external images with my uploaded ones
You see, the block editor now has a tiny button you can press that simply lets you upload any external image you’ve pasted into the post.
So now, all I do is:
- Write my post in Google Docs and add images as I go
- Copy and paste the post into WordPress
- Scroll through the post and click Upload external image for each image
Yes it’s still a bit annoying that I have to manually click Upload external image for every image. But this is better than:
- Paying $49/month to copy and paste Google docs into WordPress
- Downloading the .docx file then uploading it again like I was still in the 90s.
- Installing a gigantic plugin, Jetpack, for a tiny integration that never actually worked for me
More importantly, I’m pretty happy and impressed with how seamless the block editor has made this process. If you read the Kinsta post, you’ll realise how troublesome it is to copy and paste into the classic editor.
If you’re wondering, this post was written in Google Docs and transferred into WordPress using the exact workflow I detailed above.
When writing for myself (without collaboration) I usually write directly in the block editor. But in this case, I chose to write this post in Google Docs just so I could say I did!