Shipping

Connect Sendcloud

Your application calls one EchoRelay URL. When Sendcloud changes its API, you update the mapping, not your application.

How Sendcloud signs requests

Basic auth: your public key is the username and your private key the password. Sendcloud also offers OAuth 2.0 client credentials with the same key pair.

Can you connect it today?

Yes. Add a basic-auth credential with the public key as the username and the private key as the password.

A sample mapping

Your application sends the first request below. The mapping turns it into the body of POST /api/v3/shipments/announce, shown second.

Your request

{
    "orderNumber": "1042",
    "recipient": {
        "name": "Sanne de Jong",
        "street": "Insulindelaan 115",
        "postcode": "5642 CV",
        "city": "Eindhoven",
        "country": "NL"
    },
    "parcels": [
        {
            "weightKg": "1.320"
        }
    ]
}

What Sendcloud receives

{
    "from_address": {
        "sender_address_id": 12345
    },
    "to_address": {
        "name": "Sanne de Jong",
        "address_line_1": "Insulindelaan 115",
        "postal_code": "5642 CV",
        "city": "Eindhoven",
        "country_code": "NL"
    },
    "ship_with": {
        "type": "shipping_option_code",
        "properties": {
            "shipping_option_code": "postnl:standard",
            "contract_id": 517
        }
    },
    "parcels": [
        {
            "weight": {
                "value": "1.320",
                "unit": "kg"
            }
        }
    ],
    "order_number": "1042"
}

The mapping

{
    "$schema": "https://schemas.echorelay.dev/transform/mapping/v1.json",
    "root": {
        "type": "object",
        "id": "root",
        "properties": {
            "from_address": {
                "type": "constant",
                "id": "from-address",
                "value": {
                    "sender_address_id": 12345
                }
            },
            "to_address": {
                "type": "object",
                "id": "to-address",
                "properties": {
                    "name": {
                        "type": "field",
                        "id": "name",
                        "path": "recipient.name"
                    },
                    "address_line_1": {
                        "type": "field",
                        "id": "address-line-1",
                        "path": "recipient.street"
                    },
                    "postal_code": {
                        "type": "field",
                        "id": "postal-code",
                        "path": "recipient.postcode"
                    },
                    "city": {
                        "type": "field",
                        "id": "city",
                        "path": "recipient.city"
                    },
                    "country_code": {
                        "type": "field",
                        "id": "country",
                        "path": "recipient.country"
                    }
                }
            },
            "ship_with": {
                "type": "constant",
                "id": "ship-with",
                "value": {
                    "type": "shipping_option_code",
                    "properties": {
                        "shipping_option_code": "postnl:standard",
                        "contract_id": 517
                    }
                }
            },
            "parcels": {
                "type": "arrayMap",
                "id": "parcels",
                "source": {
                    "type": "field",
                    "id": "parcel-list",
                    "path": "parcels"
                },
                "element": {
                    "type": "object",
                    "id": "parcel",
                    "properties": {
                        "weight": {
                            "type": "object",
                            "id": "weight",
                            "properties": {
                                "value": {
                                    "type": "field",
                                    "id": "weight-value",
                                    "path": "weightKg"
                                },
                                "unit": {
                                    "type": "constant",
                                    "id": "weight-unit",
                                    "value": "kg"
                                }
                            }
                        }
                    }
                }
            },
            "order_number": {
                "type": "field",
                "id": "order-number",
                "path": "orderNumber"
            }
        }
    }
}

The grammar, the answer mapping and the dry run are in the mapping docs.

What you bring

This is not a ready-made connector. You bring a sample request or Sendcloud’s OpenAPI document, you or your agent write the mapping, and we run the integration you define.

Sendcloud facts on this page were read 2026-10-30 from Sendcloud authentication guide, Sendcloud API v3 reference: create and announce a shipment, Sendcloud migration guide to API v3. Another service? Check it here.

Connect everything. Deploy nothing.

No credit card required.