Sygnały śledzenia zamówień umożliwiają przesyłanie do Google historycznych danych śledzenia zamówień zrealizowanych w witrynie sprzedawcy. Dzięki temu kupujący mogą uzyskać dokładniejsze i bardziej precyzyjne szacunki dotyczące dostawy. Sygnały śledzenia zamówień umożliwiają również ulepszanie informacji o produktach za pomocą adnotacji o szybkiej i bezpłatnej dostawie.
Możesz przesyłać dane o zamówieniach zrealizowanych na stronie sprzedawcy. Przesłane dane uzupełniają informacje o konfiguracji dostawy podane w ramach konfiguracji konta Merchant Center. Jeśli na przykład podajesz kupującym szacunkowy czas dostawy wynoszący 3–7 dni, ale z ostatnich danych historycznych wynika, że w niektórych regionach zamówienia zwykle docierają w ciągu 3 dni, Google może zaktualizować Twoje oferty, aby zapewnić klientom dokładniejsze oszacowanie.
Z tego przewodnika dowiesz się, jak za pomocą zasobu ordertrackingsignals
przesłać dane historyczne dotyczące śledzenia zamówień.
Wymagania wstępne
Aby wysyłać sygnały śledzenia zamówień z innego konta, Twoje konto musi być wstępnie zatwierdzone. Wymaga to połączenia właściciela konta.
Więcej informacji znajdziesz w artykule Łączenie partnera z kontem Merchant Center.
Użyj zasobu ordertrackingsignals
Zasób ordertrackingsignals
zawiera 1 punkt końcowy create
, który umożliwia przesyłanie historycznych danych śledzenia zamówień.
W przypadku każdego żądania możesz przesłać jedno zamówienie. Poniżej znajdziesz informacje o tym, dlaczego jest on potrzebny i jak można go dodać do treści żądania.
szczegóły zamówienia (data i godzina jego utworzenia, kod pocztowy miejsca dostawy i kod regionu),
shippingInfo
oraz numer śledzenia: umożliwiają obliczenie rzeczywistych czasów obsługi i dostawy.merchant_id
ilineItems
: służą do dopasowywania zamówienia do produktów na Twoim koncie Merchant Center.customerShippingFee
: koszt wysyłki pobierany od kupującego.
Przesyłanie nowych danych sygnałów śledzenia zamówienia
Oto przykładowa prośba o przesłanie sygnału śledzenia zamówienia dla zamówienia sprzedawcy o numerze „123456789”, które zawiera łącznie 8 pozycji.
https://merchantapi.googleapis.com/products/ordertracking/v1beta/accounts/{ACCOUNT_ID}/ordertrackingsignals
{
"merchantId": {ACCOUNT_ID},
"orderCreatedTime": {
"year": 2025,
"month": 1,
"day": 2,
"hours": 0,
"minutes": 0,
"seconds": 0,
"timeZone": {
"id": "America/Los_Angeles"
}
},
"orderId": "123456789",
"shippingInfo": [
{
"shipmentId": "1",
"trackingId": "100",
"carrier": "FEDEX",
"carrierService": "GROUND",
"shippedTime": {
"year": 2025,
"month": 1,
"day": 3,
"hours": 0,
"minutes": 0,
"seconds": 0,
"timeZone": {
"id": "America/Los_Angeles"
}
},
"shippingStatus": "DELIVERED"
},
{
"shipmentId": "2",
"earliestDeliveryPromiseTime": {
"year": 2025,
"month": 1,
"day": 4,
"hours": 0,
"minutes": 0,
"seconds": 0,
"timeZone": {
"id": "America/Los_Angeles"
}
},
"latestDeliveryPromiseTime": {
"year": 2025,
"month": 1,
"day": 5,
"hours": 0,
"minutes": 0,
"seconds": 0,
"timeZone": {
"id": "America/Los_Angeles"
}
},
"actualDeliveryTime": {
"year": 2025,
"month": 1,
"day": 5,
"hours": 0,
"minutes": 0,
"seconds": 0,
"timeZone": {
"id": "America/Los_Angeles"
}
},
"shippedTime": {
"year": 2025,
"month": 1,
"day": 3,
"hours": 0,
"minutes": 0,
"seconds": 0,
"timeZone": {
"id": "America/Los_Angeles"
}
},
"shippingStatus": "DELIVERED"
}
],
"lineItems": [
{
"lineItemId": "item1",
"productId": "online~en~US~trouser",
"quantity": "3"
},
{
"lineItemId": "item2",
"productId": "online~en~US~sneaker",
"quantity": "5"
}
],
"shipmentLineItemMapping": [
{
"shipmentId": "1",
"lineItemId": "item1",
"quantity": "1"
},
{
"shipmentId": "2",
"lineItemId": "item1",
"quantity": "2"
},
{
"shipmentId": "1",
"lineItemId": "item2",
"quantity": "4"
},
{
"shipmentId": "2",
"lineItemId": "item2",
"quantity": "1"
}
],
"customerShippingFee": {
"amount_micros": 4500000,
"currency_code": "USD"
},
"deliveryPostalCode": "94043",
"deliveryRegionCode": "US"
}
Oto przykład odpowiedzi po pomyślnym wywołaniu:
{
"orderCreatedTime": {
"year": 2025,
"month": 1,
"day": 2,
"timeZone": {
"id": "America/Los_Angeles"
}
},
"orderId": "15e2b0d3c33891ebb0f1ef609ec419420c20e320ce94c65fbc8c3312448eb225",
"shippingInfo": [
{
"shipmentId": "6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b",
"trackingId": "100",
"carrier": "FEDEX",
"carrierService": "GROUND",
"shippedTime": {
"year": 2025,
"month": 1,
"day": 3,
"timeZone": {
"id": "America/Los_Angeles"
}
},
"shippingStatus": "DELIVERED"
},
{
"shipmentId": "d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35",
"shippedTime": {
"year": 2025,
"month": 1,
"day": 3,
"timeZone": {
"id": "America/Los_Angeles"
}
},
"earliestDeliveryPromiseTime": {
"year": 2025,
"month": 1,
"day": 4,
"timeZone": {
"id": "America/Los_Angeles"
}
},
"latestDeliveryPromiseTime": {
"year": 2025,
"month": 1,
"day": 5,
"timeZone": {
"id": "America/Los_Angeles"
}
},
"actualDeliveryTime": {
"year": 2025,
"month": 1,
"day": 5,
"timeZone": {
"id": "America/Los_Angeles"
}
},
"shippingStatus": "DELIVERED"
}
],
"lineItems": [
{
"lineItemId": "item1",
"productId": "online~en~US~8465944842",
"quantity": "3"
},
{
"lineItemId": "item2",
"productId": "online~en~US~8465944842",
"quantity": "5"
}
],
"shipmentLineItemMapping": [
{
"shipmentId": "6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b",
"lineItemId": "item1",
"quantity": "1"
},
{
"shipmentId": "d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35",
"lineItemId": "item1",
"quantity": "2"
},
{
"shipmentId": "6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b",
"lineItemId": "item2",
"quantity": "4"
},
{
"shipmentId": "d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35",
"lineItemId": "item2",
"quantity": "1"
}
],
"customerShippingFee": {
"amountMicros": "4500000",
"currencyCode": "USD"
},
"deliveryPostalCode": "94043",
"deliveryRegionCode": "US",
"orderTrackingSignalId": "2424724582881888160",
"merchantId": "1234"
}
Poniższy przykładowy kod pokazuje, jak przesyłać dane sygnałów śledzenia zamówień:
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.ordertracking.v1beta.CreateOrderTrackingSignalRequest;
import com.google.shopping.merchant.ordertracking.v1beta.OrderTrackingSignal;
import com.google.shopping.merchant.ordertracking.v1beta.OrderTrackingSignal.LineItemDetails;
import com.google.shopping.merchant.ordertracking.v1beta.OrderTrackingSignal.ShipmentLineItemMapping;
import com.google.shopping.merchant.ordertracking.v1beta.OrderTrackingSignal.ShippingInfo;
import com.google.shopping.merchant.ordertracking.v1beta.OrderTrackingSignal.ShippingInfo.ShippingState;
import com.google.shopping.merchant.ordertracking.v1beta.OrderTrackingSignalsServiceClient;
import com.google.shopping.merchant.ordertracking.v1beta.OrderTrackingSignalsServiceSettings;
import com.google.shopping.type.Price;
import com.google.type.DateTime;
import com.google.type.TimeZone;
import java.util.Arrays;
import java.util.List;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to create an order tracking signal. */
public class CreateOrderTrackingSignalSample {
private static String getParent(String accountId) {
return String.format("accounts/%s", accountId);
}
private static void createOrderTrackingSignal(Config config, List<String> productIds)
throws Exception {
GoogleCredentials credentials = new Authenticator().authenticate();
OrderTrackingSignalsServiceSettings orderTrackingSignalsServiceSettings =
OrderTrackingSignalsServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credentials))
.build();
String parent = getParent(config.getAccountId().toString());
String firstProductId = productIds.get(0);
String secondProductId = productIds.get(1);
DateTime orderCreatedTime =
DateTime.newBuilder()
.setYear(2025)
.setMonth(3)
.setDay(24)
.setHours(12)
.setMinutes(2)
.setSeconds(22)
.setTimeZone(TimeZone.newBuilder().setId("America/Los_Angeles"))
.build();
DateTime shippedTime1 =
DateTime.newBuilder()
.setYear(2025)
.setMonth(3)
.setDay(25)
.setHours(16)
.setMinutes(22)
.setTimeZone(TimeZone.newBuilder().setId("America/Los_Angeles"))
.build();
DateTime shippedTime2 =
DateTime.newBuilder()
.setYear(2025)
.setMonth(3)
.setDay(26)
.setHours(16)
.setMinutes(22)
.setTimeZone(TimeZone.newBuilder().setId("America/Los_Angeles"))
.build();
DateTime earliestDeliveryPromiseTime =
DateTime.newBuilder()
.setYear(2025)
.setMonth(3)
.setDay(27)
.setTimeZone(TimeZone.newBuilder().setId("America/Los_Angeles"))
.build();
DateTime latestDeliveryPromiseTime =
DateTime.newBuilder()
.setYear(2025)
.setMonth(3)
.setDay(30)
.setTimeZone(TimeZone.newBuilder().setId("America/Los_Angeles"))
.build();
DateTime actualDeliveryTime =
DateTime.newBuilder()
.setYear(2025)
.setMonth(3)
.setDay(29)
.setHours(16)
.setMinutes(22)
.setTimeZone(TimeZone.newBuilder().setId("America/Los_Angeles"))
.build();
ShippingInfo shippingInfo1 =
ShippingInfo.newBuilder()
.setShipmentId("shipment_id1")
.setCarrier("UPS")
.setCarrierService("Ground")
.setTrackingId("1Z23456789")
.setShippedTime(shippedTime1)
.setEarliestDeliveryPromiseTime(earliestDeliveryPromiseTime)
.setLatestDeliveryPromiseTime(latestDeliveryPromiseTime)
.setActualDeliveryTime(actualDeliveryTime)
.setShippingStatus(ShippingState.DELIVERED)
.setOriginPostalCode("94043")
.setOriginRegionCode("US")
.build();
ShippingInfo shippingInfo2 =
ShippingInfo.newBuilder()
.setShipmentId("shipment_id2")
.setCarrier("USPS")
.setCarrierService("Ground Advantage")
.setTrackingId("987654321")
.setShippedTime(shippedTime2)
.setShippingStatus(ShippingState.SHIPPED)
.setOriginPostalCode("94043")
.setOriginRegionCode("US")
.build();
try (OrderTrackingSignalsServiceClient orderTrackingSignalsServiceClient =
OrderTrackingSignalsServiceClient.create(orderTrackingSignalsServiceSettings)) {
CreateOrderTrackingSignalRequest request =
CreateOrderTrackingSignalRequest.newBuilder()
.setParent(parent)
.setOrderTrackingSignal(
OrderTrackingSignal.newBuilder()
// Unique order ID across all merchants orders.
.setOrderId("unique_order_id443455")
// If sending signal on behalf of another merchant use setMerchantId to
// indicate the merchant.
// .setMerchantId(123L)
.setOrderCreatedTime(orderCreatedTime)
.addShippingInfo(shippingInfo1)
.addShippingInfo(shippingInfo2)
// Details of the line items in the order including quantity and fields
// identifying the product.
.addLineItems(
LineItemDetails.newBuilder()
.setQuantity(2)
.setProductId(firstProductId)
.setLineItemId("item1"))
.addLineItems(
LineItemDetails.newBuilder()
.setQuantity(1)
.setProductId(secondProductId)
.setLineItemId("item2")
// Optional fields used to identify the product when product ID is not
// sufficient.
.setMpn("00638HAY")
.setProductTitle("Tshirt-small-blue")
.setBrand("Brand1")
// Any GTIN associated with the product.
.setGtin("001234567890"))
// Mapping of line items to shipments.
.addShipmentLineItemMapping(
ShipmentLineItemMapping.newBuilder()
.setShipmentId("shipment_id1")
.setLineItemId("item2")
.setQuantity(1))
.addShipmentLineItemMapping(
ShipmentLineItemMapping.newBuilder()
.setShipmentId("shipment_id2")
.setLineItemId("item1")
.setQuantity(1))
.addShipmentLineItemMapping(
ShipmentLineItemMapping.newBuilder()
.setShipmentId("shipment_id1")
.setLineItemId("item1")
.setQuantity(1))
// The price represented as a number in micros (1 million micros is an
// equivalent to one's currency standard unit, for example, 1 USD = 1000000
// micros).
.setCustomerShippingFee(
Price.newBuilder()
// Equivalent to 5 USD.
.setAmountMicros(5000000)
.setCurrencyCode("USD"))
.setDeliveryPostalCode("10011"))
.build();
System.out.println("Sending Create OrderTrackingSignal request.");
OrderTrackingSignal response =
orderTrackingSignalsServiceClient.createOrderTrackingSignal(request);
System.out.println("Created OrderTrackingSignal below.");
System.out.println(response);
} catch (Exception e) {
System.out.println(e);
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
// All products in the order. Replace with actual products in the order. Be sure to include all
// products in the order.
String productId1 = "online~en~us~sku123";
String productId2 = "online~en~us~skuabc";
List<String> productIds = Arrays.asList(productId1, productId2);
createOrderTrackingSignal(config, productIds);
}
}
Przesyłanie nowych danych sygnałów śledzenia zamówienia w imieniu sprzedawcy
Aby przesłać nowe dane sygnałów śledzenia zamówienia w imieniu sprzedawcy, wykonaj te czynności:
- Zanim zaczniesz przesyłać dane w imieniu innej firmy, upewnij się, że masz do tego uprawnienia. Aby poprosić o dostęp, wyślij e-maila na adres OrderTrackingSignals@google.com.
- Skonfiguruj pole
merchant_id
i wysyłaj dane w imieniu firmy.
Aktualizowanie istniejących danych sygnałów śledzenia zamówienia
Aby zmodyfikować już przesłane dane śledzenia zamówienia, prześlij prośbę zawierającą nowe dane z tym samym orderId
. W przypadku szacowania dostawy i przyznawania plakietki szybkiej i bezpłatnej dostawy wykorzystywane są tylko ostatnio przesłane dane dla każdego orderId
.