{"title":"Add custom fields to the End Shift form","slug":"end-shift-form-layout","url":"https://support.storeconnect.com/articles/end-shift-form-layout","url_markdown":"https://support.storeconnect.com/articles/end-shift-form-layout.md","subtitle":null,"summary":"Extend the End Shift form with additional input fields by creating a POS Layout record with the identifier end_shift_form, backed by Custom Data Mappings that save the values to the register shift record.","type":"Help_Documentation","video_url":"","keywords":"end shift form, POS layout, custom fields, end_shift_form, register shift, custom data, shift form layout, POS customization","last_modified":"2026-09-15T02:32:04+0000","body_markdown":"You can add extra input fields to the End Shift screen in POS, for example a manager name, a safe drop amount, or a cash discrepancy reason. Fields are defined using a POS Layout record and saved to the shift's custom data when the shift is ended.\n\n## Before you start\n\n- You have Salesforce admin access to create **Custom Data Mapping**, **POS Layout**, **POS Layout Field**, and **POS View** records.\n- You are familiar with [ending a shift](ending-a-shift) at POS.\n\n## Step 1: Create Custom Data Mapping records\n\nEach field you add to the form needs a Custom Data Mapping record so that POS can save the value when the shift is ended.\n\n1. In Salesforce, go to **Custom Data Mapping** and select **New**.\n2. Fill in the fields as follows:\n\n   | Field | Value |\n   |---|---|\n   | Object API Name | `s_c__register_shift__c` |\n   | Field API Name | Your chosen field name (e.g. `manager_name`) |\n   | Data Type | The type of data to validate and save (see [Supported data types](#supported-data-types)) |\n   | Access Level | `Read/Write` |\n\n3. Save the record.\n4. Repeat for each field you want on the form.\n\n:::note\nFields without a matching Custom Data Mapping record, or where the Access Level is not `Read/Write`, are ignored when the shift is saved.\n:::\n\n## Step 2: Create the POS Layout record\n\n1. In Salesforce, go to **POS Layout** and select **New**.\n2. Fill in the fields as follows:\n\n   | Field | Value |\n   |---|---|\n   | Identifier | `end_shift_form` |\n   | Display Name | `End Shift Form` (or any name you prefer) |\n   | Object Name | `register_shift` |\n   | Type | `Form` |\n\n3. Save the record.\n\nThe `end_shift_form` identifier is what tells POS to apply this layout to the End Shift screen. The identifier must be entered exactly as shown.\n\n## Step 3: Add POS Layout Field records\n\nAdd a POS Layout Field record for each input you want on the form.\n\n1. In Salesforce, go to **POS Layout Field** and select **New**.\n2. Fill in the fields:\n\n   | Field | Value |\n   |---|---|\n   | POS Layout | Select the End Shift Form layout you created |\n   | Field Name | Must exactly match the Field API Name in your Custom Data Mapping |\n   | Display Name | Label shown above the input on screen |\n   | Type | `field` |\n   | Position | Display order — lower numbers appear first |\n   | POS View | Leave blank for a standard text input, or link to a POS View for a custom input (see step 4) |\n\n3. Save the record.\n4. Repeat for each field.\n\n## Step 4: Add a POS View for custom inputs (optional)\n\nFor dropdowns or other custom input elements, create a POS View with an HTML template and link it to the relevant layout field.\n\n1. In Salesforce, go to **POS View** and select **New**.\n2. Set an **Identifier** (e.g. `end_shift_discrepancy_reasons`).\n3. In the **HTML Template** field, enter your HTML. For a dropdown:\n\n   ```html\n\n   \u003cselect name=\"cash_discrepancy_reason\"\u003e\n     \u003coption value=\"\"\u003eSelect a reason\u003c/option\u003e\n     \u003coption value=\"counting_error\"\u003eCounting error\u003c/option\u003e\n     \u003coption value=\"theft\"\u003eSuspected theft\u003c/option\u003e\n     \u003coption value=\"refund\"\u003eUnrecorded refund\u003c/option\u003e\n     \u003coption value=\"rounding\"\u003eRounding difference\u003c/option\u003e\n     \u003coption value=\"other\"\u003eOther\u003c/option\u003e\n   \u003c/select\u003e\n   ```\n\n   :::note\n   The `name` attribute in your HTML must match the **Field Name** on the POS Layout Field exactly. This is how POS maps the input value to the correct custom data field.\n   :::\n\n4. Save the record.\n5. Open the POS Layout Field that should use this view, and set the **POS View** field to your new view.\n\n## Supported data types\n\n| Data type | Accepted values |\n|---|---|\n| `string`, `textarea`, `email`, `phone`, `url` | Text |\n| `integer`, `long` | Whole numbers |\n| `double`, `currency`, `percent` | Decimal numbers |\n| `boolean` | `true` or `false` |\n| `date` | Date (e.g. `2024-01-15`) |\n| `datetime` | Date and time (e.g. `2024-01-15T10:30:00Z`) |\n| `picklist`, `combobox` | Single selection |\n| `multipicklist` | Multiple selections |\n\n## Configure the Notes field character limit (optional)\n\nThe End Shift screen includes a built-in **Notes** field. By default it allows up to 500 characters. You can increase this to a maximum of 10,000 characters by setting a store variable.\n\nIn your store's **Store Variables** (or equivalent settings), add:\n\n```json\n\n{\n  \"shift\": {\n    \"notes\": {\n      \"character_limit\": 2000\n    }\n  }\n}\n```\n\n## Override the secondary action button (optional)\n\nBy default, the End Shift form shows an **Open Cash Drawer** button as a secondary action. You can replace this with a different action by linking an Action Item record to your POS Layout.\n\n1. In Salesforce, create a new **Action Item** record:\n\n   | Field | Value |\n   |---|---|\n   | Display Name | Button text shown in POS (e.g. `Print shift report`) |\n   | Action | Action identifier (e.g. `print:shift_report`) |\n\n2. Open your End Shift Form POS Layout and set the **Secondary Action Item** field to the action item you just created.\n\nCommon action identifiers:\n\n| Action | Behavior |\n|---|---|\n| `cash_drawer:open` | Opens the connected cash drawer (default) |\n| `print:receipt` | Prints a receipt |\n| `print:shift_report` | Prints a shift report |"}