> ## Documentation Index
> Fetch the complete documentation index at: https://docs.portal.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Zapier Trigger: Proposal Status Change

> Zapier trigger that fires when a proposal's status changes in Portal.io.

This endpoint is used by the Portal.io Zapier integration. It fires when a proposal's status changes in your Portal.io account — for example, when a proposal moves from Draft to Submitted, or from Submitted to Accepted.

Each Zapier subscription can filter by specific statuses so that your Zap only triggers on transitions you care about.


## OpenAPI

````yaml GET /zapier/trigger/proposal
openapi: 3.1.0
info:
  title: Portal.Api
  version: '1.0'
servers:
  - url: http://127.0.0.1:5000
security: []
tags: []
paths:
  /zapier/trigger/proposal:
    get:
      tags:
        - Zapier Triggers
      summary: Zapier Trigger for Proposal Status Change
      description: >-
        Provides the sample response shape for the Zapier proposal trigger. Use
        this trigger when you want Zapier to receive proposal updates, including
        proposal status changes and related proposal details.
      operationId: GetZapierProposalTrigger
      parameters:
        - $ref: '#/components/parameters/Accept'
      responses:
        '200':
          description: Proposal List.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZapierProposalItem'
        '401':
          description: >-
            Authentication failed. Verify the HMAC headers and credentials used
            for the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpError'
      deprecated: false
      x-codeSamples: []
