Dark Light

Stop Selling on Upwork: How to Move Your Freelance Services to Your Own WordPress Site

Varun Dubey 16 min read

Upwork takes 20% of everything you earn for your first $500 with each client, then drops to 10%, and eventually to 5% after $10,000. On paper that sounds manageable. In practice, it means handing over $2,000 on a $10,000 project, and doing it again every time you land a new client. This guide covers the exact steps to move your freelance services off Upwork and onto your own WordPress site using WP Sell Services, from setting up your store to migrating existing clients, configuring payments, building a portfolio, and taking bookings.


The Real Cost of Staying on Upwork

Most freelancers underestimate what Upwork costs because the fee comes out of each payment automatically, you never write a check for it. But when you add it up across a year, the picture changes.

Annual RevenueUpwork Fee (blended ~15%)What You KeepWith Own Site (2.9% payment fee)
$30,000$4,500$25,500$29,130
$60,000$9,000$51,000$58,260
$100,000$15,000$85,000$97,100

The blended 15% figure is realistic for freelancers with a mix of new and established client relationships. Payment processors like Stripe charge around 2.9% + $0.30 per transaction. The delta, roughly 12%, is pure margin you get to keep when you own your own storefront.

Beyond the fee math, there are structural problems with staying platform-dependent:

  • Upwork can suspend your account with limited recourse, taking your entire client history and reputation with it.
  • You cannot export client contact information, your relationship with your client exists inside Upwork’s walls.
  • Search ranking on Upwork is opaque and changes constantly; new freelancers with low hourly rates can undercut you regardless of your track record.
  • Upwork charges clients a 5% processing fee on top of your rate, making your services more expensive than they need to be.
  • You cannot build a branded experience, every client lands on Upwork.com, not on your site.

Moving to your own WordPress store does not mean starting from scratch with clients. It means owning the relationship going forward.


What You Need Before You Start

This setup requires three things: a WordPress installation with WooCommerce active, the WP Sell Services plugin, and a payment gateway. You do not need a page builder, a custom theme, or a developer. The stack is intentionally minimal.

Required Stack

  • WordPress, any recent version, self-hosted
  • WooCommerce, free from the WordPress plugin directory
  • WP Sell Services, the core plugin that adds the service delivery workflow
  • Stripe or PayPal, for receiving client payments

Optional but recommended:

  • A booking calendar plugin (WooCommerce Bookings or Bookly) if you sell time-based services
  • A portfolio plugin or block theme with portfolio templates
  • An SSL certificate, required for payment processing (most hosting providers include this free)

Hosting cost runs $5–$15 per month at providers like Hostinger, SiteGround, or Cloudways. Domain registration is $12–$15 per year. Total infrastructure cost is under $200 per year, less than what Upwork collects on a single $1,500 project.


Setting Up WP Sell Services

WP Sell Services adds a structured delivery workflow on top of WooCommerce. Once a client buys a service, the plugin creates an order with a dedicated submission interface where you deliver the work, and the client approves or requests revisions. This replaces the message threads and file attachments you manage on Upwork.

Step 1: Install and Activate

Install WP Sell Services from the WordPress plugin directory or upload the premium version from Wbcom Designs. Activate it, WooCommerce must already be active, or the plugin will prompt you to install it first.

After activation, WP Sell Services adds a Service Delivery menu to your WordPress admin. This is where all submitted deliverables, revision requests, and approval confirmations live.

Step 2: Create Your First Service Product

Go to Products → Add New in WooCommerce. Create a new product and set the product type to “Service”, this option appears in the WooCommerce product type dropdown after WP Sell Services is active. The service product type removes shipping fields and replaces the standard purchase flow with the service delivery workflow.

For each service, fill in:

  • Title, the service name as your client will see it
  • Description, what is included, what is not, turnaround time, revision policy
  • Price, fixed price or starting price for variable-scope services
  • Requirements form, the intake questions the client answers after purchase

The requirements form is the direct replacement for Upwork’s project brief. You define what information you need before you start work, file uploads, brand guidelines, URLs, reference examples, access credentials. The client fills this out immediately after payment, so you never have to chase information.

Step 3: Configure the Delivery Workflow

