mirror of
https://github.com/chatwoot/chatwoot.git
synced 2026-06-04 21:02:35 +08:00
Adds label support to contact import and export so teams can carry approved contact labels through CSV workflows. Imports accept a `labels` column with labels that already exist in the account; multiple labels should be entered as a quoted comma-separated CSV value, for example `"customer,vip"`. Imports are additive: they add labels to contacts and do not remove labels already on a contact. Removing a label from the CSV row or leaving the `labels` cell blank will not clear existing contact labels. To remove a label, edit the contact directly. ## Closes - Closes #8535 ## How to test 1. Create a few contact labels in the account, such as `customer`, `vip`, and `lead`. 2. Go to Contacts -> Import contacts and download the sample CSV. 3. Import contacts with a `labels` column. Use a single label like `lead`, or quote multiple labels like `"customer,vip"`. 4. Confirm imported contacts are created with the expected labels. 5. Re-import an existing contact with a new label and confirm the new label is added without removing existing labels. 6. Try a row with an unknown label, such as `"vip,unknown_label"`, and confirm only that row is rejected in the failed records CSV while the other valid rows are imported. 7. Export contacts and confirm the CSV includes a `labels` column with comma-separated approved labels. ## What changed - Contact exports include approved `labels` in the default CSV columns. This adds a new default export column for CSV consumers. - Contact imports parse `labels` as comma-separated values inside the CSV cell. - Imported labels are validated against labels that already exist in the account. - Rows with unknown labels are rejected with an `Unknown labels: ...` error; valid rows in the same import continue to process. - Imported labels are additive and do not remove existing contact labels. - Label application during import does not dispatch an additional per-contact update event. - The sample CSV includes an import-safe `labels` column. The modal keeps the existing generic CSV import copy. --------- Co-authored-by: Sojan Jose <sojan@pepalo.com> |
||
|---|---|---|
| .. | ||
| assets | ||
| audio | ||
| brand-assets | ||
| dashboard/images | ||
| downloads | ||
| integrations | ||
| 404.html | ||
| 422.html | ||
| 500.html | ||
| android-icon-36x36.png | ||
| android-icon-48x48.png | ||
| android-icon-72x72.png | ||
| android-icon-96x96.png | ||
| android-icon-144x144.png | ||
| android-icon-192x192.png | ||
| apple-icon-57x57.png | ||
| apple-icon-60x60.png | ||
| apple-icon-72x72.png | ||
| apple-icon-76x76.png | ||
| apple-icon-114x114.png | ||
| apple-icon-120x120.png | ||
| apple-icon-144x144.png | ||
| apple-icon-152x152.png | ||
| apple-icon-180x180.png | ||
| apple-icon-precomposed.png | ||
| apple-icon.png | ||
| apple-touch-icon-precomposed.png | ||
| apple-touch-icon.png | ||
| browserconfig.xml | ||
| favicon-16x16.png | ||
| favicon-32x32.png | ||
| favicon-96x96.png | ||
| favicon-512x512.png | ||
| favicon-badge-16x16.png | ||
| favicon-badge-32x32.png | ||
| favicon-badge-96x96.png | ||
| manifest.json | ||
| ms-icon-70x70.png | ||
| ms-icon-144x144.png | ||
| ms-icon-150x150.png | ||
| ms-icon-310x310.png | ||
| robots.txt | ||
| sw.js | ||