eBay Customer Service – FAIL

I’m not a regular eBay user. I sell items abut once a year, when I have a clearout. Last week I sold about 6 items, and decided to take advantage of the integrated option to purchase postage labels online. It’s all quite seamless. However, having paid for recorded delivery, I struggled to find any way to track my goods – something eBay advise to do, to ensure that the goods are insured.

So, I got in touch with eBay customer support to clarify this issue. Below is the transcript of our email conversations. I never got a satisfactory answer, but I did establish that:

  • eBay is a US-centric organisation without a clue as to how their UK business operates
  • Customer support equates to copy & paste email replies with no relevance to the issue in hand.
  • Buying postage through eBay is a risky strategy that I would recommend against. Buy your postage over the counter

___

To: eBay Customer Support
From: Howie

Hi

I recently sent out abut 6 items using Royal Mail Recorded delivery. I paid for, and printed all the labels through eBay/PayPal, and then took them to the post office, who have a FastDrop counter.

They told me there was no paperwork involved, and took the parcels. However, I now realise that I have no way to track the delivery. I had assumed that the eBay/PayPal site would show that the goods have been signed for.

What worries me is that I have absolutely no reference for these items being posted. Your confirmation email to me has no reference.

So, how do I know if the goods have arrived? If the buyer claims not to have received them, I have no way to speak to post office to sort out the matter.

All very worrying. I’m not even sure the goods were send recorded delivery. None of the buyers have provided feedback, and PayPal insists on holding my funds. They say these are released when the goods are delivered, if tracked. The goods should have arrived 2 days ago.

Thank you

Howie

To: Howie
From: eBay Customer Support

Hello Howie,

I apologise for the delay in responding. Thank you for writing to us about the items you have posted, I understand that you’re concern if your buyer has already received the items.

Howie, I’ve included some general guidance as to what you can do now. I’m afraid I can’t give you a more precise answer because you didn’t mention the item number.

If the buyer opens a case in the Resolution Centre, you’ll receive an email notification. If you can provide proof of postage we’ll remove the complaint from your account.

There’s a number of things you should do:

1) Call the buyer
2) Contact the postal carrier
3) Contact the Citizen’s Advice Bureau

- Call the buyer

The first thing you should do is call the buyer to let them know you’re looking into the problem. Reassure them that you have proof of postage and that you’ll contact the postal carrier. Here’s how to request the
buyer’s email address and phone number:

1. Click “Advanced Search” at the top of the eBay homepage.
2. Click “Find Contact Information” on the left-hand side of the page.
3. Enter the item number for the relevant sale. You can find the item number in My eBay. Click “Search”.

We’ll then send you an automatic email with the buyer’s contact details. Please be aware that we’ll send the buyer your contact details at the same time. We feel it maintains trust and fairness on eBay if members are made aware when other members request their contact information.

- Contact the postal carrier

The postal carrier may be able to offer compensation if you can show proof of postage. Check their website or return to the post office for further information.

- Contact the Citizen’s Advice Bureau

Depending on how much you sell, you may have certain legal obligations towards your buyers. The Citizen’s Advice Bureau should be able to help you clarify what those obligations are.

I trust this information helps. Please contact us again if you need any further assistance.

Kind Regards,

Jason Treeven
eBay Trust and Safety

To: eBay Customer Support
From: Howie

Jason

Thank you for your reply. Unfortunately you have not really answered my question. Thankfully, my goods have now arrived, and feedback has been given, so my funds have been released.

However, as stated in my original email, if I buy postage online through eBay, you do not provide any reference number, for me to track my item in case there is a problem. You have just advised me to contact the postal carrier. This is no good if I have no proof of postage/no reference number.

If I go to the post office and buy my postage, I get given a reference number. If buy it online through your site, I don’t. Simple.

I think it is really bad practice to offer this online service without warning the user that they cannot track the item if lost.

If my goods had not arrived, even after paying for recorded delivery, I would not have been able to prove a thing.