WP Sell Services settings let you control:

  • How many revisions are included per order
  • Whether revisions are unlimited or capped
  • Whether the order closes automatically on client approval or requires your confirmation
  • Email notifications sent to the client at each stage (order received, work delivered, revision requested, order complete)

The email notifications replace Upwork’s message system. Every status change triggers an automated email so the client always knows where their project stands without logging into a third-party platform.

Step 4: Delivering Work Through the Plugin

When you complete a project, go to the order in WooCommerce → Service Deliveries and submit the deliverable through the plugin interface. You can upload files, paste links, or write the deliverable directly in the text area. The client receives an email with a link to review and approve or request revisions from their account dashboard, no Upwork login required.

The entire review-and-approval cycle happens on your domain. Clients bookmark your site, not Upwork. That is how you build a direct relationship that the platform cannot take away.


Migrating Your Existing Upwork Clients

Migrating clients off Upwork requires care. Upwork’s terms of service prohibit actively directing platform clients to off-platform contracts, this is worth reading carefully. The safest approach is to make your own website available as an option at natural transition points: when a project ends, when a client asks for ongoing work, or when a client reaches out directly about a new project.

The Transition Message

When a project closes, send a message like this through Upwork’s messaging system before the contract ends. Keep it informational, not a solicitation:

“Thanks for the project, happy to work together again. I’ve built out my own website with direct booking and a client portal if that’s easier for future work: [your domain]. Feel free to use whichever option works best for you.”

Let the client make the choice. Most clients who have worked with you successfully will move off-platform if it saves them Upwork’s 5% client fee and gives them a more direct experience.

Creating Client Accounts on Your WordPress Site

WooCommerce creates customer accounts automatically at checkout. For clients you want to set up proactively, recurring clients whose projects you want to manage through your site, you can create accounts manually from Users → Add New in your WordPress admin. Assign them the Customer role.

Send them a password reset link so they can set their own credentials. Their account dashboard will show all past orders, active deliveries, and revision requests in one place, a better interface than Upwork’s project page.

Handling Ongoing Retainer Clients

For clients on monthly retainers, WooCommerce Subscriptions (a separate paid extension) lets you set up recurring billing. Clients enter their payment details once and are billed automatically each month. You can attach service deliveries to each billing cycle so the workflow stays consistent regardless of payment cadence.

The retainer flow looks like this: client pays monthly subscription → you receive an order notification → you deliver the month’s work through the WP Sell Services interface → client approves → cycle repeats. No per-project invoicing, no chasing payments.


Payment Setup: Getting Paid Without Platform Middlemen

WooCommerce supports every major payment gateway. The right choice depends on your client location, the currencies you work in, and how quickly you need funds available.

Stripe

Stripe is the default recommendation for most freelancers. Install WooCommerce Stripe Payment Gateway (free plugin from the WooCommerce extension library). Stripe charges 2.9% + $0.30 per transaction for US cards. International cards add a 1.5% fee. Funds are deposited to your bank account on a rolling 2-day schedule.

Stripe handles card payments, Apple Pay, Google Pay, ACH bank transfers (0.8%, capped at $5), and SEPA for European clients. For most freelancers, Stripe covers all payment scenarios without needing a second gateway.

PayPal

PayPal is worth including as a second option if your clients are in countries where Stripe is not available, or if older clients are more comfortable with PayPal. WooCommerce PayPal Payments is the current recommended plugin (not the legacy PayPal Standard). Fee structure is similar to Stripe: 3.49% + $0.49 per transaction for most card payments.

Bank Transfer for High-Value Projects

For projects above $5,000, direct bank transfer (ACH in the US, SEPA in Europe, wire internationally) can reduce fees significantly. WooCommerce supports manual bank transfer as a payment method out of the box, you enable it in WooCommerce → Settings → Payments, add your bank details in the instructions, and orders placed with bank transfer go to “On Hold” status until you confirm receipt of funds and manually change the status to Processing.

Currency and Tax Settings

Set your store currency in WooCommerce → Settings → General. For international clients, WooCommerce does not automatically convert currencies, each client pays in the currency your store is set to. If you need multi-currency support, the WooCommerce Payments plugin or a third-party plugin like Currency Switcher for WooCommerce handles this.

