PPactDocs
Sales

Deals

Opportunities from first touch to closed — value, stage, probability, and weighted forecast.

A deal (an opportunity) is a revenue opportunity tied to an account. Deals move through your pipeline stages, carry a value and a close date, and roll up into your forecast. You work them visually on the pipeline board; this page covers the deal record itself.

Deal fields

FieldNotes
NameWhat the deal is for
ValueDeal amount
StageCurrent pipeline stage
ProbabilityLikelihood of closing, set per stage
Close dateExpected close
OwnerThe rep on the deal
AccountThe company the deal belongs to
Forecast categoryHow the deal rolls into the forecast

Stages and lifecycle

Every stage has a typeopen, won, or lost — and a name you choose (for example, Prospect → Qualified → Proposal → Negotiation → Closed). A deal lives in exactly one stage at a time. Moving it to a won or lost stage closes it.

Each stage also carries a probability. Pact multiplies a deal's value by its stage probability to produce a weighted forecast, shown in the column header alongside the raw total. So a $100k deal in a stage set to 50% contributes $50k to the weighted pipeline.

Velocity

Each stage header shows an eight-week sparkline of how many deals entered it, so you can see where flow is speeding up or stalling. On a deal, "days in stage" is derived from when it last moved — useful for spotting deals that have gone quiet.

Probability is a stage property

You set probability on the stage, not on each deal. Tune your stage probabilities once and every deal's weighted value follows automatically.

Working a deal

From the pipeline board, open a deal's action palette (long-press on mobile, right-click or Cmd/Ctrl + . on desktop) to edit it, move stage, reassign the owner, change the close date, update the amount, mark won or lost, add a note, log activity, or enroll its contacts in a sequence. Stage moves are previewed first — see Pipeline for the impact panel.

Deals over the API

Deals are exposed on the public REST API at /v1/api/deals. Authenticate with an OAuth bearer token that holds the read:deals or write:deals scope.

bash
# List deals (cursor-paginated, sparse fields)
curl https://www.pact.place/v1/api/deals?fields=id,name,stage,amount \
  -H "Authorization: Bearer $PACT_TOKEN" \
  -H "Accept-Version: 2026-05-22"

# Create a deal
curl -X POST https://www.pact.place/v1/api/deals \
  -H "Authorization: Bearer $PACT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "Acme — platform expansion", "stage": "Prospecting", "amount": 100000}'

Responses are cursor-paginated: each page returns data, has_more, and a next_cursor to pass back as ?cursor=.

What's next