eminos/statamic-feedback
Statamic Feedback is a lightweight addon for collecting user feedback via a front-end form and managing submissions in the Statamic control panel. It supports customizable fields, email notifications, and simple status tracking, making it easy to gather and review feedback without a separate service...
This is a Statamic addon (Control Panel + Antlers), so treat installation as a Statamic workflow rather than a pure Laravel package: composer require the package, then confirm the service provider is auto-discovered and the addon appears under Tools → Addons in the CP. Publish the config (php artisan vendor:publish --tag=...) before touching anything else — widget position, screenshot/pin toggles, listing column, and the YAML storage path all live there and are the fastest way to understand the surface area.
Where to look first, in order:
First use case: add the tag to your base layout, open a page, pin a comment to a nav element, @mention a teammate, and verify (a) the YAML file appeared, (b) the entry's feedback count column incremented, (c) the unread badge and toast fired for the mentioned user. That single loop exercises storage, entry linking, notifications, and permissions at once.
Environment-gated frontend widget. Don't ship the tag unconditionally. Wrap it so it only renders for authenticated CP users or in staging:
{{ if environment == 'staging' || logged_in }}
{{ feedback_widget }}
{{ /if }}
Given the widget allows public comments and mentions, this is the difference between a review tool and an open guestbook on a marketing site.
Stable pin targets. Pins resolve via CSS selectors, so selector stability is an architectural concern, not a detail. Adopt a convention — data-feedback="hero-cta" on any element reviewers are likely to annotate — rather than pinning to utility classes or nth-child paths that Tailwind/Vue re-renders will silently break. Add it to your component/partial checklist the same way you'd add a test id.
Config-per-context. The config is global, but you often want different behaviour per site or per section: full pins + screenshots on staging, mentions-only in the CP. Publish the config and use env vars for the storage path and toggles so staging and production don't diverge in code.
Entry linking as the workflow backbone. The feedback count column in collection listings plus origin-entry linking is what turns this from a comment box into a review queue: editors sort by feedback count, open the entry, resolve items, move on. Lean on the tabbed views (Unread / Mentions / Mine / Resolved) as the triage loop and treat "Resolved" as your done state — teach the team to resolve rather than delete, so history survives.
Multi-site. Feedback is shared via origin entry IDs, so a remark left on the EN entry surfaces against the localised version. That's usually what you want, but be deliberate: reviewers may not realise their note appears on other sites, and entries without a localised counterpart produce links that go nowhere useful.
Notifications. Mentions and toasts route through Statamic's preferences system, which means per-user opt-out is already handled — don't build your own mailer. If a mention produces no toast, check the user's preferences before debugging your code.
Deployment/CI. Flat-file YAML means no migrations. Decide explicitly whether the storage directory is committed (review history in git, reviewable diffs) or ignored + backed up (cleaner history). Either way it must survive deploys.
php artisan config:clear locally and remember config:cache in production will freeze your env-driven toggles until the next cache rebuild.data-* attributes are the fix.composer update eats your changes.composer.json, and treat any future release notes mentioning storage or schema changes as requiring a read-and-back-up step before upgrading.How can I help you explore Laravel packages today?