Before I advise others not to use your online postal option, can you please clarify if I have missed something. Is there some way to track my items, that I have failed to notice?

Thank you

Howie

To: Howie
From: eBay Customer Support

Hello Howie,

Thank you for writing back to us with regard to buying postage online. The reason we advised you to contact your postal carrier is because your postal carrier is the one providing you with the reference number or proof of postage as we are not providing these information. To obtain this, you will need to fill out the Recorded/Special Delivery slips and take them to the P.O. to be stamped, initialled and logged in their book.

We certainly understand your sentiment regarding this matter and you can always use your local postal service to post and receive items. If you don’t want to use tracked means, you still need to get proof of purchase (certificate of postage is best, something that includes seller’s address). With this, if item goes missing you can claim up to £34 compensation. I trust that this information has been useful to you. If you have any further questions, please do not hesitate to contact us again.

Kind regards, Ryan Madison
eBay Customer Support

To: eBay Customer Support
From: Howie

Ryan/Jason/whoever is going to reply to next

You seem to completely fail to understand my issue. Once again, your reply completely misses the point.

eBay offers a service where I can buy postage online through a deal you have with Royal Mail.

This service includes a recorded delivery option which should provide a reference number..

But it doesn’t.

And you don’t make this clear.

If I go to the post office and pay for recorded delivery, I will get a proof of postal receipt.

If I buy the same thing online through eBay, I don’t.

eBay are therefore misleading people. They are offering a service that should protect the seller, but it does not as there is no proof of postage – EVEN THOUGH IT HAS BEEN PAID FOR. It exposes us to potential fraud (as we have no way of challenging a buyer who claims not to have received our goods).

Ryan is not a typically a British name, so I’m guessing that you are in the USA. It would be nice if someone from Britain replied to me, as clearly you have no understanding of what arrangements are in place over here.

It’s all very disappointing. I think the best option is that I write a blog entry about my experiences and advise others NOT to use the integrated postal service offered by eBay. It might be convenient, but it is risky and open to fraud.

Howie

—-
To: Howie
From: eBay Customer Support

Hello Howie,

Thanks for taking the time to send us your ideas and proposals. We are always pleased to hear from members of the eBay community and welcome their comments regarding our services. I assure you that we are committed to the continuous improvement of our website to make it both a fun and safe place to trade. However, please note that our company policy does not allow us to accept or consider ideas or proposals, other than those that we have specifically requested. Please understand that this policy is intended to avoid the possibility of future misunderstandings when new products, services or features developed internally by eBay employees might be similar or even identical to your idea or proposal. Please note that eBay has no obligations of any kind (whether contractual or otherwise) with respect to the ideas and proposals that you have sent to us. eBay does not consider such ideas and proposals to be confidential or proprietary. eBay will not be liable for any disclosure or use of your ideas and proposals and is under no obligation to compensate you in relation to them. If, having read and understood the above, you would like eBay to consider your ideas and proposals further, please use our “Sending Suggestions to eBay” page by copying the following link into a new browser window: http://pages.ebay.co.uk/help/account/suggestions.html

Thank you again for taking the time to let us know what you want and need from our services. I wish you continued enjoyment and success on eBay in the future. I trust that this information has been useful to you. If you have any further questions, please do not hesitate to contact us again.

Kind regards,

Adam Bernard
eBay Customer Support


To: eBay Customer Support
From: Howie

Adam/Ryan/Jason/Whoever

I haven’t a clue what you are on about.

Keep taking the drugs.

Howie

2 Comments

5tvg commented on December 8th, 2009 at 3:50 pm

Great post. Suppose the lesson eBay teaches is to make sure you never answer a question directly. Good politicking, so much for continuous improvement.

Carol commented on January 2nd, 2010 at 6:42 pm

eBay is a very badly run company. Do a quick google search and you will see nightmare stories everywhere.

They treat their sellers like dirt. They can do this because they have very little competition at this point. Hopefully this will change soon.

