# PositiveForm > PositiveForm is studio management software for martial arts schools: leads and trials, households and members, programs and schedules, attendance and check-in, agreements, billing, advancement, and staff access. These guides document every workflow in the staff console. Each guide has an HTML page and a Markdown twin at the same path with a `.md` suffix. - Verified guides: 58. Draft guides: 19 (listed under Optional; they describe shipped screens but have not been re-verified). - Every guide in one file: https://positiveform.com/llms-full.txt - The self-contained app coach pack with assistant instructions: https://positiveform.com/ai.md - Vocabulary: an Organization is the studio business; a Location is an operating site; a Household holds the people, agreements, and billing for one family; a Member is any person the studio serves; a Lead is a prospect until converted. ## Attendance and check-in - [Check in from a member workspace](https://positiveform.com/guides/attendance/member-check-in.md): Check in a member and undo the check-in when needed. The check-in appears immediately and undo restores the prior state. - [Run front-desk check-in](https://positiveform.com/guides/attendance/front-desk-check-in.md): Find a member and record a general or scheduled check-in. A staff-method attendance record appears for the selected member and class context. - [Review attendance history](https://positiveform.com/guides/attendance/review-attendance-history.md): Filter and page through check-in history. The history view shows the requested date, program, location, and page without truncating reachable records. - [Record bulk attendance](https://positiveform.com/guides/attendance/bulk-attendance.md): Pick a date and a program (or Everyone) and record attendance for the people who were there. New attendance records appear for the selected people, people… ## Members - [Create a member](https://positiveform.com/guides/members/create-member.md): Create a member with identity and contact details. The member is created and opens in the canonical member workspace. - [Browse and filter people](https://positiveform.com/guides/members/browse-people.md): Search, filter, and page through members, non-members, and staff. The directory exposes reachable, URL-backed result sets without leaking protected contact… ## Leads and trials - [Create a lead and schedule a trial](https://positiveform.com/guides/leads/create-lead-trial.md): Create an inquiry and schedule a program trial. The lead appears in the pipeline with the scheduled trial date and program. - [Convert a lead](https://positiveform.com/guides/leads/convert-lead.md): Convert a lead into a new or deliberately selected returning member. The lead leaves the active pipeline and the resulting member opens without an implicit… - [Find and archive leads](https://positiveform.com/guides/leads/find-archive-leads.md): Use recent or complete lead tables and archive or restore a lead. Search and status filters retain context and archived leads leave the active pipeline… ## Programs and schedules - [Create a program](https://positiveform.com/guides/programs/create-program.md): Create a reusable program and open its operational workspace. The inactive program is created at a stable program route with clear setup actions. - [Manage program schedules](https://positiveform.com/guides/programs/manage-program-schedule.md): Create or edit recurring and one-time program meetings and meeting notes. The schedule and date-specific staff notes persist in the program settings context. - [Manage program lifecycle](https://positiveform.com/guides/programs/manage-program-lifecycle.md): Activate, update, or end a program deliberately. The program status and settings persist and the UI explains roster effects. - [Duplicate a program](https://positiveform.com/guides/programs/duplicate-program.md): Duplicate a program configuration with an explicit choice about active members. An inactive copy opens with the selected safe configuration and no accidental… - [Assign program staff and operating notes](https://positiveform.com/guides/programs/program-staff-notes.md): Assign teaching staff and maintain operating notes for a program. Assigned staff and notes remain visible in the program workspace. - [Manage program pricing plans](https://positiveform.com/guides/programs/program-pricing-plans.md): Attach or create program plans, choose a default, and archive obsolete plans. The plan catalog changes without enrolling or charging anyone. ## Program enrollment - [Add a member to a program roster](https://positiveform.com/guides/enrollment/add-program-roster-member.md): Add an existing member to an active program roster. The member appears once on the program roster with the selected status. - [Manage the enrollment queue](https://positiveform.com/guides/enrollment/manage-enrollment-queue.md): Search and filter program enrollments and schedule or cancel an end. The queue retains its URL-backed filters and shows the resulting active, waitlisted… ## Agreements and waivers - [Manage agreement templates](https://positiveform.com/guides/agreements/manage-agreement-templates.md): Create, preview, publish, unpublish, or archive member agreement templates. Template lifecycle and signing order are explicit and published content remains… - [Configure agreement onboarding order](https://positiveform.com/guides/agreements/agreement-onboarding-order.md): Choose which published agreements are required and their signing order. The onboarding packet order saves and is reflected in member signing status. - [Sign a public agreement](https://positiveform.com/guides/agreements/public-agreement-signing.md): Review and sign an active agreement link without staff-console access. The signature is recorded once and the signer sees a safe completion or recovery state. ## Billing - [Create a household billing profile](https://positiveform.com/guides/billing/create-billing-profile.md): Create a billing profile for an eligible household adult. A default billing profile is created for the selected adult without creating a payment instrument. - [Review household billing](https://positiveform.com/guides/billing/review-household-billing.md): Review billing profiles, subscriptions, invoices, and payment setup state for one household. Billing records remain grouped under the correct household with… - [Create a household subscription](https://positiveform.com/guides/billing/create-household-subscription.md): Create an individual or shared household subscription from a reviewed plan. The subscription is created for the selected members with the reviewed price and… - [Review and reconcile billing operations](https://positiveform.com/guides/billing/billing-operations.md): Review operational billing queues and request reconciliation. The selected queue, filters, and reconciliation result are visible without entering provider… - [Create and refund one-off charges](https://positiveform.com/guides/billing/one-off-charges-refunds.md): Charge a reviewed one-off item and refund or void an eligible invoice. The charge, refund, or void records the recipient, amount, actor, and resulting invoice… - [Configure billing policies and catalog](https://positiveform.com/guides/billing/billing-setup.md): Configure schedules, approval policy, discounts, and one-off items. Customer-facing billing configuration saves without exposing or changing platform… - [Manage the studio subscription](https://positiveform.com/guides/billing/studio-subscription.md): Choose a PositiveForm plan and open billing self-service. The owner sees current usage and can enter the hosted checkout or billing portal for the… ## Advancement and ranks - [Configure a progression](https://positiveform.com/guides/advancement/configure-progression.md): Create or edit a progression from a supported template. The progression and rank visuals persist and become available to member advancement workflows. - [Review advancement readiness](https://positiveform.com/guides/advancement/review-advancement.md): Filter members by progression and review who is ready for the next rank. The roster and readiness filters show the intended location, program, rank, and… - [Record member advancement](https://positiveform.com/guides/advancement/record-advancement.md): Preview and confirm advancement for selected members. The confirmation records the new ranks once and member history reflects the change. ## Testing events - [Schedule a testing event](https://positiveform.com/guides/testing/schedule-testing-event.md): Schedule a testing event with eligibility, fee, location, and notes. The event opens at a stable route with the reviewed date, eligibility, and fee. - [Run and finish testing](https://positiveform.com/guides/testing/run-testing-event.md): Register candidates, record results, and finish a testing event. Roster and fee state are explicit, results persist, and finishing the event prevents… ## Tags - [Manage the tag catalog](https://positiveform.com/guides/tags/manage-tags.md): Create, rename, merge, or archive reusable tags. Tag changes preserve member assignments and leave an audit trail. ## Parents and guardians - [Review parents and guardians](https://positiveform.com/guides/people/parents-guardians-directory.md): Find household adults who are not direct members. The directory shows permitted identity context and links to the correct household. ## Staff - [Invite staff](https://positiveform.com/guides/staff/invite-staff.md): Add a staff profile, choose work locations, assign roles, and send an invitation. The staff profile is created once and its invitation state is visible. - [Maintain a staff profile](https://positiveform.com/guides/staff/maintain-staff-profile.md): Update staff identity, photo, status, work locations, and optional member link. Changes persist without confusing staff employment status, login access… - [Record staff achievements and ranks](https://positiveform.com/guides/staff/staff-achievements-ranks.md): Record staff achievements and optional training rank history. Achievements and rank changes appear on the staff identity without granting permissions. - [Manage staff access](https://positiveform.com/guides/staff/manage-staff-access.md): Assign roles and extra permissions or safely import and export access definitions. Effective permissions update only after validation and remain inspectable. ## User roles - [Manage reusable roles](https://positiveform.com/guides/roles/manage-user-roles.md): Create, duplicate, edit, import, export, or remove reusable permission roles. Role changes validate server-defined capabilities and do not silently change… - [Preview a role safely](https://positiveform.com/guides/roles/preview-user-role.md): Preview a role with server-enforced read-only access. The preview clearly identifies the role, masks protected data when configured, prevents mutation, and… ## Locations - [Create a location](https://positiveform.com/guides/locations/create-location.md): Create a studio location and make it available to operations. The new location opens in settings with its profile ready for completion. - [Maintain or retire a location](https://positiveform.com/guides/locations/maintain-location.md): Update location details and hours or retire a location safely. Profile, hours, staff assignments, and any retirement replacement are saved without stranding… ## Organization settings - [Maintain organization details and branding](https://positiveform.com/guides/organization/organization-details-branding.md): Update business details, icon, and banner. Organization details and safe image assets update across the branded console. - [Delete an organization](https://positiveform.com/guides/organization/delete-organization.md): Request or confirm organization deletion with explicit consequences. The organization follows the documented deletion lifecycle and the user reaches a safe… ## Settings - [Navigate studio settings](https://positiveform.com/guides/settings/settings-home.md): Find configuration areas that my access permits. Settings shows only permitted customer-facing configuration destinations and each link opens its canonical… ## Workspace navigation - [Switch operating locations](https://positiveform.com/guides/workspace/switch-location.md): Switch my operating location without changing organizations. Location-scoped pages reload for the selected location while the tenant remains unchanged. ## Global search - [Find operational records](https://positiveform.com/guides/navigation/global-search.md): Find a member, household, or program and open its canonical workspace. Grouped search results open the selected record in the correct organization. ## Dashboard - [Review the studio dashboard](https://positiveform.com/guides/dashboard/review-dashboard.md): See current setup and check-in activity from the dashboard. The dashboard shows current organization-scoped setup status and recent check-in activity. ## Getting started - [Create a studio organization](https://positiveform.com/guides/onboarding/create-organization.md): Create a studio organization and enter its console. The organization is created and the owner reaches organization-scoped setup. - [Record migration and service needs](https://positiveform.com/guides/onboarding/migration-service-needs.md): Review the migration offer and tell PositiveForm what help I need. The owner can continue through the migration offer and save service needs without exposing… ## Sign in and sign up - [Sign in to the staff console](https://positiveform.com/guides/authentication/sign-in.md): Sign in and reach the organization-scoped console. The authenticated user reaches the selected organization or a clear organization setup/access state. - [Create a staff account](https://positiveform.com/guides/authentication/sign-up.md): Open the dedicated registration flow from sign in. The application renders Clerk registration at the dedicated sign-up route. ## Data imports - [Start a studio import](https://positiveform.com/guides/imports/start-import.md): Download canonical templates and create an isolated import job. The import job opens without creating operational records. - [Discard or safely roll back an import](https://positiveform.com/guides/imports/discard-rollback-import.md): Discard staged data or preview and execute a safe rollback of untouched import-owned records. Discard purges staged personal data; rollback removes only safe… ## Integrations - [Connect and operate Stripe](https://positiveform.com/guides/integrations/stripe-connection.md): Connect Stripe, inspect account status, and manage customer-visible webhook setup. Connection status, charges readiness, product sync, and webhook health are… - [Configure organization email marketing](https://positiveform.com/guides/integrations/resend-marketing.md): Configure, activate, pause, resume, or disable marketing email automation. Marketing status and automation settings change only after explicit acknowledgement… ## Developer setup - [Manage developer API keys](https://positiveform.com/guides/developer/developer-api-keys.md): Create, rotate, and revoke developer API keys from the product. Key lifecycle is visible, new secrets are shown only once, and revoked keys cannot be used. - [Operate webhook endpoints](https://positiveform.com/guides/developer/webhook-endpoints.md): Create, test, rotate, archive, and inspect customer webhook endpoints and deliveries. Endpoint state and delivery/replay history are visible without turning… ## Optional - [Maintain member profile and notes](https://positiveform.com/guides/members/maintain-member-profile.md): Update a member profile and add a private staff note. Profile changes and the new note persist and appear in the correct member context. - [Manage member lifecycle and subscriptions](https://positiveform.com/guides/members/member-lifecycle-subscriptions.md): Review roster placement and subscription state and take the next allowed action. Enrollment and subscription actions preserve the member and household… - [Review member history](https://positiveform.com/guides/members/review-member-history.md): Review a member timeline and filter attendance or notes. The member timeline loads in reverse chronological context and can be filtered without losing the… - [Print member barcode labels](https://positiveform.com/guides/members/print-barcode-labels.md): Print scanner-ready stickers from selected members' existing operational barcodes, either from the Members directory or from one member's own ID. A bounded… - [Create and find a household](https://positiveform.com/guides/households/create-find-household.md): Create a household and find it in the household directory. The new household opens in its People workspace and remains searchable. - [Add an existing person to a household](https://positiveform.com/guides/households/add-existing-person.md): Attach an existing unassigned person to a household. The selected person appears once in the household with the intended household role. - [Manage household people and safety context](https://positiveform.com/guides/households/manage-household-people.md): Add or update people, relationships, and emergency contacts in a household. People and informational relationships save without implying billing, portal… - [Manage member agreement completion](https://positiveform.com/guides/households/manage-member-agreements.md): Send a signing request or record a safe paper agreement for a household member. The member agreement status reflects the sent or uploaded document without… - [Change or retire a household](https://positiveform.com/guides/households/change-retire-household.md): Update, transfer, or retire household context with explicit safeguards. The requested change completes without orphaning people or crossing organization… - [Work the lead pipeline](https://positiveform.com/guides/leads/work-lead-pipeline.md): Move leads through follow-up and trial states and record communication. Pipeline changes, follow-up dates, trial attendance, and communication notes persist… - [Review a lead record](https://positiveform.com/guides/leads/review-lead-detail.md): Open a lead record and review its lifecycle, activity, and safe contact context. The canonical lead route shows permitted details and links to the next action. - [Resolve billing reviews](https://positiveform.com/guides/billing/resolve-billing-review.md): Add context, resolve, dismiss, or route a billing review to an owner. The review records the decision and leaves a visible audit trail. - [Approve billing changes](https://positiveform.com/guides/billing/approve-billing-change.md): Approve or decline a high-impact billing change. The decision and note are recorded exactly once and the request leaves the waiting queue. - [Work the conversation inbox](https://positiveform.com/guides/communications/conversation-inbox.md): Review, assign, mark, and reply to customer conversations. Replies and assignment/read state are recorded on the correct tenant conversation with safe… - [Switch organizations](https://positiveform.com/guides/workspace/switch-organization.md): Switch the active organization safely. The console reloads in the selected tenant and does not retain data from the prior organization. - [Build a studio workspace before creating an account](https://positiveform.com/guides/onboarding/draft-studio-setup.md): Build a working studio workspace before creating any account, and keep it by saving my progress. The draft workspace persists across reloads in the same… - [Upload, map, validate, and review import data](https://positiveform.com/guides/imports/validate-import.md): Upload files, map fields, validate relationships, and review retained records safely. Validation reports unknown, duplicate, consent, and relationship issues… - [Commit and reconcile an import](https://positiveform.com/guides/imports/commit-reconcile-import.md): Lock a reviewed snapshot, commit it transactionally, reconcile it, and activate the accepted baseline. Operational records are created or matched once… - [Connect and verify Resend](https://positiveform.com/guides/integrations/resend-connection.md): Connect Resend and verify sending, receiving, and delivery webhooks. PositiveForm verifies each customer-managed channel and stores no secret in guide or run… --- # Check in from a member workspace > PositiveForm guide · Attendance and check-in · ATT-001 > Canonical page: https://positiveform.com/guides/attendance/member-check-in/ > This Markdown: https://positiveform.com/guides/attendance/member-check-in.md **Summary:** Check in a member and undo the check-in when needed. The check-in appears immediately and undo restores the prior state. **Who can do this:** Organization owners, Managers, Staff **Required access:** `members.change` **Where in PositiveForm:** `/members/:memberId/overview` **Status:** Verified on 2026-07-29 against PositiveForm build `fe1de72`. ## Who this is for This guide is for **desk staff, managers, and owners** who already have a member open and want to record that they trained without going to the Check-in desk. You need the `members.change` permission. ## Before you begin - Open the member at the location where they train. - Prefer [Run front-desk check-in](https://positiveform.com/guides/attendance/front-desk-check-in/) when several people are arriving at once; this path is best for one person already on screen. ## Steps 1. Open the member from **Members**, search, or a related link. You land on their **Overview** tab. 2. Find the **Check in** action on the overview. 3. Click **Check in**. While it saves, the button may read **Checking in…**. 4. Confirm the success state: PositiveForm toasts that the member checked in, or that they were just checked in if a recent visit already exists. 5. When this session created the visit, an **Undo check-in** control appears so you can reverse a mistaken click. Do not undo a visit you did not create. 6. Review **Recent check-ins** on the same overview for class or **General check-in** context and times. ## Expected outcome A staff-method attendance record is stored for the member. It appears in their recent check-ins and in the location’s Check-in history ([Review attendance history](https://positiveform.com/guides/attendance/review-attendance-history/)). ## Screenshots ![Member overview with Check in](https://positiveform.com/guides/media/ATT-001/20260729T203000Z/000-start.webp) ## Recovery If **Check in** is missing or disabled, confirm your role has `members.change` and that a location is selected. If check-in fails, PositiveForm shows **Check-in failed. Please try again.** and does not invent a visit. If you click **Check in** twice in quick succession, the second result may be the neutral **This member was just checked in** notice without a second undo control. ## Related guides - [Run front-desk check-in](https://positiveform.com/guides/attendance/front-desk-check-in/) — front-desk search and check-in. - [Review attendance history](https://positiveform.com/guides/attendance/review-attendance-history/) — location-wide history. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Run front-desk check-in > PositiveForm guide · Attendance and check-in · ATT-002 > Canonical page: https://positiveform.com/guides/attendance/front-desk-check-in/ > This Markdown: https://positiveform.com/guides/attendance/front-desk-check-in.md **Summary:** Find a member and record a general or scheduled check-in. A staff-method attendance record appears for the selected member and class context. **Who can do this:** Organization owners, Managers, Staff **Required access:** `members.change` **Where in PositiveForm:** `/attendance` **Status:** Verified on 2026-07-29 against PositiveForm build `fe1de72`. ## Who this is for This guide is for **desk staff, managers, and owners** checking people in as they arrive for class. You need the `members.change` permission. The page lives under **Check-in** in the left navigation (route `/attendance`). ## Before you begin - Select the location at the top of the console. Check-ins are recorded for the selected location only. - Prefer searching by name, student number, Member ID, household, phone, or email when you are not using a member card. A USB barcode scanner can type a card code into the Check-in field and finish with Enter. On any other authenticated console page, the same scanner is recognized as a rapid burst of keys ending in Enter, then asks you to confirm check-in. It does not record attendance by itself. ## Steps 1. Click **Check-in** in the left navigation. The page title is **Check-in**, with the subtitle **Find a member, then check them in.** 2. Type into **Find a member or scan a barcode**. After two characters, PositiveForm searches members at this location by name, household, phone, email, student number, or Member ID. 3. Read each match: the member name, Member ID, student number when one is on file, age when known, household, and program context (or **No program context**). Inactive members are labelled **Inactive**. 4. Click **Check in** on the correct person. The method recorded is **Staff** for a manual desk check-in. 5. Confirm the success banner: **{name} checked in**, with the class context (or **General check-in**) and the time. You can **Dismiss** the banner. 6. Confirm the person appears under **Today’s check-ins**, with columns **Member**, **Class**, **Method**, and **Time**. 7. Optional: open **Bulk attendance** when you need to mark a whole class at once; see [Record bulk attendance](https://positiveform.com/guides/attendance/bulk-attendance/). ## Expected outcome A staff-method attendance record is saved for that member at the selected location. They appear in **Today’s check-ins**, and the same visit is available later under **Check-in history** on this page ([Review attendance history](https://positiveform.com/guides/attendance/review-attendance-history/)). If they already checked in moments ago, PositiveForm may report that they were just checked in rather than creating a duplicate visit. ## Screenshots ![Check-in desk with search field, today’s check-ins, and history](https://positiveform.com/guides/media/ATT-002/20260729T193000Z/000-start.webp) ![Search results for a member with the Check in action](https://positiveform.com/guides/media/ATT-002/20260729T193000Z/001-member-found.webp) ![Member listed under today’s check-ins after a successful staff check-in](https://positiveform.com/guides/media/ATT-002/20260729T193000Z/002-checked-in.webp) ## Recovery If the search box is disabled, check the location picker and your network. When you are offline, the page says check-ins are not being saved until the connection returns. If no members match, try another name, student number, Member ID, household, phone, or email, or open **Members** to add the person first. From any authenticated console page, a USB scanner that types a rapid card code and Enter opens **Check in this member?** when the card is on file. Confirm **Check in**, or **Dismiss** to leave attendance unchanged. If the card is not recognised, PositiveForm opens the Check-in recovery path and shows the scanned card number. Search for the correct person by name, student number, Member ID, household, phone, or email, then **Assign card**. Each match shows Member ID and student number when those exist so you can confirm the card. PositiveForm tells you whether this replaces an unused PositiveForm code or a physical card already in use. Confirm before replacing a physical card. You can **Assign card and check in**, or **Assign card only** if you only need the card on file. A card that already belongs to someone else in this studio cannot be reassigned. If **Check in** fails for another reason, PositiveForm shows **Check-in failed. Please try again.** and leaves you on the desk so you can retry. If **Check-in** is missing from the navigation, your role does not carry the attendance surface for this studio. ## Related guides - [Check in from a member workspace](https://positiveform.com/guides/attendance/member-check-in/) — check someone in from their member workspace. - [Review attendance history](https://positiveform.com/guides/attendance/review-attendance-history/) — filter and review past check-ins. - [Record bulk attendance](https://positiveform.com/guides/attendance/bulk-attendance/) — record attendance for a whole class. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Review attendance history > PositiveForm guide · Attendance and check-in · ATT-003 > Canonical page: https://positiveform.com/guides/attendance/review-attendance-history/ > This Markdown: https://positiveform.com/guides/attendance/review-attendance-history.md **Summary:** Filter and page through check-in history. The history view shows the requested date, program, location, and page without truncating reachable records. **Who can do this:** Organization owners, Managers, Staff **Required access:** `organization.membership` **Where in PositiveForm:** `/attendance` **Status:** Verified on 2026-07-29 against PositiveForm build `fe1de72`. ## Who this is for This guide is for **desk staff, managers, and owners** reviewing who checked in earlier today or on past days at the selected location. You need `organization.membership` access so you can open the Check-in page. Recording new check-ins still needs `members.change`; see [Run front-desk check-in](https://positiveform.com/guides/attendance/front-desk-check-in/). ## Before you begin - Select the location at the top of the console. History is scoped to that location. - Use **Today’s check-ins** for the current day, and **Check-in history** for earlier visits with date and filter controls. ## Steps 1. Click **Check-in** in the left navigation. 2. Review **Today’s check-ins** for the current day. Columns are **Member**, **Class**, **Method**, and **Time**. Empty days say **No one has checked in today yet.** 3. Scroll to **Check-in history**. 4. Set a date range with the two date fields (from and to), using the calendar buttons when you prefer a picker. 5. Narrow results with **Program filter** (defaults to **All programs**) and **Method filter** (defaults to **All methods**), which covers staff, barcode, kiosk, and other methods. 6. Sort the history table with the **Member** or **Time** column headers when you need a different order. 7. Page with **Previous** and **Next** when the list is long. 8. Open a member name to jump to their member workspace for deeper context. ## Expected outcome You can answer who trained, which class or general check-in they used, how they checked in, and when. Filters and dates stay on the page so you can refine the view without leaving Check-in. ## Screenshots ![Check-in page with today’s list and history section](https://positiveform.com/guides/media/ATT-003/20260729T201500Z/000-start.webp) ![History filters including program and method](https://positiveform.com/guides/media/ATT-003/20260729T201500Z/001-history-filters.webp) ## Recovery If history is empty after filtering, clear **Program filter** and **Method filter**, widen the dates, and confirm the location picker. If the tables fail to load, PositiveForm shows an error with a retry path on the page. Stay on Check-in rather than refreshing mid-filter unless the retry does not recover. If you expected a visit that is missing, confirm it was recorded at this location and that the method filter is not hiding it. ## Related guides - [Run front-desk check-in](https://positiveform.com/guides/attendance/front-desk-check-in/) — record a new desk check-in. - [Record bulk attendance](https://positiveform.com/guides/attendance/bulk-attendance/) — mark a whole class at once. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Record bulk attendance > PositiveForm guide · Attendance and check-in · ATT-004 > Canonical page: https://positiveform.com/guides/attendance/bulk-attendance/ > This Markdown: https://positiveform.com/guides/attendance/bulk-attendance.md **Summary:** Pick a date and a program (or Everyone) and record attendance for the people who were there. New attendance records appear for the selected people, people… **Who can do this:** Organization owners, Managers, Staff **Required access:** `members.change` **Where in PositiveForm:** `/attendance/bulk` **Status:** Verified on 2026-07-29 against PositiveForm build `fe1de72`. ## Who this is for This guide is for **desk staff, managers, and owners** marking attendance for a whole class (or everyone at the location) on a chosen date. You need the `members.change` permission. ## Before you begin - Select the location. - Know the attendance date. Defaults to today; use previous/next day controls when you are catching up. - Prefer this path after class ends; use [Run front-desk check-in](https://positiveform.com/guides/attendance/front-desk-check-in/) for one-by-one arrivals. ## Steps 1. Open **Check-in**, then click **Bulk attendance**, or go directly to `/attendance/bulk`. 2. Confirm the **Attendance date** with the date field or **Previous day** / **Next day**. 3. Choose who to record: - A program row such as **Youth Martial Arts** with its enrolled count and how many are already recorded that day, or - **Everyone** for the full location roster. 4. Open the program (or Everyone). The detail view lists people for that selection so you can mark attendance class by class. 5. Record attendance for the people who trained, then return with **Back to check-in** when finished. ## Expected outcome Attendance rows exist for the people you marked on that date, counted under the program (or Everyone) on the bulk list, and visible later in Check-in history. ## Screenshots ![Bulk attendance date picker and program list](https://positiveform.com/guides/media/ATT-004/20260729T203500Z/000-start.webp) ## Recovery If no programs appear, add a program first or use **Everyone** when the empty state offers it. If a program shows zero enrolled, enroll members before bulk marking, or use front-desk check-in for visitors. If you marked the wrong day, change the attendance date and correct that day’s list rather than inventing a second visit without checking history. ## Related guides - [Run front-desk check-in](https://positiveform.com/guides/attendance/front-desk-check-in/) — single check-in at the desk. - [Review attendance history](https://positiveform.com/guides/attendance/review-attendance-history/) — review what was recorded. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Create a member > PositiveForm guide · Members · MEM-001 > Canonical page: https://positiveform.com/guides/members/create-member/ > This Markdown: https://positiveform.com/guides/members/create-member.md **Summary:** Create a member with identity and contact details. The member is created and opens in the canonical member workspace. **Who can do this:** Organization owners, Managers, Staff **Required access:** `members.change` **Where in PositiveForm:** `/members` **Status:** Verified on 2026-07-29 against PositiveForm build `9096f81`. ## Who this is for This guide is for **desk staff, managers, and owners** adding somebody who is starting at the studio. You need the `members.change` permission. If **Add member** is greyed out, check you have a location selected before assuming it is a permission problem. PositiveForm asks a different second question for a child than for an adult, because a child needs a responsible adult on file. Answer the age question honestly and the rest follows. ## Before you begin - Select the location this person trains at, using the picker at the top of the console. A member is created at the selected location, and **Add member** will not proceed without one. - Have their first and last name, and their date of birth if they are under 18. - For a child, have the parent or guardian's first name, last name, and email. Those are required, because that adult becomes the household's contact. ## Steps 1. Click **Members** in the left navigation. 2. Click **Add member**. **Add a member** opens, and names the location the person will be created at. 3. Under **Who is this person?**, fill in **First name** and **Last name**. 4. Answer the age question. Tick **This person is 18 or older** for an adult. Leave it clear for a child and fill in **Date of birth**, which PositiveForm requires so it can collect their responsible adult. 5. Continue. The next step tells you which path you are on: **Adult — a household will be created automatically**, or **Child — parent or guardian details are required**. 6. For a **child**, fill in the parent or guardian's **First name**, **Last name**, **Email**, and **Relationship**. **Phone (optional)** is worth adding if you have it. This adult is added to the new household and linked to the child. 7. For an **adult**, add **Email (optional)** and **Phone (optional)** if you have them. 8. Save the member. ## Expected outcome PositiveForm confirms with **Member added**, and the person opens in their member workspace, which is where everything about them lives from now on. They also have a household. An adult gets one created automatically; a child gets one containing the parent or guardian you named. That household is what billing attaches to later, which is why the parent's details are required rather than optional. The new member appears in the members list at the selected location, with a member ID, a status of **Active member**, and no rank yet. Continue in [Maintain member profile and notes](https://positiveform.com/guides/members/maintain-member-profile/) to fill in the rest of their profile, or check them into a class straight away with [Check in from a member workspace](https://positiveform.com/guides/attendance/member-check-in/). ## Screenshots ![Add a member, asking who the person is, with the location it will be created at and the age question](https://positiveform.com/guides/media/MEM-001/20260729T024000Z/001-add-member-identity.webp) ## Recovery If you save without both names, PositiveForm refuses with **First and last name are required.** If you leave the age question unanswered, it refuses with **Enter a date of birth or confirm that this person is an adult.** There is no default: a wrong guess about a child's age would put their record in the wrong shape. For a child with incomplete adult details, it refuses with **Parent or guardian first name, last name, and email are required.** If you see **Set an active location before adding a member.**, no location is selected. Choose one with the picker at the top and try again. If saving fails for another reason, PositiveForm shows **Failed to add member** with the reason, and nothing is created. Your entries stay on screen. If you created somebody twice, do not delete the duplicate blindly; check which one has attendance or billing attached first. Search for the name to see both; see [Browse and filter people](https://positiveform.com/guides/members/browse-people/). ## Related guides - [Maintain member profile and notes](https://positiveform.com/guides/members/maintain-member-profile/) — finish the profile: contact details, emergency contacts, rank, and notes. - [Check in from a member workspace](https://positiveform.com/guides/attendance/member-check-in/) — check the new member into a class. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Maintain member profile and notes > PositiveForm guide · Members · MEM-002 > Canonical page: https://positiveform.com/guides/members/maintain-member-profile/ > This Markdown: https://positiveform.com/guides/members/maintain-member-profile.md **Summary:** Update a member profile and add a private staff note. Profile changes and the new note persist and appear in the correct member context. **Who can do this:** Organization owners, Managers, Staff **Required access:** `members.change` **Where in PositiveForm:** `/members/:memberId/overview` **Status:** Draft: not yet verified against a deployed PositiveForm build. Labels may differ. > Draft: this guide describes the member profile redesign at docs/plans/2026-08-25-member-profile-redesign, three tabs (Overview, Details, History) in place of the previous Overview, Membership, and History. It has not yet been replayed against the deployed demo. ## Who this is for This guide is for **desk staff, managers, and owners** keeping a member's record current, and leaving notes colleagues will need. **Overview** is what you read in three seconds with the person standing at the desk, plus the actions used every visit. **Details** holds every attribute, contact-card style: a blank field is hidden, and **Edit** shows all of them. Nothing on Overview is a fact you cannot also find on Details; Overview only pulls a few of them forward. You need the `members.change` permission to edit. Anyone with a staff login can read the page. ## Before you begin - Know that notes are read and written on **Details**, not Overview. History only records that a note was added, never its text. - Know that a **required item**, such as a missing waiver, is a task to clear, not a state to accept. It never blocks **Check in**. - Know that the household holds billing, the family's other people, and the household-level Billing tab. This page is about this one person. ## Steps ### Open the member 1. Click **Members** in the left navigation, then click the person. Their workspace opens on **Overview**, beside **Details** and **History**. 2. The header carries their name, then a second line with their age, rank swatch and current rank (with the next rank, where the person has a rank system), and their program and training group. A third line carries contact: an adult's own phone and email, or, for a minor, the first household adult with a phone on file. 3. The header actions are **Check in** (primary), **Copy email**, **Enroll**, and **More**, which holds **Edit**, **ID card**, **Print label**, **Assign card**, **Tags**, **Set inactive**, **Reactivate**, and **Move household**. **Copy email** puts the member's address on your clipboard, ready to paste into whatever you send mail from. It appears only for staff who can see contact information, and only when the member has an address on file. Clicking any email address on the page copies it the same way: a check appears beside it and a message confirms the copy. Addresses never open a mail application, and an address shown masked (`j••••@e••••.com`) is not copyable, because your role cannot see it. 4. For a household adult who is not a member, the header reads differently: the household name, who they are the parent or guardian of, and **not enrolled**, then a billing summary line, then their contact. **Check in** does not appear. **Enroll** stays, since it is how that adult becomes a member. ### Clear what needs attention 5. **Required items**, directly under the header, lists anything outstanding for this person: a missing waiver, no card on file for a subscription that covers them, an unpaid invoice, a minor with no parent or guardian linked, or a minor whose household adults have no phone. Each row names the gap and offers the action that clears it, for example **Add waiver** or **Add card**. The **Overview** tab carries a count badge matching the number of items; it disappears once the list is empty. None of this blocks **Check in**. ### Read the state of them 6. **Next classes** lists the member's upcoming classes for the week. 7. **Attendance** shows a 12-week grid, one row per weekday the member's schedules fall on (a single row for someone with only general check-ins), with total visits and the date of the last one. 8. **Household** shows a card for every other person in the family: role text for an adult (for example **Father of Davis, step-father of Mia**), rank, class, and last visit, and that person's own required-item count. Each card links to that person's profile; the section heading links to the household. ### Everything else lives on Details 9. Click **Details**. The view shows only filled-in fields; click **Edit** to see and change every field, filled or not, in one pass. 10. **About** carries nickname, age, birthdate, gender, school and grade, bio, uniform size, and contact. Contact is the person's own email and phone for an adult; for a minor it is a link to **Household adults** instead, because PositiveForm does not collect contact details for a child. 11. **Communication**, shown for adults only, lists marketing email, text, and call preferences with their state and a **Change** action, the audience rule the person follows, and their portal status. The channel controls appear only for the permission your role carries: `email.marketing.manage_consent`, `sms.marketing.manage_consent`, or `voice.marketing.manage_consent`. A Resend unsubscribe or an imported or provider phone suppression stays labeled; restore **Allowed** only after the person gives new permission. Enrollment and Resend audience selection do not grant permission. Shared family emails or phone numbers have one preference per channel, and a dependent profile directs you to the household adult rather than creating consent for a child identity. 12. **Studio** carries the member ID, student card number, and barcode with **Print** and **Assign** actions, tags, the date joined, and, once set, the date left, the date they went inactive, or their location at a multi-location organization. Use **Assign** to attach a leftover physical card, such as a Spark code, to this person; see [Print member barcode labels](https://positiveform.com/guides/members/print-barcode-labels/) for the full printing and assignment walkthrough. 13. **Programs** lists one row per current enrollment: the program, training group, and schedule, with **End**. Click **+ Enroll** to add one. 14. **Rank** shows the current rank with its award date and, where a rank system applies, the next rank with classes attended since the last promotion. Click **Set rank** to record a promotion. 15. **Billing** lists one row per covering subscription: plan, amount, who pays, next cycle, and standing, for example **No payment method**. Click **Household** to reach the full billing picture: who pays, every subscription, and invoices. 16. **Household** lists one row per other person in the family: their role relative to this person, and, for an adult, their contact. Click a name to open their profile, or the section heading to open the household. 17. **Emergency** lists name, phone, and relationship for each contact. Click **+ Add** to record one. 18. **Agreements** lists each agreement with its signed date, or **Missing**, and a **View** or **Add** action. 19. **Notes** lists entries newest first, each with its author and date. Click **+ Add note** to write one. Notes here are **internal**: they are for staff, not the family, so write them the way you would want them read back to you. ## Expected outcome Edits persist against this member and this member only. Reload the page and the new values are there; a field you left blank simply does not appear in the view until you fill it in. A saved note appears on **Details** immediately, and History records that a note was added, without repeating its text; see [Review member history](https://positiveform.com/guides/members/review-member-history/). Setting a rank updates the header line and the **Rank** section together, and the change is recorded in history. Nothing here reaches the rest of the household except what this person's own role, contact, and required items pull forward from it. Payment methods, subscriptions, and invoices are managed on the household, not here. ## Recovery If saving fails, PositiveForm shows the reason and keeps your entries on screen. Correct what it names and save again. If the edit controls are missing, your role does not carry `members.change`. You can still read the page. If contact details are absent for everyone rather than this one person, your role does not carry the contact-information permission. If a field you expect is missing on Overview, check Details: Overview only pulls forward facts that live there. A field that is genuinely blank stays hidden until you fill it in through **Edit**. If you are on the wrong person, check the name in the header before saving. The fastest way to the right one is global search; see [Find operational records](https://positiveform.com/guides/navigation/global-search/). If a note was wrong, add a follow-up note rather than trying to erase the record. The history is the point. If **Check in** is missing, you are looking at a household adult who is not a member. Use **Enroll** to make them one first. ## Related guides - [Manage member lifecycle and subscriptions](https://positiveform.com/guides/members/member-lifecycle-subscriptions/) — enroll and manage what this person is paying for, in more depth than the Details summary. - [Review member history](https://positiveform.com/guides/members/review-member-history/) — the full timeline this page summarises. - [Print member barcode labels](https://positiveform.com/guides/members/print-barcode-labels/) — print or assign this person's barcode. - [Find operational records](https://positiveform.com/guides/navigation/global-search/) — reach the right member quickly. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Browse and filter people > PositiveForm guide · Members · MEM-003 > Canonical page: https://positiveform.com/guides/members/browse-people/ > This Markdown: https://positiveform.com/guides/members/browse-people.md **Summary:** Search, filter, and page through members, non-members, and staff. The directory exposes reachable, URL-backed result sets without leaking protected contact… **Who can do this:** Organization owners, Managers, Staff **Required access:** `organization.membership` **Where in PositiveForm:** `/members` **Status:** Verified on 2026-07-29 against PositiveForm build `9096f81`. ## Who this is for This guide is for **any staff member** who needs to find the right person: at the desk, before a class, or while answering a parent's question. Everyone with a staff login can open this page. What contact details you can see depends on your access. ## Before you begin - Check which location you are working in. The picker at the top of the console decides which people this page lists. - Know whether you want a member or a household adult. Members are here; parents and guardians who do not train are in [Review parents and guardians](https://positiveform.com/guides/people/parents-guardians-directory/). ## Steps 1. Click **Members** in the left navigation. The count under the heading tells you how many people are listed, for example **3 members**. 2. Choose who to include with the tabs across the top: - **Members** lists current members, which is where the page opens. - **Inactive** lists people who are no longer active. - **Everyone** lists both. 3. Type into **Search name, household, contact, ID, or staff** to find somebody directly. It matches more than the name, so a household name or a member ID works when a spelling does not. 4. Narrow further with the two filters beside it: - **All agreements** limits the list by agreement state, so you can find everyone whose paperwork is outstanding. - **All progressions** limits it to one progression, so you can work through a single belt system. 5. Read the columns: **Name** with the person's location beneath it, **Household**, **Member ID**, **Progression**, **Status**, **Agreements**, and **Last change**. Click **Name**, **Member ID**, or **Last change** to sort by it; **Last change** is the quickest way to see who was touched most recently. 6. Use **Check in** in the **Action** column to record attendance without leaving the list; see [Check in from a member workspace](https://positiveform.com/guides/attendance/member-check-in/). 7. Click a person's name to open their member workspace. 8. Move through long lists with **Previous** and **Next**. The page counter between them shows where you are, for example **Page 1 of 1**. ## Expected outcome The list shows the people at your current location who match the tab and filters you chose, with the count above and below it agreeing. Your choices are held in the page address, so the list you are looking at can be returned to or handed to a colleague, and going back does not lose them. Contact details are shown only where your access allows. A person you cannot see details for still appears; the details do not. ## Screenshots ![The Members directory, with the Members, Inactive, and Everyone tabs, the search box, both filters, and the sortable columns](https://positiveform.com/guides/media/MEM-003/20260729T021000Z/001-members-directory.webp) ![The Inactive tab with nobody in it, reading No members here yet. and 0 people](https://positiveform.com/guides/media/MEM-003/20260729T021000Z/002-inactive-tab.webp) ## Recovery If somebody is missing, work through this in order: 1. Check the location picker at the top. The list is scoped to one location. 2. Check the tab. Someone who has left is under **Inactive**, not **Members**. An empty **Inactive** tab reads **No members here yet.** with **0 people**. 3. Clear the search box. A search left from earlier narrows everything below it. 4. Check the two filters. An agreement or progression filter left set from earlier is the usual reason a familiar name disappears. 5. Check they are a member at all. A parent or guardian who does not train is in [Review parents and guardians](https://positiveform.com/guides/people/parents-guardians-directory/). If you know part of a name but not where the person sits, use global search instead; see [Find operational records](https://positiveform.com/guides/navigation/global-search/). If no contact details appear for anyone, your role does not carry the contact-information permission. Ask an organization owner. ## Related guides - [Create a member](https://positiveform.com/guides/members/create-member/) — add somebody who is genuinely not here yet. - [Review parents and guardians](https://positiveform.com/guides/people/parents-guardians-directory/) — find a parent or guardian rather than a member. - [Find operational records](https://positiveform.com/guides/navigation/global-search/) — search across records when you do not know where to look. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Manage member lifecycle and subscriptions > PositiveForm guide · Members · MEM-004 > Canonical page: https://positiveform.com/guides/members/member-lifecycle-subscriptions/ > This Markdown: https://positiveform.com/guides/members/member-lifecycle-subscriptions.md **Summary:** Review roster placement and subscription state and take the next allowed action. Enrollment and subscription actions preserve the member and household… **Who can do this:** Organization owners, Managers, Staff **Required access:** `members.change` **Where in PositiveForm:** `/members/:memberId/details` **Status:** Draft: not yet verified against a deployed PositiveForm build. Labels may differ. > Draft: this guide describes the member profile redesign at docs/plans/2026-08-25-member-profile-redesign. The dedicated Subscription tab is gone; /members/:memberId/subscription now redirects to Details. It has not yet been replayed against the deployed demo. ## Who this is for This guide is for **desk staff, managers, and owners** answering two questions about one person: what are they paying for, and what are they enrolled in. Those are genuinely separate. **Roster placement is separate from household billing.** Someone can be on a class roster without a subscription, and can be paying for a subscription without being on a roster this term. Neither implies the other. You need the `members.change` permission to make changes here. ## Before you begin - Know that money belongs to the **household**, not the member. Payment methods and invoices live on household billing, and a subscription connects a plan to the people it covers and to the profile that pays. - Know which you actually need. If a parent asks "why was I charged", that is billing. If an instructor asks "is she in the Tuesday class", that is enrollment. - Know that the member's own **Details** tab now shows a summary of both: it is where you read state and start most changes. Full subscription management, who pays, and invoices live on the household's Billing tab. ## Steps 1. Click **Members** in the left navigation, click the person, then click the **Details** tab; see [Maintain member profile and notes](https://positiveform.com/guides/members/maintain-member-profile/). ### What they are enrolled in 2. Read **Programs**. There is one row per current enrollment: the program, training group, and schedule. With no enrollment, the section does not appear. 3. Click **+ Enroll** to place them on a roster; click **End** beside a row to take them off one. See [Manage the enrollment queue](https://positiveform.com/guides/enrollment/manage-enrollment-queue/) for the full enrollment walkthrough. ### What they are paying for 4. Read **Billing**. There is one row per covering subscription: plan, amount, who pays, next cycle, and standing, for example **No payment method**. With no covering subscription, the section does not appear. 5. Click **Household** beside the section heading to reach the household's **Billing** tab: who pays, every subscription (covers, paid by, collection method, next cycle, discount), and invoices. That is where money questions are answered and where a subscription is created; see [Create a household subscription](https://positiveform.com/guides/billing/create-household-subscription/) for the full walkthrough. ## Expected outcome **Details** shows this member's current state on both sides: every program they are enrolled in, and every billing subscription that covers them, each with its resulting state rather than a promise. A missing waiver or a covering subscription with no payment method also appears as a required item on **Overview**, with a count badge on the tab; see [Maintain member profile and notes](https://positiveform.com/guides/members/maintain-member-profile/). The boundaries hold. Enrolling somebody does not charge anybody, and nothing on this tab moves money by itself; payment methods and invoices stay on the household, reached through **Household** beside Billing. ## Recovery If a subscription you expected is missing, check the household rather than this member. A subscription covers people, and it may be attached to a sibling's household or to a profile you are not looking at. If a family says they are paying but the member shows no covering subscription, follow **Household** before creating a second one. Creating a duplicate subscription is a money-moving mistake that is harder to unwind than to avoid. If somebody is in class but shows no program row, they are attending without being enrolled. Fix it through **+ Enroll** so rosters and attendance agree. If you followed an old `/subscription` link and landed on Details instead, that is expected: the tab was folded into Details. If the actions are missing, your role does not carry `members.change`. You can still read both sides. ## Related guides - [Maintain member profile and notes](https://positiveform.com/guides/members/maintain-member-profile/) — the Details tab this guide expands on, and the member's Overview, where a billing or waiver gap surfaces as a required item. - [Create a household subscription](https://positiveform.com/guides/billing/create-household-subscription/) — create the household subscription that covers this person. - [Manage the enrollment queue](https://positiveform.com/guides/enrollment/manage-enrollment-queue/) — place them on a roster, or take them off one. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Review member history > PositiveForm guide · Members · MEM-005 > Canonical page: https://positiveform.com/guides/members/review-member-history/ > This Markdown: https://positiveform.com/guides/members/review-member-history.md **Summary:** Review a member timeline and filter attendance or notes. The member timeline loads in reverse chronological context and can be filtered without losing the… **Who can do this:** Organization owners, Managers, Staff **Required access:** `organization.membership` **Where in PositiveForm:** `/members/:memberId/history` **Status:** Draft: not yet verified against a deployed PositiveForm build. Labels may differ. > Draft: this guide describes the member profile redesign at docs/plans/2026-08-25-member-profile-redesign, where History is rebucketed into Check-ins, Programs, Rank, Billing, and Account, and notes move to Details. It has not yet been replayed against the deployed demo. ## Who this is for This guide is for **any staff member** who needs to know what actually happened with a member: when they last trained, when their rank or enrollment changed, what a colleague noted, and in what order. Everyone with a staff login can read this. It is the record you reach for when somebody says "but I thought" and you need to know rather than guess. ## Before you begin - Open the right member first. The history is theirs alone. - Know that notes are written and read on **Details**, not here; see [Maintain member profile and notes](https://positiveform.com/guides/members/maintain-member-profile/). History only records that a note was added, never its text. ## Steps 1. Click **Members** in the left navigation, click the person, then click the **History** tab. 2. Read the timeline. Entries are newest first, so what happened most recently is what you see without scrolling. 3. Narrow it with the chips across the top: - **All** shows everything, which is where the tab opens. - **Check-ins** shows attendance. - **Programs** shows enrollment changes. - **Rank** shows promotions. - **Billing** shows charges and subscription events. - **Account** shows everything else: a note was added, a profile edit, a consent change, a waiver going on file, a portal sign-in, or the record being created. 4. A bookmarked `?type=attendance` or `?type=notes` link still works: `attendance` opens **Check-ins**, and `notes` opens **Account**, since a note-added entry is one of the events it groups. ## Expected outcome The timeline loads newest first for this member, and a chip narrows it without taking you off their record. You stay in their workspace the whole time, so the name in the header is always the person you are reading about. A note added on **Details** appears here as **Note added** under **Account**, without repeating the text; open **Details** to read it. Check-in entries match what attendance recorded; see [Check in from a member workspace](https://positiveform.com/guides/attendance/member-check-in/). A member with nothing recorded yet says so plainly, rather than showing an empty table you might mistake for a loading failure. ## Recovery If the history looks empty, check the chip before concluding there is nothing. **Rank** on a member who has never been promoted shows nothing, and that is correct. If an expected check-in is missing, the attendance was not recorded, or was recorded against a different person. Confirm the name in the header, then check the class it should have been on. If a note you just added is not showing as **Note added** under **Account**, reload the page. If it is still missing, it did not save; write it again from **Details**. If you cannot see entries you expect a colleague can, your access carries fewer permissions than theirs. Protected details are hidden rather than blanked, so ask an organization owner rather than assuming the record is incomplete. ## Related guides - [Maintain member profile and notes](https://positiveform.com/guides/members/maintain-member-profile/) — the profile these entries belong to, and where notes are read and written. - [Check in from a member workspace](https://positiveform.com/guides/attendance/member-check-in/) — the check-in that produces the attendance entries. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Print member barcode labels > PositiveForm guide · Members · MEM-006 > Canonical page: https://positiveform.com/guides/members/print-barcode-labels/ > This Markdown: https://positiveform.com/guides/members/print-barcode-labels.md **Summary:** Print scanner-ready stickers from selected members' existing operational barcodes, either from the Members directory or from one member's own ID. A bounded… **Who can do this:** Organization owners, Managers, Staff **Required access:** `organization.membership` **Where in PositiveForm:** `/members/barcode-labels` **Status:** Draft: not yet verified against a deployed PositiveForm build. Labels may differ. > Draft: this workflow is implemented and locally verified but has not yet been replayed against the deployed demo. ## Who this is for This guide is for **desk staff, managers, and owners** printing a new or replacement barcode sticker for a member card. Any active staff member who can open the Members directory can print labels; printing does not change a member or record attendance. ## Before you begin - Select the studio location whose members you are working with. - Use US Letter stock laid out as 12 portrait stickers: 3 columns by 4 rows, each sticker 2 by 2.5 inches. These are the white labels for the green attendance cards, not Avery 5160 address labels. - Load no more than one visible Members page at a time. PositiveForm bounds a label run to 25 selected members. ## Steps 1. Open **Members** and use the location, search, and filters to reach the people who need stickers. 2. Check the selection box beside each member. The header checkbox selects all member rows on the current visible page; it does not select staff-only rows or people on another page. 3. Click **Print barcode labels (N)**. The barcode travels in browser memory, not in the page address or browser storage. 4. Review **Preview**. Each eligible sticker shows the Code 128-B barcode, the unique scan code, **Last, First**, and **BLACK BELT CLUB**. Change **Program** to print a different program on every sticker, or edit one sticker's program line in the preview. Member ID and student number stay off the sticker. No email, phone, address, or household contact data is printed. 5. Read **needs attention** before printing. Missing codes, duplicate selected codes, unsupported characters, and values longer than 24 characters are excluded rather than rendered as blank or unreliable stickers. 6. Click **Print calibration sheet** first. Print it on plain US Letter paper, overlay it behind a label sheet, and confirm all 12 outlines align. 7. In the browser print dialog choose **Letter**, **100% scale**, **no margins**, and turn browser headers and footers off. Do not choose Fit to page. 8. Load the label stock in the direction required by the printer, click **Print N labels**, and apply each sticker to the green attendance card. 9. Scan one finished sticker into **Check-in** before printing a large batch; see [Run front-desk check-in](https://positiveform.com/guides/attendance/front-desk-check-in/). ## Printing one member's sticker from their profile You do not need to go through the Members directory selection flow for a single replacement. From the person's own record: 1. Open the member and click **Details**; see [Maintain member profile and notes](https://positiveform.com/guides/members/maintain-member-profile/). Under **Studio**, the **Barcode** row shows the scan value distinct from **Member ID**, rendered as the same Code 128-B symbology used here. A QR code never appears. 2. If the barcode is missing, duplicated, unsupported, or longer than 24 characters, **Print** stays disabled for the same reason this page would give under **needs attention**, until an authorized operator corrects it. 3. To attach a leftover physical card (for example a Spark code such as MS5824584), click **Assign** beside **Barcode**, type the scan code, and save. If that person already has a physical card, check **Replace the current physical card with this code** and save. 4. Click **Print** beside **Barcode**. PositiveForm opens this same barcode-labels page preloaded with just that one member, selected exactly as if you had checked their row in the directory. Continue from step 4 above. ## Expected outcome The browser prints one local Code 128-B sticker for every eligible selected member. The sheet is US Letter with 0.5-inch top and bottom margins, 1.0625-inch left and right margins, and 0.1875-inch gaps between the three 2-inch columns. Sheets break after 12 labels. The Members selection is capped at 25. Printing makes no API write, does not change a barcode, does not check anyone in, and sends no member or barcode data to a print provider. Only the browser and the printer selected in its native print dialog receive the rendered page. ## Recovery If **Print barcode labels** is disabled, select at least one member row and wait for the directory to finish updating. If a member appears under **needs attention**, do not make a sticker for that person. Return to the member record and have an authorized operator correct or associate the operational barcode. For a duplicate, resolve ownership before printing either label. If the calibration outlines do not align, confirm Letter paper, 100% scale, no margins, and disabled headers/footers. Printer-driver scaling must also be off. Repeat the plain-paper overlay before using label stock. If a printed label does not scan, compare the human-readable value with the member's operational barcode, then repeat calibration and print a single test label. You can always return to [Browse and filter people](https://positiveform.com/guides/members/browse-people/) without saving or changing anything. ## Related guides - [Run front-desk check-in](https://positiveform.com/guides/attendance/front-desk-check-in/) — scan the finished member card through the staffed check-in desk. - [Browse and filter people](https://positiveform.com/guides/members/browse-people/) — select a bounded, location-scoped member set. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Create and find a household > PositiveForm guide · Households · HH-001 > Canonical page: https://positiveform.com/guides/households/create-find-household/ > This Markdown: https://positiveform.com/guides/households/create-find-household.md **Summary:** Create a household and find it in the household directory. The new household opens in its People workspace and remains searchable. **Who can do this:** Organization owners, Managers, Staff **Required access:** `members.change` **Where in PositiveForm:** `/households` **Status:** Draft: not yet verified against a deployed PositiveForm build. Labels may differ. > Draft: this guide describes the household profile redesign at docs/plans/2026-08-25-member-profile-redesign, three tabs (Overview, Billing, History) in place of the previous People, Billing, and Settings. It has not yet been replayed against the deployed demo. ## Who this is for This guide is for **desk staff, managers, and owners**. A household is the family. It is what billing attaches to, what siblings share, and what a parent belongs to even when they do not train themselves. Most people get one automatically when they are created as a member; you come here when you need to make one directly, or to find an existing one. You need the `members.change` permission. ## Before you begin - Check the location picker at the top of the console. Households are listed for the selected location. - Consider whether you actually need a new household. Adding somebody as a member creates one for them; creating a second household for the same family is the common mistake, and it splits their billing. ## Steps ### Find a household 1. Click **Households** in the left navigation. The count under the heading tells you how many exist at this location, for example **5 total**. 2. Type into **Search households** to narrow the list by name. 3. Use **All statuses** to include or exclude households that are no longer active. 4. Read the columns: **Name** with its location beneath, **Members**, **Adults**, **Status**, and **Last change**. 5. Click a household to open it. It opens on its **Overview** tab, beside **Billing** and **History**. **Settings** is under **More** on the header. 6. Move through long lists with **Previous** and **Next**; the counter between them shows where you are. ### Create a household 7. Click **Add household**. 8. Give it a name families and staff will recognise, usually the family name. 9. Save it. ## Expected outcome A new household opens on its **Overview** tab, ready for you to add the family; see [Add an existing person to a household](https://positiveform.com/guides/households/add-existing-person/). It is immediately findable: it appears in this list at the selected location, with its member and adult counts, and it can be searched for by name. The household is what a billing profile attaches to, so it is the record you return to when the family starts paying; see [Create a household billing profile](https://positiveform.com/guides/billing/create-billing-profile/). ## Recovery If a household you expect is missing, check the location picker first. The list is scoped to one location, and a family that moved is at the other one. Then clear the search box and set **All statuses**, in case a filter left from earlier is hiding it. If you find two households for the same family, do not delete either until you have looked at both. One of them probably has the billing profile and the history; see [Change or retire a household](https://positiveform.com/guides/households/change-retire-household/) before removing anything. If creating fails, PositiveForm shows the reason and nothing is created. If **Add household** is missing, your role does not carry `members.change`. ## Related guides - [Add an existing person to a household](https://positiveform.com/guides/households/add-existing-person/) — put the family into the household you just made. - [Create a household billing profile](https://positiveform.com/guides/billing/create-billing-profile/) — set up who pays for this household. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Add an existing person to a household > PositiveForm guide · Households · HH-002 > Canonical page: https://positiveform.com/guides/households/add-existing-person/ > This Markdown: https://positiveform.com/guides/households/add-existing-person.md **Summary:** Attach an existing unassigned person to a household. The selected person appears once in the household with the intended household role. **Who can do this:** Organization owners, Managers, Staff **Required access:** `members.change` **Where in PositiveForm:** `/households/:householdId/overview` **Status:** Draft: not yet verified against a deployed PositiveForm build. Labels may differ. > Draft: this guide describes the household profile redesign at docs/plans/2026-08-25-member-profile-redesign. The household opens on Overview, and Add person moved from a People tab into the header. It has not yet been replayed against the deployed demo. ## Who this is for This guide is for **desk staff, managers, and owners** putting somebody who already has a record into a household: a sibling who started separately, a parent added later, or a member whose family you are only now setting up. The point of doing it this way is that it **moves** the existing person rather than making a second copy of them. Their attendance, ranks, and history come with them. You need the `members.change` permission. ## Before you begin - Search for the person first, so you know they already exist. If they do not, create them new instead; see [Create a member](https://positiveform.com/guides/members/create-member/). - Know that PositiveForm only offers people who are not already in a household. Somebody already placed will not appear in the search, which is what stops you putting one person in two families. ## Steps 1. Click **Households** in the left navigation and open the household. It opens on **Overview**, with **People** cards for everybody already in the family. 2. Click **Add person** in the header. 3. Choose **Add existing member**, which moves someone who already has a record into this household. The other choice, **New member**, creates a person from scratch and adds them here. 4. Type at least two characters into **Search by name or email**. Until then PositiveForm says **Start typing to search.**, and while it looks it says **Searching…** 5. Find the person in the results and click **Add** beside them. ## Expected outcome PositiveForm confirms with **Added to household**, and the person's card appears once among **People** on **Overview**, with their role and, if anything is outstanding for them, a required-item count. They are moved, not copied. Their member record, attendance, ranks, and history are unchanged and now sit inside this family, which is what makes shared billing and sibling handling work. The household's member and adult counts update to match. Continue in [Manage household people and safety context](https://positiveform.com/guides/households/manage-household-people/) to set their relationships and emergency contacts, or in [Maintain member profile and notes](https://positiveform.com/guides/members/maintain-member-profile/) to finish their own profile. ## Recovery If the search says **No unassigned members found.**, the person is already in a household. That is the safeguard working. Open their member record to see which household they are in, and move them from there rather than adding a duplicate here. If nothing happens as you type, you have entered fewer than two characters. If adding fails, PositiveForm shows **Couldn't add that person.** with the reason, and nothing changes. If you added the wrong person, remove them from this household; see [Manage household people and safety context](https://positiveform.com/guides/households/manage-household-people/). Removing them from a household does not delete them. If you cannot find somebody who genuinely has no household, check the location picker: you may be looking at a different location's people. ## Related guides - [Manage household people and safety context](https://positiveform.com/guides/households/manage-household-people/) — set relationships, emergency contacts, and remove somebody added by mistake. - [Maintain member profile and notes](https://positiveform.com/guides/members/maintain-member-profile/) — finish the person's own profile once they are in the right family. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Manage household people and safety context > PositiveForm guide · Households · HH-003 > Canonical page: https://positiveform.com/guides/households/manage-household-people/ > This Markdown: https://positiveform.com/guides/households/manage-household-people.md **Summary:** Add or update people, relationships, and emergency contacts in a household. People and informational relationships save without implying billing, portal… **Who can do this:** Organization owners, Managers, Staff **Required access:** `members.change` **Where in PositiveForm:** `/households/:householdId/overview` **Status:** Draft: not yet verified against a deployed PositiveForm build. Labels may differ. > Draft: this guide describes the household profile redesign at docs/plans/2026-08-25-member-profile-redesign. Needs attention is now Required items, People moved onto Overview, and an emergency contact is now recorded on the person's own Details tab rather than here. It has not yet been replayed against the deployed demo. ## Who this is for This guide is for **desk staff, managers, and owners** keeping a family's people correct, and finding who to call in an emergency. Read this part before you start. An emergency contact is **information**, not authority. Recording someone does not let them pay, sign, collect a child, or reach the family portal. Those are separate and are granted elsewhere. Writing "can collect" in a contact record does not make it true in PositiveForm. You need the `members.change` permission. ## Before you begin - Open the right household. Everything here is scoped to this one family. - For an external emergency contact, have their first name, last name, and phone number. All three are required, because a contact you cannot ring is not a contact. - Know that an emergency contact is recorded per person on that person's own **Details** tab, not on the household. The household's **Overview** only shows one as a quick reference. ## Steps ### See who is in the household 1. Click **Households** in the left navigation and open the household. It opens on **Overview**: how many adults and children, how many are enrolled, and the household's billing line. 2. **Required items**, directly under the header, rolls up anything outstanding across the household and its people: a missing waiver, no card on file, an unpaid invoice, or a minor with no parent or guardian linked. Each row names who it is about and offers the action that clears it. The **Overview** tab carries a count badge matching the number of items; it disappears once the list is empty. 3. **People** lists a card for every person in the household: role text for an adult (for example **Father of Davis, step-father of Mia**), rank, class, and last visit, contact for an adult, and that person's own required-item count. Each card links to their profile. 4. The **Household** block summarises location, one emergency contact, the date the household was created, and the latest note. It is a quick reference pulled from elsewhere, not a place to add or edit an emergency contact. ### Add somebody 5. Click **Add person** in the header, then choose **New member** to create a person from scratch, or **Add existing member** to move somebody who already has a record; see [Add an existing person to a household](https://positiveform.com/guides/households/add-existing-person/). ### Record an emergency contact 6. Open the person's own profile and click **Details**; see [Maintain member profile and notes](https://positiveform.com/guides/members/maintain-member-profile/). 7. Under **Emergency**, click **+ Add**. 8. Choose either another adult already in this household, or an external contact. You have to choose one; PositiveForm will not accept neither. 9. For an external contact, fill in their first name, last name, and phone number. 10. Choose the **relationship**. If you pick the "other" option, describe it briefly, so the next person reading it knows who this is. 11. Save the contact. ### Remove somebody 12. Click **Remove** beside the person's card on **Overview**. This takes them out of this household. ## Expected outcome Adding a person confirms with **Adult added** or **Person added** depending on their household role, and their card appears once among **People**. Moving an existing person in confirms with **Added to household**. An emergency contact confirms with **Emergency contact added** and appears on that person's own **Details** tab, so whoever is on the desk can find it against the child rather than having to know the family structure. It may also become the one shown in the household's **Household** summary. Removing confirms with **Removed from household**. It removes them from this family; it does not delete the person, and their attendance, ranks, and history survive. None of this grants authority. A recorded contact cannot pay, sign, or reach the portal on the strength of being listed here. ## Recovery If an external contact is refused, PositiveForm says **An external contact needs a first name, last name, and phone number.** If neither an in-household adult nor an external contact is chosen, it says **Choose a household adult or an external contact.** If you pick the "other" relationship and leave it blank, it says **Briefly describe this relationship.** If saving fails, you get **Couldn't add that emergency contact.** and nothing is recorded. If you removed the wrong person, add them back; see [Add an existing person to a household](https://positiveform.com/guides/households/add-existing-person/). Nothing was deleted. If **Required items** names a waiver, that is an agreement rather than a person problem; see [Manage member agreement completion](https://positiveform.com/guides/households/manage-member-agreements/). ## Related guides - [Add an existing person to a household](https://positiveform.com/guides/households/add-existing-person/) — move somebody who already has a record into this household. - [Manage member agreement completion](https://positiveform.com/guides/households/manage-member-agreements/) — clear the agreements **Required items** is asking about. - [Maintain member profile and notes](https://positiveform.com/guides/members/maintain-member-profile/) — where an emergency contact is now recorded, on the person's own Details tab. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Manage member agreement completion > PositiveForm guide · Households · HH-004 > Canonical page: https://positiveform.com/guides/households/manage-member-agreements/ > This Markdown: https://positiveform.com/guides/households/manage-member-agreements.md **Summary:** Send a signing request or record a safe paper agreement for a household member. The member agreement status reflects the sent or uploaded document without… **Who can do this:** Organization owners, Managers, Staff **Required access:** `members.change` **Where in PositiveForm:** `/households/:householdId/overview` **Status:** Draft: not yet verified against a deployed PositiveForm build. Labels may differ. > Draft: this guide describes the profile redesign at docs/plans/2026-08-25-member-profile-redesign. Needs attention on the household's People tab is now Required items on Overview, and the signing actions live on the member's own Details tab, under Agreements, rather than on a shared household list. It has not yet been replayed against the deployed demo. ## Who this is for This guide is for **desk staff, managers, and owners** getting a family's paperwork signed and on file. There are three ways a member's agreement gets completed, and **Agreements** on the member's own **Details** tab offers all of them: - **Sign here** — the family signs on your device, at the desk, now. - **Request signatures** — PositiveForm emails a signing link they use later. - **Upload** — you scan or photograph paper they already signed. You need the `members.change` permission. ## Before you begin - Publish the agreement first. Nothing can be sent or signed until a published agreement exists; see [Manage agreement templates](https://positiveform.com/guides/agreements/manage-agreement-templates/). - Set the signing sequence if you are sending a packet rather than one document; see [Configure agreement onboarding order](https://positiveform.com/guides/agreements/agreement-onboarding-order/). - For a request, have the signer's email address, usually the parent's. - For an upload, have the signed document as a file, and know who signed it. ## Steps ### Find who is outstanding 1. Click **Households** in the left navigation and open the household. It opens on **Overview**. 2. Read **Required items**. A missing agreement shows as a row naming the person and the agreement, with an action, for example **Add waiver**, that opens their profile. ### Sign, request, or upload 3. Click the action from **Required items**, or open the person directly and click **Details**; see [Maintain member profile and notes](https://positiveform.com/guides/members/maintain-member-profile/). Under **Agreements**, an outstanding one shows **Missing** with an **Add** action; a completed one shows its date with **View**. 4. Click **Add** to choose how it gets completed: - **Sign here** and hand the device to the person signing. - **Request signatures**: choose what to send under **Send**, the configured packet or a single **Agreement** picked from the published ones; under **Covers**, pick the people this signature covers, since one signature can cover more than one child in the family; enter the signer's address under **Send to**, usually a parent's; then send it. PositiveForm emails a signing link, and the signer completes it in their own browser, as described in [Sign a public agreement](https://positiveform.com/guides/agreements/public-agreement-signing/). - **Upload**: choose the file and record who signed it, then upload. ## Expected outcome **Required items** stops naming the person once their agreement is complete, and their row on **Agreements** shows the signed date with **View** instead of **Missing**. Uploading confirms with **Waiver uploaded**. Requesting signatures confirms that the request was created, and the member stays outstanding until the signer actually completes it, which is the honest state rather than an optimistic one. The signed document itself is stored against the member. The status is visible to staff who can see the household; the document is not broadcast more widely than that. ## Recovery If PositiveForm says **Configure the signing sequence first.**, no packet order exists yet; see [Configure agreement onboarding order](https://positiveform.com/guides/agreements/agreement-onboarding-order/). If it says **Pick at least one published agreement.** or **Pick a document.**, choose what to send. A draft agreement cannot be sent; publish it first in [Manage agreement templates](https://positiveform.com/guides/agreements/manage-agreement-templates/). If it says **Pick at least one person.**, choose who the signature covers. If it says **Enter the signer's email address.**, the request has nowhere to go. If it says **Choose a file.**, or names a problem with the file, the upload was refused before it started. The server has the final say on what it accepts, so its message wins over anything the page guessed. If the upload fails, you get **Couldn't upload that waiver.** and nothing is stored. If a family says they signed but the member is still outstanding, check whether the signing link was actually completed. A sent request is not a signature. ## Related guides - [Manage agreement templates](https://positiveform.com/guides/agreements/manage-agreement-templates/) — write and publish the agreement being signed. - [Sign a public agreement](https://positiveform.com/guides/agreements/public-agreement-signing/) — what the family sees when they open the link you sent. - [Maintain member profile and notes](https://positiveform.com/guides/members/maintain-member-profile/) — the Details tab Agreements now lives on. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Change or retire a household > PositiveForm guide · Households · HH-005 > Canonical page: https://positiveform.com/guides/households/change-retire-household/ > This Markdown: https://positiveform.com/guides/households/change-retire-household.md **Summary:** Update, transfer, or retire household context with explicit safeguards. The requested change completes without orphaning people or crossing organization… **Who can do this:** Organization owners, Managers **Required access:** `members.delete` **Where in PositiveForm:** `/households/:householdId/settings` **Status:** Draft: not yet verified against a deployed PositiveForm build. Labels may differ. > Draft: this guide describes the household profile redesign at docs/plans/2026-08-25-member-profile-redesign. Settings is no longer its own tab; it moved under More on the household header. It has not yet been replayed against the deployed demo. ## Who this is for This guide is for an **organization owner or manager**: renaming a family, moving them to another location, or removing a household entirely. These are the household actions that affect everybody in it at once, which is why they need the `members.delete` permission rather than ordinary member access. ## Before you begin - Know that moving a household moves **everyone in it**. It is not a way to move one person. - End, or schedule the end of, any live subscription at the current location before moving. PositiveForm requires it; see [Manage member lifecycle and subscriptions](https://positiveform.com/guides/members/member-lifecycle-subscriptions/). - Before deleting, check what is attached. A household with billing history is almost never something you want to remove. ## Steps 1. Click **Households** in the left navigation, open the household, then click **More** on the header and choose **Settings**. ### Rename, restate, or annotate 2. Edit **Household name**. 3. Set **Status**, for example **Active**. 4. Use **Staff notes** for context colleagues need. These are internal. 5. Click **Save changes**. ### Move the family to another location 6. Read the note under **Home location**. It states what moving does: everyone in the household moves, attendance already taken stays where it happened, and member numbers do not change. 7. Click **Move to another location**. The **Move household** dialog repeats that everyone moves with it, and that a live subscription at the current location has to be ended, or set to end, first. 8. Choose a **New home location**. Only other locations are offered. 9. Click **Move household**. ### Delete the household 10. Scroll to **Delete household** and click it. 11. Confirm. ## Expected outcome Saving confirms with **Household updated**, and the name, status, and notes persist. Moving confirms with **Moved people**, naming how many moved, so you can check the number against the family you expected. The household and everyone in it now sit at the new location, and it appears there in the households list. History does not follow: attendance already taken stays attached to the location where it happened, and member numbers are unchanged. Deleting removes the household. People and history that belong elsewhere are not orphaned by it, and nothing crosses into another organization. ## Recovery If you clear the name and save, PositiveForm refuses with **A household name is required.** If saving fails, you get **Couldn't update that household.** and nothing changes. If the move fails, you get **That household could not be moved.** with the reason. The usual reason is a live subscription at the current location: end it or set it to end, then move again. The household stays where it is meanwhile. If **Move household** stays disabled, you have not chosen a new location yet. If the moved count is not the number you expected, you have moved a different family than you meant to. Check the household name before doing anything else; moving it back is possible but the same subscription rule applies in reverse. If **Settings** is missing from **More**, your role does not carry `members.delete`. Ask an organization owner. ## Related guides - [Create and find a household](https://positiveform.com/guides/households/create-find-household/) — find the household, and check whether a duplicate is the real problem before deleting anything. - [Manage member lifecycle and subscriptions](https://positiveform.com/guides/members/member-lifecycle-subscriptions/) — end or schedule the subscription that is blocking a move. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Create a lead and schedule a trial > PositiveForm guide · Leads and trials · CRM-001 > Canonical page: https://positiveform.com/guides/leads/create-lead-trial/ > This Markdown: https://positiveform.com/guides/leads/create-lead-trial.md **Summary:** Create an inquiry and schedule a program trial. The lead appears in the pipeline with the scheduled trial date and program. **Who can do this:** Organization owners, Managers, Staff **Required access:** `members.change` **Where in PositiveForm:** `/leads/new` **Status:** Verified on 2026-07-29 against PositiveForm build `a15afd7`. ## Who this is for This guide is for **sales staff, managers, and owners** capturing a new inquiry and booking their first trial class. You need permission to change members/leads for the selected location. ## Before you begin - Select the location at the top of the console. New leads are created there. - Have at least a first name. Email, phone, and source help follow-up later. ## Steps 1. Click **Leads** in the left navigation. 2. Open **New lead** (or go to `/leads/new`). The page heading is **New lead**. 3. Fill **First name *** (required). Optionally fill **Last name**, **Email**, and **Phone**. 4. Under **How did this inquiry arrive?**, choose the source from the combobox. 5. Optionally add **Conversation notes**. 6. If a trial is already planned, set the trial date with the date fields or **Show date picker**, and tick the program checkboxes that apply (for example **Youth Martial Arts** or **Little Dragons**). 7. Click **Save lead**. Use **Cancel** to leave without saving. ## Expected outcome The lead appears in the pipeline with any scheduled trial date and program. You can open it from **Leads** or **All leads** and continue follow-up in [Work the lead pipeline](https://positiveform.com/guides/leads/work-lead-pipeline/). ## Screenshots ![New lead form](https://positiveform.com/guides/media/CRM-001/20260730T062500Z/000-start.webp) ![Lead detail after Save lead](https://positiveform.com/guides/media/CRM-001/20260730T062500Z/001-after-save.webp) ![Lead visible on pipeline](https://positiveform.com/guides/media/CRM-001/20260730T062500Z/002-pipeline.webp) ## Recovery If **Save lead** refuses, check **First name *** and location selection. Nothing is created until save succeeds. If you created a duplicate, archive one from [Find and archive leads](https://positiveform.com/guides/leads/find-archive-leads/) rather than deleting history. ## Related guides - CRM-002 - CRM-004 --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Work the lead pipeline > PositiveForm guide · Leads and trials · CRM-002 > Canonical page: https://positiveform.com/guides/leads/work-lead-pipeline/ > This Markdown: https://positiveform.com/guides/leads/work-lead-pipeline.md **Summary:** Move leads through follow-up and trial states and record communication. Pipeline changes, follow-up dates, trial attendance, and communication notes persist… **Who can do this:** Organization owners, Managers, Staff **Required access:** `members.change` **Where in PositiveForm:** `/leads` **Status:** Draft: not yet verified against a deployed PositiveForm build. Labels may differ. > Draft: the exact email preview and test-to-self steps are implemented but still need a deployed-demo replay. The retained screenshot and verification below document the previously deployed workflow. ## Who this is for This guide is for **sales staff** moving leads through follow-up and trial, and recording what was said. ## Before you begin - Select the location. The board only shows leads for that location. - Open from **Leads** for the active board, or **All leads** for the full table. ## Steps 1. Click **Leads**. The pipeline board lists cards such as trials and inquiries with follow-up dates. 2. Optionally narrow with **Stage filter** or date range controls. 3. Click a card (for example a trial with a follow-up date) to open the lead. 4. Use **Edit** / **Save** on fields you change. 5. To email from the lead, fill **Email subject**, **Reason for email**, and **Email message**, then click **Preview email**. Check the final From, To, CC, Reply-To, subject, HTML, and plain-text version. Optionally click **Send test to me**; when the render is correct, click **Send email**. 6. To log an activity, type **What happened?** and click **Log**. 7. When ready to enroll, open **Convert to member** ([Convert a lead](https://positiveform.com/guides/leads/convert-lead/)). 8. Use **Schedule a trial** when the lead needs a trial date, or **End** when the opportunity is closed without conversion. 9. Return via **All leads** or the board as needed. ## Expected outcome Pipeline stage, follow-up dates, trial attendance notes, and communications persist on the same lead. ## Screenshots ![Lead pipeline board with stage filter and lead cards](https://positiveform.com/guides/media/CRM-002/20260729T231500Z/000-start.webp) ## Recovery If a card is missing, check **Stage filter**, dates, and location. If email send fails, keep the draft text and fix the reason or address before retrying. ## Related guides - CRM-001 - CRM-003 - COMMS-001 --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Review a lead record > PositiveForm guide · Leads and trials · CRM-003 > Canonical page: https://positiveform.com/guides/leads/review-lead-detail/ > This Markdown: https://positiveform.com/guides/leads/review-lead-detail.md **Summary:** Open a lead record and review its lifecycle, activity, and safe contact context. The canonical lead route shows permitted details and links to the next action. **Who can do this:** Organization owners, Managers, Staff **Required access:** `organization.membership` **Where in PositiveForm:** `/leads/:leadId` **Status:** Draft: not yet verified against a deployed PositiveForm build. Labels may differ. > Draft: the exact email preview and test-to-self steps are implemented but still need a deployed-demo replay. The retained screenshot and verification below document the previously deployed workflow. ## Who this is for This guide is for **staff** opening one lead to review lifecycle, activity, and next actions. ## Before you begin - Have a lead id from the board or **All leads**, or open a card from [Work the lead pipeline](https://positiveform.com/guides/leads/work-lead-pipeline/). ## Steps 1. Open the lead (from the board, **All leads**, or a deep link `/leads/:leadId`). 2. Review **Overview** for contact and stage context. 3. Open **Trials** for scheduled trial classes. 4. Open **History** for logged activity. 5. Use **Edit** / **Save** for field changes. For outbound mail, choose **Send email**, finish the draft, click **Preview email**, verify the final render, and then click **Send email**. Use **Log** with **What happened?** for notes. 6. When ready, choose **Convert to member** or **End**. ## Expected outcome The canonical lead route shows permitted details and the next action without jumping through unrelated pages. ## Screenshots ![Lead detail with Overview, Trials, History, and actions](https://positiveform.com/guides/media/CRM-003/20260729T235000Z/000-start.webp) ## Recovery If the lead 404s, confirm the id and location. If a tab is empty, that can be normal for a brand-new inquiry. ## Related guides - CRM-002 - CRM-004 --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Convert a lead > PositiveForm guide · Leads and trials · CRM-004 > Canonical page: https://positiveform.com/guides/leads/convert-lead/ > This Markdown: https://positiveform.com/guides/leads/convert-lead.md **Summary:** Convert a lead into a new or deliberately selected returning member. The lead leaves the active pipeline and the resulting member opens without an implicit… **Who can do this:** Organization owners, Managers, Staff **Required access:** `members.change` **Where in PositiveForm:** `/leads/:leadId/convert` **Status:** Verified on 2026-07-29 against PositiveForm build `beb3f3c`. ## Who this is for This guide is for **sales staff** turning a ready lead into a member without an accidental person match. ## Before you begin - The lead should be at the right stage (usually after trial or clear intent). - Decide whether this is a **new** member or a **returning** member you will select deliberately. ## Steps 1. Open the lead and click **Convert to member** (route `/leads/:leadId/convert`). The heading is **Convert to member**. 2. Choose one: - **Create new member** (default): makes a new household/person without matching prior data. - **Reactivate existing member**: only after you find and select a returning member on purpose. 3. Set **Program enrollment** if the form requires it. 4. Confirm age with **This person is 18 or older** when applicable, or complete date of birth fields for a minor. 5. Click **Create member and enroll**. 6. Use **Back to lead** if you need to cancel. ## Expected outcome The lead leaves the active pipeline and the resulting member opens. No implicit person match is invented for you. ## Screenshots ![Convert to member with create/reactivate choices](https://positiveform.com/guides/media/CRM-004/20260729T232500Z/000-start.webp) ## Recovery If create fails, read the form error and fix required fields. Do not switch to **Reactivate** unless you have selected the correct existing member. ## Related guides - CRM-003 - MEM-001 --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Find and archive leads > PositiveForm guide · Leads and trials · CRM-005 > Canonical page: https://positiveform.com/guides/leads/find-archive-leads/ > This Markdown: https://positiveform.com/guides/leads/find-archive-leads.md **Summary:** Use recent or complete lead tables and archive or restore a lead. Search and status filters retain context and archived leads leave the active pipeline… **Who can do this:** Organization owners, Managers, Staff **Required access:** `members.change` **Where in PositiveForm:** `/leads/all` **Status:** Verified on 2026-07-29 against PositiveForm build `beb3f3c`. ## Who this is for This guide is for **staff** searching the full lead table and archiving or restoring leads without deleting history. ## Before you begin - Prefer the **Lead board** for day-to-day work; use **All leads** when you need search across stages. ## Steps 1. From **Leads**, open **All leads** (heading **All leads**). 2. Type into **Search leads** to narrow by name or contact. 3. Use **Stage filter**, and **Active** / **Archived** toggles as needed. 4. Sort with column headers such as **Name**, **Created**, or **Last activity**. 5. Page with **Previous** and **Next**. 6. Open a lead name to review it, or use **Actions for …** on a row to archive or restore without destroying the record. 7. Return to **Lead board** or **Recent leads** when finished. ## Expected outcome Search and status filters keep context. Archived leads leave the active pipeline without deleting history. ## Screenshots ![All leads table with search, stage filter, and actions](https://positiveform.com/guides/media/CRM-005/20260729T233000Z/000-start.webp) ## Recovery If results look empty, clear search and set **Active**, then confirm location. If you archived the wrong lead, restore it from the **Archived** view. ## Related guides - CRM-002 - CRM-003 --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Create a program > PositiveForm guide · Programs and schedules · PROG-001 > Canonical page: https://positiveform.com/guides/programs/create-program/ > This Markdown: https://positiveform.com/guides/programs/create-program.md **Summary:** Create a reusable program and open its operational workspace. The inactive program is created at a stable program route with clear setup actions. **Who can do this:** Organization owners, Managers, Staff **Required access:** `members.change` **Where in PositiveForm:** `/programs` **Status:** Verified on 2026-07-29 against PositiveForm build `40f78fa`. ## Who this is for This guide is for **desk staff, managers, and owners** setting up a class, course, or camp. The page states the order it expects: create the offering first, then configure its people and schedule when ready. You are not asked for everything at once, and a program with no schedule and no roster is a normal state to leave it in. You need the `members.change` permission. ## Before you begin - Select the location the program runs at, using the picker at the top of the console. A program belongs to a location, and creating one without a location selected is refused. - Have a name families will recognise. Everything else can wait. ## Steps 1. Click **Programs** in the left navigation. The list shows each program with its **Location**, **Status**, **Members**, **Schedule**, **Progression**, and an **Actions** menu. 2. Click **Create program**. **Create a program** opens. 3. Fill in **Program name**. 4. Use **Description (optional)** if it helps staff tell similar programs apart. 5. Save it. ## Expected outcome The program is created at the selected location and opens at its own stable route, which is what you can bookmark or send to a colleague. It starts with nothing configured, and the workspace says so rather than hiding it: **Next meetings** is empty until a schedule exists, **Action items** offers **Assign staff** and **Enroll member**, and **Pricing** reads **No plans yet.** In the programs list it shows **Not scheduled** with **No program dates** until you add class times. That is accurate rather than a warning. Continue in [Manage program schedules](https://positiveform.com/guides/programs/manage-program-schedule/) to give it class times, or [Manage program lifecycle](https://positiveform.com/guides/programs/manage-program-lifecycle/) to set its status, dates, and progression. ## Screenshots ![The Programs list, with Create program and the Location, Status, Members, Schedule, and Progression columns](https://positiveform.com/guides/media/PROG-001/20260729T041000Z/001-programs-list.webp) ## Recovery If saving is refused with **A program name and location are required.**, either the name is blank or no location is selected. The location comes from the picker at the top of the console rather than from the dialog, which is the part people miss. If the program was created with the wrong name, rename it on its **Settings** tab; see [Manage program lifecycle](https://positiveform.com/guides/programs/manage-program-lifecycle/). Do not create a second one. If you meant to copy an existing program rather than start fresh, duplicating is faster and carries the schedule, staff, and tags across; see [Duplicate a program](https://positiveform.com/guides/programs/duplicate-program/). ## Related guides - [Manage program schedules](https://positiveform.com/guides/programs/manage-program-schedule/) — give the program its class times. - [Manage program lifecycle](https://positiveform.com/guides/programs/manage-program-lifecycle/) — set its status, start and end dates, and advancement progression. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Manage program schedules > PositiveForm guide · Programs and schedules · PROG-002 > Canonical page: https://positiveform.com/guides/programs/manage-program-schedule/ > This Markdown: https://positiveform.com/guides/programs/manage-program-schedule.md **Summary:** Create or edit recurring and one-time program meetings and meeting notes. The schedule and date-specific staff notes persist in the program settings context. **Who can do this:** Organization owners, Managers, Staff **Required access:** `members.change` **Where in PositiveForm:** `/programs/:slug/schedule/new` **Status:** Verified on 2026-07-29 against PositiveForm build `2463703`. ## Who this is for This guide is for **desk staff, managers, and owners** setting when a program actually meets. There are two kinds of schedule, and picking the right one saves work: - **Weekly** for a class that repeats, for example every Monday and Wednesday at 4:30. - A one-time session for a one-off, for example a seminar on a single date. Separately from either, you can leave a **staff note on one specific date**, for example "belt gradings tonight" or "no class, public holiday", without touching the recurring pattern. Those notes live on an existing schedule rather than on the form that creates one. You need the `members.change` permission. ## Before you begin - Know the start and end time. Both are required; a class with no end time cannot be scheduled. - For a weekly schedule, know which weekdays it runs. - Remember the program's location time zone decides what these times mean; see [Maintain or retire a location](https://positiveform.com/guides/locations/maintain-location/) if that is not what you expect. ## Steps ### Add a schedule 1. Open the program and click **Manage schedule**. **Add a schedule** opens, for creating a repeating class or a one-time session. 2. Use **Label (optional)** to name it, for example `After school`. This is how staff tell two schedules on the same program apart. 3. Choose a **Schedule type**. **Weekly** repeats; the other option is for a one-time session. 4. For a weekly schedule, pick the **Days**. You can pick several at once, or **All**, and the page says what that does: choosing multiple days creates one schedule for each day. 5. Set **Start** and **End**. 6. Choose **Expected staff (optional)** if you know who normally runs this sitting. This is per schedule, and is separate from the program's assigned staff in [Assign program staff and operating notes](https://positiveform.com/guides/programs/program-staff-notes/). 7. Use **Internal staff note (optional)** for anything staff should see about this schedule. 8. Click **Add schedule**, or **Cancel** to back out. ### Change an existing schedule 9. Open the schedule from the program. It opens as **Edit schedule**. 10. The fields are the same with one difference: **Day** is singular here, and the page says why. Each weekly schedule belongs to one day, so the multiple day picker exists only when creating. 11. Click **Save schedule**. ### Leave a note on one date Meeting notes live on an existing schedule, not on the form that creates one, so create the schedule first. 12. On **Edit schedule**, scroll to **Meeting notes**, which holds date-specific staff reminders for individual class occurrences. With none recorded it reads **No date-specific notes yet.** 13. Choose a **Meeting date** and write a **Staff note**, for example a birthday or a one-time detail. 14. Click **Add meeting note**. To change one later, use **Edit** beside it, which turns the button into **Save meeting note**; **Cancel edit** backs out. 15. Use **Delete** beside a note to remove it. You are asked to confirm. ## Expected outcome The schedule persists on the program, and the program workspace reflects it immediately: **Next meetings** lists the next three scheduled class times with their date, time, label, and whether they repeat. In the programs list, the program stops reading **Not scheduled** and starts showing its dates. A meeting note is attached to that one date. It does not change the recurring pattern, and it does not create or cancel a class; it is a note staff see against that day. Scheduled times are what attendance is taken against; see [Record bulk attendance](https://positiveform.com/guides/attendance/bulk-attendance/). ## Screenshots ![Add a schedule, with the label, schedule type, multiple day picker, times, expected staff, and internal note](https://positiveform.com/guides/media/PROG-002/20260729T053000Z/001-add-schedule.webp) ![Edit schedule, where Day is singular and Meeting notes holds the date-specific reminders](https://positiveform.com/guides/media/PROG-002/20260729T053000Z/002-edit-schedule-meeting-notes.webp) ## Recovery If saving is refused with **Choose both a start and end time.**, one of the two is empty. For a weekly schedule, **Choose at least one weekday.** means no days are selected. For an ad hoc schedule, **Choose the date for an ad hoc schedule.** means the date is missing. For a meeting note, **Choose a date and add the staff note.** means one of the two is blank. A note with no text is not a note. If a note will not delete, PositiveForm says **Could not delete meeting note** and it stays. If the class times look wrong by a fixed number of hours, the program's location time zone is not what you assumed. Fix it on the location rather than shifting every schedule; see [Maintain or retire a location](https://positiveform.com/guides/locations/maintain-location/). ## Related guides - [Create a program](https://positiveform.com/guides/programs/create-program/) — create the program these times belong to. - [Record bulk attendance](https://positiveform.com/guides/attendance/bulk-attendance/) — take attendance against the scheduled meetings. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Manage program lifecycle > PositiveForm guide · Programs and schedules · PROG-003 > Canonical page: https://positiveform.com/guides/programs/manage-program-lifecycle/ > This Markdown: https://positiveform.com/guides/programs/manage-program-lifecycle.md **Summary:** Activate, update, or end a program deliberately. The program status and settings persist and the UI explains roster effects. **Who can do this:** Organization owners, Managers, Staff **Required access:** `members.change` **Where in PositiveForm:** `/programs/:slug/settings` **Status:** Verified on 2026-07-29 against PositiveForm build `40f78fa`. ## Who this is for This guide is for **desk staff, managers, and owners** deciding what a program is called, when it runs, whether it is currently offered, and which belt system it feeds. The thing worth knowing before you change anything: **an inactive program keeps its roster**. Members can even be planned into one. Making a program inactive stops it being offered; it does not unenroll anybody. You need the `members.change` permission. ## Before you begin - Know the difference between ending a program and making it inactive. Ending is a date; inactive is a status. Neither removes members. - If you are changing the **URL slug**, know that it is what the program's address is built from, so existing links stop working. ## Steps 1. Open the program and click the **Settings** tab. 2. Edit **Program name**. 3. Check the **URL slug**. It is used in the friendly program URL and must be unique within your organization. 4. Use **Description (optional)** for context staff need. 5. Add **Program tags (optional)** from your reusable tag list, for example `Summer Camp` or `Homeschool Group`. The page says what they are for: they are staff labels and **do not limit who can join** the program. 6. Set **Status**, for example **Active**. 7. Set **Starts on (optional)** and **Ends on (optional)** if the program runs for a defined period. 8. Choose an **Advancement progression (optional)** to link the belt or level system this program feeds. A progression can be reused by several programs, and rank changes stay auditable testing work rather than happening silently here. 9. Save the settings. ## Expected outcome The settings persist and the program workspace header reflects them: the name, the status, the location, and the member and schedule counts. Changing status changes what is offered, not who is enrolled. An inactive program keeps its roster and still appears in the programs list with its member count. Members can be planned into an inactive program, which is how you set up next term before it opens. Setting a progression links the program to that belt system without promoting anybody. Rank changes remain testing work with their own record. To see who is enrolled after a lifecycle change, use the enrollment queue; see [Manage the enrollment queue](https://positiveform.com/guides/enrollment/manage-enrollment-queue/). ## Screenshots ![Program settings, with the name, slug, tags, status, dates, and advancement progression](https://positiveform.com/guides/media/PROG-003/20260729T041500Z/001-program-settings.webp) ## Recovery If the slug is refused, another program in this organization already uses it. Slugs are unique per organization; pick a different one. If saving fails, PositiveForm shows the reason and your edits stay on screen. If you changed the slug and links now break, change it back. The address is built from the slug, so an old bookmark or a link you sent a colleague points at the previous one. If you made a program inactive expecting the roster to clear, it has not, and that is deliberate. Change the enrollments themselves in [Manage the enrollment queue](https://positiveform.com/guides/enrollment/manage-enrollment-queue/). If tags are not narrowing who can enrol, they are not meant to. The page says so: tags are reusable staff labels. ## Related guides - [Manage program schedules](https://positiveform.com/guides/programs/manage-program-schedule/) — set or change when the program meets. - [Manage the enrollment queue](https://positiveform.com/guides/enrollment/manage-enrollment-queue/) — change who is on the roster, which a status change does not do. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Duplicate a program > PositiveForm guide · Programs and schedules · PROG-004 > Canonical page: https://positiveform.com/guides/programs/duplicate-program/ > This Markdown: https://positiveform.com/guides/programs/duplicate-program.md **Summary:** Duplicate a program configuration with an explicit choice about active members. An inactive copy opens with the selected safe configuration and no accidental… **Who can do this:** Organization owners, Managers, Staff **Required access:** `members.change` **Where in PositiveForm:** `/programs/:slug/overview` **Status:** Verified on 2026-07-29 against PositiveForm build `40f78fa`. ## Who this is for This guide is for **desk staff, managers, and owners** setting up next term, a second time slot, or the same class at a different level. Duplicating carries the setup across so you are not retyping it. The copy **always starts inactive**, which is the safeguard: nothing you duplicate can accidentally start being offered or charged for before you have checked it. You need the `members.change` permission. ## Before you begin - Decide whether you want the roster. By default the copy has no members, and you can choose to bring the active ones across. - Know what does not come with it: history never does, and neither do waitlisted, inactive, or withdrawn records. ## Steps 1. Open the program you want to copy. 2. Click **Duplicate**. The dialog is titled **Duplicate ** and states what it does: copy this program's setup into a new one, with members and history not copied. 3. Read what the copy includes: program details, schedule, staff, tags, and training groups. It always starts inactive. 4. Decide about **Include active members**. Ticking it copies the current active roster; waitlisted, inactive, and withdrawn records stay with the original. Leave it clear for a genuinely fresh intake. 5. Click **Duplicate program**. ## Expected outcome PositiveForm confirms with **Inactive program copy created** and opens the copy. The copy has the original's details, schedule, staff, tags, and training groups, and it is **inactive**. It is not offered, not charged for, and not on anyone's list of current classes until you activate it in [Manage program lifecycle](https://positiveform.com/guides/programs/manage-program-lifecycle/). The original is untouched. Duplicating never changes the program you copied from, whether or not you brought members across. If you ticked **Include active members**, the copy has the active roster; those members are now enrolled in both, which is what you want for a continuing class and not what you want for a new intake. ## Screenshots ![The program workspace, with Duplicate beside Enroll, Check in, and Manage schedule](https://positiveform.com/guides/media/PROG-004/20260729T042500Z/001-program-overview.webp) ## Recovery If duplicating fails, PositiveForm shows **Could not duplicate program** and nothing is created. If you copied members and did not mean to, remove them from the copy's roster rather than deleting the program, in case you have already configured it; see [Manage the enrollment queue](https://positiveform.com/guides/enrollment/manage-enrollment-queue/). If you did not copy members and needed them, duplicating again is cleaner than adding them by hand, provided you have not configured the first copy yet. If the copy is not appearing where you expect, check the programs list's status filter. A copy is inactive, so a list showing only active programs hides it. Nothing is charged by duplicating. Pricing plans are configured separately; see [Manage program pricing plans](https://positiveform.com/guides/programs/program-pricing-plans/). ## Related guides - [Create a program](https://positiveform.com/guides/programs/create-program/) — start from nothing instead, when the new program shares little with an existing one. - [Manage program lifecycle](https://positiveform.com/guides/programs/manage-program-lifecycle/) — activate the copy once it is right. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Assign program staff and operating notes > PositiveForm guide · Programs and schedules · PROG-005 > Canonical page: https://positiveform.com/guides/programs/program-staff-notes/ > This Markdown: https://positiveform.com/guides/programs/program-staff-notes.md **Summary:** Assign teaching staff and maintain operating notes for a program. Assigned staff and notes remain visible in the program workspace. **Who can do this:** Organization owners, Managers **Required access:** `members.change` **Where in PositiveForm:** `/programs/:slug/staff` **Status:** Verified on 2026-07-29 against PositiveForm build `40f78fa`. ## Who this is for This guide is for an **owner or manager** recording who usually runs a program. Assigning somebody here says who teaches it. It does not change what they can do in PositiveForm: permissions come from their roles and direct grants, and they apply across the organization regardless of which programs they are on. See [Manage staff access](https://positiveform.com/guides/staff/manage-staff-access/) for access. ## Before you begin - The people you are assigning need staff records already; see [Invite staff](https://positiveform.com/guides/staff/invite-staff/). - Know that this is about who normally runs it, not who is rostered on a specific date. Date-specific detail belongs in a meeting note; see [Manage program schedules](https://positiveform.com/guides/programs/manage-program-schedule/). ## Steps 1. Open the program and click the **Staff** tab. It reads **Assigned staff**, for the staff who usually run or support this program. 2. Tick each person who runs or supports it. Everyone with a staff record at your organization is listed. 3. Click **Save staff**. You can also reach this from the program **Overview**, where **Action items** offers **Assign staff** while nobody is assigned yet. ## Expected outcome The assigned staff persist on the program and stay visible in its workspace, so anyone opening the program can see who runs it without asking. The assignment also shows on each person's own profile, under **Teaches**; see [Maintain a staff profile](https://positiveform.com/guides/staff/maintain-staff-profile/). It is the same fact viewed from the other side, not a copy. Nothing about their access changes. Assigning somebody to a program does not grant a permission, and removing them does not take one away. ## Screenshots ![The Staff tab, listing the staff who can be assigned to run this program](https://positiveform.com/guides/media/PROG-005/20260729T042000Z/001-program-staff.webp) ## Recovery If saving fails, PositiveForm shows the reason and the assignment is unchanged. If somebody you expect is not listed, they have no staff record at this organization yet; see [Invite staff](https://positiveform.com/guides/staff/invite-staff/). If an assigned instructor cannot do something you expected them to, this is not the place to fix it. Check their roles and direct grants in [Manage staff access](https://positiveform.com/guides/staff/manage-staff-access/). If you need to record who is covering one specific class, do not change the assignment. Leave a meeting note on that date instead; see [Manage program schedules](https://positiveform.com/guides/programs/manage-program-schedule/). ## Related guides - [Maintain a staff profile](https://positiveform.com/guides/staff/maintain-staff-profile/) — the same assignment seen from the person's profile, under **Teaches**. - [Manage program schedules](https://positiveform.com/guides/programs/manage-program-schedule/) — record a one-off change with a date-specific staff note. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Manage program pricing plans > PositiveForm guide · Programs and schedules · PROG-006 > Canonical page: https://positiveform.com/guides/programs/program-pricing-plans/ > This Markdown: https://positiveform.com/guides/programs/program-pricing-plans.md **Summary:** Attach or create program plans, choose a default, and archive obsolete plans. The plan catalog changes without enrolling or charging anyone. **Who can do this:** Organization owners, Managers **Required access:** `billing.manage` **Where in PositiveForm:** `/programs/:slug/overview` **Status:** Verified on 2026-07-29 against PositiveForm build `40f78fa`. ## Who this is for This guide is for an **owner or manager** with the `billing.manage` permission, setting what this program costs. The critical property: **building the plan catalog charges nobody**. Adding a plan here makes it available to choose. Money only moves when a household subscription is created against it; see [Create a household subscription](https://positiveform.com/guides/billing/create-household-subscription/). If **Add plan** is not on the page, your role does not carry `billing.manage`. ## Before you begin - Connect billing first. Plans reference real prices, so the Stripe connection needs to be in place; see [Configure billing policies and catalog](https://positiveform.com/guides/billing/billing-setup/). - Decide whether you are reusing a price you already have or creating a new one. Reusing keeps your catalog tidy and your reporting consistent. ## Steps 1. Open the program. On **Overview**, find **Pricing**, which lists the recurring plans available for this program. With none set up it reads **No plans yet. Add pricing for this program.** 2. Click **Add plan**. 3. Choose **Attach existing** to reuse a price you already have, then pick it under **Existing price**. 4. Or choose **Create new**, then fill in: - **Plan name**, for example `Kids Taekwondo Membership`. This is what staff see when choosing a plan. - **Amount**, for example `150.00`. - **Billed**: **Monthly** or **Yearly**. 5. Click **Add plan**. 6. Set a plan as the default if this program has an obvious usual choice. 7. Archive a plan you no longer sell. ## Expected outcome PositiveForm confirms with **Plan added**, and the plan appears under **Pricing** as available for this program. Nobody is enrolled and nobody is charged. The catalog is a list of what a family *could* be signed up to; the charge happens when a household subscription is created against a plan. Setting a default confirms with **Default plan updated** and only changes which plan is preselected. Archiving confirms with **Plan archived** and stops the plan being offered for new subscriptions; it does not cancel subscriptions already using it, and it does not stop those families being billed. ## Screenshots ![The Pricing card on the program workspace, offering Add plan](https://positiveform.com/guides/media/PROG-006/20260729T043000Z/001-program-pricing.webp) ## Recovery If adding fails, PositiveForm shows the reason and no plan is created. If the default will not change, you get **Could not update the default plan.** and the previous default stands. If archiving fails, you get **Could not archive this plan.** and it stays available. If you archived a plan families are still paying on, they keep being billed. Archiving controls what can be *sold* next, not what is already sold; change those subscriptions at the household. If **Existing price** offers nothing, you have no prices yet. Use **Create new**, or set up billing first; see [Configure billing policies and catalog](https://positiveform.com/guides/billing/billing-setup/). If you added a plan at the wrong amount, archive it and add the correct one rather than editing a price families may already be on. ## Related guides - [Create a household subscription](https://positiveform.com/guides/billing/create-household-subscription/) — the step that actually charges a family, using a plan from this catalog. - [Configure billing policies and catalog](https://positiveform.com/guides/billing/billing-setup/) — connect billing before any of this works. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Add a member to a program roster > PositiveForm guide · Program enrollment · ENR-001 > Canonical page: https://positiveform.com/guides/enrollment/add-program-roster-member/ > This Markdown: https://positiveform.com/guides/enrollment/add-program-roster-member.md **Summary:** Add an existing member to an active program roster. The member appears once on the program roster with the selected status. **Who can do this:** Organization owners, Managers, Staff **Required access:** `members.change` **Where in PositiveForm:** `/programs/:slug/members` **Status:** Verified on 2026-07-29 against PositiveForm build `40f78fa`. ## Who this is for This guide is for **desk staff, managers, and owners** putting somebody into a class. Two things the page tells you that are worth taking at face value: - **Members can be planned into inactive programs.** You can build next term's roster before the program opens. - **No capacity rule blocks this roster.** PositiveForm will not stop you at a number. If a class is full, the waitlist is how you say so. Enrolling somebody does **not** charge them. Money is a household subscription; see [Manage member lifecycle and subscriptions](https://positiveform.com/guides/members/member-lifecycle-subscriptions/). You need the `members.change` permission. ## Before you begin - The person needs a member record; see [Create a member](https://positiveform.com/guides/members/create-member/). - Decide whether they are joining the roster now or waiting for a spot. ## Steps 1. Open the program and click the **Members** tab. It reads **Current program enrollment and roster status**. 2. Search for the person. The page is explicit that **nobody is selected until you pick them**, so a name in the box on its own does nothing. 3. Pick them from the results. 4. Choose the status they join with: on the roster now, or on the waitlist. 5. If they already have a current program, choose **Add this program** or **Change programs**. Change programs asks which current program to stop. 6. Read **Before you confirm**. It answers whether this replaces another enrollment, adds to another, changes billing, or enrolls anyone else in the household. 7. Finish with **Review price & enroll** when billing should start, or **Enroll without billing instead** / **Enroll member** for roster-only. You can also start this from the program **Overview** with **Enroll**, or from **Action items** while the roster is empty. ## Expected outcome PositiveForm confirms with **Member added**, or **Member waitlisted** if they are waiting for a spot, and they appear **once** on the roster. The roster table shows them with their **Status**, the date **Enrolled**, any **Scheduled end**, and an **Actions** menu. The program header's active member count updates to match. Roster-only enroll does not charge. If you continue to price review, that is the household subscription; the two stay separate until you confirm there. To change their status later, or to work across programs, use the enrollment queue; see [Manage the enrollment queue](https://positiveform.com/guides/enrollment/manage-enrollment-queue/). ## Screenshots ![The program Members tab, stating that members can be planned into inactive programs, that no capacity rule blocks the roster, and that nobody is selected until you pick them](https://positiveform.com/guides/media/ENR-001/20260729T043500Z/001-program-members.webp) ## Recovery If nothing happens when you click **Add member**, you have typed a name but not picked anybody. The page warns about exactly this: a search is not a selection. If the person is not in the results, they have no member record at this location yet; see [Create a member](https://positiveform.com/guides/members/create-member/). If somebody is on the roster twice, they were added under two enrollments rather than one changing status. Take one off in [Manage the enrollment queue](https://positiveform.com/guides/enrollment/manage-enrollment-queue/) rather than leaving both. If you added them to the wrong program, change their status to withdrawn on the wrong one and add them to the right one. Withdrawing records that they left, which is more honest than deleting the trace. If a family says they were charged for a class they are not in, or not charged for one they are, that is the household subscription rather than this roster; see [Manage member lifecycle and subscriptions](https://positiveform.com/guides/members/member-lifecycle-subscriptions/). ## Related guides - [Manage the enrollment queue](https://positiveform.com/guides/enrollment/manage-enrollment-queue/) — change roster status, across every program at once. - [Manage member lifecycle and subscriptions](https://positiveform.com/guides/members/member-lifecycle-subscriptions/) — the billing side, which this does not touch. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Manage the enrollment queue > PositiveForm guide · Program enrollment · ENR-002 > Canonical page: https://positiveform.com/guides/enrollment/manage-enrollment-queue/ > This Markdown: https://positiveform.com/guides/enrollment/manage-enrollment-queue.md **Summary:** Search and filter program enrollments and schedule or cancel an end. The queue retains its URL-backed filters and shows the resulting active, waitlisted… **Who can do this:** Organization owners, Managers, Staff **Required access:** `members.change` **Where in PositiveForm:** `/enrollments` **Status:** Verified on 2026-07-29 against PositiveForm build `2463703`. ## Who this is for This guide is for **desk staff, managers, and owners** working across every program at once: filling spots from the waitlist, moving people between classes, and recording who has left. The page states its own boundary at the top: this is **the operational roster across your studio, and billing is managed separately at the household**. Nothing you do here charges or refunds anybody. You need the `members.change` permission. ## Before you begin - Know which of the four statuses you mean. PositiveForm spells out the consequence of each before you confirm, and the difference matters at check-in. - Know that only **withdrawn** is treated as strong. The others are ordinary changes you can reverse. ## Steps 1. Click **Enrollment** in the left navigation. The page opens as **Program enrollment**. 2. Narrow the list with the controls across the top: - **Find a member** to search by name. - **All programs** to focus on one class. - The status filter, which opens on **Active**. - **All member records** to include or exclude people who are no longer current members. 3. Read the columns: **Member** with their member status beneath, **Program**, **Status**, **Enrolled**, **Ended**, and **Manage**. 4. Click **Manage** beside somebody to change their roster status. Choose one of: - **Make active** — rejoins the active roster and is expected at check-in again. - **Move to waitlist** — leaves the active roster and waits for a spot; not expected at check-in until made active again. - **Mark inactive** — leaves the active roster and is not expected at check-in. - **Withdraw from program** — off the roster and no longer expected at any of its check-ins. This is the strongest status here and records that they left. 5. Read the consequence PositiveForm shows, then confirm. The first three say plainly that they can be changed back at any time. 6. Move through long lists with **Previous** and **Next**. ## Expected outcome PositiveForm confirms by naming the person and what changed, for example that they are now active, now on the waitlist, now inactive, or have been withdrawn. The row updates to the new status, and the program's active member count follows. Somebody made active is expected at check-in again; somebody waitlisted, inactive, or withdrawn is not. Your filters are held in the page address, so the queue you are working through survives opening a member and coming back, and can be handed to a colleague. Nothing is charged, refunded, or cancelled. A family who stops attending keeps being billed until their household subscription changes; see [Manage member lifecycle and subscriptions](https://positiveform.com/guides/members/member-lifecycle-subscriptions/). ## Screenshots ![Program enrollment, with its filters, the roster columns, and Manage](https://positiveform.com/guides/media/ENR-002/20260729T045500Z/001-enrollment-queue.webp) ## Recovery If somebody is missing, check the status filter first. It opens on **Active**, so anyone waitlisted, inactive, or withdrawn is hidden until you widen it. Then check **All programs** and **All member records**. If you see **This enrollment changed while the confirmation was open. Review the roster and try again.**, somebody else changed the same enrollment while your dialog was open. Nothing was applied. Close it, look at the current state, and decide again. If you are asked to **Choose the last day of the subscription.**, an end date is required for what you selected. If you withdrew somebody by mistake, make them active again. Withdrawn is the strongest status but not irreversible; it records that they left, and the record of that stays, which is the point. If a family complains about being charged after leaving, look at the household membership rather than this queue. This page is the roster; it does not move money. ## Related guides - [Add a member to a program roster](https://positiveform.com/guides/enrollment/add-program-roster-member/) — put somebody on a roster in the first place. - [Manage member lifecycle and subscriptions](https://positiveform.com/guides/members/member-lifecycle-subscriptions/) — stop the billing that a roster change does not touch. - [Manage program lifecycle](https://positiveform.com/guides/programs/manage-program-lifecycle/) — change the program itself, which does not change who is enrolled. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Manage agreement templates > PositiveForm guide · Agreements and waivers · AGR-001 > Canonical page: https://positiveform.com/guides/agreements/manage-agreement-templates/ > This Markdown: https://positiveform.com/guides/agreements/manage-agreement-templates.md **Summary:** Create, preview, publish, unpublish, or archive member agreement templates. Template lifecycle and signing order are explicit and published content remains… **Who can do this:** Organization owners, Managers, Staff **Required access:** `members.change` **Where in PositiveForm:** `/settings/agreements/templates` **Status:** Verified on 2026-07-29 against PositiveForm build `2ac7ef8`. ## Who this is for This guide is for whoever owns the studio's paperwork: an **owner**, a **manager**, or **staff** with the `members.change` permission. An agreement template is the document families sign. It has a lifecycle you can see on the page: **Draft** while you write it, **Published** once families can sign it, and **Archived** when you retire it. The property that matters is that published content is **versioned**. Editing a published agreement produces a new version rather than rewriting the one people already signed, so what somebody agreed to stays what they agreed to. ## Before you begin - Have the wording ready, or be prepared to draft it here. - Know that only a **published** agreement can be sent or signed. A draft cannot be requested from a family. - Know that archiving does not invalidate signatures already collected. ## Steps 1. Click **Settings** in the left navigation, then **Member agreements**, then the **Agreement templates** tab. With none set up it reads **No agreement templates** and invites you to create one. 2. Click **New agreement**. 3. Give it a title families will recognise, and write the content. 4. Save it. It stays a **Draft** until you publish it, and each template shows its version number and when it last changed. 5. Publish it when the wording is right. It moves under **Published**, and only then can it be sent or signed. 6. To change a published agreement, edit it and publish again. That creates a new version; signatures already collected stay attached to the version that was signed. 7. To retire one, archive it. It moves under **Archived** and stops being offered for new signatures. ## Expected outcome The templates page groups agreements by where they are in their lifecycle: drafts you are still writing, **Published** ones families can sign, and **Archived** ones you have retired. Each shows a version number and the date it last changed. A published agreement becomes available everywhere signatures are collected, including the **Request signatures** and **Sign here** actions on a household; see [Manage member agreement completion](https://positiveform.com/guides/households/manage-member-agreements/). Publishing a new version does not alter what anyone has already signed. That is the reason it versions rather than editing in place. ## Screenshots ![Agreement templates with none created, reading No agreement templates](https://positiveform.com/guides/media/AGR-001/20260729T033000Z/001-agreement-templates.webp) ## Recovery If an agreement does not appear when you try to send one, check it is published rather than still a draft. A draft is invisible to the sending flow on purpose. If you archived one families still need, unarchive or republish it. Signatures collected before archiving are unaffected either way. If you published wording with a mistake, fix it and publish again rather than trying to undo. The corrected version applies to future signatures, and the earlier one stays attached to the people who signed it, which is what you want if anyone ever asks what they agreed to. If saving or publishing fails, PositiveForm shows the reason and the template is unchanged. ## Related guides - [Manage member agreement completion](https://positiveform.com/guides/households/manage-member-agreements/) — send a published agreement to a family, or record one they signed on paper. - [Sign a public agreement](https://positiveform.com/guides/agreements/public-agreement-signing/) — what the signer sees when they open the link. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Configure agreement onboarding order > PositiveForm guide · Agreements and waivers · AGR-002 > Canonical page: https://positiveform.com/guides/agreements/agreement-onboarding-order/ > This Markdown: https://positiveform.com/guides/agreements/agreement-onboarding-order.md **Summary:** Choose which published agreements are required and their signing order. The onboarding packet order saves and is reflected in member signing status. **Who can do this:** Organization owners, Managers, Staff **Required access:** `members.change` **Where in PositiveForm:** `/settings/agreements` **Status:** Verified on 2026-07-29 against PositiveForm build `2ac7ef8`. ## Who this is for This guide is for an **owner**, **manager**, or **staff** member with the `members.change` permission, deciding what a new family signs and in what order. Most studios ask for more than one document. Rather than sending them one at a time, you set a **signing sequence** once: the packet a new family works through from start to finish. ## Before you begin - Publish the agreements first. The sequence is built from published templates, and the page says **Create an agreement first.** until at least one exists; see [Manage agreement templates](https://positiveform.com/guides/agreements/manage-agreement-templates/). - Decide the order deliberately. It is the order families meet the documents in, so put the one that explains the others first. ## Steps 1. Click **Settings** in the left navigation, then **Member agreements**. The page opens with **Send agreements**, **Stored agreements**, and **Agreement templates** across the top. 2. Find **Signing sequence**. Until you publish it, it is marked **Draft**. 3. Add the published agreements a new family should sign, and arrange them in the order you want them met. 4. Click **Preview flow** to walk through it the way a family will. Do this before publishing: the order reads differently from the family's side than it does from a list. 5. Publish the sequence when it is right. ## Expected outcome The sequence saves and, once published, becomes the packet offered wherever signatures are requested. Choosing to send the packet on a household sends these documents, in this order; see [Manage member agreement completion](https://positiveform.com/guides/households/manage-member-agreements/). A member's signing status then reflects the whole packet rather than one document, so a family who has signed two of three reads as outstanding, which is the honest state. While the sequence is still a **Draft**, it is not offered for sending. That is what stops a half-built packet reaching a family. ## Screenshots ![Member agreements, with the Signing sequence marked Draft and Create an agreement first.](https://positiveform.com/guides/media/AGR-002/20260729T033500Z/001-agreement-onboarding.webp) ## Recovery If the page says **Create an agreement first.**, there are no published agreements to sequence; see [Manage agreement templates](https://positiveform.com/guides/agreements/manage-agreement-templates/). If sending a packet reports **Configure the signing sequence first.**, the sequence exists but is not published. Publish it. If a family is signing documents in an order that confuses them, use **Preview flow** to see what they see, then reorder. Changing the sequence does not invalidate signatures already collected. If saving fails, PositiveForm shows the reason and the sequence is unchanged. ## Related guides - [Manage agreement templates](https://positiveform.com/guides/agreements/manage-agreement-templates/) — publish the agreements this sequence is assembled from. - [Manage member agreement completion](https://positiveform.com/guides/households/manage-member-agreements/) — send the published packet to a family. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Sign a public agreement > PositiveForm guide · Agreements and waivers · AGR-003 > Canonical page: https://positiveform.com/guides/agreements/public-agreement-signing/ > This Markdown: https://positiveform.com/guides/agreements/public-agreement-signing.md **Summary:** Review and sign an active agreement link without staff-console access. The signature is recorded once and the signer sees a safe completion or recovery state. **Who can do this:** Agreement signers (public link) **Required access:** `public` **Where in PositiveForm:** `/w/:linkId` **Status:** Verified on 2026-07-30 against PositiveForm build `5dab2df`. ## Who this is for This guide is for a parent, guardian, or adult participant opening a studio's agreement link or scanning its front-desk QR code. Required access: none. The signing page is public and does not ask you to sign in or create an account. ## Before you begin - Use the current link or QR code supplied by the studio. A disabled or replaced link cannot accept a signature. - Have an email address the studio can use if it needs to follow up about the agreement. - Know which students the agreement covers. Leave the student field blank when you are signing only for yourself. - Read the agreement before completing the signature fields. ## Steps 1. Open the studio's agreement link or scan its QR code. The page identifies the studio and agreement above the full document. 2. Read the agreement, then enter **Your name** and **Your email**. 3. In **Student name(s)**, list everyone the agreement covers. Leave this field blank if you are signing for yourself. 4. Review **Sign by typing your name**. PositiveForm copies **Your name** into this field automatically; correct it if the legal signature should differ. 5. Read and select the agreement checkbox. **Agree and sign** becomes available only after the required details and this attestation are present. 6. Select **Agree and sign** once. Wait until the page says **Signed**, names the agreement and who it covers, and says the device can be handed back or the page closed. ## Expected outcome PositiveForm records one public signing submission and shows **Signed** without requiring a staff or family account. The studio receives the submission as unmatched so staff can associate it with the right member during reconciliation. ## Screenshots ![A public agreement ready for the signer details and attestation](https://positiveform.com/guides/media/AGR-003/20260730T074500Z/000-agreement-ready.webp) ![The Signed confirmation after a public agreement is submitted](https://positiveform.com/guides/media/AGR-003/20260730T074500Z/002-signed-confirmation.webp) ## Recovery - If the page says **This signing link isn't active**, ask the front desk for a current QR code or link. The old link cannot be repaired from the signing page. - If it says **Too many requests right now**, wait a minute and scan or open the link again. - If **Your email** is rejected, correct it before trying to sign. The studio uses this address for agreement follow-up. - If **Agree and sign** is unavailable, complete your name and email, make sure the typed signature is present, and select the agreement checkbox. - If the page already says **Signed**, do not submit again. The signature was recorded; hand the device back or close the page. - If submission fails without reaching **Signed**, keep the page open and ask the front desk to confirm whether the signature arrived before retrying. ## Related guides - [Manage member agreement completion](https://positiveform.com/guides/households/manage-member-agreements/) — how studio staff review a member's outstanding and completed agreements. - [Manage agreement templates](https://positiveform.com/guides/agreements/manage-agreement-templates/) — how studio staff publish the agreement shown on this page. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Create a household billing profile > PositiveForm guide · Billing · BILL-001 > Canonical page: https://positiveform.com/guides/billing/create-billing-profile/ > This Markdown: https://positiveform.com/guides/billing/create-billing-profile.md **Summary:** Create a billing profile for an eligible household adult. A default billing profile is created for the selected adult without creating a payment instrument. **Who can do this:** Organization owners, Managers, Staff **Required access:** `billing.manage` **Where in PositiveForm:** `/households/:householdId/billing` **Status:** Verified on 2026-07-29 against PositiveForm build `beb3f3c`. ## Who this is for This guide is for **staff, managers, and owners** attaching billing to a household so subscriptions and charges have a place to land. You need billing/members change access for the selected location. ## Before you begin - Open the household that will pay. ## Steps 1. Open **Households** and select the family. 2. Open the **Household billing** tab. 3. If no profile exists, start **Create billing profile** (or the equivalent empty-state action). 4. Enter the payer details the form requires and save. 5. Confirm the household billing workspace shows the new profile instead of the empty state. ## Expected outcome The household has a billing profile ready for subscriptions and charges. ## Screenshots ![Household billing profile workspace](https://positiveform.com/guides/media/BILL-001/20260729T230000Z/000-start.webp) ## Recovery If save fails, read the on-page error and correct required fields. Do not create a second profile for the same household without checking the first. ## Related guides - BILL-002 - BILL-003 --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Review household billing > PositiveForm guide · Billing · BILL-002 > Canonical page: https://positiveform.com/guides/billing/review-household-billing/ > This Markdown: https://positiveform.com/guides/billing/review-household-billing.md **Summary:** Review billing profiles, subscriptions, invoices, and payment setup state for one household. Billing records remain grouped under the correct household with… **Who can do this:** Organization owners, Managers, Staff **Required access:** `billing.manage` **Where in PositiveForm:** `/households/:householdId/billing` **Status:** Verified on 2026-07-29 against PositiveForm build `beb3f3c`. ## Who this is for This guide is for **staff, managers, and owners** reading a household’s billing status, subscriptions, and open items. ## Before you begin - Select the location and open the household. - A billing profile may already exist ([Create a household billing profile](https://positiveform.com/guides/billing/create-billing-profile/)). ## Steps 1. Open the household from **Households**. 2. Open the **Household billing** tab. 3. Review the profile summary, subscriptions, and recent activity shown on the page. 4. Use links from this tab to create a subscription or return to studio billing operations when needed. ## Expected outcome You can answer whether the household can be charged, what subscriptions exist, and what needs attention. ## Screenshots ![Household billing review](https://positiveform.com/guides/media/BILL-002/20260729T221000Z/000-start.webp) ## Recovery If the tab is empty, create a profile first. If data fails to load, retry from the household before changing anything. ## Related guides - BILL-001 - BILL-003 - BILL-004 --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Create a household subscription > PositiveForm guide · Billing · BILL-003 > Canonical page: https://positiveform.com/guides/billing/create-household-subscription/ > This Markdown: https://positiveform.com/guides/billing/create-household-subscription.md **Summary:** Create an individual or shared household subscription from a reviewed plan. The subscription is created for the selected members with the reviewed price and… **Who can do this:** Organization owners, Managers, Staff **Required access:** `billing.manage` **Where in PositiveForm:** `/households/:householdId/billing/subscriptions/new` **Status:** Verified on 2026-07-29 against PositiveForm build `beb3f3c`. ## Who this is for This guide is for **staff, managers, and owners** starting a subscription on a household billing profile. ## Before you begin - The household should have a billing profile ([Create a household billing profile](https://positiveform.com/guides/billing/create-billing-profile/)). - Know which program and plan the subscription uses. ## Steps 1. Open the **Household billing** tab. 2. Choose **Create subscription** / open `/billing/subscriptions/new` for that household. 3. Select the program, plan, and members covered. 4. Save and confirm the subscription appears on household billing. ## Expected outcome A subscription record is attached to the household billing profile and ready for billing operations. ## Screenshots ![Create household subscription](https://positiveform.com/guides/media/BILL-003/20260729T221500Z/000-start.webp) ## Recovery If required fields are missing, complete them before saving. If the profile is missing, create it first. ## Related guides - BILL-001 - PROG-006 - MEM-004 --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Review and reconcile billing operations > PositiveForm guide · Billing · BILL-004 > Canonical page: https://positiveform.com/guides/billing/billing-operations/ > This Markdown: https://positiveform.com/guides/billing/billing-operations.md **Summary:** Review operational billing queues and request reconciliation. The selected queue, filters, and reconciliation result are visible without entering provider… **Who can do this:** Organization owners, Managers, Staff **Required access:** `billing.manage` **Where in PositiveForm:** `/billing` **Status:** Verified on 2026-07-29 against PositiveForm build `beb3f3c`. ## Who this is for This guide is for **staff, managers, and owners** using the studio **Billing** workspace to review operations across households. ## Before you begin - Select the location at the top of the console. ## Steps 1. Click **Billing** in the left navigation. 2. Review the operations overview, queues, and filters available on the page. 3. Open household or item links when you need detail. 4. Use related actions for one-off charges, reviews, or approvals when those queues show work. ## Expected outcome You can reconcile studio-level billing activity without guessing which household is involved. ## Screenshots ![Billing operations workspace](https://positiveform.com/guides/media/BILL-004/20260729T220000Z/000-start.webp) ## Recovery If the page fails to load, confirm location selection and retry. Empty queues are normal when nothing is pending. ## Related guides - BILL-002 - BILL-006 - BILL-007 --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Create and refund one-off charges > PositiveForm guide · Billing · BILL-005 > Canonical page: https://positiveform.com/guides/billing/one-off-charges-refunds/ > This Markdown: https://positiveform.com/guides/billing/one-off-charges-refunds.md **Summary:** Charge a reviewed one-off item and refund or void an eligible invoice. The charge, refund, or void records the recipient, amount, actor, and resulting invoice… **Who can do this:** Organization owners, Managers **Required access:** `billing.manage` **Where in PositiveForm:** `/billing` **Status:** Verified on 2026-07-29 against PositiveForm build `beb3f3c`. ## Who this is for This guide is for **staff, managers, and owners** posting one-off charges or refunds from studio billing. ## Before you begin - Know the household and reason for the charge or refund. ## Steps 1. Open **Billing**. 2. Start a one-off charge or refund action from the operations workspace. 3. Select the household/profile, amount, and reason fields the form requires. 4. Confirm the result in the operations list. ## Expected outcome The one-off charge or refund is recorded and visible in billing operations. ## Screenshots ![Billing operations for one-off charges](https://positiveform.com/guides/media/BILL-005/20260729T222000Z/000-start.webp) ## Recovery If the action is refused, read the on-page reason (permissions, missing profile, invalid amount). Do not double-submit. ## Related guides - BILL-004 - BILL-008 --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Resolve billing reviews > PositiveForm guide · Billing · BILL-006 > Canonical page: https://positiveform.com/guides/billing/resolve-billing-review/ > This Markdown: https://positiveform.com/guides/billing/resolve-billing-review.md **Summary:** Add context, resolve, dismiss, or route a billing review to an owner. The review records the decision and leaves a visible audit trail. **Who can do this:** Organization owners, Managers **Required access:** `billing.manage` **Where in PositiveForm:** `/billing/reviews/:id` **Status:** Draft: not yet verified against a deployed PositiveForm build. Labels may differ. > Draft: demo has no open billing review item. Route /billing/reviews/:id needs a real id from studio billing queues. Do not publish without a headed run against a synthetic review/approval on demo. ## Who this is for Staff, managers, and owners resolving billing reviews or approvals. ## Before you begin - An item must exist in the corresponding billing queue. ## Steps 1. Open **Billing**. 2. Open the review or approval item. 3. Take the decision action shown and confirm the outcome. ## Expected outcome The item leaves the queue in the decided state. ## Recovery If the item is missing, return to billing operations and refresh filters. ## Related guides - BILL-004 - BILL-007 --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Approve billing changes > PositiveForm guide · Billing · BILL-007 > Canonical page: https://positiveform.com/guides/billing/approve-billing-change/ > This Markdown: https://positiveform.com/guides/billing/approve-billing-change.md **Summary:** Approve or decline a high-impact billing change. The decision and note are recorded exactly once and the request leaves the waiting queue. **Who can do this:** Studio owners, Organization owners **Required access:** `billing.approve` **Where in PositiveForm:** `/billing/approvals/:id` **Status:** Draft: not yet verified against a deployed PositiveForm build. Labels may differ. > Draft: demo has no open billing approval item. Route /billing/approvals/:id needs a real id from studio billing queues. Do not publish without a headed run against a synthetic review/approval on demo. ## Who this is for Staff, managers, and owners resolving billing reviews or approvals. ## Before you begin - An item must exist in the corresponding billing queue. ## Steps 1. Open **Billing**. 2. Open the review or approval item. 3. Take the decision action shown and confirm the outcome. ## Expected outcome The item leaves the queue in the decided state. ## Recovery If the item is missing, return to billing operations and refresh filters. ## Related guides - BILL-006 - BILL-008 --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Configure billing policies and catalog > PositiveForm guide · Billing · BILL-008 > Canonical page: https://positiveform.com/guides/billing/billing-setup/ > This Markdown: https://positiveform.com/guides/billing/billing-setup.md **Summary:** Configure schedules, approval policy, discounts, and one-off items. Customer-facing billing configuration saves without exposing or changing platform… **Who can do this:** Organization owners, Managers **Required access:** `billing.manage` **Where in PositiveForm:** `/settings/billing` **Status:** Verified on 2026-07-29 against PositiveForm build `beb3f3c`. ## Who this is for This guide is for **owners and managers** configuring studio billing settings. ## Before you begin - You need settings access for the organization. ## Steps 1. Open **Settings**, then **Billing** (`/settings/billing`). 2. Review policies and catalog controls on the page. 3. Update the settings you intend to change and save. 4. Return to **Billing** operations to confirm customer-facing effects when relevant. ## Expected outcome Studio billing configuration matches the policies you set. ## Screenshots ![Billing settings](https://positiveform.com/guides/media/BILL-008/20260729T230500Z/000-start.webp) ## Recovery If save fails, keep the form open and correct the fields named in the error. ## Related guides - BILL-004 - BILL-005 - INT-001 --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Manage the studio subscription > PositiveForm guide · Billing · BILL-009 > Canonical page: https://positiveform.com/guides/billing/studio-subscription/ > This Markdown: https://positiveform.com/guides/billing/studio-subscription.md **Summary:** Choose a PositiveForm plan and open billing self-service. The owner sees current usage and can enter the hosted checkout or billing portal for the… **Who can do this:** Studio owners, Organization owners **Required access:** `organization.owner` **Where in PositiveForm:** `/settings/subscription` **Status:** Verified on 2026-07-29 against PositiveForm build `beb3f3c`. ## Who this is for This guide is for **organization owners** managing the PositiveForm studio subscription. ## Before you begin - You need owner access for the organization. ## Steps 1. Open **Settings**, then **Subscription** (`/settings/subscription`). 2. Review the current plan and status. 3. Use the available actions to change plan, update payment method, or open the billing portal as shown. 4. Confirm the page reflects the new state after any change. ## Expected outcome You can see and manage the studio’s PositiveForm subscription from settings. ## Screenshots ![Studio subscription settings](https://positiveform.com/guides/media/BILL-009/20260729T223000Z/000-start.webp) ## Recovery If the portal or plan change fails, stay on the page and retry after confirming network connectivity. Contact PositiveForm support if the plan state looks wrong for a live studio. ## Related guides - ONB-001 --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Configure a progression > PositiveForm guide · Advancement and ranks · ADV-001 > Canonical page: https://positiveform.com/guides/advancement/configure-progression/ > This Markdown: https://positiveform.com/guides/advancement/configure-progression.md **Summary:** Create or edit a progression from a supported template. The progression and rank visuals persist and become available to member advancement workflows. **Who can do this:** Organization owners, Managers **Required access:** `members.change` **Where in PositiveForm:** `/settings/progressions` **Status:** Verified on 2026-07-29 against PositiveForm build `fe1de72`. ## Who this is for This guide is for **organization owners and managers** who define belt or level sequences before staff review readiness or run testing events. You need the `members.change` permission. ## Before you begin - Decide whether you are creating a new progression or reviewing one that already exists. - Progressions live under **Settings › Progressions**. ## Steps 1. Open **Settings**, then **Progressions** (or use **Configure progressions** from the Advancement page). 2. Read the list of existing progressions. Each row offers **Review progression** and, when allowed, **Duplicate**. 3. Click **New progression** to start a new sequence (or expand creation options if the button toggles them). 4. Choose a template or blank builder, name the progression, and define the ordered ranks. 5. Save. Return to the Progressions list and open **Review progression** to confirm the ranks and draft or active state. 6. Use **Duplicate** when you need a variation without rebuilding from scratch. ## Expected outcome A progression is available for Advancement readiness and for testing events. Staff can choose it on **Advancement** and when scheduling a testing day. ## Screenshots ![Progressions settings list with New progression](https://positiveform.com/guides/media/ADV-001/20260729T204000Z/000-start.webp) ## Recovery If **New progression** is missing, your role cannot manage progressions. If the list is empty for a non-manager, wait until an owner creates one; the empty state explains that progressions appear once staff create them. If save fails, stay on the builder, fix the named fields, and try again before leaving. ## Related guides - [Review advancement readiness](https://positiveform.com/guides/advancement/review-advancement/) — review who is ready to advance. - [Schedule a testing event](https://positiveform.com/guides/testing/schedule-testing-event/) — schedule testing against a progression. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Review advancement readiness > PositiveForm guide · Advancement and ranks · ADV-002 > Canonical page: https://positiveform.com/guides/advancement/review-advancement/ > This Markdown: https://positiveform.com/guides/advancement/review-advancement.md **Summary:** Filter members by progression and review who is ready for the next rank. The roster and readiness filters show the intended location, program, rank, and… **Who can do this:** Organization owners, Managers, Staff **Required access:** `organization.membership` **Where in PositiveForm:** `/advancement` **Status:** Verified on 2026-07-29 against PositiveForm build `fe1de72`. ## Who this is for This guide is for **staff, managers, and owners** who filter the member list by progression and readiness before recording a promotion. You need membership access to open Advancement. Recording still needs `members.change` ([Record member advancement](https://positiveform.com/guides/advancement/record-advancement/)). ## Before you begin - A progression must exist ([Configure a progression](https://positiveform.com/guides/advancement/configure-progression/)). - Select the location you are reviewing. ## Steps 1. Click **Advancement** in the left navigation. 2. Choose the progression in the progression control (for example **Striking Belts**). 3. Optionally search with **Search members**. 4. Narrow with **All ranks**, **Active only** (or other status), **Filter by program**, and age bounds when needed. 5. Select the members you intend to advance. Use page-level select when the list supports selecting everyone on the page. 6. Click **Review next →** to open the review step with your selection. ## Expected outcome You have a filtered, selected cohort ready for the advancement review screen, where ranks are confirmed before they are saved. ## Screenshots ![Advancement board with progression and filters](https://positiveform.com/guides/media/ADV-002/20260729T204500Z/000-start.webp) ## Recovery If the board tells you to configure a progression first, complete [Configure a progression](https://positiveform.com/guides/advancement/configure-progression/). If no members match, clear filters and search, or confirm the progression and location. If **Review next** fails to prepare, refresh the list and try again; do not assume ranks changed. ## Related guides - [Configure a progression](https://positiveform.com/guides/advancement/configure-progression/) — maintain progressions. - [Record member advancement](https://positiveform.com/guides/advancement/record-advancement/) — record the promotion. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Record member advancement > PositiveForm guide · Advancement and ranks · ADV-003 > Canonical page: https://positiveform.com/guides/advancement/record-advancement/ > This Markdown: https://positiveform.com/guides/advancement/record-advancement.md **Summary:** Preview and confirm advancement for selected members. The confirmation records the new ranks once and member history reflects the change. **Who can do this:** Organization owners, Managers, Staff **Required access:** `members.change` **Where in PositiveForm:** `/advancement/review` **Status:** Verified on 2026-07-29 against PositiveForm build `a15afd7`. ## Who this is for This guide is for **staff, managers, and owners** confirming the next ranks for members selected on Advancement. You need the `members.change` permission. ## Before you begin - Start from [Review advancement readiness](https://positiveform.com/guides/advancement/review-advancement/) so the review screen has a prepared selection. Opening `/advancement/review` with no selection returns you to Advancement. - Confirm the progression and target ranks before saving. ## Steps 1. Open **Advancement** in the left navigation. 2. Select the members to advance (row **Select …** checkboxes, or **Select all** when appropriate). 3. Click **Review next →**. The review screen lists each member with current and next rank. 4. Click **Advance** (or **Advance N members**). 5. Confirm in the dialog (**Advance N members**). Cancel leaves ranks unchanged. 6. When the save finishes you return to Advancement with ranks updated. ## Expected outcome Selected members receive the recorded ranks once; member history reflects the change. ## Screenshots ![Advancement selection](https://positiveform.com/guides/media/ADV-003/20260730T065500Z/000-start.webp) ![Review next with selected members](https://positiveform.com/guides/media/ADV-003/20260730T065500Z/002-review.webp) ![Confirm Advance dialog](https://positiveform.com/guides/media/ADV-003/20260730T065500Z/003-confirm-dialog.webp) ![Advancement after save](https://positiveform.com/guides/media/ADV-003/20260730T065500Z/004-after-save.webp) ## Recovery If review is empty, return to Advancement and prepare a selection first. If the confirm dialog is dismissed, no ranks change; open **Review next →** again when ready. ## Related guides - [Review advancement readiness](https://positiveform.com/guides/advancement/review-advancement/) — build the review selection. - [Run and finish testing](https://positiveform.com/guides/testing/run-testing-event/) — award ranks through a testing event. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Schedule a testing event > PositiveForm guide · Testing events · TEST-001 > Canonical page: https://positiveform.com/guides/testing/schedule-testing-event/ > This Markdown: https://positiveform.com/guides/testing/schedule-testing-event.md **Summary:** Schedule a testing event with eligibility, fee, location, and notes. The event opens at a stable route with the reviewed date, eligibility, and fee. **Who can do this:** Organization owners, Managers, Staff **Required access:** `members.change` **Where in PositiveForm:** `/testing` **Status:** Verified on 2026-07-29 against PositiveForm build `a15afd7`. ## Who this is for This guide is for **staff, managers, and owners** scheduling a testing day against a progression. You need the `members.change` permission. ## Before you begin - Configure at least one progression ([Configure a progression](https://positiveform.com/guides/advancement/configure-progression/)). - Choose the location and date for the test. ## Steps 1. Click **Testing events** in the left navigation. 2. Review the list and filters (**Progression filter**, **Status filter**, dates) if you are looking for an existing day first. 3. Click **New event** to open **Schedule a testing event**. 4. Name the event, set the scheduled date and time, and choose a **Progression**. 5. Save. Confirm **Testing event created** (or equivalent success). 6. Open the new event when you are ready to build the roster ([Run and finish testing](https://positiveform.com/guides/testing/run-testing-event/)). ## Expected outcome A testing event appears in the list with its progression and status (for example **Scheduled**), ready for roster work. ## Screenshots ![Testing events list](https://positiveform.com/guides/media/TEST-001/20260730T032500Z/000-start.webp) ## Recovery If creation requires a progression and none exist, open **Settings › Progressions** first. If filters hide everything, reset status and progression filters. Empty states distinguish “no events yet” from “no matches.” ## Related guides - [Run and finish testing](https://positiveform.com/guides/testing/run-testing-event/) — run the roster and finish testing. - [Configure a progression](https://positiveform.com/guides/advancement/configure-progression/) — progression setup. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Run and finish testing > PositiveForm guide · Testing events · TEST-002 > Canonical page: https://positiveform.com/guides/testing/run-testing-event/ > This Markdown: https://positiveform.com/guides/testing/run-testing-event.md **Summary:** Register candidates, record results, and finish a testing event. Roster and fee state are explicit, results persist, and finishing the event prevents… **Who can do this:** Organization owners, Managers, Staff **Required access:** `members.change` **Where in PositiveForm:** `/testing/:eventId/roster` **Status:** Verified on 2026-07-30 against PositiveForm build `5dab2df`. ## Who this is for This guide is for **staff, managers, and owners** running a scheduled testing day: building the roster, recording results, and finishing the event. You need the `members.change` permission. ## Before you begin - Schedule a testing event first ([Schedule a testing event](https://positiveform.com/guides/testing/schedule-testing-event/)). - Know which progression and candidates belong on the roster. ## Steps 1. Open **Testing events** and select the scheduled event. 2. Open the **Roster** tab. 3. Under **Add candidates**, search members and click **Register**. Each row shows the member's current rank and the rank they would test for, such as `White Belt` to `Orange Belt`. 4. In the **Roster** section, record each candidate's result with **Pass**, **Fail**, or **Absent**. The selected result stays highlighted, and **Remove** takes a candidate off the roster. 5. Click **Finish testing** when the day is complete. The confirmation names how many students it promotes and how many did not pass, and warns that finishing cannot be undone. Click **Finish testing** in the dialog to confirm. ## Expected outcome The event's badge changes to **Completed**, and the roster shows the final result for each candidate, such as a **Passed** badge. A notice explains that the event is finished and results are final and reflected in each member's advancement. Registration, result, and remove controls are no longer offered, so the finished event cannot be edited by accident. ## Screenshots ![Roster with candidates to add](https://positiveform.com/guides/media/TEST-002/20260730T191500Z/000-start.webp) ![Candidate registered on the roster](https://positiveform.com/guides/media/TEST-002/20260730T191500Z/001-candidate-registered.webp) ![Pass result recorded](https://positiveform.com/guides/media/TEST-002/20260730T191500Z/002-result-recorded.webp) ![Finish testing confirmation](https://positiveform.com/guides/media/TEST-002/20260730T191500Z/003-finish-confirmation.webp) ![Finished event with final results](https://positiveform.com/guides/media/TEST-002/20260730T191500Z/004-event-finished.webp) ## Recovery If the roster shows **This page hit an error**, use **Try again** or **Reload**, then reopen the event from **Testing events**. Report a product defect if it persists. If you registered the wrong member, click **Remove** on their roster row before finishing. Results and promotions become final once the event is finished, so review the confirmation's promotion count before confirming. ## Related guides - [Schedule a testing event](https://positiveform.com/guides/testing/schedule-testing-event/) — schedule the day. - [Record member advancement](https://positiveform.com/guides/advancement/record-advancement/) — record promotions outside a testing event. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Work the conversation inbox > PositiveForm guide · Communications · COMMS-001 > Canonical page: https://positiveform.com/guides/communications/conversation-inbox/ > This Markdown: https://positiveform.com/guides/communications/conversation-inbox.md **Summary:** Review, assign, mark, and reply to customer conversations. Replies and assignment/read state are recorded on the correct tenant conversation with safe… **Who can do this:** Organization owners, Managers, Staff **Required access:** `email.direct.send` **Where in PositiveForm:** `/inbox` **Status:** Draft: not yet verified against a deployed PositiveForm build. Labels may differ. > Draft: headed Staff A opens Inbox with filters All, Unread, Triage, Unassigned, and Mine. No customer conversation thread was available to open and reply or assign in this run, so full workflow evidence is still incomplete. Surface screenshots: COMMS-001 headed run. ## Who this is for Staff working inbound conversations for the active studio. You need `email.direct.send` (and a connected email channel). ## Before you begin - Email connection setup when needed ([Connect and verify Resend](https://positiveform.com/guides/integrations/resend-connection/)). ## Steps 1. Open **Inbox** (`/inbox`). 2. Use filters: **All**, **Unread**, **Triage**, **Unassigned**, **Mine**. 3. Adjust **Unread notification frequency** when needed. 4. Open a conversation from the **Conversations** list. 5. Assign, mark, or **Reply by email**, then confirm the thread reflects the change. ## Expected outcome Replies and assignment/read state land on the correct tenant conversation. ## Screenshots ![Inbox filters](https://positiveform.com/guides/media/COMMS-001/20260730T072500Z/000-start.webp) ![Inbox after filter pass](https://positiveform.com/guides/media/COMMS-001/20260730T072500Z/001-filters.webp) ## Recovery If the list is empty, confirm the email connection and that traffic has arrived. Filters can hide open work; try **All**. ## Related guides - [Connect and verify Resend](https://positiveform.com/guides/integrations/resend-connection/) — email connection. - [Review a lead record](https://positiveform.com/guides/leads/review-lead-detail/) — lead context. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Manage the tag catalog > PositiveForm guide · Tags · TAG-001 > Canonical page: https://positiveform.com/guides/tags/manage-tags/ > This Markdown: https://positiveform.com/guides/tags/manage-tags.md **Summary:** Create, rename, merge, or archive reusable tags. Tag changes preserve member assignments and leave an audit trail. **Who can do this:** Organization owners, Managers **Required access:** `tags.manage` **Where in PositiveForm:** `/settings/tags` **Status:** Verified on 2026-07-29 against PositiveForm build `beb3f3c`. ## Who this is for This guide is for **authorized staff** creating, renaming, merging, or archiving reusable tags used on people and households. ## Before you begin - Open **Settings › Tags** (`/settings/tags`). - Prefer merge over delete when two tags mean the same thing, so member assignments stay coherent. ## Steps 1. Open **Settings**, then **Tags**. The heading is **Tags**. 2. Use **Filter tags** to find a tag by name. 3. To add a tag, click **Add tag** to open the form, fill the name field (for example **Leadership**) and optional **Description**, then click **Create tag**. The form stays open so you can add several in a row; **Cancel** closes it. For a list you already have, use **Create many**. 4. The catalog is listed by name. Click a column heading (**Favorite**, **Tag**, or **Members**) to sort by it, and click the same heading again to reverse the direction. Clicking **Favorite** twice puts your starred tags on top. 5. Click the star on a row to add or remove a studio favorite. The row keeps its place in the list until you change the sort. 6. Use **Actions for …** on a row for rename, archive, or other row actions. 7. To merge duplicates, tick rows with **Select …** (or **Select all visible tags**), then use **Merge selected** in the bar that appears above the table. **Delete selected** is in the same bar. 8. Page long catalogs with **Previous** and **Next**. ## Expected outcome Tag changes preserve member assignments and leave an audit trail. The catalog list reflects the new names and selections. ## Screenshots ![Tags catalog with filter, add tag, and row actions](https://positiveform.com/guides/media/TAG-001/20260729T234000Z/000-start.webp) ## Recovery If merge is disabled, select at least two tags. If the bulk bar is missing, nothing is selected yet. If a tag seems missing, clear **Filter tags**, check the sort you have applied, and check archived rows if your studio uses them. ## Related guides - MEM-002 --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Review parents and guardians > PositiveForm guide · Parents and guardians · PEOPLE-001 > Canonical page: https://positiveform.com/guides/people/parents-guardians-directory/ > This Markdown: https://positiveform.com/guides/people/parents-guardians-directory.md **Summary:** Find household adults who are not direct members. The directory shows permitted identity context and links to the correct household. **Who can do this:** Organization owners, Managers, Staff **Required access:** `organization.membership` **Where in PositiveForm:** `/people/adults` **Status:** Verified on 2026-07-29 against PositiveForm build `9096f81`. ## Who this is for This guide is for **any staff member**: owners, managers, and front-desk staff who need to find the adult attached to a household, usually to answer a question or to reach a parent. These are household adults who are **not** direct members themselves. Someone who trains with you appears as a member, not here, and an adult who both trains and is a parent appears in both places with the relationship shown. You need membership in the organization. What contact details you can see depends on your access. ## Before you begin - Know what you are looking for: a name, an email, or a phone number. All three are searchable. - Know that this is a directory, not a place to edit. Changes belong on the household record. ## Steps 1. Click **People** in the left navigation, then open **Parents & guardians**. 2. Read the columns: **Adult**, **Location**, **Relationships**, and **Status**. - **Adult** shows the person's name with their contact details underneath, or **No contact details** when none are on file. - **Relationships** shows one chip per connection. A parent who does not train shows **Adult** alone; someone who is both a household adult and a member shows **Adult** and **Member** side by side. - **Status** shows **active** for a current member, or **not a member** for a parent or guardian who only appears through their household. 3. Type into **Search name, email, or phone** to narrow the list. Your search stays in the page address, so you can return to it or share it. 4. Click a person to open their operational record, where their contact information and household role are changed. ## Expected outcome The directory lists the household adults you are permitted to see, with the identity context your access allows, and each row opens the correct household record. Contact details shown here are the ones on file. A blank is a genuine blank, not something hidden from you, unless your role does not carry the contact-information permission, in which case those details do not appear at all. Nothing on this page changes a record. It is a way to find the right person and get to the place where their details are maintained. ## Screenshots ![The Parents & guardians directory, with the Adult, Location, Relationships, and Status columns](https://positiveform.com/guides/media/PEOPLE-001/20260729T012000Z/001-adults-directory.webp) ![A search that matches nothing, showing No adults match this search.](https://positiveform.com/guides/media/PEOPLE-001/20260729T012000Z/003-adults-no-match.webp) ## Recovery If a search returns **No adults match this search.**, widen it. The search covers name, email, and phone, so a partial name is often better than a full one, and a misremembered email finds nothing. If the page reads **No household adults yet.**, no adult has been added to any household at this location. Add the household first; see [Create and find a household](https://positiveform.com/guides/households/create-find-household/). If someone you expect is missing, check that you are working in the right location using the location picker at the top, and that they are actually a household adult rather than a member in their own right; members are in [Browse and filter people](https://positiveform.com/guides/members/browse-people/). If contact details are missing for everyone, your role does not carry the contact-information permission. Ask an organization owner. ## Related guides - [Create and find a household](https://positiveform.com/guides/households/create-find-household/) — create the household an adult belongs to. - [Browse and filter people](https://positiveform.com/guides/members/browse-people/) — find someone who trains with you rather than a household contact. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Invite staff > PositiveForm guide · Staff · STAFF-001 > Canonical page: https://positiveform.com/guides/staff/invite-staff/ > This Markdown: https://positiveform.com/guides/staff/invite-staff.md **Summary:** Add a staff profile, choose work locations, assign roles, and send an invitation. The staff profile is created once and its invitation state is visible. **Who can do this:** Studio owners, Organization owners **Required access:** `organization.owner` **Where in PositiveForm:** `/settings/staff` **Status:** Verified on 2026-07-29 against PositiveForm build `9096f81`. ## Who this is for This guide is for the **organization owner**: the only person who can add staff to the console. **Add staff** appears on the Staff page only for an owner. Everyone else sees the staff list without it. ## Before you begin - Have the person's email address. That is what the invitation goes to, and it is the only required field. - Decide what they should be able to reach. Roles are easier to maintain than one-off grants, so set those up first in **Settings › User roles**; see [Manage reusable roles](https://positiveform.com/guides/roles/manage-user-roles/). - Decide their home location, if you have more than one. It preselects the workspace that opens for them; it does not limit what they can do. ## Steps 1. Click **Settings** in the left navigation, then click **Staff**. The list shows each person with their **Work locations**, **Permissions**, and **Status**. 2. Click **Add staff** in the top right. **Add staff · Step 1 of 4** opens. 3. Type the person's **Email**. Fill in **Name (optional)** if you want the list to show a name before they accept. 4. Click **Continue**. Step 2 asks what they can reach. 5. Under **Roles**, tick any roles that apply. Their permissions add together, so a person can hold several. If you have not made any roles yet, PositiveForm says so and the person starts view-only. 6. Under **Direct grants**, tick anything this one person needs that no role covers. A permission already coming from a role is ticked and greyed with **via role**, so you cannot grant the same thing twice. Use direct grants sparingly; a permission several people need belongs in a role. 7. Click **Continue**. Step 3 asks for a **Home location**. Choose one, or **No home location**. This preselects their workspace and form location; it is not a permission boundary. 8. Click **Continue**. Step 4 summarises the person, their roles, their direct grants, and their home location. Check it. 9. Click **Add staff**. **Back** returns to the previous step with your answers intact, and **Cancel** closes without creating anything. ## Expected outcome PositiveForm confirms with **Staff profile created and invitation email sent**, and the person appears in the staff list with their permissions and invitation state visible. The profile is created once. If the invitation email fails to send, the profile still exists and PositiveForm tells you so, so a retry never produces a second record for the same person. They reach the console by accepting the invitation and signing in with that email address. Everything you set here can be changed afterwards from their profile; see [Maintain a staff profile](https://positiveform.com/guides/staff/maintain-staff-profile/). ## Screenshots ![Step 2 of 4, with Roles above Direct grants and each permission described](https://positiveform.com/guides/media/STAFF-001/20260729T014500Z/003-add-staff-step-2.webp) ![Step 4 of 4, summarising the person, roles, direct grants, and home location before anything is created](https://positiveform.com/guides/media/STAFF-001/20260729T014500Z/004-add-staff-step-4-review.webp) ## Recovery If the email is rejected, the field itself says what is wrong. Correct it and click **Continue** again. If adding fails, PositiveForm shows **Could not invite that staff member.** with the reason, and nothing is created. The most common reason is that the email already belongs to a staff profile in this organization; open that profile instead of making a second one. If you see **Staff profile created, but the invitation email was not delivered.**, the person exists but has no invitation. Open their profile from the staff list and retry from there. Do not run **Add staff** again for the same email. If **Add staff** is not on the page, you are not an organization owner. Ask one to add the person. To stop without creating anything, click **Cancel**. ## Related guides - [Manage reusable roles](https://positiveform.com/guides/roles/manage-user-roles/) — build the reusable roles you tick in step 5, before inviting anyone. - [Maintain a staff profile](https://positiveform.com/guides/staff/maintain-staff-profile/) — change someone's identity, work locations, or member link after they exist. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Maintain a staff profile > PositiveForm guide · Staff · STAFF-002 > Canonical page: https://positiveform.com/guides/staff/maintain-staff-profile/ > This Markdown: https://positiveform.com/guides/staff/maintain-staff-profile.md **Summary:** Update staff identity, photo, status, work locations, and optional member link. Changes persist without confusing staff employment status, login access… **Who can do this:** Studio owners, Organization owners **Required access:** `organization.owner` **Where in PositiveForm:** `/settings/staff/:staffId/identity` **Status:** Verified on 2026-07-29 against PositiveForm build `2ac7ef8`. ## Who this is for This guide is for the **organization owner** keeping a staff member's record current: their name and photo, whether they are teaching, whether they can sign in, where they work, and whether they also train with you as a member. Those are separate things, and PositiveForm keeps them separate on purpose. Turning off teaching does not remove someone's login, and neither one deletes their profile. ## Before you begin - Know which one you are actually changing. The page groups them under **Profile**, **Staff status and access**, **Contact details**, **Work locations**, and **Member profile**. - Contact details are protected by the contact-information permission, so what you can see there depends on your access. - A login email can only be changed by the account holder, so a new address can be verified. You cannot change it for them. ## Steps ### Open the profile 1. Click **Settings** in the left navigation, then click **Staff**. 2. Click the person. Their profile opens on the **Identity** tab, beside **Achievements** and **Permissions**. ### Name, photo, and bio 3. Edit **Name**. Use **Replace photo** to upload a profile photo, cropping it to a square, or **Remove** to take it off. JPEG, PNG, or WebP up to 10 MB. 4. Use **Bio** for a short description. **Staff since** below it is the date the record was created and is not editable. ### Teaching, login access, and status 5. Read **Staff status and access** before changing anything. It says plainly that teaching, organization login access, and the staff identity lifecycle are separate. 6. **Teaching at the studio** shows this person as current instructional staff. 7. **PositiveForm organization access** allows their linked account to enter this organization. Turning it off removes their way in without deleting anything. 8. **Staff status** is shown here and changed in the danger zone. Making someone inactive never deletes their profile. ### Contact details 9. Fill in **Email**, **Phone number**, and the address fields. These are operational contact details for the studio's use. 10. **Login email** is shown but not editable by you. **Change my login email** is for the account holder changing their own. ### Where they work 11. Choose a **Home location**. It decides which workspace opens for them by default. 12. Tick any other locations they work at. Location choices do not grant or restrict permissions; roles and direct grants apply across the organization and are managed under **Permissions**. ### Link them to a member profile 13. If this person also trains with you, use **Find an existing member** to link their member record. The link is deliberate: matching an email never links an account automatically, and PositiveForm never creates a duplicate member. 14. Once linked, **Training ranks** shows that member profile's current ranks. Changes here appear on the member profile too, because it is one record. ### Save 15. Click **Save profile**. **Teaches** lower down lists the programs this person is assigned to. That is set on each program's Staff tab, not here. ## Expected outcome The profile saves and the staff list reflects it: name, work locations, permissions summary, and status. The separate concerns stay separate. Someone can stop teaching and keep their login, lose their login and keep their profile, or be inactive and keep every historical record attached to them. Nothing on this page deletes a person. If you linked a member profile, training, attendance, subscriptions, and ranks stay on that member record rather than being copied here. ## Screenshots ![Staff list with Casey Nguyen and Front desk permissions](https://positiveform.com/guides/media/STAFF-002/20260729T023500Z/001-staff-list.webp) ![Identity tab for Casey Nguyen](https://positiveform.com/guides/media/STAFF-002/20260729T023500Z/002-identity-profile.webp) ## Recovery If saving fails, PositiveForm shows the reason and keeps your edits on screen. Correct what it names and click **Save profile** again. If a photo will not upload, check it is a JPEG, PNG, or WebP under 10 MB. The existing photo stays until a new one succeeds. If you cannot see or edit contact details, your access does not carry the contact-information permission. If you linked the wrong member profile, unlink it and search again. Linking does not merge the two records, so nothing is lost by correcting it. If someone cannot sign in, check **PositiveForm organization access** here before changing their roles. An account without organization access cannot enter whatever permissions it holds. ## Related guides - [Invite staff](https://positiveform.com/guides/staff/invite-staff/) — create the profile in the first place. - [Record staff achievements and ranks](https://positiveform.com/guides/staff/staff-achievements-ranks/) — record ranks, certifications, and awards that belong to the person. - [Manage staff access](https://positiveform.com/guides/staff/manage-staff-access/) — change what they can reach. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Record staff achievements and ranks > PositiveForm guide · Staff · STAFF-003 > Canonical page: https://positiveform.com/guides/staff/staff-achievements-ranks/ > This Markdown: https://positiveform.com/guides/staff/staff-achievements-ranks.md **Summary:** Record staff achievements and optional training rank history. Achievements and rank changes appear on the staff identity without granting permissions. **Who can do this:** Studio owners, Organization owners **Required access:** `organization.owner` **Where in PositiveForm:** `/settings/staff/:staffId/achievements` **Status:** Verified on 2026-07-29 against PositiveForm build `2ac7ef8`. ## Who this is for This guide is for the **organization owner** recording what an instructor has earned: ranks from other schools, certifications, awards, and other recognition. These belong to the **person**, not to one of your programs. A rank a student earns in your curriculum lives on their member record and comes from advancement; see [Configure a progression](https://positiveform.com/guides/advancement/configure-progression/). This page is for everything else the person brings with them. Nothing recorded here grants any permission. An achievement is a credential you are noting, not access you are giving. ## Before you begin - Have the details to hand: what it is, who issued it, when it was earned, and a link if the credential can be verified online. - Know the difference from training ranks. If the person also trains with you and their member profile is linked, their **Training ranks** appear on the **Identity** tab and are managed there. ## Steps 1. Click **Settings** in the left navigation, then click **Staff**, then click the person. 2. Click the **Achievements** tab. With nothing recorded it reads **No achievements yet**. 3. Click **Add achievement**. 4. Fill in **Title**, for example `Black belt`. This is the only required field. 5. Choose a **Type**. For a belt or rank, set the **Belt or rank color** so it shows the way your studio expects. 6. Fill in **Discipline or field**, for example `Taekwondo`, and **Issuer or organization** for whoever awarded it. 7. Add a **Credential link** if the award can be verified online. It must be a full web address. 8. Set **Date earned**, and **Expiration (optional)** for anything that lapses, such as a first-aid certificate. 9. Use **Description** for context the other fields do not capture. 10. Save the achievement. To change one later, open it from the list and edit it. To take one off, remove it. ## Expected outcome PositiveForm confirms with **Achievement added**, or **Achievement updated** when you edited an existing one, and the achievement appears on the person's profile. It is part of their staff identity from then on: visible to anyone who can view the profile, and unchanged by their roles, their teaching status, or their login access. Removing one confirms with **Achievement removed**. Recording an achievement changes nothing about what this person can do in PositiveForm. Access is managed under **Permissions**; see [Manage staff access](https://positiveform.com/guides/staff/manage-staff-access/). ## Screenshots ![Achievements tab for Casey Nguyen](https://positiveform.com/guides/media/STAFF-003/20260729T023800Z/001-achievements.webp) ## Recovery If you save without a title, PositiveForm refuses with **Give this achievement a title.** If the credential link is malformed, the field is marked with what is wrong. Fix it, or clear it, and save again. If saving fails, you get **Could not save this achievement.** with the reason, and your entries stay on screen. If removing fails, you get **Could not remove this achievement.** and it stays on the profile. If you meant to record a rank the person earned in **your** curriculum, this is the wrong page. Link their member profile on the **Identity** tab and manage training ranks there, so the rank sits with their training history. ## Related guides - [Maintain a staff profile](https://positiveform.com/guides/staff/maintain-staff-profile/) — the identity these achievements sit on, and where a linked member profile's training ranks are managed. - [Configure a progression](https://positiveform.com/guides/advancement/configure-progression/) — the progressions that produce ranks inside your own programs. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Manage staff access > PositiveForm guide · Staff · STAFF-004 > Canonical page: https://positiveform.com/guides/staff/manage-staff-access/ > This Markdown: https://positiveform.com/guides/staff/manage-staff-access.md **Summary:** Assign roles and extra permissions or safely import and export access definitions. Effective permissions update only after validation and remain inspectable. **Who can do this:** Studio owners, Organization owners **Required access:** `organization.owner` **Where in PositiveForm:** `/settings/staff/:staffId/permissions` **Status:** Verified on 2026-07-29 against PositiveForm build `2ac7ef8`. ## Who this is for This guide is for the **organization owner** deciding what one staff member can reach. A person's access is the sum of two things: the **roles** you give them, and any **direct grants** for that person alone. Roles are the maintainable half; direct grants are the exception. Access applies across the whole organization. Home and work locations do **not** narrow it. Someone with billing permissions has them at every location, whatever workspace opens for them by default. ## Before you begin - Build the roles first, in **Settings › User roles**; see [Manage reusable roles](https://positiveform.com/guides/roles/manage-user-roles/). Assigning a role you already trust is safer than ticking permissions one at a time. - Consider previewing the role before assigning it, so you see what it actually reaches; see [Preview a role safely](https://positiveform.com/guides/roles/preview-user-role/). - Owners are not editable here. An owner holds every permission, and the page says so instead of offering switches that would not work. ## Steps 1. Click **Settings** in the left navigation, then click **Staff**, then click the person. 2. Click the **Permissions** tab. It opens on **Organization permissions**, which restates that roles and direct grants apply across the organization and that locations do not narrow authorization. 3. Under **Roles**, tick every role this person should hold. They get the combined permissions of all of them. If none exist yet, PositiveForm says **No roles exist yet** and links you to where to make one. 4. Under **Direct grants**, tick anything this one person needs that no role covers. Each label says what it lets someone do, and the riskiest carry a **High impact** badge. 5. A permission already arriving through a role is ticked and greyed, labelled **via** the role granting it. You cannot grant the same thing twice, and you cannot remove it here; change the role instead. 6. Save the change. ### Move a set of permissions between people or studios 7. Use **Portable permission definition** to export this person's local role names and direct grants, or to apply a definition you have. Identity and locations are never included, so a definition carries access and nothing personal. PositiveForm validates it and shows what it will apply before anything changes. ## Expected outcome PositiveForm confirms with **Permissions updated**, and the tab shows what this person now holds: roles ticked, direct grants ticked, and anything arriving via a role marked as such. The result stays inspectable. You can see not just *what* someone can do but *why*, because a permission coming from a role names that role. That is what makes access reviewable later, when whoever set it up is not in the room. Their identity, work locations, teaching status, and login access are untouched; those live on the **Identity** tab. If someone cannot sign in at all, check **PositiveForm organization access** there before changing anything here. For an owner, the tab shows **Owner permissions** and nothing to edit. ## Screenshots ![Permissions tab with roles including Front desk](https://positiveform.com/guides/media/STAFF-004/20260729T024000Z/001-permissions.webp) ## Recovery If saving fails, PositiveForm shows **Could not update permissions.** and the person's access is unchanged. If a pasted permission definition is rejected, you get **That staff permissions JSON is not valid.** Nothing is applied until a definition validates, so a bad paste cannot half-apply. If a permission will not untick, it is arriving through a role, and the label names which one. Either remove that role from this person, or change the role in [Manage reusable roles](https://positiveform.com/guides/roles/manage-user-roles/) if nobody should have it. If someone has more access than you intended, look at their roles first. A single role can carry a lot, and a direct grant is often not the cause. If the tab shows **Owner permissions**, this person is an owner, and ownership is not changed from here. ## Related guides - [Manage reusable roles](https://positiveform.com/guides/roles/manage-user-roles/) — create and edit the reusable roles you assign here. - [Preview a role safely](https://positiveform.com/guides/roles/preview-user-role/) — see what a role reaches before you give it to someone. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Manage reusable roles > PositiveForm guide · User roles · ROLE-001 > Canonical page: https://positiveform.com/guides/roles/manage-user-roles/ > This Markdown: https://positiveform.com/guides/roles/manage-user-roles.md **Summary:** Create, duplicate, edit, import, export, or remove reusable permission roles. Role changes validate server-defined capabilities and do not silently change… **Who can do this:** Studio owners, Organization owners **Required access:** `organization.owner` **Where in PositiveForm:** `/settings/roles` **Status:** Verified on 2026-07-29 against PositiveForm build `9096f81`. ## Who this is for This guide is for the **organization owner**. Roles decide what your staff can reach, so only an owner can create, change, or delete them. A role is a reusable bundle of permissions. A staff member holds everything from all of their roles, plus any direct grants given to them individually. Roles are the maintainable way to run this: change the role once and everyone holding it changes with it. ## Before you begin - Think in jobs, not people. **Front desk**, **Manager**, and **Billing manager** are roles; "Kim's permissions" is not. - Know that a role never affects ownership. Owners hold every permission, and nothing you do here can grant or remove that. - Locations do not narrow a role. Roles apply across the whole organization, so a person's home location does not restrict what their role lets them do. ## Steps ### See the roles you have 1. Click **Settings** in the left navigation, then click **User roles**. 2. Each role is listed with its description, the permissions it carries, and how many staff hold it. A role nobody holds is marked **Not assigned**. ### Create a role 3. Click **New role**. 4. Optionally pick a **Start from a job template (optional)**, or leave it on **Blank custom role**. Choosing a template creates or opens this studio's own editable copy; the template itself is never changed. 5. Give it a **Name** that describes the job, for example `Front desk`, and use **Description (optional)** to say what the role is for. 6. Tick the permissions it should carry under **Permissions**. They are grouped by area, and each one describes what it allows. Read the note above them: everyone with a staff login can already view the console, so a role adds authority rather than granting basic access. 7. Watch for the **High impact** badge. It marks the permissions worth pausing over, such as **Delete operational records**, **Manage studio billing**, and **Approve billing changes**. 8. Click **Save role**. PositiveForm checks your choices against the permissions the server actually defines, so a role cannot claim something that does not exist. The editor also has a **JSON configuration** tab, which shows the same role as a definition you can read or paste. Use it when moving a role between studios; otherwise stay on **Configuration**. ### Change or copy a role 9. Open an existing role to edit its name, description, or permissions. Saving changes it for everyone who holds it. 10. Each role in the list carries actions for editing, duplicating, exporting, previewing, and deleting it. Duplicating confirms with **Role duplicated** and leaves the original untouched. ### Move a role between studios 11. Use **Import JSON** to paste a role definition, and the export action on a role to copy its definition out. PositiveForm validates the definition and shows you what it will create **before** anything is saved, so a bad paste is refused rather than half-applied. ### Delete a role 12. Delete a role you no longer use. Check the assignment count first: deleting a role removes the permissions it was giving everyone who held it. ## Expected outcome Saving confirms with **Role saved**, and the role appears in the list with its permissions and assignment count. Deleting confirms with **Role deleted**. The change takes effect for every staff member holding that role, without touching their other roles or their direct grants. Assign a role to someone from their profile; see [Manage staff access](https://positiveform.com/guides/staff/manage-staff-access/). Nothing here changes ownership. Owner authority is not editable from this page. ## Screenshots ![The User roles list, each role with its permissions and assignment count](https://positiveform.com/guides/media/ROLE-001/20260729T013000Z/001-roles-list.webp) ![The New role editor, with the job-template starter, the Configuration and JSON configuration tabs, and permissions grouped by area with High impact badges](https://positiveform.com/guides/media/ROLE-001/20260729T013000Z/002-new-role-editor.webp) ## Recovery If you save without a name, PositiveForm refuses with **The role needs a name.** If saving fails, you get **Could not save that role.** with the reason, and the role is unchanged. Your edits stay on screen. If a pasted definition is rejected, PositiveForm says **That role definition is not valid.** or asks you to enter valid role-definition JSON first. Nothing is created until a definition validates, so a bad paste cannot half-apply. If deleting fails, you get **Could not delete that role.** and the role stays. If you delete a role by mistake, recreate it and reassign it to the affected staff. There is no undo, which is why the assignment count is worth reading first. ## Related guides - [Preview a role safely](https://positiveform.com/guides/roles/preview-user-role/) — see the console as a role sees it before you give it to anyone. - [Manage staff access](https://positiveform.com/guides/staff/manage-staff-access/) — assign roles to a person and inspect what they end up with. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Preview a role safely > PositiveForm guide · User roles · ROLE-002 > Canonical page: https://positiveform.com/guides/roles/preview-user-role/ > This Markdown: https://positiveform.com/guides/roles/preview-user-role.md **Summary:** Preview a role with server-enforced read-only access. The preview clearly identifies the role, masks protected data when configured, prevents mutation, and… **Who can do this:** Studio owners, Organization owners **Required access:** `organization.owner` **Where in PositiveForm:** `/settings/roles` **Status:** Verified on 2026-07-29 against PositiveForm build `2ac7ef8`. ## Who this is for This guide is for the **organization owner** who wants to see the console the way a role sees it, before handing that role to a person. A preview is read-only, and the server enforces that, not just the screen. You cannot change anything while previewing, however the page looks. ## Before you begin - Create the role first, in **Settings › User roles**; see [Manage reusable roles](https://positiveform.com/guides/roles/manage-user-roles/). - Know that a preview expires on its own after a short window. You do not have to remember to end it, though you should. ## Steps 1. Click **Settings** in the left navigation, then click **User roles**. 2. Find the role you want to check and start its preview. 3. PositiveForm confirms with **Previewing in read-only mode** and takes you to the dashboard as that role. 4. Move around the console. Navigation, pages, and actions appear as they would for someone holding only that role. 5. Read the banner across the top. It names the role you are previewing, says the access is server-enforced and read-only, and gives the time the preview expires. If the role masks protected data, the banner says that too. 6. Click **End preview** in the banner when you are done. ## Expected outcome While the preview runs, the banner is on every page, so you can never mistake a previewed console for your own. Attempts to change anything are refused by the server, not merely hidden, so previewing cannot damage a record. **End preview** returns you to your own access immediately. The preview also ends by itself at the time the banner names, so a forgotten preview does not leave you stuck. Nothing about the role changes by previewing it, and no staff member is affected. ## Screenshots ![User roles list; Front desk assigned to 1 staff member](https://positiveform.com/guides/media/ROLE-002/20260729T024100Z/001-roles-list.webp) ![Previewing Front desk with End preview banner](https://positiveform.com/guides/media/ROLE-002/20260729T024100Z/002-preview-front-desk.webp) ## Recovery If the preview will not start, PositiveForm shows **Could not start that role preview.** with the reason, and your access is unchanged. If you are unsure whether you are previewing, look for the banner. No banner means you are yourself. If **End preview** fails, wait for the expiry named in the banner, or reload the page and try again. Your own access returns either way. If the console looks more limited than you expected, that is the point: the role carries fewer permissions than you thought. End the preview and adjust the role in [Manage reusable roles](https://positiveform.com/guides/roles/manage-user-roles/). ## Related guides - [Manage reusable roles](https://positiveform.com/guides/roles/manage-user-roles/) — change the role once the preview shows you what it actually reaches. - [Manage staff access](https://positiveform.com/guides/staff/manage-staff-access/) — give the role to a person once you are satisfied. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Create a location > PositiveForm guide · Locations · LOC-001 > Canonical page: https://positiveform.com/guides/locations/create-location/ > This Markdown: https://positiveform.com/guides/locations/create-location.md **Summary:** Create a studio location and make it available to operations. The new location opens in settings with its profile ready for completion. **Who can do this:** Organization owners, Managers **Required access:** `locations.manage` **Where in PositiveForm:** `/locations/new` **Status:** Verified on 2026-07-28 against PositiveForm build `9096f81`. ## Who this is for This guide is for an **organization owner** or a **manager**: the people who open a new studio address and need it available to schedules, check-in, and billing. You need the `locations.manage` permission. If **Add location** is not on your Locations page, your role does not carry it. Ask an organization owner rather than working around it; the server enforces this permission whether or not the button is visible. ## Before you begin - Have the street address, city, state, postal code, phone number, and contact email for the new site. PositiveForm asks for all of them before it will save. - Know which time zone the site runs on. Class schedules at this location use it, so a wrong choice moves every class. - Work in the organization the location belongs to. The name in the top-left corner is the organization you are adding to. ## Steps 1. Click **Settings** in the left navigation, then click **Locations**. 2. Click **Add location** in the top right. The page changes to a focused setup screen titled **Add a location** showing **Step 1 of 2**. 3. Type the name families and staff will recognize into **Location name**, for example `Downtown`. **Continue** stays disabled until the name has content. 4. Click **Continue**. **Location details** opens as **Step 2 of 2**. 5. Fill in **Street address**, **City**, **State**, and **Postal code**. Use **Address line 2** for a suite, unit, or floor, or leave it empty. 6. Check **Time zone**. It starts on your organization's time zone; change it only when this site actually runs on a different one. 7. Fill in **Phone number** and **Contact email**. These are the details families see for this site, not your personal contact details. 8. Click **Add location**. It stays disabled until every field above except **Address line 2** is filled and the contact email contains an `@`. Your answers are saved on this device as you type, so you can close the page part-way through and pick the same draft back up. **Cancel setup** discards that draft on purpose. ## Expected outcome PositiveForm confirms with **Location added** and returns you to **Settings › Locations**, where the new site is listed with its address. The location is immediately real: it appears in the location picker at the top of the console, in location filters on records pages, and as a choice when you schedule programs or check members in. Because you filled in the address, phone, and contact email during setup, the new location is listed with its address and no setup reminder. A location still missing any of those three is listed with a counter such as **0/3 set up** instead. Continue in [Maintain or retire a location](https://positiveform.com/guides/locations/maintain-location/) to add hours of operation and staff. ## Screenshots ![Step 2 of 2, Location details, with the address, time zone, phone, and contact email fields](https://positiveform.com/guides/media/LOC-001/20260728T235500Z/003-add-location-details.webp) ![Settings, Locations after the wizard, with the new location listed by its address](https://positiveform.com/guides/media/LOC-001/20260728T235500Z/004-location-added.webp) ## Recovery If **Add location** stays greyed out, one required field is still empty or the contact email has no `@`. Check **Street address**, **City**, **State**, **Postal code**, **Phone number**, and **Contact email**. **Address line 2** is the only optional field. If saving fails, PositiveForm shows **Could not add location** with the reason from the server, and nothing is created. Correct what the message names and click **Add location** again. Do not start over from **Settings › Locations**; your answers are still on the step. To stop without creating anything, click **Cancel setup** in the top left. That clears the saved draft and returns you to **Settings › Locations**. If the location was created but the details are wrong, do not add a second one. Open it from **Settings › Locations** and correct it there, as described in [Maintain or retire a location](https://positiveform.com/guides/locations/maintain-location/). ## Related guides - [Maintain or retire a location](https://positiveform.com/guides/locations/maintain-location/) — finish this location's profile, set its hours, assign staff, or retire it later. - [Switch operating locations](https://positiveform.com/guides/workspace/switch-location/) — switch the console to the new location so you see its members, check-ins, and billing. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Maintain or retire a location > PositiveForm guide · Locations · LOC-002 > Canonical page: https://positiveform.com/guides/locations/maintain-location/ > This Markdown: https://positiveform.com/guides/locations/maintain-location.md **Summary:** Update location details and hours or retire a location safely. Profile, hours, staff assignments, and any retirement replacement are saved without stranding… **Who can do this:** Organization owners, Managers **Required access:** `locations.manage` **Where in PositiveForm:** `/settings/locations/:publicId` **Status:** Verified on 2026-07-29 against PositiveForm build `9096f81`. ## Who this is for This guide is for an **organization owner** or a **manager** keeping a site's details current, and for an **organization owner** closing a site down. You need the `locations.manage` permission to edit a location. Retiring and reopening a location are owner-only, so the **Close this location** card appears only for an organization owner. Retiring also asks you to re-enter your password or sign-in code before it runs, because it moves live records. ## Before you begin - Know which location you are changing. One organization can run several, and each has its own address, hours, and staff. - To retire a location, first know where its active work should continue. PositiveForm asks you to name a replacement location for the members, households, staff assignments, and future programs that live there. - An organization must keep at least one active location. The last one cannot be retired. ## Steps ### Open the location 1. Click **Settings** in the left navigation, then click **Locations**. 2. Click the location you want to change. Its page opens with a **Settings › Locations** breadcrumb and the location name as the heading. The organization's default location is marked **Default**. A location that still needs details shows **Setup · 0 of 3 complete** near the top, listing what is missing: **Business address**, **Phone number**, and **Contact email**. ### Update the profile 3. In the **Profile** card, edit **Name**, **Address**, **Address line 2**, **City**, **State**, **ZIP**, **Phone**, and **Contact email**. 4. Set **Scheduling time zone**. Leave it on **Use organization time zone** when this site runs on the same clock as the rest of the business, or pick a specific zone when it does not. Program schedules at this location follow this setting. 5. Click **Save profile**. ### Set the hours families see 6. In **Hours of operation**, type each day's hours in plain language, for example `4:00 PM - 8:30 PM`, or `Closed` for a day you are shut. 7. Click **Save hours**. ### Check who works here 8. Read the **Staff working here** card. Each person is listed as either **Home location** or **Additional work location**, and **Open profile** takes you to their staff record. 9. To change who works here, go to **Settings › Staff** and edit the person there. A work location says where someone normally teaches; it does not grant or restrict their role. ### Retire a location you are closing 10. Scroll to **Close this location** and click **Retire location**. If the button is greyed out with **An organization needs at least one active location**, this is your only active site and cannot be retired. 11. Read the **Retire** dialog. It first shows what is still active here, for example the number of members, households, staff assignments, and future programs. If nothing needs to move it says so. 12. If a replacement is required, click **Continue**, then choose a **Replacement location**. Active members and households are rehomed there, staff assignments move, and future programs, testing, and open leads continue there. 13. Click **Retire location** in the dialog and complete the sign-in check PositiveForm asks for. ### Reopen a location you closed 14. Open the retired location from **Settings › Locations**. Its card now reads **Archived location**. 15. Click **Reopen location**. ## Expected outcome Saving the profile confirms with **Location updated**, and saving hours confirms with **Hours updated**. Both persist: reload the page and the new values are still there, and the setup checklist at the top drops the items you completed. The location's address and hours are what families and staff see for that site. Retiring confirms with ** retired**. The location disappears from location pickers and page filters and stops being offered on new forms, and the records you moved now sit at the replacement location. Nothing historical is rewritten: past attendance, promotions, and invoices stay attached to the location where they happened. Reopening confirms with ** reopened** and makes the site selectable again. ## Screenshots ![A retired location, showing Profile, Hours of operation, Staff working here, and the Archived location card with Reopen location](https://positiveform.com/guides/media/LOC-002/20260729T015000Z/001-location-profile.webp) ![An active location, with the same cards and Close this location offering Retire location](https://positiveform.com/guides/media/LOC-002/20260729T015000Z/002-active-location-retire.webp) ## Recovery If saving the profile fails, PositiveForm shows **Couldn't save. Check the fields and try again.** Your typing is still on screen. Correct the fields and click **Save profile** again. Saving hours fails with **Couldn't save hours.** and behaves the same way. If the fields are greyed out, your role does not carry `locations.manage`. Ask an organization owner to make the change. If retiring fails, PositiveForm shows **That location could not be retired.** with the reason, and the location stays active. The most common reason is that active work still needs a replacement location; reopen the dialog and choose one. If you cancel the sign-in check, nothing is retired. Start again from **Retire location** when you are ready. Retiring the wrong location is recoverable: open it again and click **Reopen location**. Records that were rehomed to the replacement location do not move back on their own, so check the members and staff that were affected. ## Related guides - [Create a location](https://positiveform.com/guides/locations/create-location/) — add a new site before retiring an old one, so there is somewhere for its active work to continue. - [Switch operating locations](https://positiveform.com/guides/workspace/switch-location/) — switch the console to another location after retiring the one you were working in. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Maintain organization details and branding > PositiveForm guide · Organization settings · ORG-001 > Canonical page: https://positiveform.com/guides/organization/organization-details-branding/ > This Markdown: https://positiveform.com/guides/organization/organization-details-branding.md **Summary:** Update business details, icon, and banner. Organization details and safe image assets update across the branded console. **Who can do this:** Studio owners, Organization owners **Required access:** `organization.owner` **Where in PositiveForm:** `/settings/organization` **Status:** Verified on 2026-07-29 against PositiveForm build `9096f81`. ## Who this is for This guide is for the **organization owner**: the person responsible for the business as a whole, not for one site. Only an organization owner can open this page. Everyone else sees **Only an organization owner can view or change these details**, and the server refuses the change even if the page is reached another way. These are business-wide details. A single site's address and opening hours are not here; they live on that location's page under **Settings › Locations**. ## Before you begin - Have your business phone, contact email, website, and EIN or Tax ID to hand. All of them are optional, but a blank one is a blank one; PositiveForm does not fill them in for you. - For images, have an icon and a banner ready as JPEG, PNG, or WebP, each up to 10 MB. You crop them in PositiveForm, so an oversized image is fine. - Know that this page does not touch Stripe. Renaming your organization here changes the name in PositiveForm only. ## Steps ### Open the page 1. Click **Settings** in the left navigation, then click **Organization**. The page opens as **Organization details**. ### Change the business name 2. Edit **Organization name** in the **Identity** card. This is the name staff and families see across the console. ### Set the icon and banner 3. In **Organization images**, click **Choose icon** (or **Replace icon** if one is already set) and pick an image file. A **Crop organization icon** window opens. 4. Drag the image to position it and use **Zoom** until it sits the way you want, then click the save button in that window. The icon is square. 5. Choose **Rounded** or **Square** under **Icon shape**. The change applies as soon as you click, without saving the rest of the page. 6. Click **Choose banner** and repeat for the wide studio image. The banner is cropped to a 3:1 shape. 7. To take an image back off, click **Remove** next to it and confirm. ### Set the time zone, contact details, and legal identity 8. Under **Scheduling time zone**, pick your **Organization time zone**. Program schedules use it unless a location overrides it on its own page. 9. Fill in **Phone**, **Contact email**, and **Website** in the **Contact** card. 10. Fill in **EIN / Tax ID** in the **Legal** card. One EIN covers the whole organization; every location operates under it. 11. Click **Save changes**. It stays disabled until you have actually changed something. ## Expected outcome PositiveForm confirms with **Organization updated**, and **Save changes** goes back to being disabled because there is nothing left unsaved. Reload the page and the new values are still there. The name and icon change everywhere the console shows your organization, including the top-left corner. Images confirm separately as **Organization icon updated** or **Organization banner updated** as soon as the crop is uploaded, so they do not wait on **Save changes**. Nothing here reaches Stripe. Your Stripe account name, customers, and payment history are unchanged. ## Screenshots ![Organization details, showing Identity, Organization images, Scheduling time zone, Contact, Legal, and the Danger zone](https://positiveform.com/guides/media/ORG-001/20260729T014000Z/001-organization-details.webp) ![The Organization updated confirmation, with the saved Website value on the page behind it](https://positiveform.com/guides/media/ORG-001/20260729T014000Z/002-organization-updated.webp) ## Recovery If you clear the name and save, PositiveForm refuses with **The organization needs a name.** Type a name and save again. If **Contact email** or **Website** is malformed, the field itself is marked with what is wrong. Fix the marked field, then click **Save changes**. Leaving either one empty is allowed; only a filled-in malformed value is refused. If saving fails for another reason, PositiveForm shows **Couldn't save. Check the fields and try again.** and keeps your typing on screen. If an image will not upload, the crop window shows the reason, for example that the file is the wrong format or over 10 MB. Close the window with **Cancel**, prepare a smaller JPEG, PNG, or WebP, and choose it again. The previous image stays in place until a new one uploads successfully. If someone else changes the organization while you have edits open, PositiveForm tells you on the page rather than overwriting one of you silently. If you try to navigate away with unsaved edits, it asks before discarding them. ## Related guides - [Navigate studio settings](https://positiveform.com/guides/settings/settings-home/) — the settings home page these business-wide details sit under. - [Delete an organization](https://positiveform.com/guides/organization/delete-organization/) — close the organization down entirely, which is the one action on this page that cannot be undone. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Delete an organization > PositiveForm guide · Organization settings · ORG-002 > Canonical page: https://positiveform.com/guides/organization/delete-organization/ > This Markdown: https://positiveform.com/guides/organization/delete-organization.md **Summary:** Request or confirm organization deletion with explicit consequences. The organization follows the documented deletion lifecycle and the user reaches a safe… **Who can do this:** Studio owners, Organization owners **Required access:** `organization.owner` **Where in PositiveForm:** `/settings/organization` **Status:** Verified on 2026-07-28 against PositiveForm build `9096f81`. ## Who this is for This guide is for the **organization owner** who is closing the business, or leaving PositiveForm, and wants the organization's records removed. Only an organization owner can do this, and PositiveForm asks you to sign in again part-way through. This is the most destructive action in the product. > Deleting removes staff access immediately. After the restore window closes, > the organization's data is permanently destroyed and cannot be recovered. > Read this whole guide before you start. ## Before you begin - Export or record anything you need to keep. Member records, attendance, promotions, and invoices go with the organization. - Cancel active subscriptions in Stripe first. PositiveForm deletes its own records only. Your Stripe account, its customers, payment methods, and payment history live in Stripe and are not touched, so any active subscription keeps charging families until someone cancels it in Stripe. - Tell your staff. Their access ends the moment the deletion is requested, not at the end of the restore window. - Know the organization's exact name. You have to type it to confirm. - If you only want to close one site, this is the wrong workflow. Retire that location instead, as described in [Maintain or retire a location](https://positiveform.com/guides/locations/maintain-location/). ## Steps 1. Click **Settings** in the left navigation, then click **Organization**. 2. Scroll to the bottom of the page, to the red **Danger zone** card. Read both paragraphs there. They state what is deleted and what stays in Stripe. 3. Click **Delete organization**. Nothing is deleted yet; this opens the confirmation. 4. Tick **I understand this cannot be undone and will begin permanently deleting all organization data**. 5. In **Type to confirm**, type the organization's name exactly as shown in bold on the label. A near miss keeps the final button disabled. 6. Click **Permanently delete organization**. 7. Complete the sign-in check PositiveForm asks for. It requires a recently re-verified session before it will act. To stop at any point before step 6, click **Cancel**. That closes the confirmation and clears the tick and the typed name. Cancelling the sign-in check also stops the deletion. ## Expected outcome PositiveForm takes you to a dedicated confirmation screen rather than dropping you back into the console. If the organization held member records, the screen reads ** is scheduled for deletion** and names the date its data is retained until. Until that date the deletion can still be cancelled by contacting support. After it, the data is permanently destroyed. Returning to **Settings › Organization** during this window shows a **Pending deletion** card with the request date and the restore cutoff, instead of the danger zone. If the organization held no member records, it is deleted immediately and the screen reads ** is deleted**. Only a non-identifying offboarding receipt remains. Either way the screen repeats the Stripe boundary, and from there you choose where to go: **Continue to ** for another organization you belong to, or **Set up a new organization instead?** to start a fresh one. ## Screenshots ![The Danger zone at the bottom of Organization details, before the confirmation is opened](https://positiveform.com/guides/media/ORG-002/20260729T002500Z/001-danger-zone.webp) ![The expanded confirmation, with the acknowledgement unticked, the empty confirm-name field, and Permanently delete organization greyed out](https://positiveform.com/guides/media/ORG-002/20260729T002500Z/002-deletion-confirmation.webp) ## Recovery If **Permanently delete organization** stays greyed out, either the acknowledgement is not ticked or the typed name does not match exactly. The match is exact, including capitals and spacing. If you cancel the sign-in check, PositiveForm tells you **Re-authentication was cancelled. The organization was not deleted.** Nothing changed. If the request fails, PositiveForm shows the reason from the server and the organization stays as it was. If the organization is scheduled for deletion and you have changed your mind, contact PositiveForm support before the restore window closes. The date is on the confirmation screen and on the **Pending deletion** card. There is no self-service undo, and after that date there is no recovery at all. If you reach this page by accident, leave it. Nothing on this page changes anything until you click **Permanently delete organization** and pass the sign-in check. ## Related guides - [Maintain organization details and branding](https://positiveform.com/guides/organization/organization-details-branding/) — change the organization's name, branding, or contact details instead of deleting it. - [Switch organizations](https://positiveform.com/guides/workspace/switch-organization/) — move to another organization you belong to after this one is gone. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Navigate studio settings > PositiveForm guide · Settings · SET-001 > Canonical page: https://positiveform.com/guides/settings/settings-home/ > This Markdown: https://positiveform.com/guides/settings/settings-home.md **Summary:** Find configuration areas that my access permits. Settings shows only permitted customer-facing configuration destinations and each link opens its canonical… **Who can do this:** Organization owners, Managers, Staff **Required access:** `organization.membership` **Where in PositiveForm:** `/settings` **Status:** Verified on 2026-07-26 against PositiveForm build `f64c5c2`. ## Who this is for Owners, managers, and staff who need to find a customer-facing studio configuration area allowed by their current access. Required access: membership in the selected organization. Some destinations also require owner or feature-specific permissions. ## Before you begin - Select the organization you intend to configure. - Finish or cancel any unsaved operational work before navigating away. ## Steps 1. Select **Settings** in the main navigation, or open `/settings`. 2. Review the available destinations under **General**, **Onboarding**, **People**, **Billing**, and **Connections**. A group is hidden when none of its destinations are permitted. 3. Select the row for the area you need, such as **Location details**, **Staff**, **Billing setup**, or **Integrations**. 4. Confirm that the destination opens under its normal route and still shows the intended organization context. 5. Use the Settings breadcrumb or main navigation to return to the settings index when you need another area. ## Expected outcome Settings lists only the destinations permitted for the signed-in role, grouped by purpose, and each visible row opens its canonical configuration route. ## Screenshots ![The Settings index showing the customer-facing groups available to the synthetic owner](https://positiveform.com/guides/media/SET-001/20260727T044657Z/001-settings-index.webp) ![Location details opened at its canonical settings route](https://positiveform.com/guides/media/SET-001/20260727T044657Z/002-location-details-opened.webp) ## Recovery - Owner-only destinations such as **Organization details** and **Subscription** do not appear for non-owners. - Import destinations appear only for roles with import-management access. - If a visible row opens a missing or unauthorized page, return to Settings and contact PositiveForm support with the row label and resulting route. ## Related guides - ORG-001 — Update organization details when signed in as an owner. - LOC-001 — Review configured studio locations. - STAFF-001 — Review staff access and assignments. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Switch organizations > PositiveForm guide · Workspace navigation · WORK-001 > Canonical page: https://positiveform.com/guides/workspace/switch-organization/ > This Markdown: https://positiveform.com/guides/workspace/switch-organization.md **Summary:** Switch the active organization safely. The console reloads in the selected tenant and does not retain data from the prior organization. **Who can do this:** Organization owners, Managers, Staff **Required access:** `organization.membership` **Where in PositiveForm:** `/` **Status:** Draft: not yet verified against a deployed PositiveForm build. Labels may differ. > Draft: current headed-browser evidence is still being completed. ## Who this is for Owners, managers, and staff whose account belongs to more than one PositiveForm organization. Required access: membership in both the current and destination organizations. ## Before you begin - Confirm that the account belongs to at least two active organizations. - Finish or cancel any unsaved form before switching. ## Steps 1. In the application sidebar, open the organization selector directly below the organization name and logo. 2. Under **Organizations**, select the destination organization. An organization marked **Pending deletion** cannot be selected. 3. Wait for PositiveForm to reload the workspace. 4. Confirm that the sidebar brand and organization selector show the selected organization. 5. Before editing anything, confirm that dashboard counts and visible records belong to the selected organization. ## Expected outcome The console reloads in the selected tenant. The shell and organization-scoped data identify the destination organization, with no records retained from the previous tenant. ## Recovery - If the organization is missing, ask its owner to confirm your staff access. - If it is marked **Pending deletion**, do not try to work around the disabled option; contact the organization owner. - If the brand changes but old organization data remains visible, stop work, switch back, and contact PositiveForm support urgently. ## Related guides - WORK-002 — Narrow the selected organization to a different location. - DASH-001 — Confirm the destination organization's dashboard context. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Switch operating locations > PositiveForm guide · Workspace navigation · WORK-002 > Canonical page: https://positiveform.com/guides/workspace/switch-location/ > This Markdown: https://positiveform.com/guides/workspace/switch-location.md **Summary:** Switch my operating location without changing organizations. Location-scoped pages reload for the selected location while the tenant remains unchanged. **Who can do this:** Organization owners, Managers, Staff **Required access:** `organization.membership` **Where in PositiveForm:** `/` **Status:** Verified on 2026-07-26 against PositiveForm build `33bf3b3`. ## Who this is for Owners, managers, and staff who work across multiple locations in one organization. Required access: membership in the selected organization and access to its locations. ## Before you begin - Select the correct organization first. - Confirm that at least two active locations are available to the account. - Finish or cancel any unsaved form before switching. ## Steps 1. In the application sidebar, open the control labeled **Location**. 2. Under **Locations**, select the destination location. The check mark shows the current selection. 3. Wait for the current page's location-scoped data to refresh. 4. Confirm that the location control shows the destination while the organization name remains unchanged. 5. Before editing anything, confirm that the visible records belong to the selected location. ## Expected outcome Location-scoped pages refresh for the selected location while the active organization remains unchanged. ## Screenshots ![The location selector showing Main location and the synthetic Guide Audit Annex](https://positiveform.com/guides/media/WORK-002/20260727T043632Z/003-location-selector.webp) ![The dashboard after switching to the synthetic annex while the organization remains unchanged](https://positiveform.com/guides/media/WORK-002/20260727T043632Z/004-annex-selected.webp) ## Recovery - If the selector is hidden, the account has only one available location and cannot perform this workflow. - If the destination is missing, ask an owner or manager to confirm that the location is active and available to your staff account. - If the selector changes but the page retains records from the prior location, stop work, switch back, and contact PositiveForm support urgently. ## Related guides - WORK-001 — Change to a different organization before choosing its location. - LOC-002 — Maintain the selected location's profile, hours, and staff assignments when your access permits it. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Find operational records > PositiveForm guide · Global search · SEARCH-001 > Canonical page: https://positiveform.com/guides/navigation/global-search/ > This Markdown: https://positiveform.com/guides/navigation/global-search.md **Summary:** Find a member, household, or program and open its canonical workspace. Grouped search results open the selected record in the correct organization. **Who can do this:** Organization owners, Managers, Staff **Required access:** `organization.membership` **Where in PositiveForm:** `/` **Status:** Verified on 2026-07-26 against PositiveForm build `e268ac1`. ## Who this is for Owners, managers, and staff who need to move directly to a person, staff record, household, or program in the current studio. Required access: membership in the selected organization. ## Before you begin - Select the correct organization and location. - Know at least two characters from the name of the record you need. ## Steps 1. Select **Search records** in the application header. You can also press `Command-K` on macOS or `Control-K` on Windows and Linux. 2. Enter at least two characters in **Search people, households, or programs**. 3. Review the results under **People**, **Staff**, **Households**, or **Programs**. Only groups with matches appear. 4. Select the intended result. 5. Confirm that PositiveForm opens that record's normal detail or workspace page and that the organization context has not changed. ## Expected outcome Matching records are grouped by type, and the selected result opens in its canonical workspace without changing organizations. ## Screenshots ![Global search showing the synthetic Avery Audit member result](https://positiveform.com/guides/media/SEARCH-001/20260727T041114Z/001-search-results.webp) ![The synthetic member's canonical overview opened from global search](https://positiveform.com/guides/media/SEARCH-001/20260727T041114Z/002-member-opened.webp) ## Recovery - Enter at least two characters; shorter searches do not run. - If no result appears, confirm the organization and location, then try a more specific name. - If search reports an error, close and reopen it, then retry once. Preserve the visible error and contact PositiveForm support if it continues. ## Related guides - MEM-003 — Review the member record opened from a People result. - HH-001 — Review the household opened from a Households result. - PROG-001 — Review the program opened from a Programs result. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Review the studio dashboard > PositiveForm guide · Dashboard · DASH-001 > Canonical page: https://positiveform.com/guides/dashboard/review-dashboard/ > This Markdown: https://positiveform.com/guides/dashboard/review-dashboard.md **Summary:** See current setup and check-in activity from the dashboard. The dashboard shows current organization-scoped setup status and recent check-in activity. **Who can do this:** Organization owners, Managers, Staff **Required access:** `organization.membership` **Where in PositiveForm:** `/` **Status:** Verified on 2026-07-26 against PositiveForm build `ede253b`. ## Who this is for Owners, managers, and staff who need a quick view of studio activity and setup status for the current workspace. Required access: membership in the selected organization. ## Before you begin - Select the organization you intend to review. - Select the operating location if the organization has more than one. ## Steps 1. Select **Dashboard** in the main navigation, or open `/`. 2. Confirm the organization name and, when shown, the location selector in the application shell. 3. Review the **Members**, **Check-ins today**, and **Trials today** summary cards. 4. Review **Studio check-in activity** for the last 12 weeks. 5. If **Get set up** appears, review its completion count and open the next incomplete task you intend to work on. ## Expected outcome The dashboard shows organization- and location-scoped summary counts, recent check-in activity, and any remaining setup work. ## Screenshots ![The synthetic studio dashboard with summary cards, check-in activity, and setup status](https://positiveform.com/guides/media/DASH-001/20260727T020012Z/001-dashboard-reviewed.webp) ## Recovery - If the counts belong to another workspace, stop and correct the organization or location selector before opening a record. - If a card cannot load, use its retry control when one is offered. Report a finding if the same card still fails after one retry. - A missing **Get set up** section means every setup task is complete; it is not an error. ## Related guides - ATT-002 — Record a member check-in from the attendance workspace. - SET-001 — Open the full settings index for studio configuration. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Create a studio organization > PositiveForm guide · Getting started · ONB-001 > Canonical page: https://positiveform.com/guides/onboarding/create-organization/ > This Markdown: https://positiveform.com/guides/onboarding/create-organization.md **Summary:** Create a studio organization and enter its console. The organization is created and the owner reaches organization-scoped setup. **Who can do this:** Studio owners, Organization owners **Required access:** `clerk.authentication` **Where in PositiveForm:** `/organizations/new` **Status:** Verified on 2026-07-28 against PositiveForm build `9096f81`. ## Who this is for This guide is for a **studio owner** setting PositiveForm up for their business for the first time. Finishing it makes you the **organization owner**. You need a PositiveForm account, which you create by signing up. You do not need an invitation; you are the first person here. If you are joining a studio that already uses PositiveForm, this is the wrong guide. Ask them to invite you, then sign in. ## Before you begin - Sign up and sign in. A signed-in account that belongs to no studio sees **You're not part of a studio yet**, with **Setting up a new studio instead?** underneath. - Decide the business name. This is the organization, the whole business, not one address. - Have the street address, city, state, postal code, phone number, and contact email for your first location, and know its time zone. - Have a payment method ready. Setup finishes in Stripe Checkout, and the organization is not usable until that payment completes. ## Steps 1. Sign in. On **You're not part of a studio yet**, click **Setting up a new studio instead?**. The focused setup screen **Create an organization** opens at **Step 1 of 3**. 2. Type your business name into **Organization name**, for example `Elite Martial Arts`. **Continue** stays disabled until it has content. 3. Click **Continue**. **Main location** opens as **Step 2 of 3**. This is your first studio address; you can add more later. 4. Fill in **Street address**, **City**, **State**, and **Postal code**. Use **Address line 2** for a suite, unit, or floor, or leave it empty. 5. Check **Time zone**. PositiveForm guesses from your device, so confirm it is the studio's time zone and not yours. 6. Fill in **Phone number** and **Contact email**. These are the studio's details that families see. 7. Click **Continue**. **Billing plan** opens as **Step 3 of 3**, showing the plan name, the monthly price, and the money-back guarantee period. There is one flat plan for the whole organization. 8. Click **Continue to Stripe**. PositiveForm creates the organization and hands you to Stripe Checkout. 9. Pay in Stripe. Stripe returns you to PositiveForm, which confirms the payment and opens the migration offer described in [Record migration and service needs](https://positiveform.com/guides/onboarding/migration-service-needs/). Your answers are saved on this device as you go, so you can close the page part-way through and come back to the same draft. **Cancel setup** discards it on purpose. ## Expected outcome The organization exists, you are its owner, and the address you entered is its first location. PositiveForm switches you into the new organization, so its name is in the top-left corner and the left navigation is available. After Stripe confirms the payment, PositiveForm takes you to **Bring your data with you**, the migration offer. Continue from there in [Record migration and service needs](https://positiveform.com/guides/onboarding/migration-service-needs/), then finish setting the studio up. ## Screenshots ![Step 2 of 3, Main location, with the address, time zone, phone, and contact email fields](https://positiveform.com/guides/media/ONB-001/20260729T005500Z/002-main-location.webp) ![Step 3 of 3, Billing plan, showing the single flat plan, its monthly price, the guarantee period, and Continue to Stripe](https://positiveform.com/guides/media/ONB-001/20260729T005500Z/003-billing-plan.webp) ## Recovery If **Continue** stays greyed out on **Main location**, a required field is still empty or the contact email has no `@`. **Address line 2** is the only optional field. If **Billing plan** reads **The PositiveForm plan is unavailable. Please try again.**, the plan could not be loaded and setup cannot continue. Wait a moment and reload the page; your answers are saved. If you cancel in Stripe, PositiveForm tells you **Checkout canceled. Your organization setup is saved.** and returns you to this wizard. Click **Continue to Stripe** again when you are ready. If handing off to Stripe fails, PositiveForm shows **Could not continue to Stripe Checkout.** Nothing was charged. Try again; if the organization was already created on the first attempt, PositiveForm reuses it rather than making a second one. If Stripe took the payment but PositiveForm could not confirm it, you see **Could not confirm checkout. Please try again.** Do not pay a second time. Reload the page, and contact PositiveForm support if the migration offer still does not appear. To stop without creating anything, click **Cancel setup** in the top left. ## Related guides - [Build a studio workspace before creating an account](https://positiveform.com/guides/onboarding/draft-studio-setup/) — try the product and build a studio workspace first, without creating an account. - [Record migration and service needs](https://positiveform.com/guides/onboarding/migration-service-needs/) — the migration offer and service questions that come straight after checkout. - [Create a location](https://positiveform.com/guides/locations/create-location/) — add your second and later locations once the organization exists. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Record migration and service needs > PositiveForm guide · Getting started · ONB-002 > Canonical page: https://positiveform.com/guides/onboarding/migration-service-needs/ > This Markdown: https://positiveform.com/guides/onboarding/migration-service-needs.md **Summary:** Review the migration offer and tell PositiveForm what help I need. The owner can continue through the migration offer and save service needs without exposing… **Who can do this:** Studio owners, Organization owners **Required access:** `organization.owner` **Where in PositiveForm:** `/migration-offer` **Status:** Verified on 2026-07-28 against PositiveForm build `9096f81`. ## Who this is for This guide is for the **organization owner** who has just created a studio organization and is deciding how their existing data gets into PositiveForm. PositiveForm shows you this straight after checkout. You are choosing between having us move your data for you, and moving it yourself. Neither choice traps you: you can import your own data later either way. ## Before you begin - Finish [Create a studio organization](https://positiveform.com/guides/onboarding/create-organization/) first. This offer opens on its own once Stripe confirms your first payment. - Know roughly what you are moving from, for example another studio management system, spreadsheets, or paper. - Understand the offer is a real one-time charge. Read the amount on screen before you click; it is not part of your monthly plan. ## Steps ### Choose how your data moves 1. Read **Bring your data with you**. It shows the one-time price and what it covers: a full white-glove migration from your current system, your next 12 months of PositiveForm included, and the money-back guarantee extended across all 13 covered months. Underneath, it states how much of the price is the migration work once the included plan is accounted for. 2. To have PositiveForm do the migration, click **Add migration for **. You are handed to Stripe Checkout. Pay there, and Stripe returns you to PositiveForm. 3. To move your own data instead, click **I'll migrate my data myself**. That takes you to your dashboard and charges nothing. You can import your own data whenever you are ready; see [Start a studio import](https://positiveform.com/guides/imports/start-import/). ### Tell us what to take off your plate 4. After a paid migration, PositiveForm opens **What should we take off your plate?**. Answering this is how the handoff gets planned; nothing here is a purchase. 5. In **What system are you moving from?**, name your current system, for example `Spark Membership`. 6. Under **Where do you need the most help?**, tick any of **Phone answering service**, **Social media automation**, **Social content creation and management**, and **Advertising campaign management**. Ticking an option registers interest; it is not a purchase or a promise that the service is available yet. 7. Use **What else would make the biggest difference?** for anything the checkboxes miss. 8. Click **Save and continue**, or click **Skip** to answer later. ## Expected outcome If you paid for migration, PositiveForm records the purchase and opens the service questions. Returning to the migration offer afterwards shows **Continue migration intake** instead of the price, so you cannot be charged twice. Saving the questions confirms with **Migration preferences saved** and takes you to your dashboard. Your answers reach the PositiveForm team so they can plan the handoff. If you chose to migrate your own data, you land on the dashboard with nothing charged and nothing recorded, and the studio is ready to set up. ## Screenshots ![Bring your data with you, showing the one-time price, what it covers, and both choices](https://positiveform.com/guides/media/ONB-002/20260729T000500Z/001-migration-offer.webp) ![What should we take off your plate?, with the source system question, the four service options, and Skip beside Save and continue](https://positiveform.com/guides/media/ONB-002/20260729T000500Z/002-service-needs.webp) ## Recovery If starting the migration checkout fails, PositiveForm shows **Could not start migration checkout.** Nothing was charged. Try again. If you cancel in Stripe, PositiveForm tells you **Migration checkout canceled.** and returns you to the offer. If your payment is still settling, PositiveForm says **Your migration payment is still processing.** and returns you to the offer. Do not pay again. Check back shortly; once it settles the offer shows **Continue migration intake**. If PositiveForm cannot confirm a completed payment, you see **Could not confirm migration checkout.** Do not pay a second time. Reload the page, and contact support if the offer still shows the price. If saving the questions fails, PositiveForm shows **Could not save your preferences.** with the reason and keeps your answers on screen. To leave either screen without answering, click **Cancel setup** in the top left, or **Skip** on the questions. You keep whatever you have already paid for, and you can answer later. ## Related guides - [Create a studio organization](https://positiveform.com/guides/onboarding/create-organization/) — the organization setup this offer follows. - [Start a studio import](https://positiveform.com/guides/imports/start-import/) — import your own members and households when you are migrating your data yourself. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Build a studio workspace before creating an account > PositiveForm guide · Getting started · ONB-003 > Canonical page: https://positiveform.com/guides/onboarding/draft-studio-setup/ > This Markdown: https://positiveform.com/guides/onboarding/draft-studio-setup.md **Summary:** Build a working studio workspace before creating any account, and keep it by saving my progress. The draft workspace persists across reloads in the same… **Who can do this:** Studio owners **Required access:** `public` **Where in PositiveForm:** `/setup` **Status:** Draft: not yet verified against a deployed PositiveForm build. Labels may differ. > Draft: this workflow does not currently complete on the deployed demo. The steps below describe the shipped flow; see Recovery and Verification. ## Who this is for Studio owners deciding whether PositiveForm fits, who want to see their own studio in it before committing to anything. Required access: none. This workflow deliberately has no sign-in step. ## Before you begin - Nothing to set up, and no account to create. - Work in one browser on one device. The workspace belongs to that browser until you save it, so it will not follow you to your phone. - Use made-up student details. Real member information belongs in a saved workspace, and PositiveForm will ask you to save before it accepts any. ## Steps 1. Open `/setup`. The page explains that no login or plan is required and that this browser receives revocable access to one isolated draft. 2. Select **Start setting up your studio**. PositiveForm creates the workspace at this point, not when the page loads. 3. Name the studio and work through the setup sections: locations, programs and their class times, and the ranks students move through. 4. Add a few sample students to see rosters and ranks populated. 5. Watch the checklist as you go. It tracks what a working studio still needs, so you can stop at any point and see how far along you are. 6. When PositiveForm offers to save your progress, choose whether to create an account now or keep exploring. It explains which of your actions prompted the offer. ## Expected outcome The studio you built is still there after a reload in the same browser, with its locations, programs, class times, ranks, and sample students intact. Saving your progress turns it into a real organization tied to your account; until then it stays a draft that only this browser can reach. ## Recovery - If the page reports that draft setup is unavailable, the environment you are on has not been configured to provision workspaces. Nothing you can do in the browser will get past it; the studio must be created from an account instead (ONB-001). This is the state the deployed demo is in, reported to PositiveForm support against this story. - If the page says the browser cannot securely create a workspace, the browser is blocking the storage this workflow needs. Try a normal (non-private) window. - If your studio is missing after a reload, the browser discarded its storage. A draft cannot be recovered once that happens; save your progress earlier next time to keep it. - If a limit stops you adding another location, program, class time, progression, or student, that is the deliberate ceiling on an unsaved workspace, not a fault. Save your progress to continue. - If you want the studio gone, use the option to discard it rather than clearing browser data, so the workspace is revoked on the server too. ## Related guides - ONB-001 — Create a studio organization from an account you already have. - ONB-002 — Tell PositiveForm what moving your existing studio would involve. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Sign in to the staff console > PositiveForm guide · Sign in and sign up · AUTH-001 > Canonical page: https://positiveform.com/guides/authentication/sign-in/ > This Markdown: https://positiveform.com/guides/authentication/sign-in.md **Summary:** Sign in and reach the organization-scoped console. The authenticated user reaches the selected organization or a clear organization setup/access state. **Who can do this:** Staff, Managers, Organization owners, Studio owners **Required access:** `clerk.authentication` **Where in PositiveForm:** `/sign-in` **Status:** Verified on 2026-07-26 against PositiveForm build `1096a65`. ## Who this is for Staff, managers, and studio owners who already have a PositiveForm account and need to enter their organization-scoped console. Required access: an active Clerk account connected to a staff record. ## Before you begin - Confirm that your account belongs to an active staff record. - Ask a studio owner which organization you should see after sign-in if your account can access more than one. ## Steps 1. Open `/sign-in`. 2. Select **Continue with Google**, or enter your account email address and select **Continue**. 3. Complete Clerk's remaining sign-in prompts. Keep passwords and verification codes private. 4. Confirm that PositiveForm opens the selected organization's console. A new account without organization access may instead see the organization setup or access screen. ## Expected outcome The signed-in user reaches the correct organization-scoped console, or sees a clear organization setup/access state when no organization is available. ## Screenshots ![The authenticated synthetic demo account at the organization dashboard](https://positiveform.com/guides/media/AUTH-001/20260726T234105Z/001-authenticated-console.webp) ## Recovery - If Clerk says the account cannot be found, confirm the email address or ask a studio owner to invite the account. - If the wrong organization opens, use the organization switcher before doing any work. - If sign-in loops or returns an error, reload once and try again. Preserve the visible error and contact PositiveForm support if the problem continues. ## Related guides - AUTH-002 — Create a staff account when one does not exist. - ONB-001 — Create an organization when the account has no organization access. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Create a staff account > PositiveForm guide · Sign in and sign up · AUTH-002 > Canonical page: https://positiveform.com/guides/authentication/sign-up/ > This Markdown: https://positiveform.com/guides/authentication/sign-up.md **Summary:** Open the dedicated registration flow from sign in. The application renders Clerk registration at the dedicated sign-up route. **Who can do this:** New staff (signed out) **Required access:** `public` **Where in PositiveForm:** `/sign-up` **Status:** Verified on 2026-07-26 against PositiveForm build `1096a65`. ## Who this is for Prospective staff who need to open PositiveForm's dedicated account registration flow before joining or creating a studio workspace. Required access: none. This is a public, signed-out workflow. ## Before you begin - Sign out of any existing PositiveForm session. ## Steps 1. Open the PositiveForm sign-in page and select **Sign up**, or go directly to `/sign-up`. 2. Confirm that the page says **Create your account** and offers both **Continue with Google** and an email registration form. 3. For email registration, enter optional first and last names, an email address, and a password, then select **Continue**. 4. Follow any verification prompts from Clerk. After account creation, PositiveForm will either open an available organization or show the next organization access/setup step. ## Expected outcome The `/sign-up` route renders Clerk's **Create your account** form. It includes Google registration, email and password fields, a **Continue** button, and a link back to **Sign in**. ## Screenshots ![The Create your account form on the deployed PositiveForm sign-up route](https://positiveform.com/guides/media/AUTH-002/20260726T222554Z/001-registration-rendered.webp) ## Recovery - If sign-in appears instead, sign out and reopen `/sign-up`. - If the email is already registered, select **Sign in** rather than creating a duplicate account. - If the form does not load, reload once. Preserve the visible error and report a finding if the dedicated route still does not render. ## Related guides - AUTH-001 — Sign in to the staff console after the account exists. - ONB-001 — Create an organization when the account has no studio access yet. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Start a studio import > PositiveForm guide · Data imports · IMP-001 > Canonical page: https://positiveform.com/guides/imports/start-import/ > This Markdown: https://positiveform.com/guides/imports/start-import.md **Summary:** Download canonical templates and create an isolated import job. The import job opens without creating operational records. **Who can do this:** Organization owners, Managers **Required access:** `imports.manage` **Where in PositiveForm:** `/settings/imports/new` **Status:** Verified on 2026-07-29 against PositiveForm build `a15afd7`. ## Who this is for This guide is for **migration staff** creating an isolated import job before any operational records are written. ## Before you begin - Download the canonical templates from the imports area when you need file shapes. - Choose the destination location carefully; the job is scoped to it. ## Steps 1. Open **Settings**, then **Data imports** (breadcrumb **Data imports**). 2. Start a new job at **Start a studio import** (`/settings/imports/new`). 3. Choose **Destination location** from the combobox. 4. Click **Create import**. Use **Cancel** to leave without creating a job. 5. After create, the import job opens on its validation path so you can upload and map files ([Upload, map, validate, and review import data](https://positiveform.com/guides/imports/validate-import/)). ## Expected outcome An import job exists without creating operational members or households yet. You are on the job’s validation workspace. ## Screenshots ![Start a studio import with destination location and Create import](https://positiveform.com/guides/media/IMP-001/20260730T034000Z/000-start.webp) ## Recovery If **Create import** fails, confirm location selection and permissions. Discard stray jobs from the imports list rather than leaving half-started migrations. ## Related guides - IMP-002 - ONB-002 --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Upload, map, validate, and review import data > PositiveForm guide · Data imports · IMP-002 > Canonical page: https://positiveform.com/guides/imports/validate-import/ > This Markdown: https://positiveform.com/guides/imports/validate-import.md **Summary:** Upload files, map fields, validate relationships, and review retained records safely. Validation reports unknown, duplicate, consent, and relationship issues… **Who can do this:** Organization owners, Managers **Required access:** `imports.manage` **Where in PositiveForm:** `/settings/imports/:jobId/validation` **Status:** Draft: not yet verified against a deployed PositiveForm build. Labels may differ. > Draft: headed Staff A opens the Files step for a real job (import_job_2ih2drjdcqufNuORojFlBQ) with Upload and inspect and Review column mapping. Browser acceptance policy blocks the upload command, so a full file map/validate pass cannot be automated until that policy allows sample-file upload or another approved path exists. ## Who this is for Migration staff uploading source files into an existing import job. ## Before you begin - Create a job first ([Start a studio import](https://positiveform.com/guides/imports/start-import/)). - Use only authorized studio data in sample files. ## Steps 1. Open the import job from **Data imports**. 2. On **Files**, choose a source type (for example **Programs CSV**). 3. Pick a file, set **File contents** / **Record type**, then **Upload and inspect**. 4. Continue to **Review column mapping** and clear validation issues. 5. Leave uncommitted until [Commit and reconcile an import](https://positiveform.com/guides/imports/commit-reconcile-import/). ## Expected outcome Validation reports issues without creating operational records. ## Screenshots ![Import Files upload step](https://positiveform.com/guides/media/IMP-002/20260730T071600Z/000-start.webp) ## Recovery If **Upload and inspect** stays disabled, choose a file first. Use **Discard import** only when abandoning the job ([Discard or safely roll back an import](https://positiveform.com/guides/imports/discard-rollback-import/)). ## Related guides - [Start a studio import](https://positiveform.com/guides/imports/start-import/) — create the job. - [Commit and reconcile an import](https://positiveform.com/guides/imports/commit-reconcile-import/) — commit after validation. - [Discard or safely roll back an import](https://positiveform.com/guides/imports/discard-rollback-import/) — discard or roll back. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Commit and reconcile an import > PositiveForm guide · Data imports · IMP-003 > Canonical page: https://positiveform.com/guides/imports/commit-reconcile-import/ > This Markdown: https://positiveform.com/guides/imports/commit-reconcile-import.md **Summary:** Lock a reviewed snapshot, commit it transactionally, reconcile it, and activate the accepted baseline. Operational records are created or matched once… **Who can do this:** Organization owners, Managers **Required access:** `imports.manage` **Where in PositiveForm:** `/settings/imports/:jobId/reconciliation` **Status:** Draft: not yet verified against a deployed PositiveForm build. Labels may differ. > Draft: commit requires a validated job with no blocking errors. Full validation still depends on uploading sample files (IMP-002), which headed acceptance cannot automate while upload is policy-blocked. ## Who this is for Migration staff finishing a validated import job. ## Before you begin - An import job exists ([Start a studio import](https://positiveform.com/guides/imports/start-import/)). - Validation is clear ([Upload, map, validate, and review import data](https://positiveform.com/guides/imports/validate-import/)). ## Steps 1. Open the import job from **Data imports**. 2. Continue to reconciliation/commit when validation is clear. 3. Review matches and new records carefully. 4. Commit only when the review snapshot is correct. ## Expected outcome Operational records are created or matched once; activation sends no bills, invitations, or messages. ## Recovery If commit is blocked, return to [Upload, map, validate, and review import data](https://positiveform.com/guides/imports/validate-import/). If the job should not land, use [Discard or safely roll back an import](https://positiveform.com/guides/imports/discard-rollback-import/). ## Related guides - [Upload, map, validate, and review import data](https://positiveform.com/guides/imports/validate-import/) — validate first. - [Discard or safely roll back an import](https://positiveform.com/guides/imports/discard-rollback-import/) — discard or roll back. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Discard or safely roll back an import > PositiveForm guide · Data imports · IMP-004 > Canonical page: https://positiveform.com/guides/imports/discard-rollback-import/ > This Markdown: https://positiveform.com/guides/imports/discard-rollback-import.md **Summary:** Discard staged data or preview and execute a safe rollback of untouched import-owned records. Discard purges staged personal data; rollback removes only safe… **Who can do this:** Organization owners, Managers **Required access:** `imports.manage` **Where in PositiveForm:** `/settings/imports/:jobId/completion` **Status:** Verified on 2026-07-29 against PositiveForm build `a15afd7`. ## Who this is for Migration staff abandoning a staged job or rolling back import-owned records. ## Before you begin - An import job exists ([Start a studio import](https://positiveform.com/guides/imports/start-import/)). - Understand whether the job was committed. ## Steps 1. Open the import job from **Data imports** (often on the **Files** step). 2. Open **Discard import**. 3. Confirm discard when the job is still staged and should not commit. 4. For committed jobs, follow completion/rollback controls and review blockers before confirming. ## Expected outcome Discard purges staged personal data; rollback removes only safe import-owned records and preserves matched or later-used records. ## Screenshots ![Import job Files step with Discard import](https://positiveform.com/guides/media/IMP-004/20260730T072000Z/000-start.webp) ![After discard control](https://positiveform.com/guides/media/IMP-004/20260730T072000Z/001-after-discard.webp) ## Recovery If discard is unavailable, the job may already be committed; use rollback controls and read blockers carefully. ## Related guides - [Upload, map, validate, and review import data](https://positiveform.com/guides/imports/validate-import/) — upload and validate. - [Commit and reconcile an import](https://positiveform.com/guides/imports/commit-reconcile-import/) — commit path. --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Connect and operate Stripe > PositiveForm guide · Integrations · INT-001 > Canonical page: https://positiveform.com/guides/integrations/stripe-connection/ > This Markdown: https://positiveform.com/guides/integrations/stripe-connection.md **Summary:** Connect Stripe, inspect account status, and manage customer-visible webhook setup. Connection status, charges readiness, product sync, and webhook health are… **Who can do this:** Studio owners, Organization owners **Required access:** `integrations.manage` **Where in PositiveForm:** `/settings/integrations/stripe` **Status:** Verified on 2026-07-30 against PositiveForm build `a15afd7`. ## Who this is for This guide is for **organization owners** connecting Stripe and inspecting customer-visible billing readiness. ## Before you begin - You need owner access. - Never paste provider secrets anywhere outside PositiveForm. ## Steps 1. Open **Settings › Integrations › Stripe** (`/settings/integrations/stripe`). The heading is **Stripe**. 2. Read connection status on the page. Use **Refresh status** after changes. 3. Review product and price columns (**Product**, **Stripe ID**, **Prices**) when the account is connected. 4. Use links such as **Settings › Billing setup** for studio catalog policy, or **Integrations** to return to the integrations list. 5. **Disconnect** only when deliberately removing the connection. ## Expected outcome Connection status, charges readiness, product sync, and webhook health are visible without exposing secret keys in the PositiveForm console. ## Screenshots ![Stripe integration status and products](https://positiveform.com/guides/media/INT-001/20260730T012000Z/000-start.webp) ## Recovery If status looks stale, **Refresh status**. If disconnect was accidental, reconnect through the same page and re-check product sync. ## Related guides - BILL-008 - BILL-004 --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Connect and verify Resend > PositiveForm guide · Integrations · INT-002 > Canonical page: https://positiveform.com/guides/integrations/resend-connection/ > This Markdown: https://positiveform.com/guides/integrations/resend-connection.md **Summary:** Connect Resend and verify sending, receiving, and delivery webhooks. PositiveForm verifies each customer-managed channel and stores no secret in guide or run… **Who can do this:** Studio owners, Organization owners **Required access:** `integrations.manage` **Where in PositiveForm:** `/settings/integrations/resend` **Status:** Draft: not yet verified against a deployed PositiveForm build. Labels may differ. > Draft: selecting the default one-off template is implemented but still needs a deployed-demo replay. The retained screenshot and verification below document the previously deployed connection workflow. ## Who this is for This guide is for **organization owners** managing Resend email connection and verification. ## Before you begin - Owner access is required. - Create API keys in Resend using **Where to create a key** if you do not have one yet. Never put the key in a support material. - To apply a branded layout to one-off lead and member messages, create and publish that template in Resend first. It must contain the `MESSAGE` variable. Any other variables must either be one of `RECIPIENT_NAME`, `CONTACT_NAME`, `STUDIO_NAME`, or `STAFF_NAME`, or have a fallback in Resend. ## Steps 1. Open **Settings › Integrations › Resend** (`/settings/integrations/resend`). The heading is **Resend**. 2. For connection: paste a key only into the live **API key** field in the PositiveForm console (not into notes), then click **Verify API key**. 3. Confirm verification success on the page for sending/receiving channels as shown. 4. Open **One-off email layout**. Choose a published template under **Default one-off message**, then click **Save one-off template**. Choose **No template · send plain text** to clear the layout without disabling one-off email. 5. For marketing automation (when that section is present on the same page), change status only after reading the acknowledgement text, then save. 6. Return via **Integrations** when finished. ## Expected outcome PositiveForm verifies each customer-managed channel, uses the selected published layout for one-off previews, and stores no secret in guide or run evidence. No secret is stored in support material. ## Screenshots ![Resend integration page](https://positiveform.com/guides/media/INT-002/20260730T003500Z/000-start.webp) ## Recovery If verification fails, regenerate the key in Resend and verify again. If the one-off layout is missing or incompatible, publish it with `MESSAGE` in Resend, then reselect it and preview the message again. If marketing will not activate, complete any required connection steps first. ## Related guides - COMMS-001 - INT-003 --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Configure organization email marketing > PositiveForm guide · Integrations · INT-003 > Canonical page: https://positiveform.com/guides/integrations/resend-marketing/ > This Markdown: https://positiveform.com/guides/integrations/resend-marketing.md **Summary:** Configure, activate, pause, resume, or disable marketing email automation. Marketing status and automation settings change only after explicit acknowledgement… **Who can do this:** Studio owners, Organization owners **Required access:** `email.marketing.send`, `email.marketing.manage_consent` **Where in PositiveForm:** `/settings/integrations/resend` **Status:** Verified on 2026-07-29 against PositiveForm build `beb3f3c`. ## Who this is for This guide is for **organization owners** managing Resend email marketing automation. ## Before you begin - Owner access is required. - Create API keys in Resend using **Where to create a key** if you do not have one yet. Never put the key in a support material. ## Steps 1. Open **Settings › Integrations › Resend** (`/settings/integrations/resend`). The heading is **Resend**. 2. For connection: paste a key only into the live **API key** field in the PositiveForm console (not into notes), then click **Verify API key**. 3. Confirm verification success on the page for sending/receiving channels as shown. 4. For marketing automation (when that section is present on the same page), change status only after reading the acknowledgement text, then save. 5. Return via **Integrations** when finished. ## Expected outcome Marketing status and automation settings change only after explicit acknowledgement and validation. No secret is stored in support material. ## Screenshots ![Resend integration page](https://positiveform.com/guides/media/INT-003/20260730T004000Z/000-start.webp) ## Recovery If verification fails, regenerate the key in Resend and verify again. If marketing will not activate, complete any required connection steps first. ## Related guides - INT-002 - COMMS-001 --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Manage developer API keys > PositiveForm guide · Developer setup · API-001 > Canonical page: https://positiveform.com/guides/developer/developer-api-keys/ > This Markdown: https://positiveform.com/guides/developer/developer-api-keys.md **Summary:** Create, rotate, and revoke developer API keys from the product. Key lifecycle is visible, new secrets are shown only once, and revoked keys cannot be used. **Who can do this:** Organization owners, Managers **Required access:** `integrations.manage` **Where in PositiveForm:** `/settings/developer/api` **Status:** Verified on 2026-07-30 against PositiveForm build `a15afd7`. ## Who this is for This guide is for **integration staff** creating and managing developer API keys inside PositiveForm. ## Before you begin - Prefer a non-production studio when experimenting. - Copy any new secret immediately; it is shown only once. ## Steps 1. Open **Settings › Developer › API** (`/settings/developer/api`). The heading is **Developer API**. 2. Enter an **Integration name**. 3. Tick the locations the key may access (for example studio location checkboxes shown on the form). 4. Click **Create key**. 5. Copy the secret from the one-time display, store it in your secret manager, then close the dialog. Rotate or revoke from the same page when a key is compromised. 6. Use the **Developer** breadcrumb to reach webhooks next if needed. ## Expected outcome Key lifecycle is visible. New secrets appear once; revoked keys cannot be used. ## Screenshots ![Developer API key form with integration name and Create key](https://positiveform.com/guides/media/API-001/20260730T011000Z/000-start.webp) ## Recovery If create fails, check that a name and at least one location are selected. If you lost a secret, revoke the key and create a new one rather than hunting for it anywhere outside PositiveForm. ## Related guides - API-002 --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt. --- # Operate webhook endpoints > PositiveForm guide · Developer setup · API-002 > Canonical page: https://positiveform.com/guides/developer/webhook-endpoints/ > This Markdown: https://positiveform.com/guides/developer/webhook-endpoints.md **Summary:** Create, test, rotate, archive, and inspect customer webhook endpoints and deliveries. Endpoint state and delivery/replay history are visible without turning… **Who can do this:** Organization owners, Managers **Required access:** `integrations.manage` **Where in PositiveForm:** `/settings/developer/webhooks` **Status:** Verified on 2026-07-29 against PositiveForm build `beb3f3c`. ## Who this is for This guide is for **integration staff** creating and inspecting customer webhook endpoints and deliveries. ## Before you begin - Have the destination URL your system will receive. - Do not paste signing secrets anywhere outside PositiveForm. ## Steps 1. Open **Settings › Developer › Webhooks** (`/settings/developer/webhooks`). The heading is **Webhooks**. 2. Click **Create webhook** to add an endpoint. 3. Complete the URL, events, and secret fields the form requires, then save. 4. Return to the list to inspect delivery history, replay, archive, or rotate as offered on the endpoint. 5. Use **Developer** to return to API keys if needed. ## Expected outcome Endpoint state and delivery/replay history are visible without turning the guide into a full integration test harness. ## Screenshots ![Webhooks list with Create webhook](https://positiveform.com/guides/media/API-002/20260730T005000Z/000-start.webp) ## Recovery If deliveries fail, open the endpoint detail for response codes before rotating the secret. Archive unused endpoints rather than leaving dead URLs active. ## Related guides - API-001 --- Source: PositiveForm customer guides, https://positiveform.com/guides/. Every guide as one file for AI assistants: https://positiveform.com/llms-full.txt. Guide index: https://positiveform.com/llms.txt.