Manually trigger campaign (RSS to email, when new blog post is available)

I am switching from MailChimp to mautic. One of the features I use in MailChimp is RSS to email for my blog. There its automatic… each day at 9am, if there is a new blog item in the RSS feed, its sent to the people subscribing via email.

For mautic, I have configured rss-to-email-bundle, this is working properly.

I have created a category ‘blog’. I have attached it to a couple of test users.

I have created a campaign, which selects an email template w/ the RSS to email, and a segment based on this category.

When I manually run it, it works.

Now, the question… How do I trigger it? apologies if this is a basic question, but mautic:campaigns:execute does not, and mautic:campaigns:trigger does not.

Can i make some external condition (e.g. i can run a cron-job to look for new posts or something) that the campaign will see as ‘ready’ so mautic:campaigns:execute will then send?

Suggestions on how to achieve this?

I’m setting up something similar, but haven’t enabled it yet to know if it will work correctly. I was going to set up a campaign that just repeats itself everyday.

At the end of the campaign it just does a “Change campaign” action to start it over again with the daily check. I’m not sure what happens if there is no new content, though.

Let me know if you figure it out as well. :wink:

not to be a downer, but that doesn’t work.
the user will get the same stale post over and over.

Hey, are you trying to personalise each email with RSS or all contacts supposed to get the same?
Both are different methods, and I think I can point you in the right direction.

If the RSS feed contains the right information, why would Mautic send out the same post?
There are WP plugins, that manage your RSS feed, and you can even filter for 1 day in the past (yesterday).

The HTML is created in batches. In this particular case every day email will be batch-created for all who supposed to receive it, and the content will be whatever the RSS plugin can pull at 8:00 am.

If there would be no time set in the campaign, and the email creation is happening in multiple batches, then every batch would produce an email based on the actual RSS content.

For example if you have a news website, and you are in the morning batch, you would get the news from the morning, but contacts, that get the email later will also get additional events that happened that day.

I already use RSS with MailChimp.
Each am at 9am it sees if there was a new post. If so, an email is sent.

In Mautic, if I schedule the campaign for 9am, it will resend the same body email if there has been no change.

At least that is what I experienced.

Hello Don, This is interesting.
I would like to know more as I created a course on this, and would like to know more how it can be expanded.

So Mailchimp checks if the RSS contains new posts and only uses the new ones?
How do you generate the RSS? Shows posts from last 7 days or last X posts?

Thx,
Joey

@donbowman you’re right, that makes sense. I had assumed it would work like mailchimp does and several other similar email platforms.

@joeyk Most of my experience with RSS emails is that they just sort of sit in a “wait-and-see mode” until a new post is made, and only send if you have it set to a specific time schedule. For example, we’ll set the email to something like “show the last 5 posts”. But if only 1 new post was made, since the last send, then the email only shows the 1 new post, so it’s not constantly sending old content.

Possible solutions:

  1. Weekly email
    Generate a link, that contains posts from last 7 days
    RSS plugin picks it up, email sent every 7 days
    You make it with a recurring campaign
  • Disadvantage: you need blog post at least every 7 days
  1. Email about blog post when you wrote a new post
    Create a post, copy the RSS email as segment email
    set the RSS feed to generate only the last blogpost
    time it and send
  • Disadvantage: you have to spend like 5 min with this after you wrote the post

I mean it’s possible to create a script, that checks if the RSS is empty, but it sounds like an overkill to me. What do you think?

mailchimp ‘just works’.
each blog post becomes an email.
if no new, no email.

seeking to replicate in mautic.

i don’t want a ‘here’s a list of 7 links’ email, so i won’t go down that approach (also, if there is no changes in those 7 days… i think it would always generate the last 7 days of things, even w/ duplicates etc)

i was planning on a script that checked and called ‘trigger’, but the trigger mechanisms don’t work the way i expected.

So i will have to mull this over. I think it would be useful to have an externally triggered campaign.

i considered using an SQL condition and then inserting to db.

Would that be a solution if a script would check if there is a blogpost EVERY DAY? And if yes then send the email? If no then no email.

Im actually creating a similar script now. But it won’t just work, you would need to call it with a cronjob.

yes it would work.

but unless i miss something, i cannot trigger the campaign.

finding that there is/isnot an updated blog post is not complex, i just don’t know how to tell mautic “this campaign has received an external trigger”

Actually the best way to do it is not a campaign. Because then you initiate the same campaign over and over again. You will be only able to see the cumulative results for all email sends.

I think it’s better to create a script, that copies a previously created segment email with the RSS content. The script runs every day, and checks for new entry in the blog. If there is one, then copies the previously assigned segment email into a new one, sets timing, segment to send to and set’s up the sendig via the usual process (queue or not queue depending on settings.)

i would be comfortable (and prefer) the cumulative results.

i use a category for the blog, which allows users to opt-in/out individually to that category on preference page.

the email is fixed in body (all blog posts have the same email template) since the rss feed plugin takes care of filling in the body dynamically.

@donbowman I developed the rss to e-mail plugin for mautic. I’m currently investigating (after some requests) if i’m able to make an campaigntrigger for something like this.

1 Like

Great!

Let me know how I can help.

i was wondering if i could call it on a schedule, and it could return ‘false’ indicating there was no email.
or if it could be a condition.

the option i was currently considering is using the sql plugin, and then making a table most-recent-blog-post-date, and selecting from the table so that i could have a condition in the front end.

another option i considered was a ‘rest condition’, whereby mautic would do an outbound rest call, and make some api.

lmk how i can assist.

I’m still considering / investigating the best way the implement this. The (development) documenation of mautic for this area is really limited. If I have a better understanding how to hook into mautic for this of can thank of the best solutions.

You could check if the most recent date in the feed is today. If yes, then launch the next campaign step.

@joeyk ideally I want to check if there was something new posted since the last time the action was triggered. Within the action I want to configure an interval like every day, once a week, bi-weekly, once a month, etc.

it might be better to have the plugin expose a condition:

feed.lastDate

and then in my campaign i can put ‘condition: feed.lastDate > 1 day’

and let the campaign builder logic flow.