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

# Export your data

> What you can export from DMLY, in what format, and how to get everything else through the API.

Three things export your data from the app, straight to your computer: your **Contacts** and
your product catalogue as CSV, and individual **invoices** as PDF. Automation flows also export
as `.json`. There is no Excel export, and no scheduled or emailed report — anything beyond
those comes out of the [REST API](/api-reference/introduction).

Exports are not gated by your plan. What you can export depends on your role and permissions
— see [Roles and permissions](/account/roles-and-permissions).

<Columns cols={2}>
  <Card title="Contacts" icon="address-book" href="/contacts/overview">
    Your contact list as `salesbot-contacts.csv`.
  </Card>

  <Card title="Products" icon="box" href="/offerings/overview">
    Your product catalogue as `salesbot-products.csv`.
  </Card>
</Columns>

## Export your contacts

The contacts export gives you every contact in the workspace — not just the ones who have
messaged on the channel you're currently viewing. Contacts belong to the workspace, not to a
channel.

The file is `salesbot-contacts.csv` with these columns:

| Column          | What's in it                                                                  |
| --------------- | ----------------------------------------------------------------------------- |
| `name`          | The contact's name                                                            |
| `country_code`  | Always blank — see the note below                                             |
| `phone`         | The contact's phone number                                                    |
| `tags`          | All tags, separated by `\|`                                                   |
| `stage`         | The sales pipeline stage the contact sits in (matched back by name on import) |
| `notes`         | All notes, separated by `\|`                                                  |
| `custom_fields` | Custom field values, as JSON                                                  |

<Note>
  The `country_code` column is always empty, on every row. It exists so the export matches the
  layout the contacts importer expects — the country code is already part of `phone`. Don't
  build anything that reads it.
</Note>

The file is written for round-tripping: you can edit it and feed it back through the contacts
importer. See [Contacts overview](/contacts/overview) for how importing handles duplicates.

## Export your products

The products export is the whole catalogue, every time — it has no filters and ignores whatever
you're looking at on screen. Products come out in the order they're sorted in the catalogue.

The file is `salesbot-products.csv` and covers `name`, `sku`, `price`, `cost_price`,
`currency`, `tax_rate`, `tax_inclusive`, `track_stock`, `stock_quantity`,
`low_stock_threshold`, `category`, `active` and `description`.

Services and Plans do not export. Only products do.

## What doesn't export

<Accordion title="The dashboard numbers">
  [Overview](/analytics/overview) has no export. The KPI cards, the **Message volume** chart,
  the **Broadcast funnel**, **Flow outcomes** and **Contact sources** are on-screen only. If
  you need those numbers in a spreadsheet, read the underlying records through the API and do
  your own totals.
</Accordion>

<Accordion title="Appointments, payments and conversations">
  None of these have a download button in the app. Pull the records through the API instead.
  Invoices are the exception: an individual invoice downloads as a PDF from **Finance →
  Invoices** → the row's dropdown → **Download PDF**. There is no bulk invoice export.
</Accordion>

<Accordion title="CSAT scores">
  Survey answers are used to route the conversation — each score sends the contact down its own
  branch of your flow — but they are never stored as a score you can total up or export. If you
  need CSAT reporting, have the flow write the outcome somewhere you can query, such as a tag
  or a custom field. See [CSAT](/analytics/csat).
</Accordion>

<Accordion title="Anything on a schedule">
  DMLY doesn't email you a report or drop a file anywhere on a timer. Every export is something
  you download yourself, when you ask for it.
</Accordion>

## Get the rest through the API

For anything without an export, the REST API is the route. It returns JSON, so it suits a
spreadsheet tool that can import from a URL, a reporting tool, or an automation platform like
[n8n](/integrations/n8n).

<Steps>
  <Step title="Create an API key">
    Keys are minted per workspace and carry the workspace with them, so no workspace ID appears
    in any URL. See [Authentication](/api-reference/authentication).
  </Step>

  <Step title="Call the endpoint you need">
    Browse the [API reference](/api-reference/introduction) for contacts, appointments,
    invoices, payments and the rest. Lists paginate, so page through them for a full extract.
  </Step>

  <Step title="Or get pushed to instead of pulling">
    If you want a running record rather than a snapshot, subscribe to
    [webhooks](/api-reference/webhooks) and have each event land in your own system as it
    happens.
  </Step>
</Steps>

<Warning>
  An API key gives full access to everything in the workspace, including contact phone numbers
  and conversation content. Treat it like a password, and read
  [Data and privacy](/contacts/data-and-privacy) before you move contact data out of DMLY.
</Warning>
