Pipedrive API Documentation

The testing-readme Developer Hub

Welcome to the testing-readme developer hub. You'll find comprehensive guides and documentation to help you start working with testing-readme as quickly as possible, as well as support if you get stuck. Let's jump right in!

Get Started    

Updating a Deal

Page updated January 11, 2019

You can update different properties of an existing Deal, see the list of parameters. In this example, we're going to give a Deal a new owner by updating the user_id of the Deal. If you only want to see the finished code of this example, you can find it below.

Step 1: Get your API token and company domain

Follow our tutorials on how to find the API token and how to get the company domain. Then create a file update_deal.php and first give value to the $api_token and $company_domain variables:

<?php
// Content of update_deal.php
  
// Pipedrive API token
$api_token = 'Your API token goes here';
  
// Pipedrive company domain
$company_domain = 'Your company domain goes here';

Step 2: Prepare the data

To change the owner of an existing Deal, you'll need to know the user_id of the new owner. You can fetch the user_id of a User via GET /users (no need to use any parameters).

You can also find the user_id manually within the Pipedrive web app by heading to Settings > Customize > Manage Users > Users and clicking on the User whose ID you're interested in. Then check the last digits of the URL. An example URL would look like this https://companydomain.pipedrive.com/users/edit/124564, which, in this case, means the user_id would be 124564.

Insert the user_id by giving value to the user_id parameter:

// New owner's User ID
$data = array(
  'user_id' => 0
);

Step 3: Define Deal ID

In order to update a Deal, you'll need the deal_id. You can fetch it via GET /deals (without passing along any parameters). You can check our getting all Deals tutorial if you need help with this.

You can also find the deal_id manually by going to the Deal's detail page within the Pipedrive web app. Once you're in the Deal detail page, check the last digit(s) of the URL, this is the Deal's ID. An example URL would like this https://companydomain.pipedrive.com/deal/222 which, in this case, means the deal_id would be 222.

Insert the deal_id by giving value to the $deal_id variable:

// Deal ID
$deal_id = 0;

Step 4: Define target URL

To make a request, you'll need the correct URL for updating the desired Deal. An example with the deal_id being 222 would look like this https://companydomain.pipedrive.com/v1/deals/222?api_token=659c9fddb16335e48cc67114694b52074e812e03

You need to create a $url variable which holds the correct URL for updating the Deal:

// URL for updating a Deal
$url = 'https://' . $company_domain . '.pipedrive.com/v1/deals/' . $deal_id . '?api_token=' . $api_token;

Step 5: Make a PUT request

This part of the code is more complex and you don’t need to understand it right away, all you need to know is that it contains everything to make a PUT request with your data against our API.

Why PUT?
Because we use PUT to update resources and POST to create one as it is common in RESTful APIs.
Read more about it here.

To make the PUT request, simply copy and paste this:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
  
echo 'Sending request...' . PHP_EOL;
  
$output = curl_exec($ch);
curl_close($ch);

Step 6: Check the result

$output variable holds the full response you get back from the server. As all responses from us are in JSON format, the first thing you'll want to do is to convert it into a proper PHP array:

// Create an array from the data that is sent back from the API
// As the original content from server is in JSON format, you need to convert it to a PHP array
$result = json_decode($output, true);

Then you can check if data returned in the result is not empty:

// Check if the data returned in the result is not empty
if (empty($result['data'])) {
    exit('Updating failed' . PHP_EOL);
}

And now you can check if a deal_id came back:

// Check if a Deal ID came back, if it did then print out User ID of the new Deal owner
if (!empty($result['data']['id'])) {
 echo 'Existing deal is assigned to a new owner with User ID: ' . $result['data']['user_id']['id'] . PHP_EOL;
}

Full working example

Copy the full working example into update_deal.php:

<?php
// Content of update_deal.php
  
// Pipedrive API token
$api_token = 'Your API token goes here';
  
// Pipedrive company domain
$company_domain = 'Your company domain goes here';
 
// New owner's User ID
$data = array(
  'user_id' => 0
);
 
// Deal ID
$deal_id = 0;
 
// URL for updating a Deal
$url = 'https://' . $company_domain . '.pipedrive.com/v1/deals/' . $deal_id . '?api_token=' . $api_token;
 
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
  
echo 'Sending request...' . PHP_EOL;
  
$output = curl_exec($ch);
curl_close($ch);
 
// Create an array from the data that is sent back from the API
// As the original content from server is in JSON format, you need to convert it to a PHP array
$result = json_decode($output, true);
 
// Check if the data returned in the result is not empty
if (empty($result['data'])) {
    exit('Updating failed' . PHP_EOL);
}
 
// Check if a Deal ID came back, if it did then print out User ID of the new Deal owner
if (!empty($result['data']['id'])) {
 echo 'Existing deal is assigned to a new owner with User ID: ' . $result['data']['user_id']['id'] . PHP_EOL;
}

To execute the code

Use php update_deal.php command to execute the code in the command line.
Here's an example output if the Deal was assigned to a new User:

Sending request...
Existing deal is assigned to a new owner with User ID: 0

If updating the Deal failed, this is the output you'll get:

Sending request...
Updating failed

Updating a Deal


Page updated January 11, 2019

Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.