Skip to main content

Worked example — an info-only change

A payment-contract change your users only need to be told about ("no action required"):

php artisan legal-consent:publish terms de --info --regime=psd2_675g \
--announce-at=2026-07-01 --enforce-at=2026-09-01

The dates above are illustrative — pick your own future dates.

What happens

Once the announcement date passes, legal-consent:dispatch-notices emails every current party to that contract a LegalChangeInformational ("we've updated our contract; no action is required"), records a durable-medium proof row, and the change takes effect on the effective date — no one is blocked.

Every current party, not just those on an older major: an info-only change is owed to everyone the contract binds. See who a version is sent to.

Look at the size of that first, especially if this is your first info-only change:

php artisan legal-consent:dispatch-notices --dry-run

It reports the audience of every due version and sends nothing, writes no proof row, and stamps no watermark.

Render the heads-up banner

ConsentBanner produces the dismissible banner for all three announceable states:

@php($banners = app(\Pushery\LegalConsent\Support\ConsentBanner::class)->forSubject($user, app()->getLocale()))
@include('legal-consent::consent-banner', [
'pending' => $banners['reconsent'],
'informational' => $banners['informational'],
'deemed' => $banners['deemed'],
'consentUrl' => route('legal.consent'),
])

consentUrl is load-bearing rather than decorative: since 0.19.0 the banner renders no call to action when it is missing, instead of a link to # that goes nowhere.

See User interface for the published stubs and their WireKit twins.