varsuite/statamic-resend-form-submissions
A Statamic addon for resending stored form submissions from the control panel, so you can re-deliver entries to recipients without re-entering data. Handy for follow-ups, failed deliveries, or testing notification templates.
Architecture fit. This is a deliberately thin Statamic control-panel addon: register an AddonServiceProvider, add a CP route behind statamic.cp middleware, register a small Vue component into the form submissions listing, and on click re-enter Statamic's existing form-notification pipeline against a stored submission record. It introduces no data model, no migrations, and no external services — it is a UX wrapper around functionality Statamic already owns (the Submission object plus the form's configured Email/notification recipients). As an architectural pattern it fits cleanly; the concern is not the shape of the integration but the fact that the integration point is one of the more volatile surfaces in Statamic (CP listing component registration and the internal form/email classes have shifted across the 3.x → 4.x → 5.x line).
Integration feasibility. Technically high: composer install, asset publish, cache clear, one route to smoke-test. The business capability is also genuinely useful — it converts "a customer says they never got the confirmation email" from a developer task (tinker/CLI re-send) into an editor-level recovery action. That is the entire value proposition, and it's a real one in a forms-heavy site.
Technical risk. High relative to the code's size:
storage vs. database driver). Upgrades will break it in ways that are hard to predict without reading the source.Key questions to answer before any install.
Mail::queue vs. synchronous), and what happens on SMTP failure — silent no-op, exception, or user-visible error?Stack fit. Statamic 3/4/5 on Laravel, composer-installed, no infrastructure footprint, no DB changes. It runs in the production control panel, so despite being a trivial addon it must be treated as production code with the same review, pinning, and rollback story as anything else.
Recommended migration path. Do not add an archived, zero-adoption package to the dependency tree. Two viable routes:
path or VCS repository, pin it, and accept maintenance. Fastest if you need it this sprint and your Statamic minor matches.POST /cp/forms/{form}/submissions/{submission}/resend), a permission check, a service that replays the form's email notification against the stored submission payload, a listing row action in a small Vue bundle, and a log entry. You get the capability, the audit trail, and zero dependency — cheaper than the fork within two Statamic upgrade cycles.Compatibility. Pin to your exact Statamic minor and validate against Statamic 5's listing-action API before committing; expect to patch both the PHP route and the Vue registration if you're on 4.x/5.x and the package was written for 3.x. Test with multiple recipients, attachments, and both submission drivers.
Sequencing.
Maintenance. This is the dominant cost and it is entirely yours. Archived plus zero dependents means every Statamic major (and several minors) becomes a patch you own, on someone else's timeline. Expect to touch it once per Statamic upgrade cycle; the in-house reimplementation pays for itself within roughly two cycles.
Support. No upstream, no advisories, no triage. Escalation is internal-only. An archived dependency will also typically trip organizational SCA/policy gates ("no unmaintained packages in production"), which means you'll need an explicit exception or a fork to stay compliant.
Scaling. Effectively nil. Each click is a constant-time operation on an existing submission record; no throughput, storage, or query-cost impact. The only scaling concern is mailer volume and sender reputation if operators bulk-resend across a large submissions list — enforce per-user rate limits and make bulk resend impossible or explicitly capped.
Failure modes.
composer.lock colliding with a PHP or Statamic bump, failing at autoload time rather than at review time.Ramp-up. Near-zero for developers (one small addon, one route, one component). Non-trivial for editors: they need a one-page runbook covering when a resend is appropriate versus when the mailer or spam filter is the actual problem, how to confirm the recipient list, and the fact that every resend is logged and attributed.
Net position. The capability justifies a sprint-day of effort; the package as published does not justify a production dependency. Treat it as a reference implementation, copy the behavior into code you own, gate it with permissions, throttle it, and log every send.
How can I help you explore Laravel packages today?