# Create Contact

<!-- meta: type=create-contact; location=Contacts; category=Step (action); platforms=Joomla and WordPress (where applicable) -->

## Overview

Create Contact is a **Step (action)** in **Contacts**. Creates a Joomla contact in com_contact.

When the flow reaches this step, JOrchestrator executes **Create Contact** against your linked site or an external integration, using the field values you set on **General** and **Design**. Downstream steps can read the output payload fields defined for this node.

## Why use this node

Create Contact is a **action step** in the **Contacts** group. Action steps run in the middle or end of a flow. They perform work on your CMS, call external services, or transform data for the next step.

Typical reasons teams add **Create Contact** to a flow:

- Create Contact on your linked Joomla site when the flow reaches this step
- Create contact based on webhook, schedule, or CMS event data
- Integrate Contacts operations with messaging, AI, or database steps in one canvas

## Example workflows

Common patterns on the canvas:

1. **Trigger or Webhook** → upstream steps → **Create Contact** → **Send Email** or CMS update
2. **Scheduled trigger** → **Create Contact** → **Debug** (while testing) → production action

## How to set it up

Contact category — numeric id or {{…}} in Contact category, or pick under Contact Categories. If catid_manual is non-empty after placeholders resolve, it overrides catid.

## Good to know

Link create-contact-category upstream to pass a fresh category id.

## Properties panel

The designer shows these tabs for this node:

| Tab | Purpose |
|-----|---------|
| **Info** | Plain-language description and output payload fields for downstream steps |
| **General** | Canvas label and read-only node ID |
| **AI** | Optional assistant to help draft settings from plain language |
| **Design** | Node-specific configuration fields |

### System (automatic — not edited by the user)

These fields are managed by the designer or runtime — you do not type into them directly:

| Property key | Label | Type | Required | Visible when | Notes |
|--------------|-------|------|----------|--------------|-------|
| `_nodeId` | Node ID | `node-id` | No | — | — |
| `_payloadFields` | Available Fields | `payload-panel` | No | — | — |

### User-configured — General tab

| Property key | Label | Type | Required | Visible when | Notes |
|--------------|-------|------|----------|--------------|-------|
| `label` | Label | `text` | No | — | Node label |

### User-configured — Design tab

| Property key | Label | Type | Required | Visible when | Notes |
|--------------|-------|------|----------|--------------|-------|
| `name` | Name | `payload-text` | **Yes** | — | Contact name (required) |
| `catid_manual` | Contact category (id or {{placeholder}}) | `payload-text` | No | — | e.g. 12 or {{create_contact_category_1.id}} — or choose below (shows category name) |
| `alias` | Alias | `payload-text` | No | — | URL alias (optional) |
| `published` | Published | `select` (`0` \| `1`; default: `1`) | No | — | — |
| `email_to` | Contact email | `payload-text` | No | — | Email shown on contact page |
| `address` | Address | `payload-text` | No | — | Street address |
| `suburb` | City / Suburb | `payload-text` | No | — | — |
| `state` | State / County | `payload-text` | No | — | — |
| `postcode` | Postal code | `payload-text` | No | — | — |
| `country` | Country | `payload-text` | No | — | — |
| `telephone` | Telephone | `payload-text` | No | — | — |
| `mobile` | Mobile | `payload-text` | No | — | — |
| `webpage` | Website | `payload-text` | No | — | https:// |

### CMS-backed (options from the linked site)

| Property key | Label | Type | Required | Visible when | Notes |
|--------------|-------|------|----------|--------------|-------|
| `catid` | Contact Categories | `contact-category-select` | No | — | Select category (fills the field above) |
| `language` | Language | `content-language-select` | No | — | Select language (* = all) |

### CMS site configuration (not on this node's properties panel)

Credentials, API keys, mailers, SMTP, and integration defaults are configured in the CMS plugin under **Node Configuration**, not per step on this node. Link the flow to a domain before testing CMS-backed fields.

## Output payload fields

After this step runs, later nodes can reference these fields using placeholders such as
`{{create_contact.id}}`.

| Field key | Type | Description |
|-----------|------|-------------|
| `id` | string | Primary record identifier. |
| `name` | string | Display name of the record. |
| `alias` | string | URL-safe alias / slug. |
| `catid` | string | Category ID. |
| `published` | number | Published flag (0 or 1). |
| `email_to` | string | Contact form recipient email. |
| `already_existed` | boolean | True when create found an existing record instead of creating. |

## Validation rules

- **Name** (`name`) must be filled before the flow can be saved.

## Related nodes

Other steps in the same area of the palette:

- **Create Contact Category** (`create-contact-category`) — Contacts
- **Delete Contact** (`delete-contact`) — Contacts
- **Delete Contact Category** (`delete-contact-category`) — Contacts
- **Update Contact** (`update-contact`) — Contacts
- **Update Contact Category** (`update-contact-category`) — Contacts
