FAQ and Troubleshooting
Answers for the most common setup, access, workflow, and support questions for Recruitment.
Frequently Asked Questions
Why can an admin see the module but a staff member cannot?The module likely depends on both the module enable setting and role permissions. Confirm the module is enabled, then assign the relevant permission keys to the staff role and test with a non-admin account.
Why is a list empty even though records exist?Check filters, deleted/archived status, tenant context, date range, ownership, and specific-member permissions. Some module lists intentionally hide records until a status, location, category, or assignment filter is selected.
What should we do before deleting or disabling records?Confirm there is no active transaction, public page, report, job, or linked workflow depending on that record. Prefer deactivation or status changes when history must remain visible.
How do we know which screens belong to this module?Use the Data and Screen Reference page. It lists controllers, routes, views, menu entries, and supporting files discovered from the module package.
When should this guide be updated?Update it whenever routes, screens, permissions, public pages, APIs, jobs, seeders, reports, or the core workflow changes.
Why is the public page not visible?Check the public page configuration, content or CMS sync status, module enablement, route mapping, and whether the page was tested while logged out.
Why are scheduled results or SLA fields not updating?Confirm the cron worker is running, the module job is enabled, and any module setting gate used by the job is turned on.
Why is an API response different from the screen?API routes can have separate filters, scopes, examples, and serializers. Compare the API config files with the screen controller and confirm the same tenant, permission, and filter context.
SEO, Google for Jobs, and Analytics (v1.4.0)
Why doesn't my job show up on Google for Jobs?A posting is only eligible when its status is Open, its application deadline is in the future (or left blank so a deadline is auto-set from the default validity window), it has a location (City, Region, Country) or a Remote work arrangement, and its robots setting allows indexing. Open the SEO & Google for Jobs editor and review the eligibility score and its checklist for anything blocking the posting. Even a fully eligible posting can take Google several days to crawl, so use the Rich Results Test button in the editor toolbar to confirm Google can read the posting's markup.
Why is my posting's SEO score low?The checklist beside the score names the exact issues. Critical items block Google for Jobs eligibility entirely: a missing location on a non-remote job, a deadline already in the past, or a description under roughly 200 characters. Warning items reduce quality but do not block eligibility: no application deadline, no employment type, or no published salary (postings that show a salary attract significantly more applications). Fix the critical items first, then click Analyze to re-score.
How are views counted — is this tracking applicants?No. View counting is anonymous and privacy-first: no cookies are set, and a visitor is recognized only within a single day through an irreversible daily-rotating code. Search-engine and AI crawlers and browser preloading are excluded, repeat views by the same visitor within 30 minutes count once, and IP, browser, and referrer details are stored one-way hashed. Raw view events are deleted after 90 days, leaving only anonymous daily totals, and a view is never linked to an applicant or a user account.
Why did my posting close by itself?Its application deadline passed. A nightly sweep automatically closes open postings whose deadline has gone by, and the system activity log records the close reason as "expired". To reopen the position, edit the posting, set a new future deadline, and change the status back to Open.
The search-engine pings show "skipped" — is something broken?No. "Skipped" means the server credentials for the ping services (the INDEXNOW_KEY and GOOGLE_INDEXING_SA_JSON values in the server environment) have not been configured. Nothing breaks: the jobs sitemap remains the discovery path and search engines will still find open postings. Ask your server administrator to configure the credentials if you want new and closed postings picked up faster.
Analytics started with version 1.4.0, so there is no view history from before the module migration was run. Also remember that the daily charts refresh hourly and that repeat views by the same visitor within 30 minutes count once. If numbers stay at zero, confirm with your administrator that php erpat migrate:modules has been run since the upgrade.
Troubleshooting Checklist
- Confirm the current tenant, user role, module toggle, and permission keys.
- Reproduce the issue from the exact URL and record ID reported by the user.
- Compare administrator behavior with a role-limited test user.
- Review filters, deleted/archive flags, status, date ranges, and ownership fields.
- Check recent module changes in README, CHANGELOG, migrations, and routes.
- Check scheduled job status and whether the relevant job is enabled.
- Test public pages in a logged-out browser session.
- Inspect API filters, scopes, and examples when the issue comes from an integration.
Glossary
- Module slug
- The stable key used by ERPat to enable, gate, and discover this module. For this module it is recruitment.
- Menu entry
- The sidebar label a user clicks to reach the module workspace.
- Permission key
- A named access rule assigned to roles so staff can view, create, update, delete, report, or configure module records.
- Route
- A URL mapping from a browser path to a module controller action.
- Seeder
- An operator-run script that creates sample or starter data. Seeders are not the same as schema migrations.
- Migration
- A database schema change that prepares tables or columns required by the module.
- Public page
- A page or endpoint that can be viewed outside the staff workspace and must be checked for privacy.
- Scheduled job
- A background process that can update records, send notifications, or refresh summaries without a user clicking a screen.
Escalation Notes
- Capture the exact user, tenant, URL, record ID, date range, and action attempted.
- Check whether the same action works for an administrator and for a role-limited user.
- Review module routes, permissions, settings, migrations, jobs, and logs before changing data manually.
- Document the final cause in the module README, CHANGELOG, or this guide if it changes how users should operate the module.