@prefix sioc: <http://rdfs.org/sioc/ns#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix content: <http://purl.org/rss/1.0/modules/content/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<https://lhero.org/?post_type=lh-portfolio-doc&#038;p=147700>
  a sioc:Post ;
  dc:title "Admin interfaces" ;
  dcterms:identifier 147700 ;
  dc:modified "2026-09-18T18:22:34Z"^^xsd:dateTime ;
  dc:created "2026-09-17T23:22:30Z"^^xsd:dateTime ;
  sioc:link <https://lhero.org/portfolio/lh-crm/admin-interfaces/> ;
  sioc:has_creator <https://lhero.org/author/1/#account> ;
  sioc:has_container <https://lhero.org/#posts> ;
  content:encoded """<ul class="lh_portfolio-meta"><li><strong>Part of:</strong> <a href="https://lhero.org/portfolio/lh-crm/">LH Customer Relationship Management</a></li></ul>
<p class="wp-block-paragraph">Everything lives under a single <strong>CRM</strong> top-level menu in each site&#8217;s wp-admin (the <code>lh-crm-form</code> post type menu). Enquiries, form responses, and, when bbPress is active, forums, topics, replies and topic tags are all moved under it.</p>



<h2 class="wp-block-heading">Contact forms</h2>



<p class="wp-block-paragraph">CRM → All Forms lists the contact forms. The edit screen supports title, excerpt and author, and adds two metaboxes.</p>



<p class="wp-block-paragraph"><strong>Contact Form Details</strong> configures the form:</p>



<ul class="wp-block-list"><li><strong>Hide Full Name</strong> and <strong>Hide Message</strong> remove those fields from the frontend form.</li><li><strong>Field Group</strong> (BuddyPress only) adds the fields of one xProfile field group to the form.</li><li><strong>Submit Button</strong> sets the button label (default Submit).</li><li><strong>Default Category</strong> is applied to every new enquiry from this form.</li><li><strong>Message Recipient</strong> is an administrator or editor who owns the form&#8217;s enquiries. It is required: saving a form without one forces it back to draft and shows an error notice.</li><li><strong>Group</strong> and <strong>Group Action</strong> add or invite the submitter to a BuddyPress group (add to group, email invite, or silent invite). The action selector only appears once a group is chosen.</li><li><strong>Notification Recipients</strong> are administrators or editors who should get a BuddyPress notification for each enquiry. See the known issue on the Architecture notes page.</li><li><strong>Notification</strong> is a <code>bp-email</code> post used as the automatic reply emailed to the submitter.</li><li><strong>Response</strong> is a Form Response post shown in place of the page content after a successful submission.</li></ul>



<p class="wp-block-paragraph"><strong>Message List</strong> lists every enquiry received through the form, with enquirer, status, date and a link to it. The dashboard also gets one widget per form (up to ten forms) showing its five most recent enquiries.</p>



<h2 class="wp-block-heading">Enquiries</h2>



<p class="wp-block-paragraph">CRM → Enquiries lists enquiry records, filterable by the five statuses (New, In Progress, Pending, Resolved, Closed). The core publish, private, draft and pending statuses are removed for this post type. List columns: Enquirer (avatar, profile link and an author filter link), Parent Form (with edit and view links), Enquiry Date, category, and, via the bundled libraries, IP Address and User Agent.</p>



<p class="wp-block-paragraph">The edit screen&#8217;s <strong>Enquiry Info</strong> metabox holds staff notes, the enquirer (post author), the parent form, and a single category. Editing an enquiry requires <code>edit_others_posts</code>. The User Agent library adds a side metabox showing the recorded browser string.</p>



<p class="wp-block-paragraph"><strong>Adding an enquiry for someone else.</strong> Staff record an enquiry on another person&#8217;s behalf here, with CRM → Enquiries → Add New Enquiry, choosing the enquirer and the form. The frontend form cannot be used for this (see Placing a form). The admin screen only offers existing users as the enquirer, and it does not send the form&#8217;s auto-reply or apply its group action.</p>



<h2 class="wp-block-heading">Form responses</h2>



<p class="wp-block-paragraph">CRM → Responses holds the thank-you content shown after submission. Response and notification content can use tokens: <code>{{recipient.first_name}}</code>, <code>{{recipient.last_name}}</code>, <code>{{recipient.display_name}}</code>, <code>{{recipient.user_summary}}</code> and <code>{{site.name}}</code>; responses also support <code>{{recipient.email}}</code>. Double braces are HTML-escaped; triple braces insert the raw value.</p>



<h2 class="wp-block-heading">Placing a form</h2>



<p class="wp-block-paragraph">Add the <strong>Contact Form</strong> block (<code>lh-crm/form</code>, in the Widgets category) to a page and choose the form. Its settings:</p>



<figure class="wp-block-table"><table><thead><tr><th>Attribute</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td><code>postid</code></td><td>none</td><td>ID of the contact form post (required)</td></tr><tr><td><code>subject_type</code></td><td><code>text</code></td><td><code>text</code> or <code>hidden</code> subject field</td></tr><tr><td><code>subject_value</code></td><td>empty</td><td>Pre-filled subject</td></tr><tr><td><code>message_placeholder</code></td><td>Your Message</td><td>Message box placeholder</td></tr><tr><td><code>action_url</code></td><td>current URL</td><td>Form action URL</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">The <code>[lh_crm_form]</code> shortcode was removed in 1.5.3; the block takes the same settings. The form needs JavaScript: the frontend script fills in the nonce and referrer, adds a random reference used to stop duplicate enquiries on resubmission, and disables the submit button while sending.</p>



<p class="wp-block-paragraph"><strong>Logged-out visitors</strong> see name and email fields and the form&#8217;s profile fields; the enquirer is matched or created from the email.</p>



<p class="wp-block-paragraph"><strong>Logged-in users</strong> always send the enquiry as themselves (since 1.5.17). A notice at the top says who the enquiry is from, links to their profile edit screen, and tells them to log out first to enquire for someone else; staff who can manage enquiries also get a link to add one in the admin. Their email is shown greyed out and read-only, as is their name and every profile field that already has a value; only missing details get an input, so the form can fill gaps but never change existing data. User Experience is the exception and stays editable, because it changes regularly (see the <code>lh_crm_frontend_always_editable_field_types</code> filter).</p>
"""^^rdf:XMLLiteral ;
  sioc:content """Part of: LH Customer Relationship Management
Everything lives under a single CRM top-level menu in each site&#8217;s wp-admin (the lh-crm-form post type menu). Enquiries, form responses, and, when bbPress is active, forums, topics, replies and topic tags are all moved under it.



Contact forms



CRM → All Forms lists the contact forms. The edit screen supports title, excerpt and author, and adds two metaboxes.



Contact Form Details configures the form:



Hide Full Name and Hide Message remove those fields from the frontend form.Field Group (BuddyPress only) adds the fields of one xProfile field group to the form.Submit Button sets the button label (default Submit).Default Category is applied to every new enquiry from this form.Message Recipient is an administrator or editor who owns the form&#8217;s enquiries. It is required: saving a form without one forces it back to draft and shows an error notice.Group and Group Action add or invite the submitter to a BuddyPress group (add to group, email invite, or silent invite). The action selector only appears once a group is chosen.Notification Recipients are administrators or editors who should get a BuddyPress notification for each enquiry. See the known issue on the Architecture notes page.Notification is a bp-email post used as the automatic reply emailed to the submitter.Response is a Form Response post shown in place of the page content after a successful submission.



Message List lists every enquiry received through the form, with enquirer, status, date and a link to it. The dashboard also gets one widget per form (up to ten forms) showing its five most recent enquiries.



Enquiries



CRM → Enquiries lists enquiry records, filterable by the five statuses (New, In Progress, Pending, Resolved, Closed). The core publish, private, draft and pending statuses are removed for this post type. List columns: Enquirer (avatar, profile link and an author filter link), Parent Form (with edit and view links), Enquiry Date, category, and, via the bundled libraries, IP Address and User Agent.



The edit screen&#8217;s Enquiry Info metabox holds staff notes, the enquirer (post author), the parent form, and a single category. Editing an enquiry requires edit_others_posts. The User Agent library adds a side metabox showing the recorded browser string.



Adding an enquiry for someone else. Staff record an enquiry on another person&#8217;s behalf here, with CRM → Enquiries → Add New Enquiry, choosing the enquirer and the form. The frontend form cannot be used for this (see Placing a form). The admin screen only offers existing users as the enquirer, and it does not send the form&#8217;s auto-reply or apply its group action.



Form responses



CRM → Responses holds the thank-you content shown after submission. Response and notification content can use tokens: {{recipient.first_name}}, {{recipient.last_name}}, {{recipient.display_name}}, {{recipient.user_summary}} and {{site.name}}; responses also support {{recipient.email}}. Double braces are HTML-escaped; triple braces insert the raw value.



Placing a form



Add the Contact Form block (lh-crm/form, in the Widgets category) to a page and choose the form. Its settings:



AttributeDefaultDescriptionpostidnoneID of the contact form post (required)subject_typetexttext or hidden subject fieldsubject_valueemptyPre-filled subjectmessage_placeholderYour MessageMessage box placeholderaction_urlcurrent URLForm action URL



The [lh_crm_form] shortcode was removed in 1.5.3; the block takes the same settings. The form needs JavaScript: the frontend script fills in the nonce and referrer, adds a random reference used to stop duplicate enquiries on resubmission, and disables the submit button while sending.



Logged-out visitors see name and email fields and the form&#8217;s profile fields; the enquirer is matched or created from the email.



Logged-in users always send the enquiry as themselves (since 1.5.17). A notice at the top says who the enquiry is from, links to their profile edit screen, and tells them to log out first to enquire for someone else; staff who can manage enquiries also get a link to add one in the admin. Their email is shown greyed out and read-only, as is their name and every profile field that already has a value; only missing details get an input, so the form can fill gaps but never change existing data. User Experience is the exception and stays editable, because it changes regularly (see the lh_crm_frontend_always_editable_field_types filter).
""" ;
  sioc:topic <https://lhero.org/?taxonomy=author&term=cap-1> .

<https://lhero.org/author/1/#account> rdfs:seeAlso <https://lhero.org/author/1/?feed=lhrdf&format=turtle> .
<https://lhero.org/?taxonomy=author&term=cap-1> rdfs:seeAlso <https://lhero.org/?taxonomy=author&term=cap-1&feed=lhrdf&format=turtle> .