Leave a Reply

CAPTCHA Image CAPTCHA Audio
Refresh Image

kosearch – Zend Lucene Search module for Kohana framework

I’ve finally got round to releasing kosearch – a Kohana search module. It’s an implementation of Zend (Lucene) Search, a file-based search/index solution. kosearch provides a simple way to index and search Models. It’s perfect for a web site that might contain news, products etc. kosearch also exposes the underlying Zend libraries so that other things can be indexed – PDFs, web pages, Word docs etc.

The module comes complete with a demo and details of how to use the module. These can also be found online, on the demo page.

The module is available for download on github.

The kosearch module has been written for, and tested against Kohana 2.3.4.

All comments and feedback appreciated

Leave a Reply

CAPTCHA Image CAPTCHA Audio
Refresh Image

IE8 Rounded Corners using jQuery

This site continues to receive a large amount of traffic from people searching for a solution to achieving rounded corners in IE8. Clearly, it’s a hot topic, and my previous post about using DD_Roundies has hopefully helped developers along their way.

I recently had an issue with DD_Roundies where the border width was 1 pixel out. Not sure why, but it prompted me to look for another solution. A simple plea for help on twitter resulted in the discovery of another library, and this time one built as a jQuery plugin.

Check out cornerz. It’s easy to use and so far, works like a charm.

Tags: , ,

3 Comments

1001 Fonts commented on November 17th, 2009 at 10:18 pm