Tax settings depend on your jurisdiction. Most freelancers providing services to international clients do not charge sales tax on foreign transactions, but consult a tax advisor for your specific situation. WooCommerce’s tax settings are configurable enough to handle most scenarios.


Building a Portfolio That Converts

On Upwork, your portfolio is locked inside the platform and formatted by their templates. On your own site, you control the presentation entirely. A well-designed portfolio page on your own domain can outperform an Upwork profile for search-driven clients because it can be indexed by Google and optimized for the exact keywords your clients search.

Portfolio Options for WordPress

There are three practical approaches to portfolio presentation on WordPress:

  • Gutenberg Gallery blocks, Free, built into WordPress. Best for image-heavy portfolios like design or photography. Use the Media & Text block to pair each image with a description.
  • Portfolio post type, Several themes (notably Astra, Kadence, and GeneratePress) include a Portfolio custom post type. You create one post per project with its own page, category, and featured image. A portfolio archive page shows them all with filtering.
  • Case study pages, The highest-converting format for service businesses. Create a dedicated page for each significant client project: the problem, your approach, the result. Include measurable outcomes where possible. These pages rank in search for problem-specific queries.

What to Include for Each Portfolio Piece

Each portfolio entry should answer four questions that a potential client has when they are evaluating you:

  • What was the brief?, Describe the problem the client brought to you in plain terms.
  • What did you deliver?, Describe the output: what you made, wrote, built, or solved.
  • What was the outcome?, Measurable results: traffic increased by X%, conversion improved, project delivered on time under budget, client returned for three more projects.
  • What could they hire you to do?, End with a clear service CTA that links to the relevant product page on your store.

Portfolio pages on your own site serve double duty: they establish credibility for visitors and they rank in search. A case study titled “E-commerce SEO audit for a Shopify-to-WooCommerce migration” will surface in searches that no Upwork profile can capture.

Testimonials and Social Proof

Upwork reviews are locked on Upwork. Before you reduce your Upwork activity, screenshot and save every review you have. Reach out to past clients and ask if they would be willing to provide a written testimonial you can publish on your site, most will say yes, especially if they had a good experience.

The Strong Testimonials plugin (free) or a simple Testimonials post type handles this well. Display testimonials on your homepage, your service product pages, and your about page. Social proof near the purchase decision point is more effective than a separate testimonials page that visitors have to seek out.


Adding a Booking Calendar for Consultation Services

If any of your services involve scheduled calls, strategy sessions, kickoff meetings, coaching calls, consulting hours, a booking calendar removes significant friction from the client experience. Instead of back-and-forth email about availability, clients pick a time slot directly from your calendar and pay (or don’t, for free discovery calls) in one step.

Option 1: WooCommerce Bookings

WooCommerce Bookings is the most tightly integrated option. It adds a Bookable Product type to WooCommerce, meaning bookings go through the same cart and checkout flow as your other services. Clients pay for consultations the same way they pay for project work. It syncs with Google Calendar and supports buffer times, minimum advance notice, and multiple staff members if you have a team. The plugin costs $249/year from WooCommerce.com.

Option 2: Bookly

Bookly is a standalone booking plugin that is not tied to WooCommerce. It has its own payment processing and client management. If your booking workflow is separate from your project workflow, for example, free discovery calls that do not involve WooCommerce payments, Bookly is simpler to configure. The free version handles a single staff member and basic scheduling. The Pro version ($89 one-time) adds WooCommerce integration, SMS reminders, and multiple service categories.

Option 3: Calendly Embed

For free discovery calls only, embedding Calendly is the fastest option. Add a Calendly embed to your contact page or service product description. Calendly’s free plan handles one event type with unlimited bookings and integrates with Google Calendar and Zoom. Use this for no-payment bookings and route paid sessions through WooCommerce.

Combining Booking with WP Sell Services

The natural combination is: booking calendar for scheduled consultation services, WP Sell Services for project-based deliverable services. A client who needs a logo design buys through the WP Sell Services product flow. A client who needs a strategy session books a slot through the booking calendar. Both live on your site; both charge through WooCommerce. For a complete guide to building the consulting side of this setup, see how to build a consulting booking platform on WooCommerce.

