Skip to main content
images/boulevard.svg

Events

Triggering Webhook Types

The following event types are associated with the Order event payload from Boulevard.
  • Boulevard Order Completed
  • Boulevard Order Refund Closed
{
  "applied_vouchers": [
    {
      "id": "urn:blvd:OrderVoucher:voucher123",
      "voucher": {
        "expires_on": "2024-12-31",
        "id": "urn:blvd:Voucher:voucher123",
        "redeemed_at": "2024-03-15T10:00:00Z",
        "services": [
          {
            "category": {
              "id": "urn:blvd:ServiceCategory:category123",
              "name": "Massage Therapy"
            },
            "created_at": "2024-01-01T00:00:00Z",
            "description": "60-minute therapeutic massage",
            "id": "urn:blvd:Service:service123",
            "is_active": true,
            "name": "Deep Tissue Massage",
            "updated_at": "2024-03-01T00:00:00Z"
          }
        ]
      }
    }
  ],
  "client": {
    "email_address": "jane.smith@email.com",
    "first_name": "Jane",
    "id": "urn:blvd:Client:client123",
    "last_name": "Smith",
    "phone_number": "+15551234567"
  },
  "closed_at": "2024-03-15T12:00:00Z",
  "closed_by": {
    "email_address": "sarah.johnson@spa.com",
    "first_name": "Sarah",
    "id": "urn:blvd:Staff:staff123",
    "last_name": "Johnson",
    "phone_number": "+15551234567",
    "role_name": "Massage Therapist"
  },
  "created_at": "2024-03-01T09:00:00Z",
  "fee_lines": [
    {
      "absolute_amount_cents": 500,
      "calculated_amount_cents": 500,
      "calculated_tax_amount_cents": 45,
      "id": "urn:blvd:OrderFeeLine:fee123",
      "label": "Processing Fee",
      "percentage_amount": 3.5,
      "refunds": [
        {
          "id": "urn:blvd:FeeLineRefund:refund123",
          "order_refund_id": "urn:blvd:OrderRefund:refund123",
          "refund_amount_cents": 500,
          "refunded_at": "2024-03-20T14:30:00Z"
        }
      ],
      "type": "ORDER_FEE_TYPE_BLVD_OFFSET"
    }
  ],
  "id": "urn:blvd:Order:order123",
  "line_groups": [
    {
      "id": "urn:blvd:OrderLineGroup:group123",
      "lines": [
        {
          "current_discount_amount_cents": 0,
          "current_price_cents": 15000,
          "current_subtotal_cents": 15000,
          "discounts": [
            {
              "description": "First Time Client Discount",
              "discount_amount_cents": 1500,
              "discount_percentage": 10,
              "discount_reason": {
                "id": "urn:blvd:DiscountReason:reason123",
                "is_hidden": false,
                "name": "First Time Client"
              },
              "id": "urn:blvd:OrderDiscount:discount123"
            }
          ],
          "id": "urn:blvd:OrderLine:line123",
          "initial_discount_amount_cents": 0,
          "initial_price_cents": 15000,
          "initial_subtotal_cents": 15000,
          "quantity": 1
        }
      ]
    }
  ],
  "location": {
    "address": {
      "city": "San Francisco",
      "country": "US",
      "line1": "1 Acacia Ave.",
      "line2": "Apt 3a.",
      "province": "Alberta",
      "state": "CA",
      "zip_code": "94117"
    },
    "external_id": "LOC001",
    "id": "urn:blvd:Location:loc123",
    "is_remote": false,
    "name": "Downtown Spa",
    "timezone": "America/New_York"
  },
  "note": "Birthday celebration package",
  "number": "ORD-2024-001234",
  "payment_groups": [
    {
      "id": "urn:blvd:OrderPaymentGroup:group123",
      "is_independent_merchant": false,
      "merchant_id": "merchant123",
      "merchant_name": "Downtown Spa",
      "payments": [
        {
          "id": "urn:blvd:OrderPayment:payment123",
          "merchant_id": "merchant123",
          "order_id": "urn:blvd:Order:order123",
          "paid_amount_cents": 17850,
          "payment_method_label": "Visa ending in 1234",
          "refund_amount_cents": 0,
          "refunds": [
            {
              "id": "urn:blvd:OrderPaymentRefund:refund123",
              "is_full_refund": true,
              "refund_amount_cents": 17850,
              "refund_id": "refund123",
              "refunded_at": "2024-03-20T14:30:00Z"
            }
          ]
        }
      ],
      "total_cents": 17850,
      "total_fees_cents": 500,
      "total_paid_cents": 17850,
      "total_unpaid_cents": 0
    }
  ],
  "refunds": [
    {
      "closed_at": "2024-03-20T14:30:00Z",
      "closed_by": {
        "email_address": "sarah.johnson@spa.com",
        "first_name": "Sarah",
        "id": "urn:blvd:Staff:staff123",
        "last_name": "Johnson",
        "phone_number": "+15551234567",
        "role_name": "Massage Therapist"
      },
      "created_at": "2024-03-20T14:00:00Z",
      "id": "urn:blvd:OrderRefund:refund123",
      "number": "REF-2024-001234",
      "payments": [
        {
          "id": "urn:blvd:OrderRefundPayment:payment123",
          "order_payment_id": "urn:blvd:OrderPayment:payment123",
          "refund_amount_cents": 15000,
          "refund_limit_cents": 15000
        }
      ],
      "refund_reason": "ORDER_REFUND_REASON_CUSTOMER_REQUEST",
      "refund_reason_text": "Customer changed mind",
      "status": "ORDER_REFUND_STATUS_CLOSED",
      "summary": {
        "refund_amount_cents": 15000,
        "refund_tax_cents": 1350,
        "refund_total_cents": 16350
      },
      "updated_at": "2024-03-20T14:30:00Z"
    }
  ],
  "summary": {
    "current_discount_amount_cents": 1500,
    "current_fee_amount_cents": 500,
    "current_gratuity_amount_cents": 2000,
    "current_subtotal_cents": 15000,
    "current_tax_amount_cents": 1350,
    "current_total_cents": 17850,
    "initial_discount_amount_cents": 1500,
    "initial_fee_amount_cents": 500,
    "initial_gratuity_amount_cents": 2000,
    "initial_subtotal_cents": 15000,
    "initial_tax_amount_cents": 1350,
    "initial_total_cents": 17850,
    "refund_amount_cents": 0
  },
  "updated_at": "2024-03-15T11:30:00Z"
}
{
  "applied_vouchers": {
    "id": "Unique identifier for the order voucher.",
    "voucher": {
      "expires_on": "The date when the voucher expires.",
      "id": "Unique identifier for the voucher.",
      "redeemed_at": "When the Voucher was redeemed.",
      "services": {
        "category": {
          "id": "Unique identifier for the service category.",
          "name": "Name of the service category."
        },
        "created_at": "The date and time when the service was created.",
        "description": "Description of the service.",
        "id": "Unique identifier for the service.",
        "is_active": "Whether the service is active.",
        "name": "Name of the service.",
        "updated_at": "The date and time when the service was last updated."
      }
    }
  },
  "client": {
    "email_address": "Client's email address.",
    "first_name": "Client's first name.",
    "id": "Unique identifier for the client in the Boulevard system.",
    "last_name": "Client's last name.",
    "phone_number": "Client's mobile phone number."
  },
  "closed_at": "The date and time when the order was closed.",
  "closed_by": {
    "email_address": "Email address of the staff member.",
    "first_name": "First name of the staff member.",
    "id": "Unique identifier for the staff member.",
    "last_name": "Last name of the staff member.",
    "phone_number": "Mobile phone number of the staff member.",
    "role_name": "Name of the staff member's role."
  },
  "created_at": "The date and time when the order was created.",
  "fee_lines": {
    "absolute_amount_cents": "Absolute amount for the fee in cents. Null if percentage_amount is set.",
    "calculated_amount_cents": "Current calculated amount for the fee in cents.",
    "calculated_tax_amount_cents": "Current calculated tax amount for the fee in cents.",
    "id": "Unique identifier for the fee line.",
    "label": "Human-readable fee label.",
    "percentage_amount": "Percentage amount for the fee. Null if absolute_amount_cents is set.",
    "refunds": {
      "id": "Unique identifier for the fee line refund.",
      "order_refund_id": "ID of the order refund the fee was refunded on.",
      "refund_amount_cents": "Amount of the fee refunded in cents.",
      "refunded_at": "When the fee was refunded."
    },
    "type": "Machine-readable fee type."
  },
  "id": "Unique identifier for the order in the Boulevard system.",
  "line_groups": {
    "id": "Unique identifier for the line group.",
    "lines": {
      "current_discount_amount_cents": "Current discount amount in cents.",
      "current_price_cents": "Current price in cents.",
      "current_subtotal_cents": "Current subtotal in cents.",
      "discounts": {
        "description": "Description of the discount.",
        "discount_amount_cents": "Discount amount in cents.",
        "discount_percentage": "Discount percentage, if applicable.",
        "discount_reason": {
          "id": "Unique identifier for the discount reason.",
          "is_hidden": "Whether the discount reason is hidden.",
          "name": "Name of the discount reason."
        },
        "id": "Unique identifier for the discount."
      },
      "id": "Unique identifier for the order line.",
      "initial_discount_amount_cents": "Initial discount amount in cents.",
      "initial_price_cents": "Initial price in cents.",
      "initial_subtotal_cents": "Initial subtotal in cents.",
      "quantity": "Quantity of the item."
    }
  },
  "location": {
    "address": {
      "city": "City of the Address",
      "country": "Country for the Address.",
      "line1": "Line 1 of the Address",
      "line2": "Line 2 of the Address",
      "province": "Province of the Address.",
      "state": "State of the Address.",
      "zip_code": "Zip (postal) code for the Address."
    },
    "external_id": "External identifier for the location.",
    "id": "Unique identifier for the location.",
    "is_remote": "Indicates that the location is a remote location, and that appointments for this location are carried out remotely.",
    "name": "Name of the location.",
    "timezone": "Timezone associated with the location."
  },
  "note": "An optional note tied to the order.",
  "number": "Unique order number for the business.",
  "payment_groups": {
    "id": "Unique identifier for the payment group.",
    "is_independent_merchant": "Whether this is an independent merchant.",
    "merchant_id": "ID of the merchant.",
    "merchant_name": "Name of the merchant.",
    "payments": {
      "id": "Unique identifier for the payment.",
      "merchant_id": "ID of the merchant.",
      "order_id": "ID of the order.",
      "paid_amount_cents": "Amount paid in cents.",
      "payment_method_label": "Human-readable label for the payment method.",
      "refund_amount_cents": "The total amount refunded, if any, in cents.",
      "refunds": {
        "id": "Unique identifier for the payment refund.",
        "is_full_refund": "Whether this is a full refund.",
        "refund_amount_cents": "Amount refunded in cents.",
        "refund_id": "ID of the refund.",
        "refunded_at": "When the refund was processed."
      }
    },
    "total_cents": "Total amount for this payment group in cents.",
    "total_fees_cents": "Total fees for this payment group in cents.",
    "total_paid_cents": "Total paid for this payment group in cents.",
    "total_unpaid_cents": "Total unpaid for this payment group in cents."
  },
  "refunds": {
    "closed_at": "When the refund was closed.",
    "closed_by": {
      "email_address": "Email address of the staff member.",
      "first_name": "First name of the staff member.",
      "id": "Unique identifier for the staff member.",
      "last_name": "Last name of the staff member.",
      "phone_number": "Mobile phone number of the staff member.",
      "role_name": "Name of the staff member's role."
    },
    "created_at": "The date and time when the order refund was created.",
    "id": "Unique identifier for the order refund.",
    "number": "Refund number.",
    "payments": {
      "id": "Unique identifier for the refund payment.",
      "order_payment_id": "When this payment is one of the original payments on the order, this ID is present and can be used to read more information on the payment.",
      "refund_amount_cents": "Total amount to be refunded to this payment method, including any tax, in cents.",
      "refund_limit_cents": "Maximum amount that can be refunded to this payment method in cents."
    },
    "refund_reason": "Value that describes why this refund was made. When the reason is OTHER, refund_reason_text should also be set.",
    "refund_reason_text": "Additional description, usually available when the refund reason is OTHER.",
    "status": "Closed status of the refund.",
    "summary": {
      "refund_amount_cents": "Total refund amount in cents.",
      "refund_tax_cents": "Refund tax amount in cents.",
      "refund_total_cents": "Total refund including tax in cents."
    },
    "updated_at": "The date and time when the order refund was last updated."
  },
  "summary": {
    "current_discount_amount_cents": "Current discount amount in cents.",
    "current_fee_amount_cents": "Current fee amount in cents.",
    "current_gratuity_amount_cents": "Current gratuity amount in cents.",
    "current_subtotal_cents": "Current subtotal in cents.",
    "current_tax_amount_cents": "Current tax amount in cents.",
    "current_total_cents": "Current total amount in cents.",
    "initial_discount_amount_cents": "Initial discount amount in cents.",
    "initial_fee_amount_cents": "Initial fee amount in cents.",
    "initial_gratuity_amount_cents": "Initial gratuity amount in cents.",
    "initial_subtotal_cents": "Initial subtotal in cents.",
    "initial_tax_amount_cents": "Initial tax amount in cents.",
    "initial_total_cents": "Initial total amount in cents.",
    "refund_amount_cents": "Total refund amount in cents."
  },
  "updated_at": "The date and time when the order was last updated."
}

Payload Field Details

Order
Event Payload