Finally a solution for IE8, but for me it doesn’t respect the background colors of parent containers so I am seeing rounded corners with the cut out parts being white instead of transparent or the parent’s background-color :( This makes the plugin useless for me. I am just about to give up on IE8.

badlyDrawnToy commented on November 17th, 2009 at 10:47 pm

@1008. Have you tried setting the background colour as one of the options?

e.g. $(‘.myclass’).cornerz( {
‘radius’ : 12,
‘corners’ : ‘bl’,
‘background’ : ‘#000′
} )

Marco Barbosa commented on February 3rd, 2010 at 6:16 pm

I had the same problem as 1001 Fonts.

It won’t work well with a background..

Setting the color doesn’t work because the background is an image not just a color.

Guess I’ll have to wait. There’s not good solution for rounded corners on IE8 today.

Leave a Reply

CAPTCHA Image CAPTCHA Audio
Refresh Image

How to run custom PHP code in Wordpress – the right way

I’ve recently been asked to look at integrating some complex forms into a Wordpress powered site. None of the current plugins satisfied our (multi-lingual) needs, so the next simplest approach appeared to be integrating PHP code with Wordpress. (I had considered integrating Kohana, my favoured PHP framework, as there is a module that allows easy integration, but this seemed overkill for a few forms).

Running PHP code from within Wordpress is nothing new. There are numerous plugins. I opted for Exec-PHP, partly because it gets high user ratings and the developer has provided feedback on his site, and partly because it worked for me first time.

Having installed the plugin, it was simple to create a Page, add some PHP code using the traditional PHP tags . However, once I started writing code in anger, I began to understand that to run the code efficiently, and to give the end-user a good experience, simply placing code in the page (blog entry) is too simplistic.

The key issues, is that the PHP code is evaluated at run-time, using the PHP eval() function. This function is highly inefficient. So, the first improvement was to move the bulk of the code to a separate PHP file and include it. This way, the only code evaluated is the include statement.

I chose to put my included code in a folder called custom-php within the Wordpress wp-content folder. The best way to reference the file is using the ABSPATH constant provided by Wordpress, as follows:

<? require_once(ABSPATH. '/wp-content/custom-php/contact-form.php'); ?>

Now I can simply place my PHP code in the external file for inclusion. So far, so good. But it wasn’t long until I hit my next hurdle. I need to send an email when the form is submitted. Nothing too taxing there. In fact, this is super simple thanks to the @wp_mail Wordpress tag.

Now, normally when writing a PHP form script, the form is POSTed to the server, the server sends the email using some SMTP library, and then the script renders an HTML page ( or View if using an MVC framework). And if you’re a good developer, you’ll actually perform an HTTP redirect instead, to prevent double form submission (see this article on Wikipedia).

However when PHP code is executed within a Wordpress page, some of the response has already been sent. This has two side effects:

  1. Firstly, the page renders in the browser until it reaches the script; waits until the email has been sent, and then continues rendering the rest of the page/
  2. Secondly, as part of the response has already been sent, it is not possible to modify the HTTP headers, and hence a redirect cannot be sent.

So, we need a way to run the script before the response is sent. Here’s my solution:

Firstly, the PHP page included in the Wordpress page, contains an HTML form. I add to the form a hidden field so that it can easily identified when POSTed e.g.:

<form method="POST" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
<input type="hidden" name="form-name" value="contact" />
<div style="text-align:left; border: 1px solid #bbb; padding:10px;">
	<div>
		<label for="name">name</label>
		<input type="text" name="name" id="name" />
	</div>
	<div>
		<label for="email">email</label>
		<input type="text" name="email" id="email" />
	</div>
	<div>
		<label for="message">message</label>
		<textarea name="message" id="message" style="width:250px; height:100px"></textarea>
	</div>
	<input type="submit" value="go" />
</div>
</form>

Now, when the form is submitted, I am able to detect it, and therefore process the form submission prior to rendering the page. I do this by adding some code to the Wordpress page template. I opted to add some more include code to the first line of the header.php file within my theme, like so:

<?php require_once(ABSPATH. '/wp-content/custom-php/contact-form-test.php'); ?>

There may be a better place to put this code (wp-config, wp-settings ?). I’m no Wordpress guru, and I’m happy to be educated.

The contact-form-test.php code is as follows:

<? if($_POST['form-name'] AND "contact" === $_POST['form-name']) {
         require_once(ABSPATH. '/wp-content/custom-php/contact-form-functions.php');
	 send_message();
     }
?>

This is fairly simple code. We test to see if our form was posted, and if so include the code to send the email. No point including it unless we need to. The key is, the code is now included before any other Wordpress code executes.

For completeness, the contact-form-functions.php is as follows:

<?
function send_message()
{
	$subject = "Test email form Wordpress";
	$body = $_POST['message'];
	$recipient = "rocky-racoon@abbeyroad.co.uk";

	$success = @wp_mail($recipient, $subject, $body);

	if($success) {
		session_start();
 		$_SESSION["mail_message"] = "Thank you. your message has been sent.";
		header( 'Location:  '.$_SERVER['HTTP_REFERER'] ) ;
	}
	else {
		$GLOBALS["mail_message"] = "Euston, we have a problem.";
	}
}
?>

We use Wordpress’ mail functionality to send the email. If it sends OK, we perform an HTTP redirect. First we also set a flashvar using the PHP $_SESSION as, due to the redirect, we cannot use a $GLOBAL as it obviously goes out of scope.

One final change is required to contact-form.php to retrieve the success (or error) message. The following code is placed before the HTML form:

<?php
	session_start();

	if(isset($GLOBALS["mail_message"])) {
 		echo "<p>".$GLOBALS["mail_message"]."</p>";
	}

	if(isset($_SESSION["mail_message"])) {
 		echo "<p>".$_SESSION["mail_message"]."</p>";
		unset($_SESSION["mail_message"]);
	}
?>

This solution is useful for an custom PHP code that is server-intensive, be it database queries, web service calls or sending email.

Hope you found this useful

Tags: ,

8 Comments

David Lyle commented on November 11th, 2009 at 5:38 pm

Excellent tip to Include the php code rather than just drop it in the page/post!

Thanks for sharing

carlitos commented on November 17th, 2009 at 9:24 am

I’ve got a problem, I got this page done topxxname.php and uploaded it to wpcontent/themes/mytheme/ and when i try to open on browser that file my wp send me to the 404 page!

How i can add custom php pages to the themes folder and run them?

If i do ur tutorial it will work ?

Thanks

badlyDrawnToy commented on November 17th, 2009 at 10:49 pm

@carlitos – you can’t just upload a file and access it using WP. Everything goes through the controller, index.php. You need to create a PAge within WP, and run your code within this.

carlitos commented on November 19th, 2009 at 6:09 am

yeah thank you i finally figure it out

Michael commented on November 20th, 2009 at 11:48 pm

Thanks for taking the time to post this. It has saved me hours and at my age…that is important :)

