One Link Client Portal for Deliverables
Table of Contents
- One link for client deliverables, instead of a trail of files
- What a one-link client portal is, and is not
- Organize the portal around the client’s next decision
- Build the delivery page
- Publish the page
- Cloudflare Pages with Cloudflare Access (email-based access)
- Netlify (shared password)
- Document-only packages: DocSend or Papermark
- Pick the right gate for the material
- Test as the client, then send
- Use activity without becoming creepy
- Keep the same link current
- Five practical one-link package examples
- Avoid common one-link client portal mistakes
- Final thoughts
- One link for client deliverables, instead of a trail of files
- What a one-link client portal is, and is not
- Organize the portal around the client’s next decision
- Build the delivery page
- Publish the page
- Cloudflare Pages with Cloudflare Access (email-based access)
- Netlify (shared password)
- Document-only packages: DocSend or Papermark
- Pick the right gate for the material
- Test as the client, then send
- Use activity without becoming creepy
- Keep the same link current
- Five practical one-link package examples
- Avoid common one-link client portal mistakes
- Final thoughts
One link for client deliverables, instead of a trail of files
A one-link client portal is one web page that holds all finished work for a client. It solves a common problem: clients cannot find the right version of finished work. Reports are in email, notes are in chat, and demos are at another URL.
That friction is expensive. In Microsoft’s survey of 31,000 workers, 62% said that they spent too much time searching for information. Microsoft 365 data also showed that people spent an average of 57% of their time on communication and 43% on creation (Microsoft Work Trend Index).
One link for client deliverables gives clients a single browser page for:
- The final report or presentation
- Source files and supporting data
- A live demo or walkthrough
- Delivery notes and a way to send feedback
In short, build a small static page that lists the deliverables in reading order. Host it on Cloudflare Pages (with Cloudflare Access for email-based access) or Netlify (with a password on a paid plan). Test it as the client. With each release, update the same address. For document-only packages, a DocSend Space or a Papermark data room does the same job, and you do not build a page.
What a one-link client portal is, and is not
A useful portal gives clients one memorable place to open, review and download finished work. It feels like a tidy handoff desk, not like software that the client must learn.
| Approach | Client experience | Best use | Main drawback |
|---|---|---|---|
| Email attachments | Files hide in a long thread | One small, final file | Versions split across messages. Personal Gmail limits attachments to 25 MB (Google Help) |
| Shared drive folder | Client browses a file tree | Ongoing co-editing | Permissions and folder depth confuse occasional visitors |
| Document room (DocSend, Papermark) | Client opens a branded set of documents | PDFs, decks and data rooms with view tracking | Made for documents, and less suited to a live demo |
| Static delivery page on a web host | Client opens one focused page | Reports, files, demos and notes together | You build the page and set up access yourself |
| Full client suite | Client logs into a workspace | Projects with tasks, invoices, approvals and support | More setup, cost and training |
This guide is about the static delivery page. It can hold every kind of deliverable at one address, including a working demo. It does not replace your contract, task, billing or approval tools. Keep those where they are.
Organize the portal around the client’s next decision
A good portal puts decisions first, final outputs second and supporting details last. Within one minute, a client must understand what arrived and what to do next.
Use this order:
- Start here: a short delivery note with the project name, the release date, the outcome and the recommended next action.
- Review first: the main report, proposal or deck. Use a clear title such as Q2 Retention Report, not
final_v7b.pdf. - Use or download: production files, exports, data and brand assets, grouped by purpose.
- See it work: the demo, prototype or walkthrough, next to the files that it explains.
- Respond here: one clear way to send feedback, so that comments do not scatter across inboxes.
| Area | Example contents | Naming rule |
|---|---|---|
| Overview | Delivery summary, release date | State the purpose |
| Primary work | Report PDF, proposal, slide deck | Lead with the client outcome |
| Supporting work | CSV, images, source archive, appendix | Group by use |
| Demo | Browser demo, walkthrough video, prototype | Say what to test |
| Response | Feedback form or reply instructions | Ask one clear question |
For example, a research consultant can start with an 18-page findings report. Then the consultant adds interview notes, a data workbook and a feedback form. The client sees a story, not a storage bin.
Build the delivery page
You need one folder with an index.html at the top. Everything else goes in subfolders:
northstar-handoff/
index.html
report/q2-retention-report.pdf
files/retention-data.csv
files/brand-assets.zip
demo/index.html
A plain page is enough. Here is a starting point. You can edit it by hand, or ask an AI assistant to style it:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Northstar website handoff</title>
</head>
<body>
<h1>Northstar website handoff</h1>
<p>Released 14 October. Start with the report, then try the demo.
We recommend approving option B before the 1 November launch.</p>
<h2>Review first</h2>
<p><a href="report/q2-retention-report.pdf">Q2 Retention Report (PDF)</a></p>
<h2>Files</h2>
<ul>
<li><a href="files/retention-data.csv">Retention data (CSV)</a></li>
<li><a href="files/brand-assets.zip">Brand assets (ZIP)</a></li>
</ul>
<h2>Demo</h2>
<p><a href="demo/">Open the demo</a>. Try the signup flow on a phone.</p>
<h2>Questions or approval</h2>
<p>Reply to the delivery email, or use the form below.</p>
</body>
</html>
Before you upload, remove drafts, duplicate exports, internal comments, .env files and anything else that the client does not need. Anyone who can open the page can reach every file in the folder.
Publish the page
Pick the host by how private the material is.
Cloudflare Pages with Cloudflare Access (email-based access)
- In the Cloudflare dashboard, open Workers & Pages. Select Create application > Get started > Drag and drop your files. Name the project and drag in the folder. Select Deploy site (Cloudflare Pages Direct Upload). Drag and drop accepts up to 1,000 files. For larger packages, use
npx wrangler pages deploy <folder>. - If you want a custom domain, add it first. Cloudflare cannot add a custom domain that already has an Access policy.
- In the project’s Settings > General, select Enable access policy. Then follow Cloudflare’s steps to extend that policy to the
pages.devdomain. For a custom domain, add a separate self-hosted Access application. - Give the application an Allow policy. Use the Emails selector (named people) or Emails ending in (the client’s domain). Turn on the One-time PIN login method. Clients then sign in with a code sent to their email (One-time PIN).
Our Cloudflare Pages access guide covers these steps in detail.
Netlify (shared password)
- While you are logged in, open Netlify Drop. Drag the folder into the deploy zone (Netlify deploys).
- Add a password under the project’s Visitor access settings. Password protection needs a Pro or Enterprise plan. Free projects cannot use it.
- For feedback, add a form with a
data-netlify="true"attribute. Enable form detection under Forms. Netlify can email each submission to you through Forms > Submission notifications (Netlify Forms).
See our Netlify password guide for the exact settings on each Netlify plan type.
Document-only packages: DocSend or Papermark
If the delivery is only PDFs and decks, you do not always need a page. A DocSend Space can require an email. On Advanced and higher plans, it can also verify that email. Papermark data rooms record who visited and when (Papermark view tracking).
Pick the right gate for the material
The gate is the access method in front of the page. Secure sharing matches access to the material. More friction is not always safer, and less friction is not always better. The sound rule is least privilege, as NIST defines it: give people only the access that they need for the task.
| Access | Use it when | How to set it up | Practical example |
|---|---|---|---|
| Public | The material is for anyone, and it holds no private data | Any static host, no settings | Public media kit or product demo |
| Shared password | A known group needs a shared secret | Netlify Pro, or Vercel Password Protection (paid add-on, not on Hobby) | Agency handoff for a client team |
| Email-based | You need to know who opened the link | Cloudflare Access with One-time PIN, or DocSend and Papermark email rules | Proposal, sales deck or partner briefing |
If the material is sensitive, send the password in a separate message. If you require an email, say why. This sentence is enough: Email sign-in keeps access limited to your team.
A gate is still not a compliance program. Do not share regulated health, payment, legal or export-controlled data until contracts, internal policies and legal duties permit it. For those files, first make sure that you meet the requirements for retention, deletion, residency and access.
Test as the client, then send
Open the link in a private browser window. Follow the client’s path:
- Sign in with an allowed email (or the password). Make sure that the page refuses an email that is not allowed.
- Open the page on a phone. Long tables and wide images often break first.
- Open every link and download one file of each type.
- Try the demo from start to finish. Demos that work only while you are signed in to another tool fail here.
- Submit the feedback form. Make sure that the submission reaches you.
Then keep the email short: Your report, files, demo and feedback form are together here. Please start with the summary at the top.
Use activity without becoming creepy
What you can see depends on the host:
- Cloudflare Access logs each sign-in with the user’s email, time and country. You find the log under Logs > Access authentication logs in Zero Trust. It records sign-ins, not the files that people opened (Access logs).
- Cloudflare Web Analytics shows page-level traffic for the delivery page. Turn it on in the Metrics tab of the Pages project (Web Analytics).
- DocSend can email you at each visit. The email gives the percentage of the document that the visitor viewed and the time spent (notification settings).
- A shared password tells you nothing about who opened the page.
Use this activity as a signal for timing, not as a verdict on the person.
| Signal | Reasonable reading | Useful response |
|---|---|---|
| No sign-in after two business days | The message is possibly buried or blocked | Make sure that the link reached the right person |
| One sign-in, nothing else | The client possibly read it quickly on a phone | Send one sentence that names the main finding |
| Several team members signed in | Review is active | Offer a short call tied to the decision |
| Repeat visits before a meeting | An internal discussion is possibly near | Follow up with context, not a generic nudge |
| Form submitted | The client chose a response channel | Reply there and keep the thread together |
Never write I saw you spent time on page nine. Say Page nine covers the rollout cost, if that helps your review. The difference is small and human.
Keep the same link current
The best reason to use one link appears after delivery. Someone finds a typo, the client requests a new export, or a demo changes. Do not send a new address. Update the content behind the existing address:
- On Cloudflare Pages, open the project and select Create a new deployment. Upload the updated folder. The production address stays the same.
- On Netlify, drag the updated folder into the deploy dropzone at the bottom of the project’s Deploys page.
- In DocSend, select Replace on the file in the Content library. Existing links show the new version. DocSend does not tell visitors that the file changed (update content).
Use a controlled release routine:
- Keep working files separate. Design files, code repositories and notebooks stay the source. The delivery folder holds only the client-ready release.
- Prepare the change before you touch the live package.
- Decide whether to replace or add. If the old file has no continuing value, replace it with the corrected file. If the client possibly needs both versions, add a dated version.
- Write a short change note at the top of the page. Say what changed, give the date, and say whether the client must act.
- Test the live link again in a private window.
- Send a notice only when it is useful. For a silent typo fix, do not send an email. For a changed recommendation, price, scope or deadline, send one.
| Change | Link action | Client message |
|---|---|---|
| Typo or formatting repair | Replace in place | Usually none |
| New export that the client requested | Add beside the main file | Name the new file |
| Material revision | Replace, or keep both versions | Explain the effect |
| Access change | Update the Access policy or password, then test again | Send new instructions securely |
Five practical one-link package examples
| Work type | Package organization | Access and follow-up |
|---|---|---|
| Freelance brand handoff | Start Here, logo guide PDF, SVG and PNG folders, font links, social templates, feedback form | Shared password. If the client asks which files to use, add a short “which format where” note to the page. |
| Consulting report | Executive summary, 24-page report, source workbook, interview appendix, decision form | Email-based access. Follow up on the recommended decision, not on every visit. |
| Agency campaign delivery | Results deck, ad exports, approved copy, performance CSV, three-minute walkthrough | Email domain rule for the client team. When the creative work changes, add a dated release note. |
| Founder proposal | Twelve-slide proposal, pricing PDF, browser demo, security note, contact form | Tracked document link for the deck, delivery page for the demo. |
| AI agent pilot | Demo, prompt specification, evaluation results, known limits, sample outputs, change log | Email-based access. When the evaluation set changes, publish the new results at the same link. |
An AI agent can generate reports or prepare recurring releases. But before the link goes out, a person must still review the destination, the access rule, the client data and the release note.
Avoid common one-link client portal mistakes
The most common mistake is to archive everything that the team produced. Delivery requires editing. Remove duplicates, internal comments, failed drafts, secrets and unusable files.
| Mistake | What the client feels | Better choice |
|---|---|---|
| You upload every draft | Uncertainty about what is approved | Show one current release. Add older versions only when they are necessary |
| You use vague file names | Fear of opening the wrong item | Use outcome, format and date where useful |
| You put a gate on everything | Friction before trust exists | Match the gate to risk and identity needs |
| You skip the private-window test | Broken access or demos | Follow the same path that the recipient will use |
| You treat analytics as certainty | Pushy or mistimed follow-up | Combine activity with the project context |
| You use a delivery page for operations | Missing tasks, invoices or approvals | Add a full client suite when the workflow needs one |
Final thoughts
With a good one-link client portal, clients do not have to search for files. Clients get one browser destination for the report, files, demo, notes and response. You get a stable address, access that fits the material, and cleaner follow-up.
Follow four rules:
- Organize the page around the client’s next decision.
- Use the lightest gate that fits the risk.
- Keep the same link current with a tested release routine.
- Automate only after the manual delivery pattern is clear.
Start with one finished project. Build the page and put it behind the right gate. Test it as the client, and send one URL.
A docs portal with Ask AI
and support tickets
Connect a repository, or describe your product to start. Each docs site has search, Ask AI, an API console, an MCP server and support tickets.
- Publishes from GitHub on every push
- Works with Mintlify repositories
- API console from your OpenAPI file
- MCP server and llms.txt for AI agents
- Ask AI and support tickets
- Analytics for people and AI agents
Frequently Asked Questions
Can clients send files back through the portal?
Not with a static page alone, because a static page has nowhere to store uploads. On Netlify, a form can include a file field (one file per field). Submissions then appear in the project’s Forms section. Otherwise, share a Google Drive folder with the client as an editor. Or ask the client to reply to the delivery email with attachments.
Will the delivery page show up in Google search?
Search engines cannot crawl a page behind Cloudflare Access or a password, so they will not index it. If someone links to a public page, search engines can index it. On Cloudflare Pages, add a _headers file to the uploaded folder. The file sends an X-Robots-Tag: noindex header, which asks search engines to skip the page.
Related Articles

How to Collect Client Feedback Online
Collect clear client feedback online. Protect the deliverable, use a short form, set review rounds, name one owner and use view activity with care.

Best Client Portal Software for Agencies
Compare client portal software for agency operations, collaboration, file sharing, creative proofing, and secure delivery.

How to Build a Lightweight Client Portal Without CRM
Build a secure client portal without CRM software. Share current files, control access, collect feedback, and track client engagement.