# CopyHero domain objects and relationships


> Understand the public product, store, task, agent, workflow, run, and job object model without internal database details.


Canonical URL: https://www.copyhero.app/help/technical-reference/domain-objects

CopyHero separates reusable configuration from the work created when that
configuration runs. This distinction helps you choose the correct object when
using the app, the Assistant, or a supported integration.

## Catalog and destination objects [#catalog-and-destination-objects]

| Object                     | Public meaning                                                                                                                                                                                        |
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Product                    | The canonical catalog record that CopyHero processes and keeps in product history.                                                                                                                    |
| Product Library            | The catalog view for organizing products before assigning destination work. A library import does not publish to Shopify.                                                                             |
| Destination Store          | A connected Shopify store that can receive and publish products. Store language and currency can supply run-time values to compatible tasks.                                                          |
| Product-store relationship | The store-specific connection for one product. It carries that destination's remote identity, publishing state, and sync state, so one product can be connected to more than one store independently. |

A product remains one catalog item even when it is connected to several
destination stores. Publishing or synchronization is evaluated for the chosen
product and destination together; another store's state does not replace it.

## Reusable processing objects [#reusable-processing-objects]

| Object   | Public meaning                                                                                                                                                     |
| -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Task     | One reusable processing step created on **Tasks**, such as Translate, Template, Conversion, or Custom. Its `job_type` and `input_data` define what future runs do. |
| Agent    | One reusable, prompt-driven workflow step created on **Agents**. Its allowed tools determine what it can read, research, and update while it runs.                 |
| Workflow | An ordered recipe built from reusable tasks and agents. Editing it changes future runs, not completed history.                                                     |

A task or agent does nothing by itself. Add it to a workflow, then start that
workflow for the products and destination context you intend to process.

## Execution objects [#execution-objects]

| Object | Public meaning                                                                                                 |
| ------ | -------------------------------------------------------------------------------------------------------------- |
| Run    | One tracked execution of a workflow for selected products. A bulk start groups related work into the same run. |
| Job    | One workflow step executing for one product. Each job has its own state, result, and error information.        |

One workflow can create many runs. One run can contain work for many products,
and every product can have several jobs because each workflow step runs
separately.

## Lifecycle boundaries [#lifecycle-boundaries]

* Editing a task, agent, or workflow affects later runs only.
* A queued or pending job has been accepted but has not completed.
* A run can contain successful jobs and failed jobs at the same time.
* Product Library work remains separate from Shopify publishing until you
  explicitly choose a destination action.
* Store-dependent values such as destination language or currency are resolved
  when the workflow runs, not when a reusable task is merely listed.

## Related guides [#related-guides]

* [Products versus the Product Library](/help/products/products-vs-library)
* [Publishing and sync](/help/stores/publishing-and-sync)
* [Workflow history and job states](/help/workflows/workflow-history-and-job-states)