SilverStripe ♥︎ Mautic

GIANCARLO DI MASSA // DIGITALL.IT
Empowering your website
by integrating an open source
marketing automation platform
SilverStripe♥Mautic
Intendedaudience
What’s marketing automation?
Seasoned developer
• Finds installation of the platform and
module code trivial
• Wants to learn core marketing
automation concepts
• Wants to know more about Mautic
How to create a module?
Novice developer
• Is an Open Source code consumer
• Creates code for his own projects
• Wants to learn some best practices on
integrating third party services
• Would like to start contributing by
converting his/her existing code to a
shareable module
We use HubSpot, so what?
Marketing Agency
• Already implements marketing
automation day to day
• Uses a closed source software
• Is considering the switch to a complete
Open Source solution based on Mautic
and SilverStripe
How about deliverability?
Junior DevOps Operator
• Knows that sending mass emails can be
difficult
• Would prefer certified third party email
transports
• Would like to improve deliverability of
the emails sent on server
Theproblemwithnewsletters
Another newsletter?
Great effort to stand out
• Newsletters and emails sent one to one
are treated differently
• Mailboxes have a systemic problem of
information overload
• Typical user receives hundreds if not
thousands of UCE (Unsolicited
Commercial Email) every month
• Even after removing all the spam, there
are still a lot of emails to read
Nigerian
prince!
Get his
fortune,
now!
€
$
¥
Tom Fishburne
"The best marketing doesn’t feel like
marketing."
Dear <First> <Last>
Limited customization
• We can actually understand if the email
is actually tailored for us or speaks to a
general public
• Knowing my name is not enough
anymore
• We care about timing as well
• To be effective, some information needs
to be delivered over a long period
(spaced repetition)
ALL YOUR BASE
ARE BELONG TO US!
Dan Jak
"Personalisation – it is not about first/
last name. It’s about relevant content."
Working over numbers
SaaS services tier limited
• Some services bill you by each email
sent, or by contacts, or by features
• Pricing tiers are organized by design so
that important features are available
only on higher plans
• Complete systems that incorporate
real marketing automation tend to
have monthly costs that cut out
smaller businesses
HubSpot
Marketing Hub pricing
HubSpot
CMS Hub pricing
Right here, right now
Timing
• Newsletters are usually organized
around the concept of bulk synced
communication
• The same information is delivered to a
whole group all at the same time
• It doesn’t consider that contacts are at
various stages of engagement
Marketingautomationconcepts
Contact added
Send welcome
email #1
Opens email #1?
Wait 1 day
Sends followup
email #2
Opens email #2?
Add 10 points to
contact
Add 10 points to
contact
Wait 2 days
Sends followup
email #3
Opens email #3?
Remove contact
Add 10 points to
contact
Downloads a PDF
Add 20 points to
contact
Set contact as
hot lead
More than 50 pts?
Tweets with
mention or
hashtag
Add 20 points to
contact
Visits website
Add 5 points to
contact
Show focus
Yes Yes
Yes
No Yes
Marketing automation
Campaign basic example
John Caldwell
"To get the right message to the right person
at the right time you first need to get the right
data to the right database at the right time."
Decision Action Condition
Contact performs an operation
(downloads a file, opens an email,
visits a website)
Mautic performs an operation
(sends an email, changes contact
group)
Variables (field values,
submitted form data) influence
operation flow
Marketing automation
Decision tree UI
Drip marketing
Marketing automation
• The contact, or lead, starts a journey
• He/she is exposed to engagement events
and actions
• Receives messages via email, SMS and/or
Twitter
• Answers messages, visits your site,
downloads files
• Enriches his card with new data
• This may take days, weeks, even months!
Points
Matt Blumberg
"Reaching the inbox isn't your goal -
engaging people is"
Hot lead
Marketing automation
• The journey of the contacts continues
until one of them gets a very high score
• That will mean he/she is very interested
in your product or service
• The contact is now an hot lead and you
can decide to directly and manually
engage to him/her over phone, Zoom or
email
• At this stage, the contact is pushed (hot
lead handover) to another integration,
usually a CRM, or you simply get an email
notification telling there’s a call to make
Lead generation
Marketing automation
• Lead Ads from Google, Facebook,
LinkedIn, Instagram
• Google Ads
• Your website traffic
• Organic social networking
• Events and conferences
• Re-engaging existing customers list
That means
you don’t pay
ad money!
People to sell stuff to
Mummy
Granny
Jennifer from high school
Creepy guy next door
Michael, because I helped
him out with the lawn
Landing pages
Marketing automation
• Web pages with content highly
optimized for conversion
• Can be made with a drag and drop
builder directly in the marketing
automation platform
• Usually disconnected from the main
website, don’t even have any sort of
menu or navigation
• Intercept a very delicate moment in the
user's decision-making process
Channels
Marketing automation
• Email
• Push notifications
• iOS and Android
• Web
• SMS
• Tracks anwers
• Respects “Do Not Contact”
duh!
In Mautic that’s
managed by
One Signal
Mautic comes with an
integration for Twilio
out of the box
Definitely not
TV channels!
(hey I got
the same remote!)
Lead nurturing
Marketing automation
• Contact lifecycle
• Stages
• Segments
• Progressive profiling
• Video gating
• Focus items
• Bars
• Modals
• Full page takeovers
• Social monitoring
• Twitter hashtags and mentions
In short, we’re talking
about tailor made popups
that know you!
Marketing funnel
MauticInstallation
GIANCARLO DI MASSA // DIGITALL.IT // STRIPECON 2021
• SaaS version by Acquia, who acquired Mautic on May 2019
• Acquia mantains a paid-for version called Campaign Studio on mautic.com
• Open Source version on mautic.org benefits of active development made possible by Acquia
programmers
• Thriving community of developers
• Active marketplace of both free and paid-for plugins that extends the platform
• Can be integrated with other projects either via a Mautic Plugin, Mautic API and even Zapier
• Also available as a Docker Hub as a single image mautic/mautic
MauticInstallation
Self-hosted and SaaS
SilverStripe ♥︎ Mautic
SilverStripe ♥︎ Mautic
GIANCARLO DI MASSA // DIGITALL.IT // STRIPECON 2021
• Symfony project
• Can be installed via
• All releases available as a zipball on mautic.org website
• Requires a database and at least one dedicated email address
• Major version 4.0 has just been released on August 2021 and supports PHP 7.4
MauticInstallation
Basic deployment
composer create-project mautic/core mautic ^4 —no-dev
Suggested
installation method
by developers!
Yay!
PHP 8.0
coming soon!
GIANCARLO DI MASSA // DIGITALL.IT // STRIPECON 2021
MauticInstallation
Required Cron jobs
Update segments mautic:segments:update
Update campaigns mautic:campaigns:update
Execute Campaign Actions mautic:campaigns:trigger
• Mautic uses the Symfony Console Component
• Console is called via
• Some operations need to be performed periodically via cron jobs and are required
• The scripts may be resource intensive as they process 300 contacts at time
• You can use —batch-limit=X to limit the number of contacts to be processed at once
php path/to/mautic/bin/console [arguments]
SilverStripe ♥︎ Mautic
GIANCARLO DI MASSA // DIGITALL.IT // STRIPECON 2021
MauticInstallation
Optional Cron jobs
Send queued emails mautic:emails:send
Process bounces mautic:email:fetch
Monitor social networks mautic:social:monitoring
Batch send webhooks mautic:webhooks:process
Update IP Lookup Database mautic:iplookup:download
Clean up old data mautic:maintenance:cleanup -g -n
Send scheduled reports mautic:reports:scheduler
Import data from CSV files in background mautic:import
Some operations can be performed periodically via cron jobs and are optional
GIANCARLO DI MASSA // DIGITALL.IT // STRIPECON 2021
• Broadcasts are emails sent to a segment (a group of contacts)
• Those are sent while waiting with the browser window open
• If the segment is large, you can send in background via an optional cron job
MauticInstallation
Optional Broadcast Cron job
Send scheduled broadcasts mautic:broadcasts:send
SilverStripe ♥︎ Mautic
GIANCARLO DI MASSA // DIGITALL.IT // STRIPECON 2021
• CCPA stands for California Consumer Privacy Act (CCPA)
• Similar to GDPR, first law of his kind in the United States
• Applies to all for-profit corporations around the world that sell the personal information of
more than 50,000 California residents annually
• Or have gross annual revenues in excess of $ 25 million
• Or derive more than 50 percent of their annual turnover from the sale of personal information
of California residents
MauticInstallation
MaxMind CCPA Compliance Cron jobs
GIANCARLO DI MASSA // DIGITALL.IT // STRIPECON 2021
If your installation falls under CCPA and if at least one of the preceding conditions is met,
there are some required cronjobs to run
MauticInstallation
MaxMind CCPA Compliance Cron jobs
Update the “Do Not Sell” list mautic:donotsell:download
Purge data in the the “Do Not Sell” list mautic:max-mind:purge
php -d memory_limit=4096M bin/console cache:clear
php -d memory_limit=4096M bin/console mautic:update:find
php -d memory_limit=4096M bin/console mautic:update:apply
php -d memory_limit=4096M bin/console doctrine:migration:status
php -d memory_limit=4096M bin/console doctrine:migration:migrate
YO U R B E S T
Clears
the cache!
Checks
for updates!
Updates
the installation!
Checks
the database
structure!
Updates
the database
structure!
Allocates more
memory to the
script!
IntegrationModuleDemo
git clone https://github.com/digitall-it/docker.git docker
cd docker
mkdir src
docker-compose up -d
docker exec -it docker_web_1 /bin/bash
composer create-project silverstripe/installer /var/www/html
cd html
composer require silverstripe/userforms
composer require digitall-it/silverstripe-mautic --prefer-source
./vendor/bin/sake dev/build "flush=all"
Based on Brett
Tasker's configuration
Creates a web and
database servers!
SSH into Docker!
Creates a
SilverStripe project!
Installs the UserForms module!
Installs the Mautic
integration module!
Rebuilds the
SilverStripe
database and
clears caches!
Clones from the
source repository
instead of extracting
the Packagist zipball
so you can commit!
Thanks!
Write a new
password to
change it!
mapping allows
to use existing
field names in
your forms!
Module provides
a working default!
The module caches
the segment list:
if you change it in Mautic,
flush the cache!
SilverStripe ♥︎ Mautic
$Mautic = Injector::inst()->get('Mautic');
$Mautic->setAuth(SiteConfig::current_site_config());
$fieldsMapped = $Mautic->MapFields($fields, SiteConfig::current_site_config()->MauticFieldMapping);
if (count($fieldsMapped) > 0) $Mautic->addOrUpdateContact($fieldsMapped, $MauticSegmentAlias);
Manual push of contacts
put this
name here!
What’s next?
Integration module
• Internationalization
• Support for oAuth 1.0 and 2.0
• Unit and functional tests
• Extension hooks
• All fields of contact can change on update
• Ability to add points and trigger events
• Stable release 1.0 at the end of the year
• Mautic plugin to push data back!
..and bugfixes!
DevOps
Email deliverability: DKIM
• DKIM stands for DomainKeys Identified
Mail and provides an encryption key and
digital signature that verifies that an
email message was not faked or altered
• Requires native support by a modern mail
server
• You need to publish the correct public key
and verification criteria records into
your DNS server
• You also need to ensure that email sent
from your server are signed
DevOps
Email deliverability: SPF
DevOps
• SPF stands for Sender Policy
Framework
• Allows to set a policy that authorizes
particular hosts to send mail from the
domain
• The receiver checks the policy list to
ensure that the sender server is
included
• You need to publish the correct SPF
policy record into your DNS server
Email deliverability: DMARC
• DMARC stands for Domain-based
Message Authentication, Reporting &
Conformance
• Extends the capabilities of the SPF and
DKIM sender policies
• The DMARC policy defines how the
receiver should treat email messages
depending on the results of DKIM and SPF
checking
• You need to publish the correct DMARC
policy record into your DNS server
DevOps
Mail transports
DevOps
• Amazon Simple Email Service
• Elastic Email
• Gmail
• Mailjet
• Mandrill
• Pepipost
• Sendgrid
• Sendmail
• SMTP
• Sparkpost
GDPR compliancy
DevOps
• Double opt-in
• Data storage
• Distinct checkboxes
• Tracking and cookies
composer require lerni/klaro-cookie-consent
✔
✔
Privacy policy
Marketing
Bounce management
DevOps
• Some transports use Variable envelope
return path (VERP), a technique to
detect undeliverable e-mail addresses. It
works by using a different return path
(also called "envelope sender")
• In practice, they use real time created
aliases like myemail+12345@domain.dev
to know exactly who received the email
• Some trasports instead have webhooks
and callbacks: Elastic Email, Amazon,
Mandrill, Mailjet, Sparkpost,
SendGrid
HowIMetYourModule
Module base
• Add your name/organisation to LICENSE.md
• Actually read and update the README files
• Update the composer.json and package.json with
your chosen package name
• Create a new repository on git and push your
module base
• Login and fill a form on packagist.org to publish your
module
• Composer require the module in a development
SilverStripe environment, preferring source
• Start developing your module, you can even push
directly from the vendor/yourmodule folder of the
environment!
How I Met Your Module
git clone 
https://github.com/silverstripe/silverstripe-module 
yourmodule
cd yourmodule
rm -rf .git && git init
your journey
begins here!
cleans the git
history so you get
a fresh start!
yes, it’s that easy!
use the docker,
Luke!
the horn from
How I Met Your Mother..
what, you didn’t see the show?
c’mon, Neil Patrick Harris
rocked, there!
Best practices
How I Met Your Module
• Do not create directly your classes
• Try to decouple your code as much as
possible
• Consider TDD (test driven development)
• Do not require unnecessary code
• Do not just assume everyone will want
your javascript code in the frontend!
• Leverage SilverStripe Cache in your
results if you can!
use SilverStripeCoreInjectorInjector;
. . .
$object = Injector::inst()->create('MyClassName')
SilverStripeCoreInjectorInjector:
PsrSimpleCacheCacheInterface.myModuleCache:
factory: SilverStripeCoreCacheCacheFactory
constructor:
namespace: "myModuleCache"
use PsrSimpleCacheCacheInterface;
use SilverStripeCoreInjectorInjector;
. . .
$cache = Injector::inst()
->get(CacheInterface::class . ‘.myModuleCache’);
$myValue = $cache->get(‘myCacheKey');
$cache->set('myCacheKey', 1234);
if (!$cache->has('myCacheKey')) {. . .}
$cache->delete(‘myCacheKey');
$string = $anotherobject->method();
$object->method($string);
when instancing!
switchable
and testable!
in your yaml
in your code
Mautic API
• Exposes a REST API
• Has his own PHP Mautic API Client
• My module builds on top of that
How I Met Your Module
APIAUTH
CONTACTAPI
MAUTICAPI
MAUTIC
CaseStudy“NegomboPark”
SilverStripe ♥︎ Mautic
SilverStripe ♥︎ Mautic
SilverStripe ♥︎ Mautic
SilverStripe ♥︎ Mautic
Questions?
Twitter @digitall_it
#ilovestripecon
https://marketing.digitall.it/stripecon2021
GIANCARLO DI MASSA // DIGITALL.IT
Thankyou
Credits
NOHK, Element5 Digital, Christina Morillo, Tim Gouw, Markus Spiske, Kaboompics.com, Danny
Meneses, R. Fera, Musa Artful, Tim Douglas, Eva Elijas, Ketut Subiyanto, Nothing Ahead,
Redrecords, Gradienta, Angela Roma, RF._.studio, Mikhail Nilov, Markus Winkler
Pexels Stock Photos
Mikhail Fesenko, Karsten Winegeart
Unsplash Stock Photos
1 of 66

Recommended

How to sell SilverStripe in the enterprise and public sector markets - Stripe... by
How to sell SilverStripe in the enterprise and public sector markets - Stripe...How to sell SilverStripe in the enterprise and public sector markets - Stripe...
How to sell SilverStripe in the enterprise and public sector markets - Stripe...Sylvain Reiter
135 views26 slides
DrupalConNA2021 - Accessibility throughout your project lifecycle - A case st... by
DrupalConNA2021 - Accessibility throughout your project lifecycle - A case st...DrupalConNA2021 - Accessibility throughout your project lifecycle - A case st...
DrupalConNA2021 - Accessibility throughout your project lifecycle - A case st...Sylvain Reiter
85 views24 slides
How we use Silverstripe CMS to deliver bilingual and accessible websites by
How we use Silverstripe CMS to deliver bilingual and accessible websitesHow we use Silverstripe CMS to deliver bilingual and accessible websites
How we use Silverstripe CMS to deliver bilingual and accessible websitesMichaelPritchard21
167 views36 slides
I Love APIs 2015: Apigee and Node.js Building Mock Backends Fast by
I Love APIs 2015: Apigee and Node.js Building Mock Backends FastI Love APIs 2015: Apigee and Node.js Building Mock Backends Fast
I Love APIs 2015: Apigee and Node.js Building Mock Backends FastApigee | Google Cloud
1.2K views22 slides
Hyc program 17.10 by
Hyc program 17.10Hyc program 17.10
Hyc program 17.10Marek Nawa
24 views6 slides
Is this "thing" connected? by
Is this "thing" connected?Is this "thing" connected?
Is this "thing" connected?Ross Garrett
301 views31 slides

More Related Content

What's hot

Contribution day guide. MLEU 2019 by
Contribution day guide. MLEU 2019Contribution day guide. MLEU 2019
Contribution day guide. MLEU 2019Oleksii Korshenko
98 views26 slides
Build with Serverless Applications with azure functions By usama wahab Khan by
Build with Serverless Applications with azure functions By usama wahab KhanBuild with Serverless Applications with azure functions By usama wahab Khan
Build with Serverless Applications with azure functions By usama wahab KhanUsama Wahab Khan Cloud, Data and AI
116 views37 slides
Containers at Netflx - An Evolving Story QConSF2015 by
Containers at Netflx - An Evolving Story QConSF2015Containers at Netflx - An Evolving Story QConSF2015
Containers at Netflx - An Evolving Story QConSF2015Sangeeta Narayanan
1.9K views61 slides
Get More From Your Messages with Twilio + Watson Add-Ons by
Get More From Your Messages with Twilio + Watson Add-OnsGet More From Your Messages with Twilio + Watson Add-Ons
Get More From Your Messages with Twilio + Watson Add-OnsIBM Watson
454 views20 slides
Orchestrating microservices like a ninja by
Orchestrating microservices like a ninjaOrchestrating microservices like a ninja
Orchestrating microservices like a ninjaApigee | Google Cloud
1.7K views40 slides
GITPro World Apr 2015 - Continuous Innovation with Rapid Software Delivery by
 GITPro World Apr 2015 - Continuous Innovation with Rapid Software Delivery GITPro World Apr 2015 - Continuous Innovation with Rapid Software Delivery
GITPro World Apr 2015 - Continuous Innovation with Rapid Software DeliverySangeeta Narayanan
918 views52 slides

What's hot(20)

Containers at Netflx - An Evolving Story QConSF2015 by Sangeeta Narayanan
Containers at Netflx - An Evolving Story QConSF2015Containers at Netflx - An Evolving Story QConSF2015
Containers at Netflx - An Evolving Story QConSF2015
Sangeeta Narayanan1.9K views
Get More From Your Messages with Twilio + Watson Add-Ons by IBM Watson
Get More From Your Messages with Twilio + Watson Add-OnsGet More From Your Messages with Twilio + Watson Add-Ons
Get More From Your Messages with Twilio + Watson Add-Ons
IBM Watson454 views
GITPro World Apr 2015 - Continuous Innovation with Rapid Software Delivery by Sangeeta Narayanan
 GITPro World Apr 2015 - Continuous Innovation with Rapid Software Delivery GITPro World Apr 2015 - Continuous Innovation with Rapid Software Delivery
GITPro World Apr 2015 - Continuous Innovation with Rapid Software Delivery
Sangeeta Narayanan918 views
[AzureCamp 24 Juin 2014] Témoignage de Conuxio par Arnaud Lecoufle by Microsoft Technet France
[AzureCamp 24 Juin 2014] Témoignage de Conuxio par Arnaud Lecoufle[AzureCamp 24 Juin 2014] Témoignage de Conuxio par Arnaud Lecoufle
[AzureCamp 24 Juin 2014] Témoignage de Conuxio par Arnaud Lecoufle
Microsoft Azure News - Sept 2015 by Daniel Toomey
Microsoft Azure News - Sept 2015Microsoft Azure News - Sept 2015
Microsoft Azure News - Sept 2015
Daniel Toomey288 views
Why Measuring Page Load Is The Wrong Metric by New Relic
Why Measuring Page Load Is The Wrong MetricWhy Measuring Page Load Is The Wrong Metric
Why Measuring Page Load Is The Wrong Metric
New Relic564 views
QConSF 2014 - How we learned to stop worrying and start deploying the Netflix... by Sangeeta Narayanan
QConSF 2014 - How we learned to stop worrying and start deploying the Netflix...QConSF 2014 - How we learned to stop worrying and start deploying the Netflix...
QConSF 2014 - How we learned to stop worrying and start deploying the Netflix...
Sangeeta Narayanan2.3K views
Microsoft Azure News - Aug 2015 by Daniel Toomey
Microsoft Azure News - Aug 2015Microsoft Azure News - Aug 2015
Microsoft Azure News - Aug 2015
Daniel Toomey384 views
Seminario Cloud computing Ordine di latina - L'offerta di Amazon Web Services by Claudio Pontili
Seminario Cloud computing Ordine di latina - L'offerta di Amazon Web ServicesSeminario Cloud computing Ordine di latina - L'offerta di Amazon Web Services
Seminario Cloud computing Ordine di latina - L'offerta di Amazon Web Services
Claudio Pontili476 views
Jose Quaresma "DevOps in the Enterprise: what I have learned so far" by Fwdays
Jose Quaresma "DevOps in the Enterprise: what I have learned so far"Jose Quaresma "DevOps in the Enterprise: what I have learned so far"
Jose Quaresma "DevOps in the Enterprise: what I have learned so far"
Fwdays192 views
Move Fast;Stay Safe:Developing & Deploying the Netflix API by Sangeeta Narayanan
Move Fast;Stay Safe:Developing & Deploying the Netflix APIMove Fast;Stay Safe:Developing & Deploying the Netflix API
Move Fast;Stay Safe:Developing & Deploying the Netflix API
Sangeeta Narayanan1.4K views
Will ServerLess kill containers and Operations by Stephane Woillez
Will ServerLess kill containers and OperationsWill ServerLess kill containers and Operations
Will ServerLess kill containers and Operations
Stephane Woillez151 views
Engineering Manager, Edge Insights @Netflix by Sangeeta Narayanan
Engineering Manager, Edge Insights @NetflixEngineering Manager, Edge Insights @Netflix
Engineering Manager, Edge Insights @Netflix
Sangeeta Narayanan2.2K views
OpenStack Summit 2016 - First Take Day #1 Keynote by Holger Mueller
OpenStack Summit 2016 - First Take Day #1 KeynoteOpenStack Summit 2016 - First Take Day #1 Keynote
OpenStack Summit 2016 - First Take Day #1 Keynote
Holger Mueller588 views

Similar to SilverStripe ♥︎ Mautic

HP and MindFire Presentation at Dscoop9: Integrating Print in Marketing Campa... by
HP and MindFire Presentation at Dscoop9: Integrating Print in Marketing Campa...HP and MindFire Presentation at Dscoop9: Integrating Print in Marketing Campa...
HP and MindFire Presentation at Dscoop9: Integrating Print in Marketing Campa...mindfire.agency
2.7K views82 slides
Business models in consumer technology by
Business models in consumer technologyBusiness models in consumer technology
Business models in consumer technologyJan Dawson
9.1K views34 slides
Gamooga campaign management product deck - insurance by
Gamooga campaign management product deck - insuranceGamooga campaign management product deck - insurance
Gamooga campaign management product deck - insuranceR.M. Singh
225 views12 slides
Presentation on digital mkt by
Presentation on digital mktPresentation on digital mkt
Presentation on digital mktprateebha
74 views28 slides
What Your Marketing Automation Vendor Won't Ever Tell You by
What Your Marketing Automation Vendor Won't Ever Tell YouWhat Your Marketing Automation Vendor Won't Ever Tell You
What Your Marketing Automation Vendor Won't Ever Tell YouEsanosys
1K views24 slides
How to improve your performance online - survey results Microsoft Dynamics Pa... by
How to improve your performance online - survey results Microsoft Dynamics Pa...How to improve your performance online - survey results Microsoft Dynamics Pa...
How to improve your performance online - survey results Microsoft Dynamics Pa...Patrick Dalle
54 views23 slides

Similar to SilverStripe ♥︎ Mautic(20)

HP and MindFire Presentation at Dscoop9: Integrating Print in Marketing Campa... by mindfire.agency
HP and MindFire Presentation at Dscoop9: Integrating Print in Marketing Campa...HP and MindFire Presentation at Dscoop9: Integrating Print in Marketing Campa...
HP and MindFire Presentation at Dscoop9: Integrating Print in Marketing Campa...
mindfire.agency2.7K views
Business models in consumer technology by Jan Dawson
Business models in consumer technologyBusiness models in consumer technology
Business models in consumer technology
Jan Dawson9.1K views
Gamooga campaign management product deck - insurance by R.M. Singh
Gamooga campaign management product deck - insuranceGamooga campaign management product deck - insurance
Gamooga campaign management product deck - insurance
R.M. Singh225 views
Presentation on digital mkt by prateebha
Presentation on digital mktPresentation on digital mkt
Presentation on digital mkt
prateebha74 views
What Your Marketing Automation Vendor Won't Ever Tell You by Esanosys
What Your Marketing Automation Vendor Won't Ever Tell YouWhat Your Marketing Automation Vendor Won't Ever Tell You
What Your Marketing Automation Vendor Won't Ever Tell You
Esanosys1K views
How to improve your performance online - survey results Microsoft Dynamics Pa... by Patrick Dalle
How to improve your performance online - survey results Microsoft Dynamics Pa...How to improve your performance online - survey results Microsoft Dynamics Pa...
How to improve your performance online - survey results Microsoft Dynamics Pa...
Patrick Dalle54 views
Mobile Advertising Company by sanjeevkr471
Mobile Advertising CompanyMobile Advertising Company
Mobile Advertising Company
sanjeevkr471445 views
Digital Lead Generation for Economic Development by Atlas Integrated
Digital Lead Generation for Economic DevelopmentDigital Lead Generation for Economic Development
Digital Lead Generation for Economic Development
Atlas Integrated2K views
How TracksGiving can help you implement your campaigning software up quicker ... by Ritvvij Parrikh
How TracksGiving can help you implement your campaigning software up quicker ...How TracksGiving can help you implement your campaigning software up quicker ...
How TracksGiving can help you implement your campaigning software up quicker ...
Ritvvij Parrikh528 views
Marketing Cloud, SalesforceSaturday by Atul Gupta(8X)
Marketing Cloud, SalesforceSaturdayMarketing Cloud, SalesforceSaturday
Marketing Cloud, SalesforceSaturday
Atul Gupta(8X)787 views
Marketing your Mobile Presence by Serge Milbank
Marketing your Mobile PresenceMarketing your Mobile Presence
Marketing your Mobile Presence
Serge Milbank553 views
Mobile Marketing Trends and Strategies by Alexander Tsatkin
Mobile Marketing Trends and StrategiesMobile Marketing Trends and Strategies
Mobile Marketing Trends and Strategies
Alexander Tsatkin2.2K views
Digital Marketing Automation with Salesforce Marketing Cloud by Thinqloud
Digital Marketing Automation with Salesforce Marketing CloudDigital Marketing Automation with Salesforce Marketing Cloud
Digital Marketing Automation with Salesforce Marketing Cloud
Thinqloud 3.7K views
Microsoft directions emea how to improve your performance online - lemarco ... by Patrick Dalle
Microsoft directions emea   how to improve your performance online - lemarco ...Microsoft directions emea   how to improve your performance online - lemarco ...
Microsoft directions emea how to improve your performance online - lemarco ...
Patrick Dalle405 views
Microsoft Directions EMEA - How to improve your performance online - Lemarco ... by Erik Verheyden
Microsoft Directions EMEA - How to improve your performance online - Lemarco ...Microsoft Directions EMEA - How to improve your performance online - Lemarco ...
Microsoft Directions EMEA - How to improve your performance online - Lemarco ...
Erik Verheyden92 views

Recently uploaded

How to leverage E-E-A-T to boost your international expansion by
How to leverage E-E-A-T to boost your international expansionHow to leverage E-E-A-T to boost your international expansion
How to leverage E-E-A-T to boost your international expansionGemma Fontane
5 views117 slides
Bridging the Gap: How SEO and CRO Work Together to Maximize User Satisfaction... by
Bridging the Gap: How SEO and CRO Work Together to Maximize User Satisfaction...Bridging the Gap: How SEO and CRO Work Together to Maximize User Satisfaction...
Bridging the Gap: How SEO and CRO Work Together to Maximize User Satisfaction...Rio Ichikawa
141 views125 slides
"SEO Mastery: Top 10 Tools used by every expert for improving Websites" by
 "SEO Mastery: Top 10 Tools used by every expert for improving Websites" "SEO Mastery: Top 10 Tools used by every expert for improving Websites"
"SEO Mastery: Top 10 Tools used by every expert for improving Websites"Beacon Coders
5 views11 slides
QMS SOP [QUALITY MANAGEMENT SYSTEM - STANDARD OPERATING PROCEDURE] by
QMS SOP [QUALITY MANAGEMENT SYSTEM - STANDARD OPERATING PROCEDURE]QMS SOP [QUALITY MANAGEMENT SYSTEM - STANDARD OPERATING PROCEDURE]
QMS SOP [QUALITY MANAGEMENT SYSTEM - STANDARD OPERATING PROCEDURE]Nabeela Moosakutty
7 views19 slides
Errickson_MarketAnalysisReport by
Errickson_MarketAnalysisReportErrickson_MarketAnalysisReport
Errickson_MarketAnalysisReportBethanyAline
16 views13 slides
this is superops_v5.pdf by
this is superops_v5.pdfthis is superops_v5.pdf
this is superops_v5.pdfkowsikpirabhusr1
27 views27 slides

Recently uploaded(20)

How to leverage E-E-A-T to boost your international expansion by Gemma Fontane
How to leverage E-E-A-T to boost your international expansionHow to leverage E-E-A-T to boost your international expansion
How to leverage E-E-A-T to boost your international expansion
Gemma Fontane5 views
Bridging the Gap: How SEO and CRO Work Together to Maximize User Satisfaction... by Rio Ichikawa
Bridging the Gap: How SEO and CRO Work Together to Maximize User Satisfaction...Bridging the Gap: How SEO and CRO Work Together to Maximize User Satisfaction...
Bridging the Gap: How SEO and CRO Work Together to Maximize User Satisfaction...
Rio Ichikawa141 views
"SEO Mastery: Top 10 Tools used by every expert for improving Websites" by Beacon Coders
 "SEO Mastery: Top 10 Tools used by every expert for improving Websites" "SEO Mastery: Top 10 Tools used by every expert for improving Websites"
"SEO Mastery: Top 10 Tools used by every expert for improving Websites"
Beacon Coders5 views
QMS SOP [QUALITY MANAGEMENT SYSTEM - STANDARD OPERATING PROCEDURE] by Nabeela Moosakutty
QMS SOP [QUALITY MANAGEMENT SYSTEM - STANDARD OPERATING PROCEDURE]QMS SOP [QUALITY MANAGEMENT SYSTEM - STANDARD OPERATING PROCEDURE]
QMS SOP [QUALITY MANAGEMENT SYSTEM - STANDARD OPERATING PROCEDURE]
Errickson_MarketAnalysisReport by BethanyAline
Errickson_MarketAnalysisReportErrickson_MarketAnalysisReport
Errickson_MarketAnalysisReport
BethanyAline16 views
November 2023 - Partners meeting group by Vbout.com
November 2023 - Partners meeting groupNovember 2023 - Partners meeting group
November 2023 - Partners meeting group
Vbout.com26 views
Deltaplan - SEO Search by Roy Huiskes
Deltaplan - SEO SearchDeltaplan - SEO Search
Deltaplan - SEO Search
Roy Huiskes50 views
First 30 days of Your CRO Program by VWO
First 30 days of Your CRO ProgramFirst 30 days of Your CRO Program
First 30 days of Your CRO Program
VWO57 views
Weekly Media Update_28_11_2023.pdf by BalmerLawrie
Weekly Media Update_28_11_2023.pdfWeekly Media Update_28_11_2023.pdf
Weekly Media Update_28_11_2023.pdf
BalmerLawrie14 views
E-commerce Marketing by Nabil Abidi
E-commerce MarketingE-commerce Marketing
E-commerce Marketing
Nabil Abidi62 views
Growth strategies for SaaS MRR $10,000 (by TheBootstrappedWay.com) by Daniel Pirciu
Growth strategies for SaaS MRR $10,000 (by TheBootstrappedWay.com)Growth strategies for SaaS MRR $10,000 (by TheBootstrappedWay.com)
Growth strategies for SaaS MRR $10,000 (by TheBootstrappedWay.com)
Daniel Pirciu7 views
content strategy _ seconed oponion _medical industry by jonathanhany42
content strategy _ seconed oponion _medical industrycontent strategy _ seconed oponion _medical industry
content strategy _ seconed oponion _medical industry
jonathanhany4213 views
The evolution of internet.pptx by ssuser520a351
The evolution of internet.pptxThe evolution of internet.pptx
The evolution of internet.pptx
ssuser520a3516 views
Turning Business Challenges into Testable Ideas - 29 Nov '23.pdf by VWO
Turning Business Challenges into Testable Ideas - 29 Nov '23.pdfTurning Business Challenges into Testable Ideas - 29 Nov '23.pdf
Turning Business Challenges into Testable Ideas - 29 Nov '23.pdf
VWO46 views
Performance Max Pros and Cons by akisselev
Performance Max Pros and ConsPerformance Max Pros and Cons
Performance Max Pros and Cons
akisselev5 views
What's new at Ahrefs [end of 2023] by Ahrefs
What's new at Ahrefs [end of 2023]What's new at Ahrefs [end of 2023]
What's new at Ahrefs [end of 2023]
Ahrefs66 views

SilverStripe ♥︎ Mautic

  • 1. GIANCARLO DI MASSA // DIGITALL.IT Empowering your website by integrating an open source marketing automation platform SilverStripe♥Mautic
  • 3. What’s marketing automation? Seasoned developer • Finds installation of the platform and module code trivial • Wants to learn core marketing automation concepts • Wants to know more about Mautic
  • 4. How to create a module? Novice developer • Is an Open Source code consumer • Creates code for his own projects • Wants to learn some best practices on integrating third party services • Would like to start contributing by converting his/her existing code to a shareable module
  • 5. We use HubSpot, so what? Marketing Agency • Already implements marketing automation day to day • Uses a closed source software • Is considering the switch to a complete Open Source solution based on Mautic and SilverStripe
  • 6. How about deliverability? Junior DevOps Operator • Knows that sending mass emails can be difficult • Would prefer certified third party email transports • Would like to improve deliverability of the emails sent on server
  • 8. Another newsletter? Great effort to stand out • Newsletters and emails sent one to one are treated differently • Mailboxes have a systemic problem of information overload • Typical user receives hundreds if not thousands of UCE (Unsolicited Commercial Email) every month • Even after removing all the spam, there are still a lot of emails to read
  • 10. Tom Fishburne "The best marketing doesn’t feel like marketing."
  • 11. Dear <First> <Last> Limited customization • We can actually understand if the email is actually tailored for us or speaks to a general public • Knowing my name is not enough anymore • We care about timing as well • To be effective, some information needs to be delivered over a long period (spaced repetition) ALL YOUR BASE ARE BELONG TO US!
  • 12. Dan Jak "Personalisation – it is not about first/ last name. It’s about relevant content."
  • 13. Working over numbers SaaS services tier limited • Some services bill you by each email sent, or by contacts, or by features • Pricing tiers are organized by design so that important features are available only on higher plans • Complete systems that incorporate real marketing automation tend to have monthly costs that cut out smaller businesses
  • 16. Right here, right now Timing • Newsletters are usually organized around the concept of bulk synced communication • The same information is delivered to a whole group all at the same time • It doesn’t consider that contacts are at various stages of engagement
  • 18. Contact added Send welcome email #1 Opens email #1? Wait 1 day Sends followup email #2 Opens email #2? Add 10 points to contact Add 10 points to contact Wait 2 days Sends followup email #3 Opens email #3? Remove contact Add 10 points to contact Downloads a PDF Add 20 points to contact Set contact as hot lead More than 50 pts? Tweets with mention or hashtag Add 20 points to contact Visits website Add 5 points to contact Show focus Yes Yes Yes No Yes Marketing automation Campaign basic example
  • 19. John Caldwell "To get the right message to the right person at the right time you first need to get the right data to the right database at the right time."
  • 20. Decision Action Condition Contact performs an operation (downloads a file, opens an email, visits a website) Mautic performs an operation (sends an email, changes contact group) Variables (field values, submitted form data) influence operation flow Marketing automation Decision tree UI
  • 21. Drip marketing Marketing automation • The contact, or lead, starts a journey • He/she is exposed to engagement events and actions • Receives messages via email, SMS and/or Twitter • Answers messages, visits your site, downloads files • Enriches his card with new data • This may take days, weeks, even months!
  • 23. Matt Blumberg "Reaching the inbox isn't your goal - engaging people is"
  • 24. Hot lead Marketing automation • The journey of the contacts continues until one of them gets a very high score • That will mean he/she is very interested in your product or service • The contact is now an hot lead and you can decide to directly and manually engage to him/her over phone, Zoom or email • At this stage, the contact is pushed (hot lead handover) to another integration, usually a CRM, or you simply get an email notification telling there’s a call to make
  • 25. Lead generation Marketing automation • Lead Ads from Google, Facebook, LinkedIn, Instagram • Google Ads • Your website traffic • Organic social networking • Events and conferences • Re-engaging existing customers list That means you don’t pay ad money! People to sell stuff to Mummy Granny Jennifer from high school Creepy guy next door Michael, because I helped him out with the lawn
  • 26. Landing pages Marketing automation • Web pages with content highly optimized for conversion • Can be made with a drag and drop builder directly in the marketing automation platform • Usually disconnected from the main website, don’t even have any sort of menu or navigation • Intercept a very delicate moment in the user's decision-making process
  • 27. Channels Marketing automation • Email • Push notifications • iOS and Android • Web • SMS • Tracks anwers • Respects “Do Not Contact” duh! In Mautic that’s managed by One Signal Mautic comes with an integration for Twilio out of the box Definitely not TV channels! (hey I got the same remote!)
  • 28. Lead nurturing Marketing automation • Contact lifecycle • Stages • Segments • Progressive profiling • Video gating • Focus items • Bars • Modals • Full page takeovers • Social monitoring • Twitter hashtags and mentions In short, we’re talking about tailor made popups that know you! Marketing funnel
  • 30. GIANCARLO DI MASSA // DIGITALL.IT // STRIPECON 2021 • SaaS version by Acquia, who acquired Mautic on May 2019 • Acquia mantains a paid-for version called Campaign Studio on mautic.com • Open Source version on mautic.org benefits of active development made possible by Acquia programmers • Thriving community of developers • Active marketplace of both free and paid-for plugins that extends the platform • Can be integrated with other projects either via a Mautic Plugin, Mautic API and even Zapier • Also available as a Docker Hub as a single image mautic/mautic MauticInstallation Self-hosted and SaaS
  • 33. GIANCARLO DI MASSA // DIGITALL.IT // STRIPECON 2021 • Symfony project • Can be installed via • All releases available as a zipball on mautic.org website • Requires a database and at least one dedicated email address • Major version 4.0 has just been released on August 2021 and supports PHP 7.4 MauticInstallation Basic deployment composer create-project mautic/core mautic ^4 —no-dev Suggested installation method by developers! Yay! PHP 8.0 coming soon!
  • 34. GIANCARLO DI MASSA // DIGITALL.IT // STRIPECON 2021 MauticInstallation Required Cron jobs Update segments mautic:segments:update Update campaigns mautic:campaigns:update Execute Campaign Actions mautic:campaigns:trigger • Mautic uses the Symfony Console Component • Console is called via • Some operations need to be performed periodically via cron jobs and are required • The scripts may be resource intensive as they process 300 contacts at time • You can use —batch-limit=X to limit the number of contacts to be processed at once php path/to/mautic/bin/console [arguments]
  • 36. GIANCARLO DI MASSA // DIGITALL.IT // STRIPECON 2021 MauticInstallation Optional Cron jobs Send queued emails mautic:emails:send Process bounces mautic:email:fetch Monitor social networks mautic:social:monitoring Batch send webhooks mautic:webhooks:process Update IP Lookup Database mautic:iplookup:download Clean up old data mautic:maintenance:cleanup -g -n Send scheduled reports mautic:reports:scheduler Import data from CSV files in background mautic:import Some operations can be performed periodically via cron jobs and are optional
  • 37. GIANCARLO DI MASSA // DIGITALL.IT // STRIPECON 2021 • Broadcasts are emails sent to a segment (a group of contacts) • Those are sent while waiting with the browser window open • If the segment is large, you can send in background via an optional cron job MauticInstallation Optional Broadcast Cron job Send scheduled broadcasts mautic:broadcasts:send
  • 39. GIANCARLO DI MASSA // DIGITALL.IT // STRIPECON 2021 • CCPA stands for California Consumer Privacy Act (CCPA) • Similar to GDPR, first law of his kind in the United States • Applies to all for-profit corporations around the world that sell the personal information of more than 50,000 California residents annually • Or have gross annual revenues in excess of $ 25 million • Or derive more than 50 percent of their annual turnover from the sale of personal information of California residents MauticInstallation MaxMind CCPA Compliance Cron jobs
  • 40. GIANCARLO DI MASSA // DIGITALL.IT // STRIPECON 2021 If your installation falls under CCPA and if at least one of the preceding conditions is met, there are some required cronjobs to run MauticInstallation MaxMind CCPA Compliance Cron jobs Update the “Do Not Sell” list mautic:donotsell:download Purge data in the the “Do Not Sell” list mautic:max-mind:purge
  • 41. php -d memory_limit=4096M bin/console cache:clear php -d memory_limit=4096M bin/console mautic:update:find php -d memory_limit=4096M bin/console mautic:update:apply php -d memory_limit=4096M bin/console doctrine:migration:status php -d memory_limit=4096M bin/console doctrine:migration:migrate YO U R B E S T Clears the cache! Checks for updates! Updates the installation! Checks the database structure! Updates the database structure! Allocates more memory to the script!
  • 43. git clone https://github.com/digitall-it/docker.git docker cd docker mkdir src docker-compose up -d docker exec -it docker_web_1 /bin/bash composer create-project silverstripe/installer /var/www/html cd html composer require silverstripe/userforms composer require digitall-it/silverstripe-mautic --prefer-source ./vendor/bin/sake dev/build "flush=all" Based on Brett Tasker's configuration Creates a web and database servers! SSH into Docker! Creates a SilverStripe project! Installs the UserForms module! Installs the Mautic integration module! Rebuilds the SilverStripe database and clears caches! Clones from the source repository instead of extracting the Packagist zipball so you can commit! Thanks!
  • 44. Write a new password to change it! mapping allows to use existing field names in your forms! Module provides a working default!
  • 45. The module caches the segment list: if you change it in Mautic, flush the cache!
  • 47. $Mautic = Injector::inst()->get('Mautic'); $Mautic->setAuth(SiteConfig::current_site_config()); $fieldsMapped = $Mautic->MapFields($fields, SiteConfig::current_site_config()->MauticFieldMapping); if (count($fieldsMapped) > 0) $Mautic->addOrUpdateContact($fieldsMapped, $MauticSegmentAlias); Manual push of contacts put this name here!
  • 48. What’s next? Integration module • Internationalization • Support for oAuth 1.0 and 2.0 • Unit and functional tests • Extension hooks • All fields of contact can change on update • Ability to add points and trigger events • Stable release 1.0 at the end of the year • Mautic plugin to push data back! ..and bugfixes!
  • 50. Email deliverability: DKIM • DKIM stands for DomainKeys Identified Mail and provides an encryption key and digital signature that verifies that an email message was not faked or altered • Requires native support by a modern mail server • You need to publish the correct public key and verification criteria records into your DNS server • You also need to ensure that email sent from your server are signed DevOps
  • 51. Email deliverability: SPF DevOps • SPF stands for Sender Policy Framework • Allows to set a policy that authorizes particular hosts to send mail from the domain • The receiver checks the policy list to ensure that the sender server is included • You need to publish the correct SPF policy record into your DNS server
  • 52. Email deliverability: DMARC • DMARC stands for Domain-based Message Authentication, Reporting & Conformance • Extends the capabilities of the SPF and DKIM sender policies • The DMARC policy defines how the receiver should treat email messages depending on the results of DKIM and SPF checking • You need to publish the correct DMARC policy record into your DNS server DevOps
  • 53. Mail transports DevOps • Amazon Simple Email Service • Elastic Email • Gmail • Mailjet • Mandrill • Pepipost • Sendgrid • Sendmail • SMTP • Sparkpost
  • 54. GDPR compliancy DevOps • Double opt-in • Data storage • Distinct checkboxes • Tracking and cookies composer require lerni/klaro-cookie-consent ✔ ✔ Privacy policy Marketing
  • 55. Bounce management DevOps • Some transports use Variable envelope return path (VERP), a technique to detect undeliverable e-mail addresses. It works by using a different return path (also called "envelope sender") • In practice, they use real time created aliases like myemail+12345@domain.dev to know exactly who received the email • Some trasports instead have webhooks and callbacks: Elastic Email, Amazon, Mandrill, Mailjet, Sparkpost, SendGrid
  • 57. Module base • Add your name/organisation to LICENSE.md • Actually read and update the README files • Update the composer.json and package.json with your chosen package name • Create a new repository on git and push your module base • Login and fill a form on packagist.org to publish your module • Composer require the module in a development SilverStripe environment, preferring source • Start developing your module, you can even push directly from the vendor/yourmodule folder of the environment! How I Met Your Module git clone https://github.com/silverstripe/silverstripe-module yourmodule cd yourmodule rm -rf .git && git init your journey begins here! cleans the git history so you get a fresh start! yes, it’s that easy! use the docker, Luke! the horn from How I Met Your Mother.. what, you didn’t see the show? c’mon, Neil Patrick Harris rocked, there!
  • 58. Best practices How I Met Your Module • Do not create directly your classes • Try to decouple your code as much as possible • Consider TDD (test driven development) • Do not require unnecessary code • Do not just assume everyone will want your javascript code in the frontend! • Leverage SilverStripe Cache in your results if you can! use SilverStripeCoreInjectorInjector; . . . $object = Injector::inst()->create('MyClassName') SilverStripeCoreInjectorInjector: PsrSimpleCacheCacheInterface.myModuleCache: factory: SilverStripeCoreCacheCacheFactory constructor: namespace: "myModuleCache" use PsrSimpleCacheCacheInterface; use SilverStripeCoreInjectorInjector; . . . $cache = Injector::inst() ->get(CacheInterface::class . ‘.myModuleCache’); $myValue = $cache->get(‘myCacheKey'); $cache->set('myCacheKey', 1234); if (!$cache->has('myCacheKey')) {. . .} $cache->delete(‘myCacheKey'); $string = $anotherobject->method(); $object->method($string); when instancing! switchable and testable! in your yaml in your code
  • 59. Mautic API • Exposes a REST API • Has his own PHP Mautic API Client • My module builds on top of that How I Met Your Module APIAUTH CONTACTAPI MAUTICAPI MAUTIC
  • 66. GIANCARLO DI MASSA // DIGITALL.IT Thankyou Credits NOHK, Element5 Digital, Christina Morillo, Tim Gouw, Markus Spiske, Kaboompics.com, Danny Meneses, R. Fera, Musa Artful, Tim Douglas, Eva Elijas, Ketut Subiyanto, Nothing Ahead, Redrecords, Gradienta, Angela Roma, RF._.studio, Mikhail Nilov, Markus Winkler Pexels Stock Photos Mikhail Fesenko, Karsten Winegeart Unsplash Stock Photos