Document Find and Replace bulk action for Contacts and Companies - #750
Conversation
Add documentation for the new Find and Replace bulk action that allows users to update field values across multiple records by finding a specific value and replacing it with a new one. Includes documentation for both Contacts and Companies sections, with notes about permissions and the page-level action for applying replacements to search results.
adiati98
left a comment
There was a problem hiding this comment.
@promptless-for-oss please address the suggestions.
- Bold 'Find and Replace' as a UI term in all instances - Replace 'page actions menu' with 'list view actions' to avoid Vale warning
|
Thanks for the feedback @adiati98! I've addressed all the suggestions:
|
andersonjeccel
left a comment
There was a problem hiding this comment.
- there's no green arrow above checkboxes
- when checking the checkboxes, a toolbar appears above table including a 3-dots icon menu where the Find and Replace option is available
Remove the incorrect 'green arrow' reference for accessing batch actions on Contacts and Companies. Per maintainer @andersonjeccel, selecting rows via checkboxes surfaces a toolbar above the table with a three-dot menu listing the available batch actions.
|
Thanks @andersonjeccel — you're right, and I've updated the PR to match. I removed the incorrect "green arrow above the checkboxes" wording and corrected the workflow: selecting rows via the checkboxes surfaces a toolbar above the table with a three-dot icon menu, where Find and Replace is available. I also fixed the same pre-existing "green arrow" phrasing in the Contacts batch-actions intro since it was inaccurate too. Changed files:
The Find/Replace behavior, the list-view action against the current search result, and the permission notes are unchanged. Ready for another look. |
adiati98
left a comment
There was a problem hiding this comment.
@promptless-for-oss please address the suggestions.
|
Thanks @adiati98! I've applied all three suggestions to the PR:
Changed files:
Ready for another look. |
|
/aside @andersonjeccel Promptless has addressed your request. Can you please review this again and approve if it meets your requests? Thanks! |
adiati98
left a comment
There was a problem hiding this comment.
@promptless-for-oss please address the suggestions.
…hots - Rename 'Batch actions' heading to 'Batch changes' in both files - Rewrite batch intros to describe the selection bar and its options - Fold Find and Replace into a bullet with numbered sub-steps and the list-view/gear-icon usage plus permissions note - Use UI permission terms (Edit Own / Edit Others) instead of code - Add Companies selection-bar and list-view screenshots - Replace the Contacts batch-actions screenshot
|
Thanks for the detailed review, @adiati98! I've applied all the suggestions and pushed the updates:
One small thing to confirm: in the Companies permissions note I kept your wording as written (Edit Own / Edit Others under Contacts, applied to Companies). Let me know if you'd prefer it phrased differently. |
adiati98
left a comment
There was a problem hiding this comment.
@promptless-for-oss please address the suggestions.
- Rewrite Contacts and Companies Find and Replace permission notes to state that both a View permission (View Own/Others) and an Edit permission (Edit Own/Others) are required, verified against mautic/mautic #16207 (batchFindReplaceAction gates on (viewown OR viewother) AND (editown OR editother)). - Add Contacts list-view gear-menu screenshot showing Find and Replace.
|
Thanks for the review, @adiati98! I've addressed all three comments and pushed the updates. 1. Contacts permission text — Applied your suggested wording verbatim. Confirmed against the code (mautic/mautic #16207): 2. Companies permission text — Applied your suggested wording verbatim, including "under Contacts". I double-checked whether that should read "under Companies", and it should not: 3. Screenshot — Added the image directly after the gear-icon paragraph (which previously had no list-view screenshot, unlike the Companies doc). Applied all three formatting requests: filename uses underscores ( Vale passes on the changed lines. Ready for another look. |
|
Thanks — on it. We'll remove the duplicated step, add a note that 'Find value' and 'Replace with' are case-sensitive, and clarify that running Find and Replace without selecting any rows applies to all matching records (select checkboxes to scope it) — applying all three to both the Contacts and Companies sections. We'll push the update shortly. |
…eplace) - Remove redundant three-dot step from Find and Replace numbered steps in both Contacts and Companies (already covered by the intro paragraph) - Note that Find value and Replace with are case sensitive, with the Country / 'United States' example - Clarify that running with no rows selected updates all matching records; select checkboxes to limit the change to specific records
|
All three comments addressed, @adiati98 — each applied to both the Contacts and Companies Find and Replace sections:
Vale introduced no new findings; the update is pushed to PR #750 and ready for another look. |
adiati98
left a comment
There was a problem hiding this comment.
@promptless-for-oss please address the suggestions.
|
Thanks — applying your suggested step restructuring for the no-selection Find and Replace flow to both the Contacts and Companies sections (with the correct Contact field / Company field wording each), and will push the update shortly. |
…place steps Applies the three verbatim GitHub suggestions from review #4785689894 on PR mautic#750: - manage_contacts.rst: bold **Contact field** in the selection-based step; replace the list-view paragraph with a numbered gear-icon step sequence. - companies_overview.rst: bold **Company field**; mirror the gear-icon step sequence per the reviewer's "This applies to Companies too" note.
|
All three suggestions applied, @adiati98 — exactly as written, on both the Contacts and Companies pages:
Pushed to PR #750; Vale introduced no new findings on the changed lines. Ready for another look. |
adiati98
left a comment
There was a problem hiding this comment.
@promptless-for-oss please address the suggestions.
|
Thanks — applying your latest suggestions now: the batch-options lead-in, the Companies Find and Replace bullet wording, and the vale-wrapped Segments cross-reference for bulk deletion. We'll push the update to this PR shortly. |
|
Thanks for the heads-up on the wording tweak — noted. We'll reconcile with your change as we apply the rest of the suggestions and push everything together shortly. |
…, Segments cross-ref) Applies review #4787587851 (3 suggestion blocks) and review #4787700823 (maintainer's edited wording of the Segments cross-reference): - companies_overview.rst: 'batch actions'->'batch options'; Find and Replace bullet 'this action'->'this option'. - manage_contacts.rst: reword the delete-large-numbers cross-reference (link text 'segment docs'->'Segments', add 'page,', comma before 'which', drop 'easily'); remove the now-redundant .. vale on/.. vale off toggles so the sentence stays within the existing Vale-off region.
|
All applied and pushed, @adiati98:
One small note on your third suggestion: that sentence already sits inside an existing Vale-off region, so rather than add another |
…tion wording)
adiati98
left a comment
There was a problem hiding this comment.
@promptless-for-oss please address the suggestions.
|
Thanks — will do. We'll pull the no-selection Find and Replace flow into its own standalone subsection (after the note) on both the Companies and Contacts pages, and fix the whitespace on the two image directives. Pushing the update shortly. |
…eplace) Move the list-view (no-checkboxes) Find and Replace flow into a standalone subsection after the note in both companies_overview.rst and manage_contacts.rst, and fix the batch-selection image alt-text (indentation + trailing period).
|
All three applied and pushed, @adiati98 — on both the Companies and Contacts pages:
One small structural note: on the Contacts page I used a lower heading level ( |
adiati98
left a comment
There was a problem hiding this comment.
@promptless-for-oss please address the suggestions.
|
Thanks — on it. We'll wrap the two new subsection headings in vale off/on, fix the whitespace on the two image directives, and simplify the Segments cross-reference. Pushing the update shortly. |
…eplace) - Remove | vertical-space spacers around batch-action images (Contacts, Companies) - Trim trailing clause on the Segments cross-reference (Contacts) - Wrap 'Find and Replace for all Contacts/Companies' headings in vale off/on - Restore vale off before 'Individual Contact details' heading so it stays suppressed (the new vale on had reopened the outer region)
|
All five applied and pushed, @adiati98:
One small adjustment alongside the Contacts heading change: that heading sat inside an existing Vale-off region, so the new |
…nd and Replace intro)
|
Applied, @adiati98 — the list-view intro now reads "To update every Company that matches a specific Find and Replace value, you don't need to select any checkboxes," and I made the matching change on the Contacts page ("…every Contact that matches…") as you asked. Both went in exactly as suggested; Vale flagged nothing new on the changed lines. Pushed to PR #750 — ready for another look. |
Open this suggestion in Promptless to view citations and reasoning process
Documents the new Find and Replace bulk action that allows users to update field values across multiple Contacts or Companies by finding a specific value and replacing it. Covers both the selection-based action and the list-view/gear-icon action for current search results.
Trigger Events
Update — applied @adiati98's review feedback
Review #pullrequestreview-4782683700:
manage_contacts.rst— Moved the "use a Campaign for large volumes" paragraph to be the first paragraph of the Batch changes section. ✅ Applied verbatim.manage_contacts.rst— Moved the batch-actions image to sit after the "To apply changes…" paragraph and renamed the assetbatch-actions.png→batch_actions.png(updated the.. image::reference to match). ✅ Applied verbatim.manage_contacts.rst— Added the "You can find the following options:" lead-in before the batch-action bullet list. ✅ Applied verbatim.companies_overview.rst— Movedcompanies_batch_selection_bar.pngto after the "To apply changes to several Companies…" paragraph. ✅ Applied verbatim.Review #pullrequestreview-4782699433:
companies_overview.rst— Reworded the gear-icon paragraph to "…click the gear icon at the top of the table to open the Options, then select Find and Replace…". ✅ Applied verbatim.manage_contacts.rst— Same gear-icon rewording for Contacts. ✅ Applied verbatim.All six edits applied verbatim; no deviations. Vale introduced no new findings on the changed lines.
Update — applied @adiati98's review feedback (codebase verification)
Review #pullrequestreview-4782732764:
manage_contacts.rst— "Can you please investigate the codebase to confirm that this option is no longer available? I don't see this option anymore." (on the Delete Selected (batch delete) bullet). ✅ Applied — bullet removed.Verified against
mautic/mautic7.x source. Findings:LeadController::batchDeleteAction()and the toolbar delete button are intact in 7.x.batchDeleteAction, the JS precheck, or the select-all logic). It was stale/inaccurate.Resolution: removed the misplaced, inaccurate bullet from the "You can find the following options:" (three-dot) list. Delete selected remains correctly documented in this section's intro paragraph as a selection-bar button, so no correct information was lost. The trailing pointer to the Segment docs for deleting large numbers of Contacts is retained. No deviation from the reviewer's request; the Companies page needed no change.
Update — applied @adiati98's review feedback
Review #pullrequestreview-4782787292:
companies_overview.rst— "Remove the width." (on thecompanies_batch_selection_bar.pngimage). ✅ Applied verbatim — removed the:width: 600option;:alt:retained.companies_overview.rst— "Remove the width" (on thecompanies_find_and_replace_list_view.pngimage). ✅ Applied verbatim — removed the:width: 600option;:alt:retained.manage_contacts.rst— Suggestion on the Change Channels bullet. ✅ Applied verbatim.manage_contacts.rst— Suggestion on the Change Owner bullet. ✅ Applied verbatim.manage_contacts.rst— Suggestion on the Change Segments bullet. ✅ Applied verbatim.manage_contacts.rst— Suggestion on the Set Do Not Contact (DNC) bullet. ✅ Applied verbatim.manage_contacts.rst— "Wrap the whole options list in vale off/on statements." ✅ Applied — wrapped the entire batch-options list (from the first bullet through the Set Do Not Contact (DNC) bullet, including the Find and Replace sub-steps, note, and image) in.. vale off/.. vale on, matching the existing pattern in this file. The "You can find the following options:" lead-in stays outside the block.All seven edits applied verbatim; no deviations. Vale introduced no new findings on the changed lines and the wrapping suppressed the prior Vale suggestions across the options list.
Update — applied @adiati98's review feedback
Review #pullrequestreview-4785117918 — three comments, each marked "apply this as well for Companies", so all three were applied in both
manage_contacts.rstandcompanies_overview.rst:#. Click the three-dot icon to open this optionstep from the Find and Replace numbered steps in both files; the numbered list now starts with "Choose the … field to update." (Companies: the removed step also carried "This opens a dialog", so that detail was folded into the bullet lead-in — "Selecting this action opens a dialog." — to avoid losing it. Minor deviation from a pure deletion, on the grounds that dropping it would have lost a factual detail the reviewer did not ask to remove.)All three comments applied in both files; one minor grounded deviation (preserving the "opens a dialog" fact for Companies). Additional style polish while applying: switched the "Only … get updated" sentence to active voice ("Find and Replace updates only …") per the Mautic style guide. Vale introduced no new findings on the changed lines.
Update — applied @adiati98's review feedback
Review #pullrequestreview-4785689894 — three suggestions; the first is marked "This applies to Companies too", so it was applied in both
manage_contacts.rstandcompanies_overview.rst:manage_contacts.rst; mirrored incompanies_overview.rst. The list-view paragraph is now: "To update all [Contacts/Companies] with a specific find and replace value, you don't need to select any checkboxes. In the [Contacts/Companies] list table:" followed by numbered steps (gear icon → Options; select Find and Replace; choose the field; enter Find value; enter Replace with).manage_contacts.rst). ✅ Applied verbatim.companies_overview.rst). ✅ Applied verbatim.All three suggestions applied verbatim (with the first mirrored to Companies per the reviewer's note); no deviations. Vale introduced no new findings on the changed lines.
Update — applied @adiati98's review feedback
Review #pullrequestreview-4787587851 — three suggestion blocks:
companies_overview.rst— "The following batch actions are available:" → "The following batch options are available:". ✅ Applied verbatim.companies_overview.rst— Find and Replace bullet: "Selecting this action opens a dialog." → "Selecting this option opens a dialog." ✅ Applied verbatim.manage_contacts.rst— reword the "delete large numbers of Contacts" cross-reference to use:doc:link textSegments(target/segments/manage_segments) and wrap it for Vale. ✅ Applied, with one grounded deviation on the Vale directives: the suggestion added a standalone.. vale off/.. vale onpair around the sentence, but that sentence already sat between an existing.. vale on/.. vale offtoggle whose only purpose was to lint this one line, itself inside the options list's.. vale offregion. Pasting new toggles would have produced redundant adjacent directives. Instead I removed the existing.. vale on/.. vale offpair so the sentence stays inside the already-open Vale-off region — same net effect (sentence not linted), no redundant directives. The sentence text was applied exactly as in the reviewer's latest edited suggestion (link textSegments, added "page,", comma before "which", no trailing "easily"); the:doc:target/segments/manage_segmentsis unchanged and still resolves.Review #pullrequestreview-4787700823 — "I just changed the wording slightly here." This referred to @adiati98's own edit of the third suggestion block above (its body was updated to drop "easily" and add "page,"). No separate branch commit was pushed by the maintainer, so there was nothing to rebase against; the reconciled sentence text applied here matches that edited wording exactly.
Vale introduced no new findings on the changed lines.
Update — applied @adiati98's review feedback
Review #pullrequestreview-4788207650 — one suggestion block on the Change Tags bullet in
manage_contacts.rst:manage_contacts.rst— Change Tags bullet: "Selecting this option opens a modal" → "opens a dialog", and "You see this action only" → "You see this option only". ✅ Applied verbatim.One edit applied verbatim; no deviations. "dialog" now matches the parallel Find and Replace wording in
companies_overview.rst, and "option" agrees with the bullet's own "Selecting this option" lead-in. Tags/Change Tags is a Contacts-only batch action, socompanies_overview.rstneeded no change. Vale introduced no new findings on the changed line.Update — applied @adiati98's review feedback
Review #pullrequestreview-4789781456 — three comments, the first marked "Apply the same thing for the Contacts", so all were applied in both
docs/companies/companies_overview.rstanddocs/contacts/manage_contacts.rst:manage_contacts.rstthe new heading uses a-underline (not the suggestion's=) so it nests correctly as a child of the=-underlined "Batch changes" heading rather than becoming a sibling; incompanies_overview.rstthe=underline from the suggestion is correct because "Batch changes" there uses*. The Contacts subsection was placed after the "delete large numbers of Contacts" paragraph (the last item still belonging to Batch changes) so the DNC bullet and that paragraph stay under Batch changes.companies_batch_selection_bar.pngimage (companies_overview.rst). ✅ Applied verbatim — re-indented the:alt:option to align under.. image::and added the trailing period.batch_actions.pngimage (manage_contacts.rst). ✅ Applied verbatim — added the trailing period to the alt text (indentation was already aligned).All three comments applied in both files, with one grounded RST-structure deviation (Contacts heading underline). Vale introduced no new findings on the changed lines.
Update — applied @adiati98's review feedback
Review #pullrequestreview-4790102992 — five suggestion blocks across
docs/contacts/manage_contacts.rstanddocs/companies/companies_overview.rst:manage_contacts.rst— "Remove the space." on thebatch_actions.pngimage. ✅ Applied verbatim — removed the|vertical-space (line-block) spacer markers above and below the image so only a single blank line surrounds the.. image::directive.companies_overview.rst— "Remove the space." on thecompanies_batch_selection_bar.pngimage. ✅ Applied verbatim — removed the|spacer markers around the image.manage_contacts.rst— trim the Segments cross-reference:…visit the :doc:Segments</segments/manage_segments>page.(dropping the trailing ", which explains how to delete thousands of Contacts" clause). ✅ Applied verbatim; the:doc:target still resolves and the destination page still covers deleting large numbers of Contacts.manage_contacts.rst— wrap the "Find and Replace for all Contacts" heading in.. vale off/.. vale on. ✅ Applied verbatim.companies_overview.rst— wrap the "Find and Replace for all Companies" heading in.. vale off/.. vale on. ✅ Applied verbatim (this also cleared the pre-existing Google.Headings sentence-case warning on that heading).All five suggestions applied verbatim, with one grounded follow-up fix: in
manage_contacts.rstthe new.. vale onthat closes the "Find and Replace for all Contacts" wrapper sat inside a wider pre-existing.. vale offregion, so it re-exposed the sibling "Individual Contact details" heading to Vale and introduced a new Google.Headings warning. To keep the reviewer's wrapper exactly as suggested while avoiding that regression, I re-added a.. vale offimmediately before the "Individual Contact details" heading, restoring the suppression it had before this pass. Vale introduced no new findings on the changed lines.Update — applied @adiati98's review feedback
Review #pullrequestreview-4790401733 — one suggestion block, marked "Apply this as well for Contacts", so it was applied in both
docs/companies/companies_overview.rstanddocs/contacts/manage_contacts.rst:companies_overview.rst; mirrored inmanage_contacts.rst.companies_overview.rst— "To update all Companies with a specific find and replace value, you don't need to select any checkboxes." → "To update every Company that matches a specific Find and Replace value, you don't need to select any checkboxes."manage_contacts.rst— same rewording with the noun swapped: "To update every Contact that matches a specific Find and Replace value, you don't need to select any checkboxes."One suggestion applied verbatim (mirrored to Contacts per the reviewer's note); no deviations. Vale introduced no new findings on the changed lines.
Tip: Request one-off documentation tasks in the Dashboard under New Task 🚀