Skip to content

Etsy sale notifications

Parse Etsy sale emails

Etsy tells you about every sale by email. This layout reads the order number, the buyer, the ship-by date and the total, and lists each item with its quantity and price.

Use this layoutFree plan included: 2 layouts per endpoint.
The email
From
Etsy <transaction@etsy.example>
Subject
You made a sale on Etsy! Order #3123456789
Congratulations! You made a sale.

Order number: 3123456789
Buyer: Jane Doe

Item: Hand-thrown mug
Quantity: 2
Price: $36.00

Item: Linen napkins
Quantity: 1
Price: $9.00

Order total: $45.00
Ship by: Nov 3, 2026
What your endpoint delivers
{
  "parsed": {
    "status": "matched",
    "layout": {
      "id": "etsy-sales",
      "name": "Etsy sales"
    },
    "fields": {
      "order": "3123456789",
      "buyer": "Jane Doe",
      "total": "45.00",
      "ship_by": "Nov 3, 2026"
    },
    "lineItems": [
      {
        "item": "Hand-thrown mug",
        "quantity": "2",
        "price": "36.00"
      },
      {
        "item": "Linen napkins",
        "quantity": "1",
        "price": "9.00"
      }
    ]
  }
}

The layout

It matches the email by its subject, reads each field with an RE2 pattern, and turns the list into line items. Edit any of it in the endpoint's settings, where the preview tries it on an email you captured as you type.

{
  "id": "etsy-sales",
  "name": "Etsy sales",
  "match": {
    "conditions": [
      {
        "field": "email",
        "name": "subject",
        "op": "contains",
        "value": "sale on Etsy"
      }
    ]
  },
  "fields": [
    {
      "name": "order",
      "from": "text",
      "pattern": "Order number:\\s*(\\d+)"
    },
    {
      "name": "buyer",
      "from": "text",
      "pattern": "Buyer:[ \\t]*([^\\r\\n]+)"
    },
    {
      "name": "total",
      "from": "text",
      "pattern": "Order total:\\s*\\$?([0-9][0-9.,]*)"
    },
    {
      "name": "ship_by",
      "from": "text",
      "pattern": "Ship by:[ \\t]*([^\\r\\n]+)"
    }
  ],
  "lineItems": {
    "from": "text",
    "pattern": "Item: (?P<item>[^\\r\\n]+)\\r?\\nQuantity: (?P<quantity>\\d+)\\r?\\nPrice: \\$?(?P<price>[0-9][0-9.,]*)"
  }
}

More senders