Download the PHP package puffinmail/module-lifecycle without Composer

On this page you can find all versions of the php package puffinmail/module-lifecycle. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package module-lifecycle

PuffinMail_LifeCycle — PuffinMail for Magento 2

Connects a Magento 2 store to PuffinMail, email marketing for online stores: newsletters, abandoned-cart and birthday emails, automations and signup forms. It uses the PuffinMail Store API v1 (https://my.puffinmail.co/api/v1) with your store's API key. You need a PuffinMail account (start a free trial).

Requirements: Magento Open Source or Adobe Commerce 2.4, PHP 8.1 or later.

Installation

Then follow Setup below. To update later: composer update puffinmail/module-lifecycle, then bin/magento setup:upgrade (and setup:di:compile in production mode).

What How
Customers → contacts Name, phone, billing address, birthday (DOB), language, timezone and order stats (orders, total spent, first/last order)
Newsletter Magento subscribes go to the PuffinMail store's newsletter list with a consent record (source, time, IP, wording). Unsubscribes go too. PuffinMail unsubscribes come back through a signed webhook
Orders order.placed (revenue) when paid, order.completed, order.cancelled (withdraws the revenue) and order.refunded (negative value). These feed lifetime value, segments and automations
Abandoned carts cart.abandoned, then cart.abandoned.reminder (optionally with a coupon). After a reminder, a bought cart sends cart.recovered
Birthdays customer.birthday on the customer's DOB, optionally with a coupon
History A one-off backfill of customers and paid orders, flagged backfill, so no emails go out
Catalogue Products (current and regular price, image, stock, categories) for product blocks and bestsellers in emails. The whole catalogue once after connecting, then every product save, stock change and deletion. A configurable product's child refreshes its parent
Website The PuffinMail storefront script on every page: visits from emails, browse-abandonment emails and signup forms. It knows the product on product pages, and the signed-in customer through a private customer-data section (the email plus an HMAC with the store's secret), so full-page cache never shares it. Works on Luma and Hyvä (1.1.1)

Magento decides who and when, and generates which coupon. PuffinMail decides whether the address may be emailed: it applies newsletter status, unsubscribes and bounces per the event's notify. It then sends the transactional email for the event.

How it works

Setup

  1. bin/magento setup:upgrade && bin/magento cache:flush. This creates puffinmail_outbox, puffinmail_cart, puffinmail_order and puffinmail_birthday.
  2. In the PuffinMail portal (my.puffinmail.co → Stores), create a store with platform Magento and copy its API key (pm_sk_…).
  3. Go to Stores > Configuration > PuffinMail > PuffinMail and switch scope to the brand's store view. Paste the API key and save. The Status row should then say connected as "…". From the CLI: bin/magento config:set puffinmail/connection/api_key <key> --scope=stores --scope-code=<store_view_code> (config:set encrypts it through the backend model), then bin/magento puffinmail:connect.
  4. In PuffinMail, check Store emails: the abandoned cart, reminder and birthday emails are ready-made (variables below); edit them and turn each one on. While one is off, its events are recorded but not emailed (not_configured).
  5. Enable Abandoned Cart and Birthday per store view. Pick coupon rules: a cart price rule with Specific Coupon and Use Auto Generation gives a unique code per email. Set Uses per Coupon = 1 and an end date, which becomes coupon.expires_at.
  6. For birthdays, collect DOB under **Customers > Customer Configuration > Name and Address Options

    Show Date of Birth = Optional**.

  7. Click Sync last 12 months in the Status row, or run bin/magento puffinmail:backfill --months=12. This sends existing customers and order history without subscribing anyone.

Moving from another email platform: turn off its abandoned-cart and birthday automations (and its cart sync) when enabling these, or customers get both.

Template variables

Event properties become the notification's Liquid variables. currency and event_type are added, along with the engine's own contact.* and notification_center_url (the unsubscribe/preferences page). These match the WooCommerce plugin, so one template works for both.

Every email event: store_name, shop_url, first_name, coupon (code, amount, type = percent|fixed, expires_at, or empty) and coupon_code (a string; empty when there is none).

Cart events (cart.abandoned, cart.abandoned.reminder):

Variable Example
reminder 1 or 2
restore_url Link that restores the cart and applies the coupon
items List of {name, sku, quantity, price, price_formatted, url, image_url, product_id, variant_id}. price is per unit including tax
total, total_formatted 123.45, $123.45 (subtotal including tax)
item_count 3

Order events (for automations): order_number, total, total_formatted, items, coupons, payment_method, shipping_method, customer_type, order_url and more (see Mapper::orderProperties).

Adding variables from another module

Observe puffinmail_event_properties. Change transport->getData('properties'). The observer also receives event_type, store, and quote_id, order_id or customer_id as relevant. For example, a delivery-estimate module can add the order cut-off time to the second cart reminder.

Abandoned-cart rules

CLI

test-email sends the event straight to PuffinMail with notify=always, using real cart or customer data. It records nothing, and a configured coupon shows as TESTCODE.

Cron (group default)

Job Schedule
puffinmail_outbox Every minute (45 s budget)
puffinmail_backfill Every minute (does nothing unless a backfill is running)
puffinmail_catalog Every minute: queues the catalogue (200 products a run) until it has been sent once; refreshes old connections for the website script
puffinmail_abandoned_cart Every 5 min
puffinmail_birthday Hourly 09:00–20:00, once a year per customer; a later run catches up a missed one

Logs go to var/log/puffinmail.log. Turn on Advanced > Debug Log to log every API call.

Not included (yet)

Website script and signup forms

Support and licence

Questions: [email protected].

Copyright © 2026 Solaniq. Licensed under the Open Software License version 3.0 (LICENSE.txt).


All versions of module-lifecycle with dependencies

PHP Build Version
Package Version
Requires php Version >=8.1
magento/framework Version ^103.0
magento/module-backend Version ^102.0
magento/module-catalog Version ^104.0
magento/module-checkout Version ^100.4
magento/module-config Version ^101.2
magento/module-configurable-product Version ^100.4
magento/module-customer Version ^103.0
magento/module-directory Version ^100.4
magento/module-newsletter Version ^100.4
magento/module-quote Version ^101.2
magento/module-sales Version ^103.0
magento/module-sales-rule Version ^101.2
magento/module-store Version ^101.1
guzzlehttp/guzzle Version ^7
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package puffinmail/module-lifecycle contains the following files

Loading the files please wait ...