{%- comment -%} MIT License · (c) 2026 Lintel · https://lintelagency.com/resources/shopify-sections {%- endcomment -%} {%- comment -%} Contact form: Shopify's own contact form, so messages reach the store's sender email without an app. Name, email, phone and message are built in (phone optional, any of them can be required except email, which Shopify always needs), plus extra fields as blocks (text, long text, choice list, checkbox). Beside it an optional column with an image, address, a map link (no maps API), email, phone and opening hours. Errors are listed above the fields and tied to them. No JavaScript. Depends on: snippets/lib-image.liquid {%- endcomment -%} {%- liquid assign s = section.settings assign heading_tag = s.heading_tag | default: 'h2' assign form_id = 'LibContact-' | append: section.id assign info_count = 0 for block in section.blocks if block.type == 'address' or block.type == 'detail' assign info_count = info_count | plus: 1 endif endfor assign show_aside = false if s.image != blank or s.image_mobile != blank or s.info_heading != blank or info_count > 0 assign show_aside = true endif assign name_required = false if s.name_field == 'required' assign name_required = true endif assign phone_required = false if s.phone_field == 'required' assign phone_required = true endif assign eager = false if section.index <= 2 assign eager = true endif -%} {%- capture required_mark -%} {{ s.required_text | escape }} {%- endcapture -%}
{{ s.success_message | escape }}
{%- elsif form.errors -%}{{ s.error_heading | escape }}
{{ b.help | escape }}
{%- endif -%}Questions about an order, a product or a custom piece? Send us a note and we will reply by email.
" }, { "type": "header", "content": "Form fields" }, { "type": "paragraph", "content": "Messages go to the sender email in Settings > Notifications. Email is always shown and required. Add more fields with Extra field blocks." }, { "type": "select", "id": "name_field", "label": "Name field", "options": [ { "value": "hidden", "label": "Hidden" }, { "value": "optional", "label": "Optional" }, { "value": "required", "label": "Required" } ], "default": "required" }, { "type": "select", "id": "phone_field", "label": "Phone field", "options": [ { "value": "hidden", "label": "Hidden" }, { "value": "optional", "label": "Optional" }, { "value": "required", "label": "Required" } ], "default": "hidden" }, { "type": "checkbox", "id": "message_required", "label": "Message is required", "default": true }, { "type": "header", "content": "Form text" }, { "type": "text", "id": "name_label", "label": "Name label", "default": "Name" }, { "type": "text", "id": "email_label", "label": "Email label", "default": "Email" }, { "type": "text", "id": "phone_label", "label": "Phone label", "default": "Phone" }, { "type": "text", "id": "message_label", "label": "Message label", "default": "Message" }, { "type": "text", "id": "required_text", "label": "Required field marker", "default": "(required)" }, { "type": "text", "id": "submit_label", "label": "Send button", "default": "Send message" }, { "type": "text", "id": "success_message", "label": "Message after sending", "default": "Thanks for writing. We will reply by email." }, { "type": "text", "id": "error_heading", "label": "Error summary heading", "default": "Please check the form:" }, { "type": "richtext", "id": "privacy_text", "label": "Privacy note", "default": "We only use your details to answer you. Read our privacy policy.
" }, { "type": "header", "content": "Info column" }, { "type": "paragraph", "content": "Shown when it has an image, a heading or Address and Contact detail blocks." }, { "type": "image_picker", "id": "image", "label": "Desktop image" }, { "type": "image_picker", "id": "image_mobile", "label": "Mobile image", "info": "Optional. Shown below 750px." }, { "type": "text", "id": "info_heading", "label": "Heading", "default": "Visit the studio" }, { "type": "header", "content": "Layout" }, { "type": "select", "id": "info_position", "label": "Info column on desktop", "options": [ { "value": "right", "label": "Right" }, { "value": "left", "label": "Left" } ], "default": "right" }, { "type": "select", "id": "mobile_order", "label": "Order on mobile", "options": [ { "value": "form_first", "label": "Form first" }, { "value": "info_first", "label": "Info first" } ], "default": "form_first" }, { "type": "select", "id": "section_width", "label": "Width", "options": [ { "value": "page", "label": "Page width" }, { "value": "full", "label": "Full width" } ], "default": "page" }, { "type": "select", "id": "text_alignment", "label": "Heading alignment on desktop", "options": [ { "value": "left", "label": "Left" }, { "value": "center", "label": "Center" } ], "default": "left" }, { "type": "select", "id": "text_alignment_mobile", "label": "Heading alignment on mobile", "options": [ { "value": "left", "label": "Left" }, { "value": "center", "label": "Center" } ], "default": "left" }, { "type": "header", "content": "Colors" }, { "type": "color", "id": "color_bg", "label": "Background", "default": "#FFFFFF" }, { "type": "color_background", "id": "color_bg_gradient", "label": "Background gradient", "info": "Optional. Covers the background color." }, { "type": "color", "id": "color_text", "label": "Text", "default": "#1F1B17" }, { "type": "color", "id": "color_accent", "label": "Accent (button, focus, titles)", "default": "#7A5A3A" }, { "type": "color", "id": "color_accent_text", "label": "Text on accent", "default": "#FFFFFF" }, { "type": "color", "id": "color_field", "label": "Field background", "default": "#FFFFFF" }, { "type": "color", "id": "color_border", "label": "Field border", "default": "#8A8178" }, { "type": "color", "id": "color_panel", "label": "Info column background", "default": "#F6F1EA" }, { "type": "color", "id": "color_error", "label": "Errors", "default": "#B42318" }, { "type": "header", "content": "Spacing and visibility" }, { "type": "range", "id": "padding_top", "label": "Top padding on desktop", "min": 0, "max": 200, "step": 4, "unit": "px", "default": 80 }, { "type": "range", "id": "padding_bottom", "label": "Bottom padding on desktop", "min": 0, "max": 200, "step": 4, "unit": "px", "default": 80 }, { "type": "range", "id": "padding_top_mobile", "label": "Top padding on mobile", "min": 0, "max": 160, "step": 4, "unit": "px", "default": 48 }, { "type": "range", "id": "padding_bottom_mobile", "label": "Bottom padding on mobile", "min": 0, "max": 160, "step": 4, "unit": "px", "default": 48 }, { "type": "select", "id": "show_on", "label": "Show on", "options": [ { "value": "all", "label": "All devices" }, { "value": "desktop", "label": "Desktop only" }, { "value": "mobile", "label": "Mobile only" } ], "default": "all" }, { "type": "text", "id": "anchor_id", "label": "Anchor ID", "info": "Optional. Link to this section with #your-id." }, { "type": "header", "content": "Motion" }, { "type": "checkbox", "id": "animate", "label": "Fade in on scroll", "info": "Only in browsers that support scroll-driven animations; never when reduced motion is on.", "default": false } ], "blocks": [ { "type": "field", "name": "Extra field", "settings": [ { "type": "text", "id": "label", "label": "Label", "info": "Also the field's name in the email you receive.", "default": "Order number" }, { "type": "select", "id": "field_type", "label": "Type", "options": [ { "value": "text", "label": "Short text" }, { "value": "textarea", "label": "Long text" }, { "value": "select", "label": "Choice list" }, { "value": "checkbox", "label": "Checkbox" } ], "default": "text" }, { "type": "textarea", "id": "options", "label": "Choices", "info": "Choice list only. One per line.", "visible_if": "{{ block.settings.field_type == 'select' }}" }, { "type": "text", "id": "prompt", "label": "First option text", "default": "Choose one", "visible_if": "{{ block.settings.field_type == 'select' }}" }, { "type": "text", "id": "checked_value", "label": "Value when ticked", "default": "Yes", "visible_if": "{{ block.settings.field_type == 'checkbox' }}" }, { "type": "text", "id": "unchecked_value", "label": "Value when not ticked", "default": "No", "visible_if": "{{ block.settings.field_type == 'checkbox' }}" }, { "type": "text", "id": "help", "label": "Help text", "info": "Optional. Shown under the field." }, { "type": "checkbox", "id": "required", "label": "Required", "default": false }, { "type": "select", "id": "width", "label": "Width on desktop", "options": [ { "value": "half", "label": "Half" }, { "value": "full", "label": "Full" } ], "default": "half" } ] }, { "type": "address", "name": "Address", "limit": 1, "settings": [ { "type": "paragraph", "content": "Shown in the info column." }, { "type": "text", "id": "title", "label": "Title", "default": "Address" }, { "type": "textarea", "id": "address", "label": "Address", "default": "14 Kiln Lane\nPortland, OR 97214" }, { "type": "text", "id": "map_link_label", "label": "Map link text", "info": "Opens the address in Google Maps. Leave empty to hide.", "default": "Open in Maps" }, { "type": "text", "id": "new_tab_text", "label": "Screen reader text for the map link", "default": "(opens in a new tab)" } ] }, { "type": "detail", "name": "Contact detail", "settings": [ { "type": "paragraph", "content": "Shown in the info column: an email, a phone number, opening hours or any short note." }, { "type": "text", "id": "title", "label": "Title", "default": "Email" }, { "type": "text", "id": "email", "label": "Email address", "info": "Optional. Becomes a mailto link." }, { "type": "text", "id": "phone", "label": "Phone number", "info": "Optional. Becomes a tap-to-call link." }, { "type": "richtext", "id": "text", "label": "Text" } ] } ], "presets": [ { "name": "Lib · Contact form", "blocks": [ { "type": "field", "settings": { "label": "Order number", "help": "Optional. Helps us find your order faster." } }, { "type": "address" }, { "type": "detail", "settings": { "title": "Email", "email": "hello@example.com" } }, { "type": "detail", "settings": { "title": "Opening hours", "text": "Wed–Sat, 10:00–17:00
" } } ] } ] } {% endschema %}