components:
  parameters:
    Accept:
      name: Accept
      in: header
      description: Accept Header
      required: true
      schema:
        type: string
        enum:
          - application/json
  schemas:
    ZapierProposalItem:
      title: ZapierProposalItem
      required:
        - financialSummary
        - id
      properties:
        number:
          type: integer
          format: int32
        status:
          type: string
        total:
          type: number
          format: double
        customer:
          $ref: '#/components/schemas/PublicCustomerModel'
        proposalPdf:
          type: string
        proposalCsv:
          type: string
        installerPdf:
          type: string
        salesPerson:
          type: string
        salesPersonEmail:
          type: string
        areas:
          type: array
          items:
            $ref: '#/components/schemas/PublicAreaModel'
        financialSummary:
          $ref: '#/components/schemas/PublicFinancialSummaryModel'
        profit:
          $ref: '#/components/schemas/PublicProfitModel'
        recurringServices:
          $ref: '#/components/schemas/PublicRecurringServicesModel'
        changeOrders:
          type: array
          items:
            $ref: '#/components/schemas/PublicChangeOrderModel'
        id:
          type: integer
          format: int32
        name:
          type: string
      description: ZapierProposalItem
      type: object
    HttpError:
      title: HttpError
      properties:
        errorCode:
          type: string
        stackTrace:
          type: string
        contentType:
          type: string
        headers:
          $ref: '#/components/schemas/Dictionary_String_String_'
        cookies:
          type: array
          items:
            $ref: '#/components/schemas/Cookie'
        status:
          type: integer
          format: int32
        statusCode:
          type: string
        statusDescription:
          type: string
        response:
          $ref: '#/components/schemas/Object'
        responseFilter:
          $ref: '#/components/schemas/IContentTypeWriter'
        requestContext:
          $ref: '#/components/schemas/IRequest'
        paddingLength:
          type: integer
          format: int32
        resultScope:
          $ref: '#/components/schemas/Func_IDisposable_'
        options:
          $ref: '#/components/schemas/IDictionary_String_String_'
        responseStatus:
          $ref: '#/components/schemas/ResponseStatus'
        targetSite:
          $ref: '#/components/schemas/MethodBase'
        message:
          type: string
        data:
          $ref: '#/components/schemas/IDictionary'
        innerException:
          $ref: '#/components/schemas/Exception'
        helpLink:
          type: string
        source:
          type: string
        hResult:
          type: integer
          format: int32
      description: HttpError
      type: object
    PublicCustomerModel:
      title: PublicCustomerModel
      required:
        - id
        - partyType
        - contactType
      properties:
        location:
          $ref: '#/components/schemas/PublicLocationModel'
        id:
          description: Unique numeric identifier of the contact
          type: integer
          format: int32
        partyType:
          description: Contact party type such as Person or Company
          type: string
          enum:
            - Undefined
            - Person
            - Company
        contactType:
          description: Contact category type
          type: string
          enum:
            - Undefined
            - Client
            - Employee
            - Contractor
            - Other
        firstName:
          description: Contact first name
          type: string
        lastName:
          description: Contact last name
          type: string
        companyName:
          description: Company name when the contact represents a company
          type: string
        contactEmail:
          description: Primary contact email address
          type: string
        contactEmailCC:
          description: Additional email addresses copied when a proposal is submitted
          type: string
        contactPhone:
          description: Primary contact phone number
          type: string
      description: Customer contact
      type: object
    PublicAreaModel:
      title: PublicAreaModel
      required:
        - id
        - name
        - options
      properties:
        id:
          description: Unique numeric identifier of the proposal area
          type: integer
          format: int32
        name:
          description: Area name
          type: string
        options:
          description: Client-selectable options available within the area
          type: array
          items:
            $ref: '#/components/schemas/PublicAreaOptionModel'
      description: Proposal area
      type: object
    PublicFinancialSummaryModel:
      title: PublicFinancialSummaryModel
      required:
        - partsSubtotal
        - partsTotal
        - laborTotal
        - feeTotal
        - proposalSubtotal
        - salesTax
      properties:
        partsSubtotal:
          description: >-
            Total of all sell prices for parts on proposal, before any
            additional discount
          type: number
          format: double
        partsDiscountType:
          description: Discount type applied to parts when one exists
          type: string
          enum:
            - Percentage
            - Fixed
        partsDiscountPercentage:
          description: Parts discount percentage when one exists
          type: number
          format: double
        partsDiscount:
          description: Additional discount on parts
          type: number
          format: double
        partsDiscountTaxable:
          description: Additional discount on taxable parts
          type: number
          format: double
        partsDiscountTaxExempt:
          description: Additional discount on tax exempt parts
          type: number
          format: double
        partsTotal:
          description: >-
            Total of all sell prices for parts on proposal, after additional
            discount
          type: number
          format: double
        laborTotal:
          description: Total sell price of labor items on the proposal
          type: number
          format: double
        feeTotal:
          description: Total sell price of fee items on the proposal
          type: number
          format: double
        proposalSubtotal:
          description: Sum of parts, labor, and fees before sales tax
          type: number
          format: double
        salesTax:
          $ref: '#/components/schemas/PublicSalesTaxModel'
        proposalTotal:
          description: Total proposal amount
          type: number
          format: double
        currency:
          $ref: '#/components/schemas/PublicCurrencyModel'
      description: Financial totals, discounts, tax, and currency values for the proposal
      type: object
    PublicProfitModel:
      title: PublicProfitModel
      properties:
        total:
          description: Total profit amount for the proposal
          type: number
          format: double
        percentage:
          description: Total profit margin percentage for the proposal
          type: number
          format: double
        partTotal:
          description: Profit amount contributed by parts
          type: number
          format: double
        partPercentage:
          description: Profit margin percentage for parts
          type: number
          format: double
        laborTotal:
          description: Profit amount contributed by labor
          type: number
          format: double
        laborPercentage:
          description: Profit margin percentage for labor
          type: number
          format: double
        isProfitIncludeCos:
          description: Whether change orders are included in the profit calculation
          type: boolean
      description: Profit summary for the proposal
      type: object
    PublicRecurringServicesModel:
      title: PublicRecurringServicesModel
      required:
        - items
        - totalRecurringService
      properties:
        items:
          description: Recurring service line items included with the proposal.
          type: array
          items:
            $ref: '#/components/schemas/PublicRecurringServiceItemModel'
        totalRecurringService:
          description: >-
            Sum of recurring services on proposal. Not part of the one-time
            proposal total.
          type: number
          format: double
      description: Recurring service summary associated with the proposal.
      type: object
    PublicChangeOrderModel:
      title: PublicChangeOrderModel
      required:
        - id
        - number
        - name
        - status
        - createdDate
        - lastModifiedDate
      properties:
        id:
          description: Unique numeric identifier of the change order
          type: integer
          format: int32
        number:
          description: Change-order number shown to the dealer in the UI
          type: integer
          format: int32
        name:
          description: Display name of the change order
          type: string
        status:
          description: Current change-order status
          type: string
          enum:
            - Undefined
            - Draft
            - Submitted
            - ViewedByClient
            - Accepted
            - Declined
            - Delayed
            - Completed
            - EmailFailed
            - Expired
        total:
          $ref: '#/components/schemas/PublicChangeOrderTotalModel'
        customer:
          $ref: '#/components/schemas/PublicContactModel'
        createdDate:
          description: UTC timestamp when the change order was created
          type: string
          format: date-time
        lastModifiedDate:
          description: >-
            UTC timestamp when the change order was last modified by the system
            or a user
          type: string
          format: date-time
        lastModifiedByUserDate:
          description: >-
            UTC timestamp when the change order was last modified by a user
            action
          type: string
          format: date-time
      description: Change-order summary
      type: object
    Dictionary_String_String_:
      title: Dictionary<String,String>
      additionalProperties:
        type: string
      description: Dictionary<String,String>
      type: object
    Cookie:
      title: Cookie
      properties: {}
      description: Cookie
      type: object
    Object:
      properties: {}
      description: Object
      type: object
    IContentTypeWriter:
      title: IContentTypeWriter
      properties: {}
      description: IContentTypeWriter
      type: object
    IRequest:
      title: IRequest
      properties: {}
      description: IRequest
      type: object
    Func_IDisposable_:
      title: Func`1
      properties: {}
      description: Func<IDisposable>
      type: object
    IDictionary_String_String_:
      title: IDictionary<String,String>
      additionalProperties:
        type: string
      description: IDictionary<String,String>
      type: object
    ResponseStatus:
      title: ResponseStatus
      properties:
        errorCode:
          type: string
        message:
          type: string
        stackTrace:
          type: string
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ResponseError'
        meta:
          $ref: '#/components/schemas/Dictionary_String_String_'
      description: ResponseStatus
      type: object
    MethodBase:
      title: MethodBase
      properties: {}
      description: MethodBase
      type: object
    IDictionary:
      title: IDictionary
      properties: {}
      description: IDictionary
      type: object
    Exception:
      title: Exception
      properties: {}
      description: Exception
      type: object
    PublicLocationModel:
      title: PublicLocationModel
      properties:
        id:
          description: Unique numeric identifier of the location, when available.
          type: integer
          format: int32
        street:
          description: Primary street address line.
          type: string
        suite:
          description: Secondary address line, apartment, or suite.
          type: string
        city:
          description: City or locality.
          type: string
        postalCode:
          description: Postal or ZIP code.
          type: string
        state:
          description: State, province, or region name.
          type: string
        stateAbbrev:
          description: State or province abbreviation when available.
          type: string
        country:
          description: Country name.
          type: string
        phone:
          description: Location phone number when one is associated with this address.
          type: string
      description: Location and address details.
      type: object
    PublicAreaOptionModel:
      title: PublicAreaOptionModel
      required:
        - id
        - status
        - lastModifiedDate
        - total
        - totalRecurringService
      properties:
        id:
          description: Unique numeric identifier of the proposal area option
          type: integer
          format: int32
        status:
          description: Current option status
          type: string
          enum:
            - Draft
            - Accepted
            - Declined
        lastModifiedDate:
          description: UTC timestamp when the option was last modified
          type: string
          format: date-time
        clientDescription:
          description: Client-facing option description
          type: string
        installerDescription:
          description: Installer-facing option description
          type: string
        items:
          description: Items included in the option
          type: array
          items:
            $ref: '#/components/schemas/PublicAreaItemModel'
        total:
          description: Total amount for the option
          type: number
          format: double
        totalRecurringService:
          description: Recurring-service total for the option
          type: number
          format: double
      description: Area option
      type: object
    PublicSalesTaxModel:
      title: PublicSalesTaxModel
      required:
        - taxStatus
      properties:
        taxStatus:
          description: Tax calculation status or reason tax could not be calculated
          type: string
          enum:
            - Undefined
            - Ok
            - NoState
            - OutOfCountry
            - NoClient
            - NoClientAddress
            - IncompleteClientAddress
            - NoCompanyAddress
            - TaxableStateDeclined
        total:
          description: Total sales-tax amount
          type: number
          format: double
        calculation:
          $ref: '#/components/schemas/PublicTaxCalculationModel'
      description: Sales-tax summary
      type: object
    PublicCurrencyModel:
      title: PublicCurrencyModel
      required:
        - code
        - symbol
      properties:
        code:
          description: Currency code, for example USD.
          type: string
        symbol:
          description: Currency symbol used for display, for example $.
          type: string
      description: Currency code and symbol used to display money values.
      type: object
    PublicRecurringServiceItemModel:
      title: PublicRecurringServiceItemModel
      required:
        - name
        - sellPrice
        - quantity
        - totalSell
      properties:
        name:
          description: Recurring service name
          type: string
        sellPrice:
          description: Recurring service sell price
          type: number
          format: double
        quantity:
          description: Recurring service quantity
          type: number
          format: double
        totalSell:
          description: Recurring service total amount
          type: number
          format: double
      description: Recurring service line item
      type: object
    PublicChangeOrderTotalModel:
      title: PublicChangeOrderTotalModel
      properties:
        changeOrderTotal:
          description: Total change-order amount
          type: number
          format: double
        currency:
          $ref: '#/components/schemas/PublicCurrencyModel'
      description: Change-order total amount and currency
      type: object
    PublicContactModel:
      title: PublicContactModel
      required:
        - id
        - partyType
        - contactType
      properties:
        id:
          description: Unique numeric identifier of the contact
          type: integer
          format: int32
        partyType:
          description: Contact party type such as Person or Company
          type: string
          enum:
            - Undefined
            - Person
            - Company
        contactType:
          description: Contact category type
          type: string
          enum:
            - Undefined
            - Client
            - Employee
            - Contractor
            - Other
        firstName:
          description: Contact first name
          type: string
        lastName:
          description: Contact last name
          type: string
        companyName:
          description: Company name when the contact represents a company
          type: string
        contactEmail:
          description: Primary contact email address
          type: string
        contactEmailCC:
          description: Additional email addresses copied when a proposal is submitted
          type: string
        contactPhone:
          description: Primary contact phone number
          type: string
      description: Contact summary model
      type: object
    ResponseError:
      title: ResponseError
      properties:
        errorCode:
          type: string
        fieldName:
          type: string
        message:
          type: string
        meta:
          $ref: '#/components/schemas/Dictionary_String_String_'
      description: ResponseError
      type: object
    PublicAreaItemModel:
      title: PublicAreaItemModel
      required:
        - id
        - itemType
        - referencedItemId
        - createdDate
        - quantity
        - total
      properties:
        id:
          description: Unique numeric identifier of the proposal item
          type: integer
          format: int32
        parentId:
          description: >-
            Parent proposal item identifier when this item is nested under
            another item
          type: integer
          format: int32
        itemType:
          description: Item type
          type: string
          enum:
            - Part
            - Labor
            - CustomItem
            - Fee
        referencedItemId:
          description: Identifier of the source catalog, custom, or labor item
          type: integer
          format: int32
        createdDate:
          description: UTC timestamp when the proposal item was created
          type: string
          format: date-time
        lastModifiedDate:
          description: UTC timestamp when the proposal item was last modified
          type: string
          format: date-time
        brand:
          description: Brand name for catalog and custom items
          type: string
        model:
          description: Model value for catalog and custom items
          type: string
        description:
          description: Deprecated legacy description field and use shortDescription instead
          type: string
        name:
          description: Name used for labor items
          type: string
        shortDescription:
          description: Short description shown for the proposal item
          type: string
        clientNote:
          description: Client-facing note for the proposal item
          type: string
        imageUrl:
          description: Image URL when one is available
          type: string
        msrp:
          description: MSRP amount when available
          type: number
          format: double
        sellPrice:
          description: Sell price for the proposal item
          type: number
          format: double
        cost:
          description: Supplier cost for the proposal item
          type: number
          format: double
        costUpdateDate:
          description: UTC timestamp when the supplier cost was last updated
          type: string
          format: date-time
        supplier:
          description: Supplier display name
          type: string
        quantity:
          description: Quantity of the proposal item
          type: number
          format: double
        total:
          $ref: '#/components/schemas/PublicItemTotalModel'
        isTaxExempt:
          description: Whether the proposal item is tax exempt
          type: boolean
        isRecurringService:
          description: Whether the proposal item is a recurring service
          type: boolean
        linkedOrders:
          description: Linked orders created from this proposal item
          type: array
          items:
            $ref: '#/components/schemas/PublicLinkedOrderModel'
      description: Proposal area item
      type: object
    PublicTaxCalculationModel:
      title: PublicTaxCalculationModel
      required:
        - method
        - applyTo
        - hasMultipleTaxSupport
        - isTaxJarAvailable
      properties:
        method:
          description: Tax calculation method
          type: string
          enum:
            - ClientLocation
            - CompanyLocation
            - FixedPercentage
            - None
        applyTo:
          description: Proposal components the tax calculation applies to
          type: array
          items:
            type: string
            enum:
              - None
              - Parts
              - Labor
              - Fee
        partsTax:
          description: Primary parts tax rate or amount
          type: number
          format: double
        partsTaxName:
          description: Display name for the primary parts tax
          type: string
        laborTax:
          description: Primary labor tax rate or amount
          type: number
          format: double
        laborTaxName:
          description: Display name for the primary labor tax
          type: string
        hasMultipleTaxSupport:
          description: Whether multiple tax lines are supported
          type: boolean
        partsTax2:
          description: >-
            Secondary parts tax rate or amount when multiple tax support is
            enabled
          type: number
          format: double
        partsTax2Name:
          description: Display name for the secondary parts tax
          type: string
        laborTax2:
          description: >-
            Secondary labor tax rate or amount when multiple tax support is
            enabled
          type: number
          format: double
        laborTax2Name:
          description: Display name for the secondary labor tax
          type: string
        feeTax:
          description: Primary fee tax rate or amount
          type: number
          format: double
        feeTaxName:
          description: Display name for the primary fee tax
          type: string
        feeTax2:
          description: >-
            Secondary fee tax rate or amount when multiple tax support is
            enabled
          type: number
          format: double
        feeTax2Name:
          description: Display name for the secondary fee tax
          type: string
        taxLocation:
          $ref: '#/components/schemas/PublicLocationModel'
        isTaxJarAvailable:
          description: Whether TaxJar is available for this calculation
          type: boolean
        partsTotalTax:
          description: Total tax amount applied to parts
          type: number
          format: double
        laborTotalTax:
          description: Total tax amount applied to labor
          type: number
          format: double
        feeTotalTax:
          description: Total tax amount applied to fees
          type: number
          format: double
      description: Tax calculation details
      type: object
    PublicItemTotalModel:
      title: PublicItemTotalModel
      required:
        - amount
      properties:
        amount:
          description: Total amount for the item
          type: number
          format: double
        currency:
          $ref: '#/components/schemas/PublicCurrencyModel'
        isCombinedPrice:
          description: Whether the item price is combined with nested item prices
          type: boolean
      description: Total amount for a proposal item
      type: object
    PublicLinkedOrderModel:
      title: PublicLinkedOrderModel
      required:
        - orderId
        - orderNumber
        - orderNumberSuffix
        - orderName
        - orderStatus
      properties:
        orderId:
          description: Unique numeric identifier of the order
          type: integer
          format: int32
        orderNumber:
          description: Order number shown to the dealer
          type: integer
          format: int32
        orderNumberSuffix:
          description: Order number suffix used for supplier-specific numbering
          type: string
        supplier:
          description: Supplier display name
          type: string
        supplierRef:
          description: Supplier reference or supplier order number
          type: string
        orderName:
          description: Display name of the order
          type: string
        orderStatus:
          description: Current order status
          type: string
          enum:
            - Draft
            - Submitted
            - ViewedBySupplier
            - Accepted
            - Received
            - EmailFailed
            - Undefined
      description: Order summary linked to a proposal item
      type: object

````