Skip to main content

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.

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.

Endpoint

GET /zapier/trigger/proposal

Headers

HeaderRequiredDescription
AcceptYesMust be application/json

Response

A 200 response returns the full proposal details including customer information, areas with line items, financial summary, profit breakdown, recurring services, change orders, and links to generated documents.

Response Fields

FieldTypeDescription
idintegerProposal ID.
numberintegerHuman-readable proposal number.
namestringDisplay name of the proposal.
statusstringCurrent proposal status (see statuses).
totalnumber or nullTotal proposal amount.
customerobject or nullCustomer contact (see customer fields).
proposalPdfstring or nullURL to client PDF. Only populated when status is Accepted.
proposalCsvstring or nullURL to CSV export. Only populated when status is Accepted.
installerPdfstring or nullURL to installer PDF. Only populated when status is Accepted.
salesPersonstringFull name of the assigned salesperson.
salesPersonEmailstringSalesperson email address.
areasarray or nullProposal areas with options and line items (see area fields).
financialSummaryobject or nullFinancial breakdown (see financial summary fields).
profitobject or nullProfit breakdown (percentage, total, labor profit, part profit).
recurringServicesobject or nullRecurring services summary, if enabled.
changeOrdersarrayAssociated change orders.

Proposal Statuses

ValueDescription
UndefinedUnset/default status.
DraftProposal is being edited, not yet sent.
SubmittedSent to the client.
ViewedByClientClient has opened the proposal.
AcceptedClient has accepted the proposal.
DeclinedClient has declined.
DelayedProposal has been delayed.
CompletedProposal is marked complete.
EmailFailedDelivery email failed.
ExpiredProposal has expired.

Customer Fields

FieldTypeDescription
idintegerContact ID.
partyTypestringOne of Undefined, Person, Company.
contactTypestringOne of Undefined, Client, Employee, Contractor, Other.
firstNamestringFirst name.
lastNamestringLast name.
companyNamestringCompany name, when applicable.
contactEmailstringPrimary email.
contactEmailCCstringCC email address.
contactPhonestringPrimary phone number.
locationobjectPrimary location with id, street, suite, city, postalCode, state, stateAbbrev, country, phone.

Area Fields

FieldTypeDescription
idintegerArea ID.
namestringArea name.
optionsarrayArea options, each containing id, status, lastModifiedDate, clientDescription, installerDescription, items, total, totalRecurringService.
Each option’s items array contains line items with:
FieldTypeDescription
idintegerItem ID.
parentIdintegerParent item ID.
itemTypestringOne of Part, Labor, CustomItem, Fee.
referencedItemIdintegerCatalog item ID reference.
brandstringItem brand.
modelstringItem model.
descriptionstringFull description.
namestringItem name.
shortDescriptionstringShort description.
quantitynumberQuantity.
sellPricenumberSell price per unit.
costnumberCost per unit.

Financial Summary Fields

FieldTypeDescription
partsSubtotalnumberParts subtotal before discount.
partsTotalnumberParts total after discount.
laborTotalnumberTotal labor cost.
feeTotalnumberTotal fees.
proposalSubtotalnumberSubtotal before tax.
proposalTotalnumberGrand total including tax.
{
  "id": 4123,
  "number": 1001,
  "name": "Smith Residence AV",
  "status": "Accepted",
  "total": 6450.00,
  "customer": {
    "id": 88,
    "partyType": "Person",
    "contactType": "Client",
    "firstName": "Jane",
    "lastName": "Smith",
    "companyName": "",
    "contactEmail": "jane.smith@example.com",
    "contactEmailCC": "",
    "contactPhone": "(555) 123-4567",
    "location": {
      "id": 1,
      "street": "123 Main St",
      "suite": "Apt 4B",
      "city": "Austin",
      "postalCode": "78701",
      "state": "Texas",
      "stateAbbrev": "TX",
      "country": "United States",
      "phone": "(555) 123-4567"
    }
  },
  "proposalPdf": "https://files.portal.io/proposals/4123/client.pdf",
  "proposalCsv": "https://files.portal.io/proposals/4123/export.csv",
  "installerPdf": "https://files.portal.io/proposals/4123/installer.pdf",
  "salesPerson": "John Doe",
  "salesPersonEmail": "john@example.com",
  "areas": [
    {
      "id": 1,
      "name": "Living Room",
      "options": [
        {
          "id": 1,
          "status": "Accepted",
          "lastModifiedDate": "2026-04-06T00:22:19Z",
          "clientDescription": "Full surround sound system",
          "installerDescription": "Install 5.1 system with in-wall wiring",
          "items": [
            {
              "id": 1,
              "parentId": 0,
              "itemType": "Part",
              "referencedItemId": 500,
              "brand": "Sonos",
              "model": "Arc",
              "description": "Premium Smart Soundbar",
              "name": "Sonos Arc",
              "shortDescription": "Soundbar",
              "quantity": 1,
              "sellPrice": 899.00,
              "cost": 650.00
            }
          ],
          "total": 5200.00,
          "totalRecurringService": 0
        }
      ]
    }
  ],
  "financialSummary": {
    "partsSubtotal": 5200.00,
    "partsTotal": 5200.00,
    "laborTotal": 800.00,
    "feeTotal": 0,
    "proposalSubtotal": 6000.00,
    "proposalTotal": 6450.00
  },
  "changeOrders": []
}
This endpoint is designed for the Portal.io Zapier integration. If you are building a direct integration, consider using the webhook subscription endpoints instead.