`v1:product.update` Product updated webhook

This webhook is sent whenever a product in your shop is updated on Depop, whether the change was made through this API or by the seller in the Depop app or website. The payload contains the full, current state of the product, in the same shape as the response of GET /api/v1/products/by-sku/{sku}/. You can use this webhook to keep your own catalogue in sync without polling the products endpoints. Required OAuth Scope: products_read Notes:

  • product_id and slug are stable for the lifetime of a product, product_id is the safest key to match the payload against your own records. Assume every other field can change between updates, including sku.
  • quantity reflects the live stock level at the time the webhook was generated, which may differ from the quantity that was set by the update itself (for example if the product also sold).
  • auto_send_offer_price and auto_negotiate_offer_price are never included in this payload. Use GET /api/v1/products/by-sku/{sku}/ with the offers_read scope if you need the current offer pricing.
  • Delivery is best effort. Please use the products endpoints to reconcile if you need a guaranteed up-to-date view of a product.
postWebhookproductUpdated

Payload

idstring required

The identifier of the webhook. For the order webhooks (v1:order.new, v1:order.refund, v1:order.update) this is derived from the purchase ID, so it is stable per order and shared across those event types rather than unique per delivery. Combine it with event_type and created_at if you need to de-duplicate.

event_type'v1:order.new' | 'v1:order.refund' | 'v1:order.update' | 'v1:product.create' | 'v1:product.like' | 'v1:product.unlike' | 'v1:product.update' required

The type of event that triggered the webhook.

created_atstring date-time required

The date and time the webhook was created.

Example payload

{
  "id": "a210923f-c1f3-4d84-a2bd-7f18c68553e2",
  "event_type": "v1:order.new",
  "created_at": "2025-01-01T00:00:00Z",
  "data": {
    "seller_id": 123456,
    "purchase_id": "123456",
    "status": "SHIPPING_PENDING",
    "currency": "GBP",
    "buyer_pays_amount": "50.99",
    "seller_receives_amount": "45.99",
    "fee_amount": "5.00",
    "buyer_shipping_price": "5.00",
    "buyer_address": {
      "name": "John Doe",
      "address": "123 Main St",
      "address2": "Apt 1",
      "city": "London",
      "postal_code": "EC1V 4PW",
      "state": "Greater London",
      "country": "GB",
      "phone_number": "07123456789"
    },
    "line_items": [
      {
        "purchase_item_id": 2385551,
        "sku": "ABC-12345-S-BL",
        "product_id": 7021251,
        "slug": "vintage-nike-t-shirt-7021251",
        "parcel_id": "6e3538ca-6653-3c25-bf0a-a2be876b17e4",
        "description": "Vintage Nike T-Shirt in excellent condition",
        "original_price": "29.99",
        "sold_price": "25.99",
        "sold_via_offers": false,
        "image_url": "https://media-photos-staging.depop.com/b0/18220/5612584_b6795bc34778465293e45647518906d6/P0.jpg"
      }
    ],
    "depop_shipping": {
      "shipping_provider_id": "USPS"
    }
  }
}

Response

Acknowledgment.

Changes

Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.