Passing offline conversions
To learn about offline conversions and how their tracking can help your business, see Offline conversions and calls.
Step 1. Preparing data
-
Prepare special IDs:
ClientID,UserID,yclid, orPurchaseId. -
Create a JavaScript event goal using the POST /management/v1/counter/{counterId}/goals method. For the goal ID, specify the event you want to track (for example, order confirmation — "order_confirmed"). You will need this ID when creating a CSV file.
Note
When creating a “JavaScript event” goal, make sure to use the “matches” condition.
You can use a previously created goal if conversions for this goal are done both on the website and offline and you want to get general statistics.
Step 2. Preparing conversion data
Conversion data is transmitted in CSV format. There are several ways to do this:
In the file, specify the data that you want to pass to Yandex Metrica. Sample file.
The first line must include column names.
|
Columns |
Description |
|
Required |
|
|
|
The site user's ID assigned by the site owner. |
|
|
Site user ID assigned by Yandex Metrica. |
|
|
The ID of a click on a Yandex Direct ad assigned by Yandex Direct. It is passed in the ad’s URL. |
|
|
The E-commerce purchase ID assigned by the site owner. |
|
|
ID of the goal. |
|
|
Date and time of the conversion in Unix Time Stamp format. Please note that the DateTime can only be in the past. An error occurs if the file is uploaded before the DateTime value has passed. |
|
Optional |
|
|
|
Goal cost (value), with full stop (.) as the decimal separator. |
|
|
Currency code of the purchase in the three-letter ISO 4217 format. |
Step 3. Transmitting data
Note
Create a CSV file with the data and send it using this method. We also recommend generating API requests automatically using modules written in a programming language.
Note
The data will appear in Yandex Metrica reports within 2 hours of upload.
Use the method POST /management/v1/counter/{counterId}/offline_conversions/upload. Make sure to include the OAuth token and the tag ID in your input data.
$counter = ""; // Specify the counter ID
$token = ""; // Specify the OAuth token
$curl = curl_init("https://api-metrika.yandex.net/management/v1/counter/$counter/offline_conversions/upload");
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, array('file' => new CurlFile(realpath('file.csv'))));
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type: multipart/form-data", "Authorization: OAuth $token"));
$result = curl_exec($curl);
echo $result;
curl_close($curl);
import requests
counter = 123456
token = "token"
file = open("offline-conversions.csv", "r").read()
url = "https://api-metrika.yandex.net/management/v1/counter/{}/offline_conversions/upload".format(counter)
headers = {
"Authorization": "OAuth {}".format(token)
}
req = requests.post(url, headers=headers, files={"file":file})
What's next?
To track the status of conversion upload, use the GET /management/v1/counter/{counterId}/offline_conversions/uploading/{id} method.