If you offer ongoing retainer packages that include a mix of deliverable work and scheduled calls each month, combine WooCommerce Subscriptions (for recurring billing), WP Sell Services (for deliverables), and WooCommerce Bookings (for monthly calls) into a single subscription product. Each billing cycle triggers the subscription renewal, you deliver work through the service plugin, and the client books their monthly call separately through the booking calendar.


Replacing Upwork’s Communication Features

Upwork’s messaging system is one of the features freelancers are most reluctant to give up because it keeps all project communication in one place attached to the contract. You can replicate this on your own site, and in some ways improve it, with a few additional tools.

Order Notes in WooCommerce

WooCommerce order notes serve as basic project communication. You can add private notes visible only to you, or customer-facing notes that trigger email notifications. For simple projects, this is sufficient.

Order Delivery Notes

The WP Sell Services delivery interface includes a notes field for each submission. Clients can write revision notes when requesting changes; you can annotate deliveries with context and instructions. All notes are stored with the order permanently.

Email for Everything Else

For communication outside the order workflow, scoping calls, contract discussions, general questions, email is the appropriate channel. Add a contact form to your site (WPForms or Gravity Forms) and route it to a business email address. A professional email address at your domain (not Gmail) adds legitimacy and keeps work communication separate from personal email.


Driving Traffic Without Upwork’s Search Algorithm

On Upwork, clients find you by searching the platform. On your own site, you need to bring clients to you. This is the biggest mindset shift in moving off Upwork, and it is worth confronting directly.

SEO for Service Pages

Each service you offer should have its own product page optimized for the search queries clients use when looking for that service. A web developer offering WooCommerce store setup services should have a page targeting “WooCommerce setup service” and “hire WooCommerce developer.” These pages take 3–6 months to rank but generate ongoing inbound traffic with no platform fee.

The RankMath or Yoast SEO plugins handle on-page optimization. Write a clear meta description for each service page that communicates your offer and differentiator. Include your service location if you work with local clients.

LinkedIn for B2B Services

LinkedIn is the highest-ROI channel for freelancers selling B2B services. Update your LinkedIn profile to point to your service site, not your Upwork profile. Post case studies, process insights, and client results regularly. Connect with the decision-makers at companies you want to work with. A LinkedIn presence backed by a professional service site converts better than an Upwork profile for corporate clients.

Referrals from Existing Clients

The highest-converting traffic is referrals. When you deliver excellent work and the client is on your site, not on Upwork, they can recommend you by sending your URL directly. A dedicated referral page or a simple “refer a friend” section in your post-delivery email sequence creates a systematic referral flow without a formal referral program.


How WP Sell Services Compares to the Upwork Experience

The concern most freelancers have about moving off Upwork is losing the structured workflow that the platform provides: the contract, the payment escrow, the delivery confirmation, the review system. WP Sell Services covers the core workflow elements. Here is a direct comparison:

FeatureUpworkWP Sell Services + WooCommerce
Service listing / storefrontUpwork profile pageWooCommerce product pages on your domain
Client intake / project briefContract terms + messagesRequirements form (custom fields per service)
Payment processingUpwork escrow (fee: 5–20%)Stripe / PayPal (fee: 2.9–3.5%)
Work deliveryFile upload in contract viewDelivery submission through WP Sell Services
Revision requestsMessages + file revisionsStructured revision workflow with notes
Client approvalContract close buttonApproval button in client account dashboard
Dispute resolutionUpwork arbitrationYour own terms of service + direct negotiation
Review / rating systemUpwork star ratingsWooCommerce product reviews + testimonials
Client communicationUpwork messagesOrder notes, email, external tools (Slack, email)
Data ownershipUpwork owns client dataYou own everything, clients, history, contacts

The one area where Upwork has a structural advantage is new client discovery, the platform’s search brings you potential clients you would not have found on your own. The solution is not to eliminate Upwork immediately, but to run both in parallel while building your own traffic sources, then wind down Upwork activity as your own site generates consistent inbound leads.


Step-by-Step Migration Timeline

Here is a realistic 90-day migration plan for a freelancer earning $4,000–$8,000 per month on Upwork:

