I want to create Task with 'Related To' (WhatId) field, where the type is 'Product'. But salesforce always says that malformed_id.

$fields = array ( 'STATUS' => 'IN PROGRESS', 'PRIORITY' => 'NORMAL', 'WhoId' => 'xxxx', 'SUBJECT' => 'My Subject', 'WhatId' => 'MXD, // Existing Product code 'Type' => 'Download' );

In case, if i gave AccountId. it works well, but need to insert 'Product Code'.

-- Update:

I found the solution:

I get the WhatId from 'Product2' table.

$product_response = $Connection->query("SELECT Id from Product2 WHERE ProductCode='CUSTOMPCODE'"); $data = (array) $product_response->records; $whatid = $data[0]->Id[0];

after getting $whatid, then submitted to sales-force:

$fields = array ( 'STATUS' => 'IN PROGRESS', 'PRIORITY' => 'NORMAL', 'WhoId' => 'xxxx', 'WhatId' => $whatid, 'SUBJECT' => 'My Subject', 'WhatId' => 'MXD, // Existing Product code 'Type' => 'Download' );

it works well!

Thanks for who helped.

  • You could put your solution as an answer. You're allowed to answer your own questions. Commented Jun 22, 2016 at 9:21

2 Answers 2


You can't use the "Product Code" field when associating the task to the product directly. It must be a unique 15- or 18-character identifier. If you are attempting to use an "upsert" command, you could use an External ID. See the documentation for upsert for more information.


WhatID can be ID of a related Account, Opportunity, Campaign, Case, or custom object. Please find the link

  • 1
    It can also be a product, as well, even though the documentation doesn't explicitly state this.
    – sfdcfox
    Commented Dec 17, 2013 at 16:41

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .