HACCP Critical Control Point (CCP) Worksheet

Interactive worksheet to define and document CCPs, record critical limits, monitoring, corrective actions, verification, escalation contacts, review cadence, and a simple monitoring snapshot. Adds risk-context fields and practical guidance so CCPs are operational and useful during everyday shifts.

{ "title": "HACCP CCP Worksheet", "introductionHtml": "

Define and operationalize a Critical Control Point (CCP)

This interactive worksheet captures one CCP entry for a single process step, product, or menu item. Use it to make monitoring, corrective actions, verification, and record keeping clear and usable during everyday shifts. Save one form per CCP; teams commonly keep a site-specific HACCP collection of these entries.

Why this matters

Clear, concise CCP documentation helps staff act quickly when something goes wrong, reduces uncertainty during busy shifts, and creates defensible records for regulators and auditors.

Rapid CCP decision guide

  1. Is a biological, chemical, or physical hazard present at this step that is reasonably likely to occur and could cause harm?
  2. If so, can subsequent steps reliably prevent, eliminate, or reduce that hazard to acceptable levels?
  3. If subsequent steps cannot reliably control the hazard, this step is a CCP. If they can, document the controlling step and its controls instead.

Quick corrective-action checklist: When monitoring shows a critical-limit breach: (a) stop production of affected product or isolate the batch, (b) correct the cause so monitoring returns to limit, (c) document product disposition (rework, hold for evaluation, discard) and timeframes, (d) notify verification/escalation contact, and (e) record the incident and follow-up verification steps.

Use the optional monitoring snapshot to capture recent evidence and link to your ongoing monitoring log for detailed entries.

", "submitLabel": "Save CCP Entry", "successMessage": "CCP entry saved. Return to add another CCP or open your site's HACCP collection to review saved items.", "dataType": "HACCP.CCPWorksheet", "schemaVersion": "1.1", "fields": [ { "key": "ccp_id", "fieldType": "text", "label": "CCP name or ID", "helpText": "Give a concise name: e.g., 'Cook - Chicken Breast Internal Temp' or 'Cooling of Soup - 135°F to 41°F'", "required": true }, { "key": "process_step", "fieldType": "text", "label": "Process step / location", "helpText": "Where in the process does this control occur? (e.g., final cook, cooling, metal detection, packaging)", "required": true }, { "key": "product_or_menu_item", "fieldType": "text", "label": "Product or menu item scope", "helpText": "Which products, batches, or menu items does this CCP apply to? Be specific when possible.", "required": true }, { "key": "hazard_description", "fieldType": "textarea", "label": "Identified hazard(s)", "helpText": "Describe the biological, chemical, or physical hazard that this CCP is intended to control. Include why the hazard is reasonably likely to occur.", "required": true }, { "key": "hazard_severity", "fieldType": "select", "label": "Hazard severity (operational assessment)", "helpText": "Select how severe the impact would be if the hazard reached the guest.", "required": false, "options": [ {"value": "low", "label": "Low"}, {"value": "moderate", "label": "Moderate"}, {"value": "high", "label": "High"}, {"value": "critical", "label": "Critical"} ] }, { "key": "hazard_likelihood", "fieldType": "select", "label": "Likelihood the hazard will occur at this step", "helpText": "Estimate how likely the hazard is at this step under normal conditions.", "required": false, "options": [ {"value": "rare", "label": "Rare"}, {"value": "unlikely", "label": "Unlikely"}, {"value": "possible", "label": "Possible"}, {"value": "likely", "label": "Likely"}, {"value": "almost_certain", "label": "Almost certain"} ] }, { "key": "is_ccp", "fieldType": "radio", "label": "Is this step a CCP based on your hazard analysis and decision guide?", "helpText": "Select 'Yes' only when a control at this step is needed to prevent/eliminate/reduce the hazard to acceptable levels.", "required": true, "options": [ {"value": "yes", "label": "Yes"}, {"value": "no", "label": "No (document controlling step below)"} ] }, { "key": "controlling_step_if_not_ccp", "fieldType": "text", "label": "Controlling step (if not a CCP)", "helpText": "If this step is not a CCP, which later or earlier step controls the hazard? Include where that control is documented.", "required": false }, { "key": "critical_limit", "fieldType": "text", "label": "Critical limit(s)", "helpText": "Define measurable limit(s) (e.g., internal temp ≥165°F for 15s; pH ≤4.2; metal detection sensitivity 2.0 mm). Be specific and include units.", "required": true }, { "key": "measurement_unit", "fieldType": "text", "label": "Measurement units & tolerance", "helpText": "State units and acceptable tolerance (if any). Example: °F, °C, pH units, mg/kg, mm. If none, enter 'n/a'.", "required": false }, { "key": "monitoring_method", "fieldType": "textarea", "label": "Monitoring method & equipment", "helpText": "How is the limit measured? Include instrument type, calibration frequency, sample size, and who performs the check.", "required": true }, { "key": "monitoring_frequency", "fieldType": "text", "label": "Monitoring frequency", "helpText": "How often monitoring occurs (e.g., every batch, hourly, continuous). If continuous, note how data is reviewed.", "required": true }, { "key": "responsible_role", "fieldType": "text", "label": "Responsible role", "helpText": "Role or title responsible for monitoring (e.g., Line Cook, Shift Lead, QA Technician). Include backup if appropriate.", "required": true }, { "key": "corrective_action", "fieldType": "textarea", "label": "Corrective action(s) for deviation", "helpText": "List step-by-step actions to take when a monitoring result is outside the critical limit. Include how to identify affected product, how to disposition it, and who to notify.", "required": true }, { "key": "recommended_action_timeframe", "fieldType": "text", "label": "Recommended timeframe for corrective actions and disposition", "helpText": "State expected maximum time (e.g., within 30 minutes) to take corrective action and make a disposition decision.", "required": false }, { "key": "escalation_contact", "fieldType": "text", "label": "Escalation contact (who to notify)", "helpText": "Name, role, and contact method (phone/email) for the person who must be notified for verification or regulatory reporting.", "required": false }, { "key": "verification_procedure", "fieldType": "textarea", "label": "Verification and validation", "helpText": "How will the CCP be verified? Include frequency of verification (e.g., daily review, weekly audit), methods (e.g., calibration checks, supervisory observation), and who verifies corrective actions.", "required": true }, { "key": "training_required", "fieldType": "yesno", "label": "Is specific training required for monitoring or corrective actions?", "helpText": "Select 'Yes' if staff need a documented training step or certification to perform monitoring or corrective actions.", "required": false }, { "key": "record_location", "fieldType": "text", "label": "Record location", "helpText": "Where are monitoring and corrective action records stored? Provide file path, binder, POS reference, or digital location.", "required": true }, { "key": "review_period", "fieldType": "select", "label": "Planned review cadence", "helpText": "When will this CCP be reviewed for continued suitability? Choose a cadence that fits your operation.", "required": false, "options": [ {"value": "quarterly", "label": "Quarterly"}, {"value": "biannually", "label": "Biannually"}, {"value": "annually", "label": "Annually"}, {"value": "as_needed", "label": "As needed (after incidents or changes)"} ] }, { "key": "review_date", "fieldType": "text", "label": "Planned review date", "helpText": "When will this CCP next be reviewed? Use YYYY-MM-DD or a cadence term like 'Quarterly'.", "required": false }, { "key": "recent_monitoring_date", "fieldType": "text", "label": "Most recent monitoring date/time", "helpText": "Optional: record the date/time of a representative recent monitoring check.", "required": false }, { "key": "recent_monitoring_summary", "fieldType": "textarea", "label": "Optional: recent monitoring snapshot", "helpText": "Paste or summarize the most recent measurement(s): Date, Time, Measurement, Status (OK/Not OK), Action Taken, Operator. This is a quick snapshot—use your monitoring log for full history.", "required": false }, { "key": "monitoring_log_csv", "fieldType": "textarea", "label": "Optional: paste recent monitoring log entries (CSV or plain text)", "helpText": "Paste rows like: Date, Time, Measurement, Status (OK/Not OK), Action Taken, Operator. Example:\n2026-08-01, 12:30, 167°F, OK, none, J. Smith\n2026-08-01, 13:45, 160°F, Not OK, held & reheated, S. Patel\nThis helps capture context when saving the CCP entry. You may also submit monitoring entries as a separate monitoring log in your HACCP collection.", "required": false }, { "key": "regulatory_or_reference", "fieldType": "textarea", "label": "References and supporting evidence", "helpText": "Cite regulatory guidance, supplier data, scientific literature, or internal SOPs that support your critical limit and monitoring approach.", "required": false }, { "key": "notes_and_rationale", "fieldType": "textarea", "label": "Notes and rationale", "helpText": "Explain reasoning, references, or supporting data. Include cross-references to recipes, SOPs, or training materials.", "required": false }, { "key": "attachments_hint", "fieldType": "text", "label": "Attachments and templates", "helpText": "Attach supporting documents using your site's file tools after saving (e.g., flowchart, calibration certificates, SOPs).", "required": false } ] }

Discussion

Comments and conversation will live here.