Joe commented on December 1st, 2009 at 8:01 pm

Thanks for this article. Makes sense but I cannot get it to work.

When I first display the form page it begins with this error:

Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent (output started at /home/myacctname/public_html/mywpsitename/wp-content/themes/formtheme/header.php:8) in /home/myacctname/public_html/mywpsitename/wp-content/custom-php/contact-form.php on line 2

In my themes header.php the first line reads:

…and in “contact-form-test.php” the entire module is

…and in “contact-form-functions.php” the entire module is

The error message appears, followed by the contact form itself. If I fill out the contact form and click GO then I get the “Thank you. your message has been sent” message, but I never get the email.

As a test I tried commenting out the session-start command at the beginning of “contact-form.php”. and that did eliminate the error message, but now when I fill out the form and click GO I no longer get the ‘thank you’ message.

I researched the error message and read that it might be caused by stray nonblank characters either before the but it looks like my Notepad++ is set to Unix/ANSI so I don’t think that is the problem.

Any suggestions on 1) why the error message, and 2) why I got the “…your message has been sent” and yet received no email?

TIA

badlyDrawnToy commented on December 1st, 2009 at 8:21 pm

Hi Joe. You’re on the right track with the stray characters. To start a session the headers need modifying in the HTTP response. This cannot happen once the response has started being written. This is a classic gotcha with PHP when you are mixing server-side code with client-side HTML. If you have so much as a space or carriage return outside of the PHP tags, prior to the session_start call, then you are actually sending a response. You have to work through ALL the files that might be loaded before the session_start call. This includes those loaded by WordPress such as index.php, wp-config.php. If there’s a new line after the closing PHP tag, this cvould ber the culprit. Often, you’ll find there is no closing tag, to avoid this error. Quite likely it’s header.php, contact-form-test.php, contact-form-functions.php or contact-form.php.

If sessions aren’t working, then you will not see the message. It needs to be set in session so it can subsequently be pulled out after the redirect.

As to why you’re not receiving email, the code I posted is using Worpress’ underlying mail function. This means that whatever WP uses, the function uses. Can you send mail outside of this script? If not, you might need to configure WP with an SMTP plugin, rather than using the native sendmail() function.

god luck

Joe commented on December 2nd, 2009 at 3:54 am

Thanks for the encouragement, but I looked at the header.php and the other files you mentioned but no luck: I’m still getting the “headers already sent” message whenever I display the contact form page (all other site pages are fine).

I also tried relocating the “require_once(ABSPATH. ‘/wp-content/custom-php/contact-form-test.php” to the wp-configure.php, and also deactivating all plugins but still I get the same “headers already sent” error message.

If you have any other ideas – or perhaps know of some diagnostic tool to perhaps capture the outgoing stream and that would reveal the culprit (i.e., the code that is possibly sending the stray character(s) after the php closing bracket) then I’m all ears.

Leave a Reply

CAPTCHA Image CAPTCHA Audio
Refresh Image

Colophon

badlyDrawnToy is the blog of Howie Weiner, a freelance web developer, based in Manchester.

Microbubble Web Design - freelance web design manchester, stockport, cheshire

His company, Microbubble Web Design, specialises in PHP and Java web applications, Search Engine Optimisation, custom CMS and web development.

View Howie Weiner's profile on LinkedIn
View Howie's twitter feed