I'm gonna make this as quick as possible. I'm actually doing a long post like this for another place, but I'll publish the shorter, no-bullshit version here. Excuse my English, but boy, do I wish I'd read something like this 5 years ago. I'm sure most never had these problems, but I did. It doesn't matter how good of a developer or designer you are. Being a freelancer with no business skills (or business logic) is a recipe for disaster.
Intro:
I've been doing websites for clients for the past 5 years. Three of those years were a worthless time of my life I'll never get back. I worked 12 hours a day including weekends and holidays, and I had nothing to show for it except a big portfolio of projects.
If I had to do everything again from scratch, it would take me a year or less and I wouldn't lose 3+ years down the toilet.
I know this is probably basic stuff to most people. But it wasn't basic to me because I was a dumb business owner.
1. Don’t Be Cheap
Being cheap is a perfect scenario to become overworked while staying poor. Cheap clients, in my experience, are the worst. They only look for the cheapest option and always expect too much. None of them want to admit or accept that you can’t perform miracles for cheap rates and below every possible hourly rate that keeps you fed and financially stable.
Cheap clients bring zero value in the long run. Sure, some money is better than no money if you’re struggling, but let me say this again: cheap clients are worthless.
The best flow of clients you can get is through recommendations. For cheap clients, you'll only ever be the “I know a dude who’s cheap.” The leads they bring will always be useless because they will also go for the cheapest option out there. If you charge more, you’ll be the “I know a guy who does a great job.” That’s a big difference in the quality of leeds. Whenever I get a lead from one of my past cheap clients, they get a heart attack when I'm telling them my price although I'm still cheap.
The only reason for you to be cheap is if you are just starting out and need to build your portfolio, or if you are doing a project for family and friends. But that’s about it. If your work is bad and you can only get cheap clients because of that, you’re doomed to stay stressed out while making zero career progress.
It’s not just having a food on the table. More money means more money to invest, improve, and get your business and work to the next level. If you’re only working to pay your bills, you can’t improve. You can’t buy the Shutterstock/AI/fancy plugin subscriptions, you can’t buy software that would make your life easier, you can’t buy a new PC, and you’re stuck with outdated equipment.
Don’t get me wrong. You can’t charge $50k for a landing page with 3 sections either. But respect your hourly rate that keeps you fed and be real with yourself when calculating how many hours a project will take.
How to Set Your Hourly Rate:
Be honest with yourself. You can’t grind 12 hours a day. There are only 5 hours of intense work you can do in a day in the long run. Sure I was busting my balls for 12 hours a day at the start, but believe me when I say that it took the toll on me. The rest of the time is talking to dead leads, dealing with bureaucracy, keeping your things in order, following the important news, etc. So effective work is 5 hours a day. Take into account vacations, sick leave, and everything else, and you’ll most likely realize what your hourly rate needs to be.
2. Offer Maintenance
The business of building websites is a mess. If you live from project to project, you are in a loop of constantly looking for new leads, and you need to finish X projects per month to stay afloat. Shit happens, and there will be times when you don’t have new leads for a month or more.
To prevent this, you need to upsell maintenance packages. I met a guy who lives comfortably as a web designer/dev. Half of his income comes from maintenance packages alone.
We all know that shit happens. Things go south, and the last thing you want is for it to be your problem to solve for free.
Here’s an example: You delivered a project to a client 2 years ago and they have no maintenance package. They paid you a single invoice and that's it. Suddenly, they call you, say that the website is broken, and that it’s your job to fix it for free because they paid for a functional website 2 years ago and they expect it to be functional for the next 20 years.
When you analyze the situation, you find out that their entire low-budget server got hacked, their data got erased, and the only thing you can do is a full rebuild and charge the client again the full price. Maybe you offer a 50% discount, but this will destroy your hourly rate and set you back to the level of a student who just learned to install WP two days ago. No client would be happy with this proposal, and they’ll blame you for their issues. They will probably move to another web dev, write you a bad review on Google My Business and they're gonna keep telling their own (false) version of the story of their experience with you whenever they talk with someone about web design.
Maintenance prevents all of this.
- Regular backups keep the data safe when things go wrong. MainWP/Vivid PRO combo is great for this.
- Regular system updates (plugins if you’re using WP) prevent vulnerabilities (follow Wordfence news, prioritize updating whatever is vulnerable through MainWP).
- Testing the site after each update is a must to see if something went wrong during the update process. If something becomes incompatible, it's your job to fix the code and solve the issues. It’s part of the maintenance.
- Priority support. When you're overloaded with work, it's gonna be easier (and neccessary) to offer priority support for those who pay maintenance packages.
My maintenance packages also include ability for the client to talk with me through Whatsapp/Viber, call me on weekends (only a few those with big enough maintenance packages), and so on. Some clients appreciate support like this and they easily see the value in it.
Depending on the functionalities of the website, you can adjust your rates for maintenance packages for each client. A small static website doesn’t need many updates or maintenance. Update the system twice a year, do one backup per year, and that’s it. The price can easily be equivalent to 4 hours of your time because maintenance in this case won’t take more than that. If you have 10 of those small website maintenance packages, you’ve got a week of your time covered.
A big store that has 100+ orders per day needs backups done daily. Because every downtime translates to a big loss of revenue, you of course need to do updates on a test environment first. These things require time, so charge accordingly. For these kinds of projects, you can easily charge 40 hours of your time per year. If you have 8 of those clients, you’ve got 2 months covered. That’s 2 months less searching for new clients next year.
Now imagine having a mix of maintenance packages. 10 clients on the highest package, 40 on the smallest packages, and 30 somewhere in between (dynamic sites with weekly backups, monthly updates). This easily covers almost half of your time. Call it a “maintenance Wednesday” and life becomes easier.
This was all just technical maintenance. If your clients want you to write blog posts, run the social media account, or whatever, this is something custom you can offer as well.
But for the love of god, charge your maintenance packages for a year upfront. The worst thing in the world is to hunt clients each month because they forgot or are unwilling to pay.
3. Demand Payment Upfront
Demanding payment upfront is an industry standard. Not only does it protect you from not being paid at all, but it also keeps the client in check. Because let’s be real. Here are some of the quite popular excuses you’re surely gonna hear in the middle of some projects when you’ve already spent tens of hours on them:
- "Sorry, but we decided that we don’t need a website anymore (so we won’t pay you)."
- "We just found out that our boss has a cousin who does websites as well, so we're gonna hand the project over to him (so we won’t pay you)."
- "We lost funding we needed for the project, so we are canceling it immediately (so we won’t pay you)."
This happens more often than you think. With partial payment upfront, you are safe from not being paid at all. But that’s not all.
The other thing is that 50% upfront keeps the client motivated to finish the project. There are tons of clients who become slow to respond to your questions and requests in the middle of the project. A project that would take 1 week becomes a 3+ month journey, and your hourly rate goes down the toilet.
When clients pay 50% upfront, they are more motivated to finish the project sooner because it’s not just your time on the line anymore, but their money as well. “We paid 50%, let’s make sure they deliver” thoughts come into effect, and the client will be more responsive and you’ll be able to finish the project sooner.
4. Charge for Everything
I was dumb for not doing this in the first few years. But you need to charge for everything. Every time you work on something for a client, your time needs to be paid. You are a business and you can’t pay your bills with thank yous.
Many clients never believe that the project is ever finished and expect you to work on upgrades and minor fixes indefinitely for free. If you don’t enforce being paid for your time once the project is finished, nothing prevents them from asking you to work for them free of charge over and over again.
If you’re like me and have 40 clients calling and emailing you each month to do things you never agreed to, you need to stop it right now and charge for everything. Clients will either stop bugging you (you’ll profit time), or they’ll start paying and you’ll profit money.
When I started enforcing being paid for everything extra, a client actually told me, “Finally, you should have been charging us for months already.”
I'm not saying you need to charge every 30-second work as well. But always do the calculation of what would happen if all of the 100 of your clients needed the same thing in a month. Would you still be profitable or would you work for 100 hours for free?
5. Don’t Deliver Unless You’re Paid
Even though you demand 50% upfront, there are still clients out there who would love to scam you for the other 50%. To protect yourself from this, don’t deliver until you’re paid in full.
An example of this kind of situation would be when clients think your website will bring them millions of revenue in a heartbeat. Maybe they don’t even have the money to pay you in the first place but expect to get the needed revenue after you deliver. This is not how this works, so you have to avoid getting scammed.
Lock the website up (so they can’t run ads on it) until it’s paid. Block it from Google and search engines, and don’t move it from your test environment to their server. Once the bill is paid, finish it up.
6. Use Proposals and Contracts
Before you even lift a finger for a client’s project, you need to have a contract in place. Otherwise, you can end up in an endless loop of demands that will destroy your hourly rate.
Imagine this: You get a call from a prospect who wants a website. Their demands are “I just want a very simple website, nothing extraordinary.” It’s a simple project with a few contact forms, some static content, a sticky header, and that’s it. You set up a price you believe is right for 20 hours of your time and you can immediately start working on the project, expecting it will all be done in a few days.
But then during the process, the client starts demanding more. Lots of custom solutions, a booking system, Stripe integration, whatever. And if you don’t agree that that’s your job for the agreed price, you have nothing to back it up. The client doesn’t remember the small talk over the phone when they said they want a simple website. If you don’t want to do the extra work, the client can walk away and you’ve lost days of your time. If you grind it out, the project doesn’t take 20 hours to be finished, but 60. Your hourly rate decreases by 66% and you basically got screwed over.
Here’s how my proposal system works:
I talk with the prospect extensively to see what they want, what they need, and I ask them over 10 questions.
Once they reply, I write EVERYTHING I’m offering for their project.
My contract for a website design usually includes:
- Unique design based on client’s wishes and my recommendations
- List of tools/software I’m going to use
- Expected deadline (which starts only when the client sends me every piece of needed material and agrees on the design draft)
- Domain and hosting details – who pays them and what’s the renewal cost
- Number of unique pages (Homepage, About us, Contact, Team, Service)
- Wireframe of their website
- Functionality (contact forms, booking form, store, payment processors integrations, Google Maps integration…)
- Number of articles/products I’m willing to publish on their site myself
- Blog/news functionality
- Video tutorial on how to publish and edit the news section
- GA and GWT integration
- Basic onsite SEO optimization
- How much time after the project delivery I’m willing to work on small edits and fixes
- What kind of maintenance comes with my offer (1 year upfront)
- Etc.
Once my proposal is finished, I send it over to the prospect. I ask them to confirm my offer via email. This way I have it all written down and the client knows exactly what they agreed to. This way I have all the proof I need in case the client starts demanding more in the process.
It’s not a problem to do extra work for any client. But when it’s not something that was agreed to and it’s gonna take me hours, they need to pay extra.
