The interface builder connects to Pipedrive CRM data through four resource types. Data is loaded based on the selected Pipedrive object in the resource selector.

## Resource Selector

The resource selector lets the builder pick:
- **Resource type**: deal, organization, or person
- **Specific record**: search and select by name/title

The selected resource determines which sample data fills the Deal, Organization, and Person tabs of the Data Picker while you build. At runtime, the actual record passed to the view is whichever record the OneClick button was opened from in Pipedrive.

A [floating window button](/docs/buttons/interface-button/interface-builder/explanation/floating-window-buttons) is opened from no record, so it has no resource selector and none of Deal, Organization or Person is available to its views — only User, which is read from the signed-in session rather than from a record.

## Resources

### Deal

Access via the `deal` tab in the Data Picker. Contains all standard Pipedrive deal fields plus custom fields.

Common fields include: `id`, `title`, `value`, `currency`, `status`, `stage_id`, `pipeline_id`, `add_time`, `update_time`, `close_time`, `won_time`, `lost_time`, `expected_close_date`, `probability`, `lost_reason`.

Nested objects:
- `owner_id` -- User object (deal owner): `id`, `name`, `email`, etc.
- `creator_user_id` -- User object (the user who created the deal)
- `org_id` -- Organization linked to the deal
- `person_id` -- Person linked to the deal
- Deal products available via related data

### Person

Access via the `person` tab. Standard Pipedrive person fields.

Common fields: `id`, `name`, `first_name`, `last_name`, `email`, `phone`, `add_time`, `update_time`, `visible_to`, `label`.

Nested objects:
- `owner_id` -- User object (person owner)
- `org_id` -- Organization the person belongs to

### Organization

Access via the `organization` tab. Standard Pipedrive organization fields.

Common fields: `id`, `name`, `address`, `address_country`, `cc_email`, `add_time`, `update_time`, `visible_to`, `label`.

Nested objects:
- `owner_id` -- User object (organization owner)

### User

Access via the `user` tab. Represents the current Pipedrive user viewing the interface. Unlike Deal, Person, and Organization, the user is **not selectable** — it is always whoever is logged into Pipedrive when the view opens. At runtime the data comes from Pipedrive's `users.getUser` endpoint; the values in the table below are the sample shape the builder's Data Picker shows for design-time reference.

| Field | Type | Example |
|---|---|---|
| `id` | number | 11257768 |
| `name` | string | "Test Zimple" |
| `email` | string | "test.user@example.com" |
| `locale` | string | "en_US" |
| `timezone_name` | string | "Europe/London" |
| `timezone_offset` | string | "+01:00" |
| `default_currency` | string | "EUR" |
| `icon_url` | string | Profile image URL |
| `active_flag` | boolean | true |
| `is_admin` | number | 1 |
| `role_id` | number | 1 |
| `company_id` | number | Company identifier |
| `company_name` | string | Company name |
| `company_domain` | string | Company subdomain |
| `language` | object | `{ language_code, country_code }` |
| `access` | array | App permissions list |

## Custom Fields

Pipedrive custom field types supported:

- Text, Varchar, VarcharAuto
- Integer, Double, Monetary
- Enum, Set
- Date, Time, DateRange, TimeRange
- Phone, People, Org, User, Address

Custom fields appear alongside standard fields in the deal, person, and organization tabs. Field keys use Pipedrive's hash-based identifiers (e.g., `abc123def456`).

## Data Structure

At runtime, placeholder resolution accesses dynamic data through a structure:

```
{
  deal: { ...deal fields },
  organization: { ...org fields },
  person: { ...person fields },
  user: { ...user fields },
  custom: { ...View URL response data },
  variables: [ ...interface variables ],
  searchparams: { ...URL search parameters }
}
```

Field values are accessed via dot-path notation: `resource.key` (e.g., `deal.title`, `person.owner_id.name`).
