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

# Operation Connections (CSV)

> For customers with this module, we support a bulk operation connection import via CSV. The import expects a row per relationship between two of your contacts.

This import creates [connections between operations](/operations/connecting-operations) in bulk from the relationships already tracked in your CRM or external system—for example, a dealer and each of the producers they sell to. Each row names two of your contacts and the role each one plays. CamoAg matches each contact to its operation and records the connection on both operation profiles.

<Note>
  New to connected operations? Read [Connecting Operations](/operations/connecting-operations) first for what a connection is, where it appears in CamoAg, and how it differs from merging.
</Note>

#### **Requirements: Read First**

<Steps>
  <Step>
    Column names must appear as written below
  </Step>

  <Step>
    Each row represents one relationship between two contacts. A dealer with fifty customers has fifty rows, all sharing the dealer's **contact\_id**
  </Step>

  <Step>
    Both contacts must already exist in the CamoAg platform matching the external contact IDs provided. This file only connects existing contacts; it does not create contacts or operations
  </Step>

  <Step>
    Both sides of the relationship need a role, and the two roles must be different. For example, one contact is the **dealer** and the other is the **customer**
  </Step>
</Steps>

#### ***Required fields***

* **contact\_id** (String) - Unique identifier for the first contact. Must match the **contact\_id** used in the contact import.
  * This is **not a CamoAg identifier**, but rather *your* own unique identifier for the contact provided in the initial import.
  * Examples: 10156, 0011O00001xjiJNQAY, smithfarms
* **relationship\_type** (String) - The role the first contact plays in the relationship. Case insensitive
  * Must be one of: **dealer**, **retailer**, **consultant**, or **customer**
* **related\_contact\_id** (String) - Unique identifier for the second contact. Must match the **contact\_id** used in the contact import, and must be different from **contact\_id**.
  * This is **not a CamoAg identifier**, but rather *your* own unique identifier for the contact provided in the initial import.
  * Examples: 10158, 0011O000028mk9oQAA, jonesgrain
* **related\_relationship\_type** (String) - The role the second contact plays in return. Case insensitive, and must be different from **relationship\_type**
  * Must be one of: **dealer**, **retailer**, **consultant**, or **customer**

<Info>
  These four roles cover dealer-to-producer, retailer-to-producer, consultant-to-producer, and producer-to-producer relationships. They're the same roles you can pick when [connecting operations by hand](/operations/connecting-operations#how-to-connect-two-operations).
</Info>

#### **Rows that are skipped**

A row is skipped, and no connection is created from it, when any of the following are true:

* **contact\_id** or **related\_contact\_id** is blank
* **contact\_id** and **related\_contact\_id** are the same—a contact can't be connected to itself
* **relationship\_type** or **related\_relationship\_type** is blank or isn't one of the accepted roles outlined above
* **relationship\_type** and **related\_relationship\_type** are the same role

#### **Updating connections**

Each pair of contacts has one connection. If the same pair appears again, in the same file or a later upload, the row from the most recent file is used. To change how two contacts relate, send the pair again with the new roles.

<Tip>
  List each pair once, in one direction. A connection already reads correctly from both operation profiles, so there's no need to add a second row with the contacts swapped.
</Tip>

Connections from earlier uploads stay in place when a later file leaves them out. To remove a connection, delete it from the operation profile as described in [Connecting Operations](/operations/connecting-operations#viewing-and-managing-connections), or email [support@camo.ag](mailto:support@camo.ag).

#### **Example**

| contact\_id        | relationship\_type | related\_contact\_id | related\_relationship\_type |
| ------------------ | ------------------ | -------------------- | --------------------------- |
| 10156              | dealer             | 10158                | customer                    |
| 10156              | dealer             | 10162                | customer                    |
| 0011O00001xjiJNQAY | consultant         | 0011O000028mk9oQAA   | customer                    |
| 20410              | retailer           | 10158                | customer                    |

In this example, dealer **10156** is connected to two customers, and customer **10158** also buys from retailer **20410**. Each operation profile shows every connection it's part of.

The same example as a CSV file, ready to copy and use as a template:

```csv operation_connections.csv theme={null}
contact_id,relationship_type,related_contact_id,related_relationship_type
10156,dealer,10158,customer
10156,dealer,10162,customer
0011O00001xjiJNQAY,consultant,0011O000028mk9oQAA,customer
20410,retailer,10158,customer
```

## Related guides

<CardGroup cols={2}>
  <Card title="Connecting Operations" icon="link" href="/operations/connecting-operations">
    What connected operations are and how to create, view, and remove them in CamoAg.
  </Card>

  <Card title="Contacts (CSV)" icon="address-book" href="/contacts/camoag-contact-import">
    Deliver the contacts this import connects.
  </Card>
</CardGroup>
