The Problem With Sharing WordPress Drafts
You've written a blog post, built a landing page, or assembled a product description for a client. It's in draft. Now they need to review it before you hit publish.
What do you do?
Most WordPress users fall into one of these traps:
Option 1: Create a user account for the client. Give them editor or contributor access. Walk them through logging in. Hope they don't accidentally click something they shouldn't. Revoke access after they're done (and remember to actually do it).
Option 2: Password-protect the post. Go to the post, enable password protection, publish it (making it technically live), send the client the URL and password. The client visits a confusing "Password Required" screen. You forget to remove the password before the real launch.
Option 3: Send screenshots. Self-explanatory why this is inadequate.
Option 4: Give them your own login. Please don't.
None of these are good. They're either too complicated, a security risk, or they bypass the concept of a "draft" entirely.
What You Actually Need
The ideal solution looks like this:
- Click a button on the draft's edit screen
- Get a link
- Paste the link into an email or Slack message
- Client clicks the link, sees the draft exactly as it would appear on the live site
- Link expires automatically after a few days
No accounts. No passwords. No access revocation to remember. No published content visible to search engines.
This is exactly what draft preview links do — and it's a solved problem.
How Erdo Draft Links Works
Erdo Draft Links adds a meta box to every post and page editor in WordPress. When you click "Generate Preview Link", it creates a cryptographically secure, time-limited URL that anyone can open — even without a WordPress account.
The link looks something like this:
https://yoursite.com/?draft_preview=k9mX2vQpL8nJ4rY7...
The token is 32 characters long and generated using PHP's random_bytes() — the same standard used for session tokens in secure web applications. It's not guessable, not sequential, and not derivable from any other information about your site or post.
Setting the Expiry
When generating a link, you choose how long it stays active:
- 24 hours — for quick turnaround reviews
- 48 hours — the default; usually enough for a business day cycle
- 3 days — for clients who are hard to reach
- 7 days — for longer review cycles or multiple stakeholders
After the chosen period, the link stops working and shows a polite expiry notice. The draft itself is unaffected — you can generate a new link at any time.
Tracking Views
Every preview link shows a view count in the post's meta box. This answers a question every freelancer has asked themselves: Did they actually look at it?
Before a client call, you can see whether the link was opened — and how many times. If the count is 0, you know to walk them through it live. If it's been opened 6 times, they've probably had a thorough look.
Collecting Client Feedback
The preview page includes an optional feedback widget. Clients can leave a thumbs up or thumbs down reaction and a short text comment, directly from the preview — no forms, no emails required.
Their responses appear in the post's meta box alongside the view count. You don't need to chase a reply in Slack or scroll back through email threads.
Who Can See the Link?
Anyone with the link can see the preview, but only during the active window. The preview page:
- Sends a
noindexheader so search engines won't crawl or index it - Is not linked from any page on your site
- Renders the draft content with your current theme, so clients see the final appearance
When the link expires, it becomes a dead end. The draft content never becomes public just because you shared a preview link.
Revoking a Link Early
If you share a link and then make significant changes to the draft, you can revoke the existing link and generate a new one with a single click. Useful when:
- A client shared the preview link with someone who shouldn't have it
- You realised the content had a major error after sending
- You want to reset the view count for a fresh review cycle
Custom Post Type Support
The plugin works with any public post type registered in your WordPress installation:
- Standard posts and pages (obviously)
- WooCommerce products and product variations
- Portfolio items
- Custom post types from themes or other plugins (e.g., Events, Properties, Team Members)
If it appears in the WordPress post editor, you can generate a preview link for it.
A Typical Agency Workflow
Here's how a small agency might use this in practice:
- Writer drafts content, assigns it to "In Review" status
- Account manager generates a preview link with 48-hour expiry
- Account manager pastes the link into the client's project thread (Slack, email, Asana, wherever)
- Client opens the link, leaves a feedback comment: "Change the headline, looks good otherwise"
- Writer sees the feedback in the post editor, makes the change, generates a fresh link
- Client approves on second look
- Post is published. Link has already expired; nothing to clean up.
No user accounts created. No access to revoke. No published drafts to unpublish.
Installation
Install from WordPress.org in the usual way: Plugins → Add New, search for "erdo draft links", install and activate.
No settings to configure before use. The preview link generator appears automatically in the sidebar of every post and page edit screen.