SlideShare a Scribd company logo
1 of 66
Download to read offline
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
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]
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
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!
$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”
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

More Related Content

What's hot

Novidades do ASP.NET e do Visual Studio 2013
Novidades do ASP.NET e do Visual Studio 2013Novidades do ASP.NET e do Visual Studio 2013
Novidades do ASP.NET e do Visual Studio 2013
Jiéverson Maissiat
 

What's hot (20)

Contribution day guide. MLEU 2019
Contribution day guide. MLEU 2019Contribution day guide. MLEU 2019
Contribution day guide. MLEU 2019
 
Build with Serverless Applications with azure functions By usama wahab Khan
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 Khan
 
Containers at Netflx - An Evolving Story QConSF2015
Containers at Netflx - An Evolving Story QConSF2015Containers at Netflx - An Evolving Story QConSF2015
Containers at Netflx - An Evolving Story QConSF2015
 
Get More From Your Messages with Twilio + Watson Add-Ons
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
 
Orchestrating microservices like a ninja
Orchestrating microservices like a ninjaOrchestrating microservices like a ninja
Orchestrating microservices like a ninja
 
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
GITPro World Apr 2015 - Continuous Innovation with Rapid Software Delivery
 
[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
[AzureCamp 24 Juin 2014] Témoignage de Conuxio par Arnaud Lecoufle
 
Customer Story: Property Partner
Customer Story: Property PartnerCustomer Story: Property Partner
Customer Story: Property Partner
 
Microsoft Azure News - Sept 2015
Microsoft Azure News - Sept 2015Microsoft Azure News - Sept 2015
Microsoft Azure News - Sept 2015
 
Why Measuring Page Load Is The Wrong Metric
Why Measuring Page Load Is The Wrong MetricWhy Measuring Page Load Is The Wrong Metric
Why Measuring Page Load Is The Wrong Metric
 
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...
QConSF 2014 - How we learned to stop worrying and start deploying the Netflix...
 
Supercharge your Clioday: Advanced Features and Efficiencies
Supercharge your Clioday: Advanced Features and EfficienciesSupercharge your Clioday: Advanced Features and Efficiencies
Supercharge your Clioday: Advanced Features and Efficiencies
 
Microsoft Azure News - Aug 2015
Microsoft Azure News - Aug 2015Microsoft Azure News - Aug 2015
Microsoft Azure News - Aug 2015
 
Seminario Cloud computing Ordine di latina - L'offerta di Amazon Web Services
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
 
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"
Jose Quaresma "DevOps in the Enterprise: what I have learned so far"
 
Move Fast;Stay Safe:Developing & Deploying the Netflix API
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
 
Will ServerLess kill containers and Operations
Will ServerLess kill containers and OperationsWill ServerLess kill containers and Operations
Will ServerLess kill containers and Operations
 
Novidades do ASP.NET e do Visual Studio 2013
Novidades do ASP.NET e do Visual Studio 2013Novidades do ASP.NET e do Visual Studio 2013
Novidades do ASP.NET e do Visual Studio 2013
 
Engineering Manager, Edge Insights @Netflix
Engineering Manager, Edge Insights @NetflixEngineering Manager, Edge Insights @Netflix
Engineering Manager, Edge Insights @Netflix
 
OpenStack Summit 2016 - First Take Day #1 Keynote
OpenStack Summit 2016 - First Take Day #1 KeynoteOpenStack Summit 2016 - First Take Day #1 Keynote
OpenStack Summit 2016 - First Take Day #1 Keynote
 

Similar to SilverStripe ♥︎ Mautic

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 ...
Microsoft Directions EMEA - How to improve your performance online - Lemarco ...
Erik Verheyden
 

Similar to SilverStripe ♥︎ Mautic (20)

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...
HP and MindFire Presentation at Dscoop9: Integrating Print in Marketing Campa...
 
Business models in consumer technology
Business models in consumer technologyBusiness models in consumer technology
Business models in consumer technology
 
Gamooga campaign management product deck - insurance
Gamooga campaign management product deck - insuranceGamooga campaign management product deck - insurance
Gamooga campaign management product deck - insurance
 
Presentation on digital mkt
Presentation on digital mktPresentation on digital mkt
Presentation on digital mkt
 
What Your Marketing Automation Vendor Won't Ever Tell You
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
 
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...
How to improve your performance online - survey results Microsoft Dynamics Pa...
 
Mobile Advertising Company
Mobile Advertising CompanyMobile Advertising Company
Mobile Advertising Company
 
Digital Lead Generation for Economic Development
Digital Lead Generation for Economic DevelopmentDigital Lead Generation for Economic Development
Digital Lead Generation for Economic Development
 
Digital marketing 101 v1.0
Digital marketing 101 v1.0Digital marketing 101 v1.0
Digital marketing 101 v1.0
 
Marketing automation does not happen automatically
Marketing automation does not happen automaticallyMarketing automation does not happen automatically
Marketing automation does not happen automatically
 
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 ...
How TracksGiving can help you implement your campaigning software up quicker ...
 
Marketing Cloud, SalesforceSaturday
Marketing Cloud, SalesforceSaturdayMarketing Cloud, SalesforceSaturday
Marketing Cloud, SalesforceSaturday
 
dotmailer
dotmailerdotmailer
dotmailer
 
Digital Marketing Workshop
Digital Marketing WorkshopDigital Marketing Workshop
Digital Marketing Workshop
 
Marketing your Mobile Presence
Marketing your Mobile PresenceMarketing your Mobile Presence
Marketing your Mobile Presence
 
Mobile Marketing Trends and Strategies
Mobile Marketing Trends and StrategiesMobile Marketing Trends and Strategies
Mobile Marketing Trends and Strategies
 
7 Step To Digital Marketing Success
7 Step To Digital Marketing Success7 Step To Digital Marketing Success
7 Step To Digital Marketing Success
 
Digital Marketing Automation with Salesforce Marketing Cloud
Digital Marketing Automation with Salesforce Marketing CloudDigital Marketing Automation with Salesforce Marketing Cloud
Digital Marketing Automation with Salesforce Marketing Cloud
 
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 ...
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 ...Microsoft Directions EMEA - How to improve your performance online - Lemarco ...
Microsoft Directions EMEA - How to improve your performance online - Lemarco ...
 

Recently uploaded

FULL ENJOY Call Girls In Majnu.Ka.Tilla Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Majnu.Ka.Tilla Delhi Contact Us 8377877756FULL ENJOY Call Girls In Majnu.Ka.Tilla Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Majnu.Ka.Tilla Delhi Contact Us 8377877756
dollysharma2066
 

Recently uploaded (20)

LinkedIn Social Selling Master Class - David Wong
LinkedIn Social Selling Master Class - David WongLinkedIn Social Selling Master Class - David Wong
LinkedIn Social Selling Master Class - David Wong
 
Uncover Insightful User Journey Secrets Using GA4 Reports
Uncover Insightful User Journey Secrets Using GA4 ReportsUncover Insightful User Journey Secrets Using GA4 Reports
Uncover Insightful User Journey Secrets Using GA4 Reports
 
personal branding kit for music business
personal branding kit for music businesspersonal branding kit for music business
personal branding kit for music business
 
Branding strategies of new company .pptx
Branding strategies of new company .pptxBranding strategies of new company .pptx
Branding strategies of new company .pptx
 
Creator Influencer Strategy Master Class - Corinne Rose Guirgis
Creator Influencer Strategy Master Class - Corinne Rose GuirgisCreator Influencer Strategy Master Class - Corinne Rose Guirgis
Creator Influencer Strategy Master Class - Corinne Rose Guirgis
 
How to Create a Social Media Plan Like a Pro - Jordan Scheltgen
How to Create a Social Media Plan Like a Pro - Jordan ScheltgenHow to Create a Social Media Plan Like a Pro - Jordan Scheltgen
How to Create a Social Media Plan Like a Pro - Jordan Scheltgen
 
Labour Day Celebrating Workers and Their Contributions.pptx
Labour Day Celebrating Workers and Their Contributions.pptxLabour Day Celebrating Workers and Their Contributions.pptx
Labour Day Celebrating Workers and Their Contributions.pptx
 
How to utilize calculated properties in your HubSpot setups
How to utilize calculated properties in your HubSpot setupsHow to utilize calculated properties in your HubSpot setups
How to utilize calculated properties in your HubSpot setups
 
The+State+of+Careers+In+Retention+Marketing-2.pdf
The+State+of+Careers+In+Retention+Marketing-2.pdfThe+State+of+Careers+In+Retention+Marketing-2.pdf
The+State+of+Careers+In+Retention+Marketing-2.pdf
 
Unraveling the Mystery of The Circleville Letters.pptx
Unraveling the Mystery of The Circleville Letters.pptxUnraveling the Mystery of The Circleville Letters.pptx
Unraveling the Mystery of The Circleville Letters.pptx
 
BLOOM_April2024. Balmer Lawrie Online Monthly Bulletin
BLOOM_April2024. Balmer Lawrie Online Monthly BulletinBLOOM_April2024. Balmer Lawrie Online Monthly Bulletin
BLOOM_April2024. Balmer Lawrie Online Monthly Bulletin
 
Digital Strategy Master Class - Andrew Rupert
Digital Strategy Master Class - Andrew RupertDigital Strategy Master Class - Andrew Rupert
Digital Strategy Master Class - Andrew Rupert
 
Netflix Ads The Game Changer in Video Ads – Who Needs YouTube.pptx (Chester Y...
Netflix Ads The Game Changer in Video Ads – Who Needs YouTube.pptx (Chester Y...Netflix Ads The Game Changer in Video Ads – Who Needs YouTube.pptx (Chester Y...
Netflix Ads The Game Changer in Video Ads – Who Needs YouTube.pptx (Chester Y...
 
Unraveling the Mystery of the Hinterkaifeck Murders.pptx
Unraveling the Mystery of the Hinterkaifeck Murders.pptxUnraveling the Mystery of the Hinterkaifeck Murders.pptx
Unraveling the Mystery of the Hinterkaifeck Murders.pptx
 
BDSM⚡Call Girls in Sector 144 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 144 Noida Escorts >༒8448380779 Escort ServiceBDSM⚡Call Girls in Sector 144 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 144 Noida Escorts >༒8448380779 Escort Service
 
Situation Analysis | Management Company.
Situation Analysis | Management Company.Situation Analysis | Management Company.
Situation Analysis | Management Company.
 
The Future of Brands on LinkedIn - Alison Kaltman
The Future of Brands on LinkedIn - Alison KaltmanThe Future of Brands on LinkedIn - Alison Kaltman
The Future of Brands on LinkedIn - Alison Kaltman
 
Turn Digital Reputation Threats into Offense Tactics - Daniel Lemin
Turn Digital Reputation Threats into Offense Tactics - Daniel LeminTurn Digital Reputation Threats into Offense Tactics - Daniel Lemin
Turn Digital Reputation Threats into Offense Tactics - Daniel Lemin
 
Defining Marketing for the 21st Century,kotler
Defining Marketing for the 21st Century,kotlerDefining Marketing for the 21st Century,kotler
Defining Marketing for the 21st Century,kotler
 
FULL ENJOY Call Girls In Majnu.Ka.Tilla Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Majnu.Ka.Tilla Delhi Contact Us 8377877756FULL ENJOY Call Girls In Majnu.Ka.Tilla Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Majnu.Ka.Tilla Delhi Contact Us 8377877756
 

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
  • 31.
  • 32.
  • 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]
  • 35.
  • 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
  • 38.
  • 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!
  • 46.
  • 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
  • 61.
  • 62.
  • 63.
  • 64.
  • 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