goldnead/statamic-preference-center
A Statamic addon that adds a preference center for managing visitor consent and privacy settings. Lets users review and toggle cookie categories or preferences from a single panel, with control over what is stored and how choices are applied across your site.
This addon gives you a public preference center (subscription/consent management) with four public routes and no Control Panel screen of its own — which is exactly the gap v1.8.0 closes. Start by reading config/preference-center.php: it is still the source of truth, and every Control Panel value is stored as a deviation from it, not as a replacement config.
Minimal setup:
goldnead/statamic-brand-context 1.13 or newer. Older versions carry the settings page but apply it unreliably (last-registered addons' settings never reaching config on single-brand installs; and up to 1.12 a second save of the same section silently deleted the first save's override).manage preference-center settings to a role. Nobody holds it by default, so until you do, Settings → Addon Settings shows no section at all.First use case: turn on the preference center, set a sane magic-link lifetime and session duration, set throttling per address and per origin, and leave "links to unknown addresses" off. That last one is the difference between a preference center and an open mail relay with extra steps.
Config-first, settings-as-overrides. Treat config/preference-center.php as the documented default and the Control Panel as per-environment deviation. In code, always read through config() — never try to read the settings store directly. This keeps local/staging/production behaviour explainable and makes the settings page purely an operator tool.
Magic link flow. The signed URL lifetime and the post-click session lifetime are separate knobs. Keep the response-time floor enabled: without it, response timing reveals whether an address is on the list (fast = unknown, slow = mail queued). Pair the "unknown addresses" toggle with the per-origin throttle — the origin counter is what stops someone using your endpoint to mail a list of addresses that isn't theirs.
Sender fallback. Set the fallback sender address/name for brands without their own sender identity. If the brand context provides one, that wins — don't try to override it from the addon.
Block visibility as a deployment concern. The notification, suppression-list and sequence blocks can be toggled on the page. Use these to roll out blocks per brand rather than shipping template edits.
Audit trail. Enable reporting of applied changes to LeadHub where you need an operator-action trail. Leave audit.log_channel in config; it is deliberately not on the page because log channels belong to the host and a typo there means audit entries go nowhere.
Route configuration is deploy-time. routes.enabled, routes.prefix and routes.middleware are read while routes are registered. Change them in config and deploy; the settings page correctly omits them. The same applies to the marketing block's token route: it asks at creation time whether the source is available, so that switch decides whether the route exists at all.
manage preference-center settings, which no role holds initially. Assign it first, then look.goldnead/statamic-brand-context:^1.13. On a single-brand install with older versions, addons registered last silently failed to receive their settings.delivery.mail_headers and delivery.ignored_query_parameters stay in config. They are part of the protocol contract with the mail provider, not operator policy.How can I help you explore Laravel packages today?