Best Practices
These are the setups we recommend for running Wash: Blog Manager day to day, keeping your SEO intact, and avoiding surprises between WordPress and Shopify.
WordPress configuration
Hide your WordPress blog from the public
When using WordPress solely for content creation (not as your public blog), hide it from the internet:
Option 1: Password protection
Put the whole site behind HTTP Basic Authentication, for example in .htaccess:
AuthType Basic
AuthName "Restricted Access"
AuthUserFile /path/to/.htpasswd
Require valid-user
Then give Wash the same username and password, under Basic Auth on the connection card in Apps > Wash > Connections. Wash sends them with every callback, so syncing keeps working. See Connection Settings.
Option 2: IP restriction
You can limit the WordPress admin to your own IP addresses, but Wash must still reach /wp-json/wash/v1/callback. Wash doesn't publish a fixed IP range, so leave that path open or use Option 1 instead.
Option 3: Subdomain setup
Use a hidden subdomain:
Public store: www.yourstore.com (Shopify)
Hidden blog: cms.yourstore.com (WordPress)
Block search engine indexing
Wash can do this for you: tick Block Search Engines on the Advanced tab under Settings > Wash Connector. It makes WordPress's robots.txt say Disallow: /. Wash itself doesn't crawl your site, so this never affects syncing.
For full protection, also tick Discourage search engines from indexing this site under Settings > Reading, and password-protect the site.
Recommended WordPress plugins
| Purpose | Recommended Plugin |
|---|---|
| SEO | Yoast SEO or RankMath |
| Image optimization | ShortPixel or Imagify |
| Revision control | WP Revisions Control |
| Performance | WP Super Cache |
| Security | Wordfence |
Content organization
Plan your blog structure
Before syncing, plan how WordPress categories map to Shopify blogs:
Strategy A: Mirror Structure
WordPress Categories → Shopify Blogs
├── News → News
├── Tutorials → Tutorials
└── Reviews → Reviews
Strategy B: Consolidation
WordPress Categories → Shopify Blogs
├── Company News ─┐
├── Press Releases ├─→ News
└── Events ─┘
├── Beginner Guides ─┐
└── Advanced Guides ├─→ Guides
─┘
Consistent formatting
Establish content standards:
- Use H2 for main sections and H3 for subsections.
- Give every image alt text and keep sizes consistent.
- Write link text that says where the link goes.
- Keep featured images at one aspect ratio; 16:9 works well.
SEO optimization in WordPress
Optimize before syncing:
- Write a meta description for each post in your SEO plugin.
- Put the post's main keywords in its title.
- Add alt text to every image.
- Link to related posts.
- Run your SEO plugin's readability check.
Sync best practices
Start with test content
- Create 2-3 test posts in WordPress
- Configure mappings
- Sync test posts
- Verify on Shopify
- Check formatting, images, metadata
- Adjust settings if needed
- Proceed with full sync
Schedule syncs wisely
For bulk operations:
- Run large syncs when traffic is low.
- Weekday mornings avoid the weekend traffic peak.
- Keep the sync log open while a large batch runs.
Review before publishing
Workflow recommendation:
1. Draft in WordPress
2. Internal review (draft status)
3. Publish in WordPress
4. Automatic sync to Shopify
5. Verify on Shopify storefront
6. Share/promote
What needs manual attention
While Wash: Blog Manager automates most of the sync process, some items require manual attention after migration.
Internal links
Links to other posts and pages that are synced to Shopify are rewritten to their Shopify URLs during sync, as long as Rewrite Internal URLs is ticked on the Sync Settings tab (it is by default). Links to posts that aren't synced yet stay pointing at WordPress.
What to do:
- Sync everything, then sync the posts with links once more so their links resolve
- Fix any remaining links with Search & Replace URL rules
<!-- Before (points to WordPress) -->
<a href="https://yourblog.com/how-to-guide/">How to Guide</a>
<!-- After sync -->
<a href="/blogs/news/how-to-guide">How to Guide</a>
Navigation menus
Shopify navigation menus are separate from WordPress menus. WordPress menus are not synced.
What to do:
- Go to Shopify Admin → Online Store → Navigation
- Manually create menu items pointing to your synced articles
- Consider organizing by blog or category
Canonical URLs
If keeping WordPress active alongside Shopify:
Risk: Search engines may see duplicate content.
Solution:
- Set canonical URLs in WordPress to point to Shopify versions
- Or block WordPress from search engines entirely (recommended)
- Use redirects to ensure only one URL is accessible
Cross-site links
Links to external sites remain unchanged. However, verify:
- Links still work after migration
- No broken external links exist
- Social sharing URLs are updated
Smart Redirections setup
Enable before migration
Set up redirections BEFORE you start syncing:
- Enable Smart Redirections
- Point a test domain or your old domain at Shopify
- Test with one post
- Verify redirect works
- Proceed with migration
Maintain redirects long-term
Keep redirects active for at least 1-2 years:
- Search engines need time to update
- Backlinks from other sites
- Bookmarks from users
- Printed materials with old URLs
Monitor for 404s
Regularly check for broken URLs:
- The Pages report in Google Search Console
- Visits to your 404 page in analytics
- Load from Shopify on the Redirections tab, to check the redirect list
Author management
Standardize author names
Shopify articles carry only an author name. Before syncing, check each author's Display name in WordPress, or set the name to show on Shopify with Author Mapping.
Author display
Most themes show article.author. Show it where your design needs it:
<div class="article-author">{{ article.author }}</div>
Image optimization
Before upload to WordPress
- Resize to at most 2048px wide; Wash doesn't resize images.
- Compress with a tool such as TinyPNG.
- Use JPEG for photos and PNG for graphics.
- Give files descriptive names.
During sync
On the Files & Media tab, turn on Convert to WebP for smaller files. Wash converts at quality 85.
On Shopify
Use responsive images:
<img
src="{{ image | image_url: width: 800 }}"
srcset="
{{ image | image_url: width: 400 }} 400w,
{{ image | image_url: width: 800 }} 800w,
{{ image | image_url: width: 1200 }} 1200w
"
sizes="(max-width: 600px) 400px, (max-width: 1200px) 800px, 1200px"
loading="lazy"
/>
Shopify theme customization
Create article template sections
Build flexible article templates:
{% comment %} sections/article-template.liquid {% endcomment %}
<article class="article">
{% section 'article-hero' %}
{% section 'article-meta' %}
{% section 'article-content' %}
{% section 'article-author' %}
{% section 'article-related' %}
{% section 'article-comments' %}
</article>
Display custom fields
Show synced metadata (see Custom Fields for the namespaces):
{% comment %} Reading time {% endcomment %}
{% if article.metafields.wash_custom.reading_time %}
<span class="reading-time">
{{ article.metafields.wash_custom.reading_time }} min read
</span>
{% endif %}
Style for consistency
Match WordPress block styles in Shopify CSS:
/* Match WordPress block styles */
.article-content figure {
margin: 2rem 0;
}
.article-content figcaption {
font-size: 0.875rem;
color: #666;
text-align: center;
margin-top: 0.5rem;
}
.article-content blockquote {
border-left: 4px solid #0066cc;
padding-left: 1rem;
margin: 1.5rem 0;
font-style: italic;
}
Security recommendations
WordPress security
- Use strong passwords from a password manager.
- Turn on two-factor authentication for every user.
- Limit login attempts with a plugin.
- Keep WordPress, plugins and themes updated.
- Serve everything over HTTPS.
API security
- Regenerate the API key if you think it leaked, then reconnect with a new connect code.
- Review Apps > Wash > Logs now and then.
- Use Permissions to lock settings other WordPress admins shouldn't change.
- Enable only the features you use.
Shopify security
- Give each person their own staff account.
- Review which apps have access, regularly.
- Turn on two-factor authentication for all staff.
- Watch the activity log for admin actions.
Monitoring and maintenance
Regular checks
| Task | Frequency |
|---|---|
| Review sync logs | Daily |
| Check for 404s | Weekly |
| Verify redirect function | Weekly |
| Update WordPress | Monthly |
| Full sync audit | Quarterly |
Sync logs
Apps > Wash > Logs in Shopify lists every sync with its result and error message. In WordPress, the Shopify column in the Posts list shows each post's status, and a red icon marks a failed sync.
Error handling
When syncs fail:
- Check Apps > Wash > Logs
- Identify the pattern (specific posts? images?)
- Fix the cause
- Retry with Sync to Shopify on the post, or Re-publish to Shopify from Bulk actions
Backup strategy
WordPress backups
Daily: Database backup
Weekly: Full site backup
Monthly: Off-site backup verification
Shopify data
While Shopify handles hosting:
- Export articles periodically
- Keep WordPress as source of truth
- Document custom theme changes
Migration checklist
Pre-migration
- [ ] Audit existing WordPress content
- [ ] Clean up unused posts/images
- [ ] Export list of all WordPress URLs (for redirect mapping)
- [ ] Verify all images have alt text
- [ ] Check author display names
- [ ] Plan category-to-blog mapping
- [ ] Test with sample content
During migration
- [ ] Enable Smart Redirections
- [ ] Sync in batches
- [ ] Verify each batch
- [ ] Monitor for errors
- [ ] Check image uploads
- [ ] Test redirects
- [ ] Create 301 redirects for old URLs
Post-migration (SEO checklist)
- [ ] Submit new sitemap to Google Search Console
- [ ] Use URL Inspection tool to verify pages
- [ ] Monitor the Pages report for crawl errors
- [ ] Check meta titles and descriptions synced correctly
- [ ] Verify images load from Shopify CDN (not WordPress)
- [ ] Test internal links and update broken ones
- [ ] Monitor 404 errors in analytics
- [ ] Tick Block Search Engines in WordPress (if keeping it)
- [ ] Keep WordPress secure/hidden