Repository navigation
Releases: goldnead/statamic-automations
Release list
v2.44.0
Run storage is now bounded: automations:prune is on the scheduler (daily 03:15), node runs are deleted explicitly, node input/output above runs.max_node_io_bytes (64 KB) is stored as a marker. New env STATAMIC_AUTOMATIONS_PRUNE_AFTER_DAYS (default 30). See CHANGELOG.
v2.43.0
v2.41.0
Fixed: a freebie is called by its own name, in a real run and in the Probelauf
entitlements.recent_granttook the catalogue's name of the access first. On production the catalogue (statamic-products) calls the access
of the freebie "CVT im Chor"CVT im Chor — Masterclass, so the bridge mail said "Wie es nach „CVT im Chor — Masterclass“ weitergeht" in a real
run too, not only in the Probelauf. The order is now the freebie first: the title of the lead magnet behind the grant, then the lead magnet
found by the access it hands out (access_product; covers a newer grant of the newsletter opt-in that no lead magnet wrote, only for a grant
whosesourceis in the newautomations.entitlements.freebie_sources, defaultlead_magnet,lead_magnet_access,newsletter_optin), then
the catalogue, thenautomations.entitlements.title_sources. A purchase of the same access keeps the catalogue name as before.- One function for both:
RecentGrantAction::titleFor($slug, $entitlementId = null). The run calls it with the id of the grant, the Probelauf
without; the Probelauf no longer assembles the name itself. - "Why this way": the case a switch on
{{ nodes.x.product_slug }}took is named by the freebie ("ging den Fall CVT im Chor") instead of
the slug; the same in the list of all ways. The slug stays where no name is known.
v2.40.0
Added: the Probelauf answers "did she just unlock something?" and says its questions in names
- The newsletter's welcome series asks
entitlements.recent_grant("Gerade etwas freigeschaltet?") and branches onfound,
product_titleand a switch onproduct_slug. A run asks the grants of the address; the dry run has no grants to ask, so the question
ended every way at "depends on what an earlier step delivers" and the start showed nothing. It reads the person now: the trait
entitlements.recent_grantis the name of the freebie she came through (no trait: nothing was just unlocked), the trait
entitlements.recent_grant_agehow many minutes ago, which has to lie inside the step's ownwithin_minutes. A step that looks up
another address, filters bysourcesor has a window the engine would refuse stays unknown. The title is the one a run would find without a
grant (RecentGrantAction::nameFor(): the entitlements catalogue, thenautomations.entitlements.title_sources, then the title of the lead
magnet whoseaccess_productis that name,automations.integrations.lead_magnets.resource_model), so the bridge mail
says "Wie es nach „Das Toolkit“ weitergeht" in its subject and in its preview. - A real person (
SimPersonSource) brings how she came: her newest grant that gives access now, as the two traits above (lead magnet
grants included: the adapter finds them like a run does). Read only; it needs the right to view entitlements, without it nothing is read. - "Why this way" reads
nodes.<step>.<field>as words: the name of the awaited automation ("‚Minikurs CVT im Chor‘ bis zum Ende gelaufen"),
the name of the product ("die Person Zugang zu ‚Kurs‘ hat"), the unlock question, and for any other answer the step's own title instead of
the key (nodes wait welcome ran to end = true). - A subject that names an answer about the person (
{{ nodes.recent.product_title }}) shows the name in the timeline, not the placeholder.
v2.39.0
v2.38.0
v2.37.0
v2.36.0
v2.35.0
Added: the funnels map's detail panel lists an automation's mails
AutomationMapObjects::details() (the optional detail method of the map contract) returns a "Mails" list: the automation's mails in step order, each with its subject (the template's subject when the step has none, a plain fallback title for a missing template), the wait since the step before ("right away", "after 2 days"; waits between two mails add up; English and German). Placeholders in a subject are worded instead of shown raw: {{ contact.first_name }} becomes {First name} ({Vorname} in German), any other variable its last segment in braces ({{ order.total }} becomes {total}), filters dropped. The marketing addon's marketing.send_email steps are listed too (a campaign-mode step is titled with its campaign handle). Read only: nothing is rendered and the thumbnail storage is not touched (image is null, no file lookup per mail); the template subjects of the listed mails come in one query (whereIn on the slugs); at most 12 entries with the rest counted.
AutomationMapObjects::detailsAuthorized() answers the map registry's rights check (brand-context 1.20, MapObjectRegistry::detailsAllowed()): the details open only to a user with view automations, a missing user is refused. On brand-context 1.19 the panel stays empty.
v2.34.1
Fixed: releasing a connection on a switched-on automation is refused
On the funnels map, releasing a triggers connection (the disconnect, and with it the undo of a connect) empties the slug of the automation's "Access Granted" trigger. An empty slug there means "every access that is granted" (FlattensEntitlements), and a running automation takes the change at once, so the release would have started it for every grant, while the dialog said it "no longer starts" for the product. connectionPreview() and disconnect() now refuse it while the automation is switched on: "This automation is switched on. Without a product it would start on every access that is granted. Switch it off first." (German too). On a switched-off automation the release is still allowed, and the dialog now says what an empty trigger means. Connecting is unchanged.