Days 1–14: Set Up Your Site

  • Purchase a domain and hosting.
  • Install WordPress, WooCommerce, and WP Sell Services.
  • Create service products for your three most common service types.
  • Configure Stripe and test a checkout with a $1 test product.
  • Write your about page and contact page.
  • Add portfolio pages for your five best projects.

Days 15–30: Soft Launch

  • Send the site URL to your three best Upwork clients when their current projects close.
  • Add your website URL to your Upwork profile bio (this is allowed).
  • Share the site on LinkedIn with a brief post about why you built it.
  • Install RankMath SEO and optimize each service page with a focus keyword.

Days 31–60: Start Moving Active Clients

  • For new projects from existing clients, offer direct booking on your site as an option.
  • Set up WooCommerce Subscriptions for any retainer clients willing to move to recurring billing.
  • Add a booking calendar if you run consultation calls.
  • Begin publishing one SEO-optimized blog post per week targeting your service keywords.

Days 61–90: Evaluate and Double Down

  • Calculate fees paid to Upwork vs. payment processor fees in month one on your own site.
  • Review which service pages are getting search traffic and add more content to support them.
  • Reduce new Upwork proposals if your site is generating sufficient inbound leads.
  • Add one or two more portfolio case studies.

Upwork provides a basic contract framework. When you move off-platform, you need to provide your own. This is less complicated than it sounds.

A standard freelance service agreement covers: scope of work, deliverables, payment terms, revision limits, intellectual property transfer, kill fee (if the client cancels after work begins), and dispute resolution. Templates are available from Docracy (free) or Hello Bonsai (paid). Many freelancers use a simple PDF agreement sent via DocuSign or HelloSign before starting work.

Add a Terms and Conditions page to your WooCommerce store (WooCommerce has a setting to link this at checkout for required acceptance). Include your revision policy, turnaround time commitments, refund policy, and dispute resolution process. A client who has read and accepted your terms at checkout is far easier to work with than one who expects Upwork’s arbitration process to resolve every disagreement.


If you are evaluating WP Sell Services against other plugin options, the comparison with time-slot scheduling tools and proposal-based platforms covers the feature differences in detail: WP Sell Services vs Jetonomy Services vs WC Bookings.

If you are thinking about expanding beyond solo freelancing into a multi-vendor service marketplace, where other freelancers can list and sell their services on your platform, the full setup guide covers the vendor registration, service listing, and payout configuration: How to Build a Fiverr-Like Service Marketplace with WordPress and WP Sell Services.

For the complete flow from booking to payment automation, including inquiry capture, client onboarding, and automated confirmations, the service booking automation guide walks through each step: Service Booking Automation: Complete Flow from Inquiry to Payment.


The Long-Term Case for Owning Your Platform

The fee argument is compelling on its own, but the bigger benefit of moving off Upwork is compounding. Every client who comes through your own site is a direct relationship. Every SEO article you publish works for you indefinitely. Every testimonial lives on your domain. Every returning client skips the platform entirely. The work you put into building your own service site compounds over time in a way that building your Upwork profile does not.

Upwork’s algorithm changes, fee structures shift, and the platform’s direction is outside your control. Your WordPress site is yours. The domain, the content, the client relationships, all of it transfers to you permanently and cannot be taken away by a platform policy change.

Starting with WP Sell Services and WooCommerce gives you a production-ready service delivery system in an afternoon. The migration from Upwork does not have to happen all at once, run both in parallel until your own site consistently generates enough work, then step back from the platform as much as you choose. The goal is optionality: your income should not depend on any single platform’s continued goodwill.


Get Started

WP Sell Services works with any WooCommerce store. Install WooCommerce from the WordPress plugin directory, then add WP Sell Services to activate the service delivery workflow. Create your first service product, configure your payment gateway, and you have a functioning service storefront in less time than it takes to write a new Upwork proposal.

The 15% you save on your first off-platform project pays for a year of hosting. The client relationship you own after that project is worth considerably more.

Varun Dubey

Shaping Ideas into Digital Reality | Founder @wbcomdesigns | Custom solutions for membership sites, eLearning & communities | #WordPress #BuddyPress