function oxDone() { var gads = document.createElement('script'), useSSL = 'https:' === document.location.protocol, node = document.getElementsByTagName('script')[0]; gads.async = true; gads.type = 'text/javascript'; gads.src = (useSSL ? 'https:' : 'http:') + '//'; node.parentNode.insertBefore(gads, node); } setTimeout(function() { if (!('OX' in window || 'oxhbjs' in window)) { oxDone(); } }, 2500); (function() { var openx = document.createElement('script'), useSSL = 'https:' === document.location.protocol, node = document.getElementsByTagName('script')[0]; openx.async = true; openx.type = 'text/javascript'; openx.src = (useSSL ? 'https:' : 'http:') + '//'; node.parentNode.insertBefore(openx, node); })(); = { retries: [], contentUnit: 'LTK_Business_Finance_Business_Content', debug: false, refreshInterval: 25000, excludedIds: ['ad-carambola-desktop', 'ad-carambola-mobile'], slots: [], numOxSlotsDefined: 0, define: function(id, unit, size, sizes, delay) { var help = this.helpers, debug = this.debug; var sizeDef = size; googletag.cmd.push(function() { if (sizeDef.length === 0) { sizeDef = help.getMaxSizeArr(sizes); } if (sizeDef.length) { if (debug) help.title('define'); var def = googletag.defineSlot('/1004147/' + unit, sizeDef, id) .addService(googletag.pubads()); if ( help.logDeep('define unit: ' + unit + ' for ' + id); if (help.isOxAd(id)) {; if ( === OX_dfp_ads.length) { OX.dfp_bidder.setOxTargeting(); } if (debug) help.logDeep('set OX target: ' + sizeDef[0] + 'x' + sizeDef[1] + ' for ' + unit); }{ id: id, ad: def, visible: false, firstRefresh: true, timer: { state: 'stopped', counter: ( / 1000), isStopped: function() { return this.state === 'stopped'; }, isPaused: function() { return this.state === 'paused'; }, isActive: function() { return this.state === 'active'; }, getState: function() { return this.state; }, pause: function() { this.state = 'paused'; if (debug) help.logTimerPaused('pause timer for ' + id + ': ' + help.getSlotById(id).timer.state); }, resume: function() { this.state = 'active'; if (this.counter <= 1) this.counter++; // make sure we have a minimum impression time of 1 sec if (debug) help.logTimerPaused('resume timer for ' + id + ': ' + help.getSlotById(id).timer.state); }, startTimer: function(slot) { this.state = 'active'; // set to a property in case we need to clear it slot.timer.interval = setInterval(function() { if (!slot.timer.isPaused() && !slot.timer.isStopped() && slot.visible) { if (debug) help.logTimer('refresh ' + id + ' in ' + slot.timer.counter + ' seconds'); slot.timer.counter--; } else { if (debug) help.logTimerPaused('remain paused for ' + id); } if (slot.timer.counter < 0) {; slot.timer.counter = ( / 1000); } }, 1000); } } }); googletag.display(id); // needed only for wrangling sticky ads on load if (debug) help.logDeep('pre-render the ad so sticky ads actually stick'); if (!delay) { if (debug) help.logDeep('see no delay, so request initial fetch and display of the ad');; } } }); }, refresh: function(id) { var help = this.helpers, debug = this.debug; if (debug) { help.title('refresh'); } googletag.cmd.push(function() { var ad_slot = help.getSlotById(id), ad =; if (!ad_slot.firstRefresh && help.isAdOldEnough(ad_slot) === false) { var age = (((new Date()) - ad_slot.timer.last) / 1000); if (debug) { console.log( '%cNot refreshing ... ' + + ' is only ' + age + ' seconds old', 'background:red;color:white;' ); } return; } if (!ad_slot.firstRefresh && !ad_slot.visible) return; // we won't refresh unless we're visible to google if (help.isOxAd(ad_slot)) { if (debug) help.log('refresh the OX DFP ad for ' + id); OX.dfp_bidder.refresh(function() { OX.dfp_bidder.setOxTargeting([ad]); googletag.pubads().refresh([ad]); }); } else { if (debug) help.log('refresh the non-OX ad ' + id); googletag.pubads().refresh([ad]); } }); }, listen: function(name, handler) { googletag.cmd.push(function() { googletag.pubads().addEventListener(name, handler); }); }, handleImpressionViewable: function(event) { var help =, debug =; var id = event.slot.getSlotElementId(), slot = help.getSlotById(id); if (debug) { help.title('impressionViewable'); help.logDeep('see event triggered for ' + id); } slot.visible = true; if (slot.timer.isStopped()) { if (debug) help.logDeep('am starting the timer'); slot.timer.startTimer(); return; } if (slot.timer.isPaused()) { if (debug) help.logDeep('am resuming the timer'); slot.timer.resume(); } }, handleSlotRenderEnded: function(event) { var help =, debug =; if (debug) { help.title('slotRenderEnded'); help.logDeep('see event triggered for ' + event.slot.getSlotElementId()); } var slot = help.getSlotById(event.slot.getSlotElementId()); if (slot.firstRefresh === true) slot.firstRefresh = false; slot.timer.last = new Date(); if (slot.visible && slot.timer.isStopped()) { if (debug) help.logDeep('am starting the timer'); slot.timer.startTimer(); return; } if (slot.visible && slot.timer.isPaused()) { if (debug) help.logDeep('am resuming the timer'); slot.timer.resume(); } }, handleSlotVisibilityChanged: function(event) { var help =, debug =; var id = event.slot.getSlotElementId(), perc = event.inViewPercentage, slot = help.getSlotById(id), wasVisible = slot.visible; if (!help.isValidAd(slot)) return; if (debug) { help.title('slotVisiblityChanged'); help.logDeep('see that slotVisibilityChanged was triggered for ' + id); } slot.visible = perc < 50 ? false : true; // same criteria as 'impressionViewable' event var changedOn = !wasVisible && slot.visible, changedOff = wasVisible && !slot.visible; if (debug) { help.logDeep('see that ad was ' + (wasVisible ? 'visible ' : 'not visible ') + 'and is now ' + (slot.visible ? 'visible' : 'not visible')); help.logDeep('see that ' + id + ' has timer as: ' + slot.timer.getState()); } if (changedOn && slot.timer.isStopped()) { if (debug) help.logDeep('am starting the timer'); slot.timer.startTimer(slot); return; } if (changedOn && slot.timer.isPaused()) { if (debug) help.logDeep('am resuming the timer'); slot.timer.resume(); return; } if (changedOff && slot.timer.isActive()) { if (debug) help.logDeep('am pausing the timer'); slot.timer.pause(); } }, helpers: { getMaxSizeArr: function(arr) { var len = arr.length, i = len - 1, retArr = []; for (; i >= 0; i--) { var minVpSize = arr[i][0], minVpWidth = minVpSize[0], minVpHeight = minVpSize[1], allowedAdSizes = arr[i][1]; if (window.innerWidth >= minVpWidth && window.innerHeight >= minVpHeight) { retArr = allowedAdSizes; break; } } return retArr; }, getSlotById: function(id) { for (var i = 0; i <; i++) { if ([i].id === id) return[i]; } }, isOxAd: function(ad_slot) { for (var i = 0; i < OX_dfp_ads.length; i++) { if (OX_dfp_ads[i][2] === return true; } return false; }, isValidAd: function(ad_slot) { for (var i = 0; i <; i++) { if ( ===[i]) return false; } return true; }, isAdOldEnough: function(ad_slot) { var timeSpan = Math.ceil(((new Date()) - ad_slot.timer.last) / 1000); var min = Math.ceil( / 1000); if (timeSpan >= min) { if ( { 'see that ' + + ' was refreshed ' + timeSpan + ' seconds ago' ); } return true; } return false; }, title: function(str) { console.log( '%c' + + ' ' + str, 'background:black;color:white;font-weight:bold' ); }, titleDeep: function(str) { console.log( '%c' + + ' ' + str, 'background:black;color:white;font-weight:bold' ); }, log: function(str) { console.log( '%c' + + ' I: ' + '%c' + str, 'background:black;color:orchid;font-weight:bold', 'background:black;color:limegreen;font-weight:bold' ); }, logDeep: function(str) { console.log( '%c' + + ' I: ' + '%c' + str, 'background:black;color:orchid;font-weight:bold', 'background:black;color:limegreen;font-weight:bold' ); }, logTimer: function(str) { console.log('%cI will ' + str, 'background:orange;color:red'); }, logTimerPaused: function(str) { console.log('%cI ' + str, 'background:green;color:white;font-weight:bold'); }, getTime: function() { var d = new Date(), h = d.getHours() + '', m = d.getMinutes() + '', s = d.getSeconds() + ''; h = h.length < 2 ? ('0' + h) : h; m = m.length < 2 ? ('0' + m) : m; s = s.length < 2 ? ('0' + s) : s; return h + ':' + m + ':' + s; } } } googletag.cmd.push(function() { var pubads = googletag.pubads(); pubads.set('page_url', location.href); pubads.collapseEmptyDivs(); pubads.enableSingleRequest(); pubads.disableInitialLoad(); googletag.enableServices(); }); if (ltk.type !== 'Slideshow') {'impressionViewable',;'slotVisibilityChanged',; }'slotRenderEnded',; Sample Complaint Letter

Sample Complaint Letter

Lori Soard

When you're unhappy with a situation, product or service, writing a complaint letter is one way to address it. Use one of the sample letters provided here as a starting point; simply click on your choice to open a PDF that you can edit, save and print. See this guide to printables if you need assistance.

Sample Letter Regarding a Faulty Product

If you purchased a product that was faulty and efforts to solve the problem have failed, your next step is to write a letter to the company asking for a refund or replacement. Ideally, stores will replace faulty products. However, that doesn't always happen. A complaint letter may be your only recourse unless you want to pursue legal action.

Simply follow the layout of this letter, but add your own details.

  • Top left: Your name, address and phone number. You may want to include your email address as well. The goal is to get a response and the easier you can make it for the busy executive to respond, the better.
  • Type the person's name you are contacting, the company name, street, city, state and zipcode on separate lines (no spaces).
  • Add your salutation. Be specific here if possible. Use "Dear Mr. Jones" instead of "Dear Sir."
  • Start with the fact that you're a loyal or first-time customer. Example: "I've been a loyal customer for 20 years and have purchased many of your products."
  • Continue with the facts of how the product failed. Be as specific as possible. Include the date you purchased the item, how much you paid for it, and when and how it failed to live up to expectations.
  • Explain what steps you've taken to resolve the problem. Example: "On April 5th, I contacted Roger at the Example City store and asked for a refund. He refused to give me a refund." Even if the person was extremely rude, simply stick to the facts of what was said/done and leave emotion out of it.
  • Finally, start a closing paragraph and explain what you'd like in return. For example, do you want them to replace the product or give you a refund?
  • Close the letter, adding your name and signature.

Letter to Complain About Poor Service

When you pay for a service, such as a meal in a restaurant, you expect great customer service. Unfortunately, this doesn't always happen. If the service was awful enough, you may feel you are entitled to a refund or replacement service. If you've talked to the manager with no results, it may be time to write a formal complaint letter about the service you received.

Customize the letter to your situation.

  • Write your name and contact info to the upper left corner of the page.
  • Include the name of the person you are contacting (preferably a regional manager, owner, or CEO), business name, and address.
  • Add a salutation. Example: Dear Mr. Jones:
  • Explain the reason for the visit to the establishment. One example would be that you regularly eat there because it is one of your favorite restaurants.
  • Explain the problem that occurred. For example, you sat for an hour before anyone came to take your order, your orders were wrong, the waitress cursed at you, and so on.
  • Make a request for a refund or replacement. If you ate at a restaurant, you might want to offer to give them another chance if they'll send you a gift card of appropriate value.
  • Close the letter with your name and signature.

Expressing Concern to Your Boss

If you are having serious problems at work, writing a complaint letter to your boss does double duty. First, it can help your boss resolve the situation. Second, it can protect your job, especially if the problem is impacting your work or another employee is harassing you.

Unlike the other examples in this article, the letter to your employer will likely be sent via internal communications in email format. If you prefer to write the complaint on paper, keep it less formal than the other letters. While you still want to use a professional, business spacing format, there is no need to include your contact information and the name and address of your employer.

  • Date the letter. This is important in case you need it to show to HR and protect your job.
  • Start with a salutation. Call your boss what you normally call him. If the relationship is formal, then start with "Dear Mr. Jones," for example. If the relationship is informal, it is acceptable to write something like "Dear Jim."
  • Get right to the point in your first paragraph. Tell him or her why you are writing the letter and that the problem is impacting your job. Keep emotions out of it and state only the facts, especially if the topic is harassment by another employee or a personal conflict.
  • Explain how you think the situation can be resolved but let your boss know you are open to discussing other solutions.
  • In the final paragraph, explain that you want to do a good job and why the issue is impacting your work. In the sample letter, the worker is requesting more employees to be added to her department because the shortage is impacting her ability to do her job well. The letter ends by stating that she will be happy to schedule a meeting with her boss to discuss the issue.
  • Finish by signing the letter and adding your name.

Tips for Writing an Effective Complaint Letter

An angry or threatening letter is ineffective. Remember that the person you are addressing may not be the owner of the company that made a defective product but a customer service representative hired to help you. It is in your best interest to remain calm and focused.

  • Address your letter to a specific person. The New Jersey Department of Justice advises consumers to look in Standard & Poor's Register of Corporations, Directors and Executives or in the Thomas Register of American Manufacturers to find an address and the name of the CEO of the company. You can also look on the company's website.
  • Include your contact information. Add your name, address and phone number to the top of your letter so the company can contact you with possible resolutions.
  • Include copies of any receipts. Also include other relevant documentation regarding your complaint. Keep all originals.
  • Use standard business format on complaint letters. This will include single spaced blocked paragraphs with double spaces between each paragraph and no indents.
  • Add a date to the top of your letter. This will let a busy executive see immediately when the complaint arrived.
  • Do not stretch the truth for effect; just stick to the facts. If it sounds exaggerated, the reader may not believe you and will be reluctant to help you out.
  • Keep the letter short. Executives are busy people. If you make the letter too lengthy, the person on the receiving end may not finish reading your letter.
  • Type your letter. It will look more professional and be easier to read. Remember that a letter sent by mail carries more weight than sending an email.

Write and send the letter within one week of the incident or when the product stopped working. Address the outside of the envelope to the attention of the person you addressed the letter to so it will arrive on the right desk.

Voice Your Concerns

If you have a complaint, you should not hesitate to make your voice heard. Most companies will be interested in making things right so they can keep you as a customer. Even if the issue is at work, it is better to speak up politely as long as you conduct yourself professionally and reasonably.

Sample Complaint Letter