{"id":50,"date":"2018-11-21T10:32:13","date_gmt":"2018-11-21T02:32:13","guid":{"rendered":"https:\/\/www.intelliwolf.com\/?p=50"},"modified":"2021-09-15T08:16:18","modified_gmt":"2021-09-15T00:16:18","slug":"schedule-follow-up-emails-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress-757293-2559390.cloudwaysapps.com\/schedule-follow-up-emails-wordpress\/","title":{"rendered":"How To Schedule Follow Up Emails In WordPress"},"content":{"rendered":"\n

On a recent project, I needed to have a series of emails following up new users, prompting them to setup their profile. I couldn't use Aweber, like I normally would, because the follow up emails had to stop when they completed their profile. That could happen at any time<\/p>\n\n\n\n

So how did I schedule follow up emails in WordPress?<\/p>\n\n\n\n

  1. Store new users in a follow up array in the database<\/li>
  2. Create a follow up email sequence based on days since registered<\/li>
  3. Run the follow up on a wp_cron sequence<\/li>
  4. Remove users from the follow up who have done what you asked<\/li><\/ol>\n\n\n\n

    Store New Users in a Follow Up Array in the Database<\/h2>\n\n\n\n

    You need to create a list of people for following up. I already had a process that hooked into user registration, which you can read about here<\/a>. So I built upon that code. If you want to do the same, see the code on that post, then add the code from new_user_followup_registration<\/em> set out below at the end of<\/p>\n\n\n\n

    if (get_user_meta($user->ID, 'membership_user_role', true) == 'job_seeker') {}<\/code><\/pre>\n\n\n\n

    For this tutorial, I'll assume you are using standalone code.<\/p>\n\n\n\n

    Put the following code into your functions.php<\/em>:<\/p>\n\n\n\n

    add_filter('wp_new_user_notification_email', 'new_user_followup_registration', 10, 3);\n\nfunction new_user_followup_registration($wp_new_user_notification_email, $user, $blogname)\n{\n $new_users = get_option('new_user_followup');\n if (empty($new_users)) {\n  $new_users = array();\n }\n \n $new_users[$user->user_login] = array(\n  'ID' => $user->ID,\n  'email' => $user->user_email,\n  'registered' => time(),\n  'last_email' => 'registration'\n );\n update_option('new_user_followup', $new_users);\n \n return $wp_new_user_notification_email;\n}<\/code><\/pre>\n\n\n\n

    The way this works is it runs just before the new user is sent the welcome email.<\/p>\n\n\n\n

    You can run a conditional if you just want to send the follow up to certain users (maybe only subscribers or a particular level of member).<\/p>\n\n\n\n

    You could also change the filter to something else, if you have a different trigger for initializing the sequence.<\/p>\n\n\n\n

    The list of users to follow up is stored in the wp_options<\/em> table under \"new_user_followup<\/em>\".<\/p>\n\n\n\n

    There's a check in case there are no current users to follow up.<\/p>\n\n\n\n

    Then we build a new array entry, pulling in the ID, email, time of registration and stage of follow up. You can certainly pull 'email'<\/em> and 'registered'<\/em> from the user table when you do your later checks, but I chose to have it all together for speed and independence.<\/p>\n\n\n\n

    Finally we store the updated array with the new user in the wp_options<\/em> table, then let the email continue processing. Make sure you leave that return<\/em> in there or the user won't get their welcome email.<\/p>\n\n\n\n

    Create a Basic Plugin for Follow Up<\/h2>\n\n\n\n

    While you could build this functionality in your functions.php<\/em> file or a separate file in your template, I chose to build this as a plugin.<\/p>\n\n\n\n

    The main reason for this was so I didn't have to mess about with setting or unsetting the cron events.<\/p>\n\n\n\n

    It's probably not entirely best practice to combine an entry in functions.php<\/em> with a plugin. I decided to do it on this project because the code in functions.php<\/em> is not dependent on the plugin. As we were already doing a custom function for the initial emails, it didn't make sense to split the code into two places.<\/p>\n\n\n\n

    The entire plugin code is as follows:<\/p>\n\n\n\n

    <?php\n\/**\n * Plugin Name: New User Email Followup\n * Plugin URI: https:\/\/intelliwolf.com.au\n * Description: Follow Up Sequence For New User Registration\n * Author: Mike Haydon\n * Author URI: https:\/\/intelliwolf.com.au\n * Version: 1.0\n *\/\n\nif(!defined('ABSPATH'))\n exit;\n\n\/* Set cron for followup profile completion emails *\/\nregister_activation_hook(__FILE__, 'new_user_followup_activation');\n\nfunction new_user_followup_activation()\n{\n if (!wp_next_scheduled('new_user_followup')) {\n  wp_schedule_event(time(), 'daily', 'new_user_followup');\n }\n}\n\nregister_deactivation_hook(__FILE__, 'new_user_followup_deactivation');\n\nfunction new_user_followup_deactivation()\n{\n wp_clear_scheduled_hook('new_user_followup');\n}\n\nadd_action('new_user_followup', 'user_followup');\n\nfunction user_followup() {\n $new_users = get_option('new_user_followup');\n if (empty($new_users)) {\n  \/\/ nothing to process\n  die();\n }\n\n $day = 60 * 60 * 24;\n $current_time = time();\n\n foreach ($new_users as $user => &$info)\n {\n  if (empty($info['ID']) or empty($info['email'])) {\n   unset($new_users[$user]);\n   continue;\n  }\n\n  $new_user_profile_id = get_user_meta($info['ID'], 'member_profile', true);\n  if (!empty($new_user_profile_id)) {\n   unset($new_users[$user]);\n   continue;\n  }\n\n  $days_since_registration = ($current_time - $info['registered']) \/ $day;\n  if ($days_since_registration < 2) {\n   continue;\n  }\n\n  if ($days_since_registration > 12) {\n   wp_delete_user($info['ID']);\n   unset($new_users[$user]);\n   continue;\n  }\n  elseif ($days_since_registration > 7) {\n   $email_to_send = 'final reminder';\n  }\n  elseif ($days_since_registration > 4) {\n   $email_to_send = 'second reminder';\n  }\n  elseif ($days_since_registration >= 2) {\n   $email_to_send = 'first reminder';\n  }\n\n  if (!empty($info['last_email']) and ($info['last_email'] == $email_to_send)) {\n   continue;\n  }\n\n  $info['last_email'] = $email_to_send;\n  $new_user_email = new_user_email($email_to_send);\n  if (empty($new_user_email['subject']) or empty($new_user_email['message'])) {\n   continue;\n  }\n\n  $headers = array(\"Content-Type: text\/html; charset=UTF-8\", \"From: Website <info@website.com>\");\n\n  wp_mail($info['email'], $new_user_email['subject'], $new_user_email['message'], $headers);\n }\n\n update_option('new_user_followup', $new_users);\n}\n\nfunction new_user_email($stage)\n{\n $subject = '';\n $message = '';\n switch($stage) {\n  case 'first reminder':\n   $subject = \"Please Complete Your Profile\";\n   $message = \"Thank you for your interest etc\";\n   break;\n  case 'second reminder':\n   $subject = \"Reminder: Please Complete Your Profile\";\n   $message = \"Thank you for your interest etc\";\n   break;\n  case 'final reminder':\n   $subject = \"Final Reminder: Please Complete Your Profile\";\n   $message = \"Thank you for your interest etc\";\n   break;\n }\n return array(\n  'subject' => $subject,\n  'message' => $message\n );\n}\n?><\/code><\/pre>\n\n\n\n

    You can use this as-is. Just put it into a file called<\/p>\n\n\n\n

    \/new-user-email-followup\/new-user-email-followup.php<\/code><\/pre>\n\n\n\n

    Then zip the folder and upload it as a regular plugin.<\/p>\n\n\n\n

    If this is your first custom WordPress plugin, congratulations! At its most basic, that's all there really is to it.<\/p>\n\n\n\n

    Let's break the code down, shall we?<\/p>\n\n\n\n

    Initializing the Plugin<\/h2>\n\n\n\n

    If you're not familiar with building plugins, the top comment section is used by WordPress to create the dialogue on \/wp-admin\/plugins.php<\/em><\/p>\n\n\n\n

    The next two lines just make sure the file isn't accessed directly.<\/p>\n\n\n\n

    Create the Schedule<\/h2>\n\n\n\n

    We use what's called a \"Cron\" to do repetitive tasks. WordPress has further refined that with wp_cron<\/em>. You can read more about it here<\/a>.<\/p>\n\n\n\n

    Essentially, you say how often you want a function to be run, then the system sets a timer and runs it when that timer says.<\/p>\n\n\n\n

    In this implementation, I set it to daily<\/em>. Other default options are fiveminutes, hourly, twicedaily, weekly<\/em> and monthly<\/em>. Note this only affects how often we're checking, not how often the emails are sent. If you have a lot of registrants every day, it's probably best to do the check more often and reduce the email load.<\/p>\n\n\n\n

    In practice, and this is important for low traffic, new sites, a wp_cron only checks its schedule if someone loads a page on the site (including the admin area). I've usually gotten around that by running an uptime checker.<\/p>\n\n\n\n

    The next section of code creates a daily run of the action \"new_user_followup<\/em>\", which runs the function user_followup()<\/em>.<\/p>\n\n\n\n

    The register_activation_hook<\/em> and register_deactivation_hook<\/em> is what creates the wp_cron<\/em> when you activate the plugin and removes the wp_cron<\/em> when you deactivate the plugin.<\/p>\n\n\n\n

    Create the Followup Sequence<\/h2>\n\n\n\n

    The function user_followup()<\/em> is the engine of this implementation.<\/p>\n\n\n\n

    First we pull the current list of new users who need following up from the database. We quit if there are none.<\/p>\n\n\n\n

    Next we set some timing variables. I could have set<\/p>\n\n\n\n

    $day = 86400;<\/code><\/pre>\n\n\n\n

    But it makes more sense for someone reading the code to use the obvious reference of 60 x 60 x 24.<\/p>\n\n\n\n

    I set the time to a variable, just in case the process ran long or got stuck, which could cause some timing irregularities on the loop.<\/p>\n\n\n\n

    Looping Through the New Users<\/h3>\n\n\n\n

    Notice in the foreach<\/em> loop initialisation how I use<\/p>\n\n\n\n

    as $user => &$info<\/code><\/pre>\n\n\n\n

    The &$info<\/em> is important. It directly calls the data, rather than passing in a copy. This allows me to change the array as I loop through it. I'm using that feature to selectively change the value of ['last_email']<\/em> as the loop runs.<\/p>\n\n\n\n

    The first if statement is an error check. We remove the user from the list if the ID<\/em> or email<\/em> is empty.<\/p>\n\n\n\n

    If you're not familiar with php loops, the continue<\/em> statement ends the current iteration of the loop and moves on to the next, without processing anything else in that round.<\/p>\n\n\n\n

    Should We Stop Sending Reminders?<\/h3>\n\n\n\n

    In the next line, we check whether the new user has completed their profile.<\/p>\n\n\n\n

    $new_user_profile_id = get_user_meta($info['ID'], 'member_profile', true);\nif (!empty($new_user_profile_id)) {\n unset($new_users[$user]);\n continue;\n}<\/code><\/pre>\n\n\n\n

    Elsewhere in our implementation, when a user completes their profile, we add an entry to\u00a0wp_usermeta<\/em>\u00a0for that\u00a0user_id<\/em>\u00a0that assigns the profile post id to\u00a0member_profile<\/em>.<\/p>\n\n\n\n

    The code for that is:<\/p>\n\n\n\n

    add_user_meta( $user_id, 'member_profile', $profile_id );<\/code><\/pre>\n\n\n\n

    You'll have to pass in the $user_id<\/em> and $profile_id<\/em> and hook it somewhere in the profile creation process.<\/p>\n\n\n\n

    For the sake of this email scheduler, it doesn't matter to us what the value of\u00a0member_profile<\/em>\u00a0for that user is, just that they have one.<\/p>\n\n\n\n

    You may have a different implementation. If you're running a follow up sequence that depends on a user completing their profile, amend this section to fit your implementation.<\/p>\n\n\n\n

    If you're just using this to create an autoresponder sequence for new users, then you don't need this section.<\/p>\n\n\n\n

    Calculate How Long Since Registration<\/h3>\n\n\n\n
    $days_since_registration = ($current_time - $info['registered']) \/ $day;\nif ($days_since_registration < 2) {\n continue;\n}<\/code><\/pre>\n\n\n\n

    In this section, we calculate how long since the user registered. If they've only just registered in the last couple of days, we don't bother them.<\/p>\n\n\n\n

    Remove From Sequence and Delete User<\/h3>\n\n\n\n
    if ($days_since_registration > 12) {\n wp_delete_user($info['ID']);\n unset($new_users[$user]);\n continue;\n}<\/code><\/pre>\n\n\n\n

    In our implementation, if 12 days have gone by since the user registered and they still haven't completed their profile, we delete them from the site as a user and remove them from the follow up sequence.<\/p>\n\n\n\n

    Otherwise, we set which reminder is the next to send, based on how long since they've registered.<\/p>\n\n\n\n

    If you don't want to remove the user after they've gone through the email sequence, delete the line:<\/p>\n\n\n\n

    wp_delete_user($info['ID']);<\/code><\/pre>\n\n\n\n

    Should We Even Send an Email?<\/h3>\n\n\n\n
    if (!empty($info['last_email']) and ($info['last_email'] == $email_to_send)) {\n continue;\n}\n$info['last_email'] = $email_to_send;<\/code><\/pre>\n\n\n\n

    If the next reminder we need to send to the user hasn't changed, there's no need to send them anything.<\/p>\n\n\n\n

    If it has changed, we make sure to update that user's next email. If every email were super-critical, we'd probably not add the line<\/p>\n\n\n\n

    $info['last_email'] = $email_to_send;<\/code><\/pre>\n\n\n\n

    until after we checked that wp_mail<\/em> successfully ran.<\/p>\n\n\n\n

    Figure Out Which Email to Send and Send it<\/h3>\n\n\n\n
    $new_user_email = new_user_email($email_to_send);\nif (empty($new_user_email['subject']) or empty($new_user_email['message'])) {\n continue;\n}\n\n$headers = array(\"Content-Type: text\/html; charset=UTF-8\", \"From: Website <info@website.com>\");\n\nwp_mail($info['email'], $new_user_email['subject'], $new_user_email['message'], $headers);<\/code><\/pre>\n\n\n\n

    First we call the new_user_email()<\/em> function and get back an array with the subject and message. Then we do an error check to make sure we've got something to send.<\/p>\n\n\n\n

    For email delivery, it's important to add the headers. Change Website <info@website.com><\/em> to your name and email.<\/p>\n\n\n\n

    wp_mail($to, $subject, $message, $headers)<\/em> is the function that actually sends the email. This is WordPress's standard email function. It's the first place I'd look if I were having issues with sending. You can read more about it at the WordPress Developer Reference Manual<\/a>.<\/p>\n\n\n\n

    You can also add attachments to your emails with this function, but that's outside the scope of this tutorial - check the Reference Manual.<\/p>\n\n\n\n

    Update the User Follow Up List<\/h3>\n\n\n\n
    update_option('new_user_followup', $new_users);<\/code><\/pre>\n\n\n\n

    After processing all the users in the list, we update the database ready for next time. This will throw out the users we removed using unset<\/em> and update any users for whom we changed the last_email<\/em>.<\/p>\n\n\n\n

    Set the Subject and Message for each Follow Up<\/h2>\n\n\n\n

    I split the listing of the subject and message into the separate function new_user_email($stage)<\/em> to improve readability. I could have put them in the if ($days_since_registration)<\/em> blocks, but there is a lot of text. It only doesn't look like it in the code example because I truncated it for this tutorial.<\/p>\n\n\n\n

    In the switch statement, you can have as many cases as you like. Just make sure to add a break<\/em> after each. Everything else in that function should be pretty self explanatory.<\/p>\n\n\n\n

    It's important to use double quotes in the $message<\/em> so that you can use html. To add a line, use \\r\\n<\/em>.<\/p>\n\n\n\n

    Try not to use any more html than you absolutely need. This will improve deliverability and decrease the chance that your emails go to the spam box.<\/p>\n\n\n\n

    I hope you found this guide useful. Please let me know in the comments below if you had any issues with the code, or if I need to explain something more clearly.<\/p>\n","protected":false},"excerpt":{"rendered":"

    On a recent project, I needed to have a series of emails following up new users, prompting them to setup their profile. I couldn’t use Aweber, like I normally would, because the follow up emails had to stop when they completed their profile. That could happen at any time So how did I schedule follow<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"yoast_head":"\nHow To Schedule Follow Up Emails In WordPress<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.intelliwolf.com\/schedule-follow-up-emails-wordpress\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How To Schedule Follow Up Emails In WordPress\" \/>\n<meta property=\"og:description\" content=\"On a recent project, I needed to have a series of emails following up new users, prompting them to setup their profile. I couldn't use Aweber, like I normally would, because the follow up emails had to stop when they completed their profile. That could happen at any time So how did I schedule follow\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.intelliwolf.com\/schedule-follow-up-emails-wordpress\/\" \/>\n<meta property=\"og:site_name\" content=\"Intelliwolf\" \/>\n<meta property=\"article:published_time\" content=\"2018-11-21T02:32:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-09-15T00:16:18+00:00\" \/>\n<meta name=\"author\" content=\"Mike Haydon\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mike Haydon\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.intelliwolf.com\/schedule-follow-up-emails-wordpress\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.intelliwolf.com\/schedule-follow-up-emails-wordpress\/\"},\"author\":{\"name\":\"Mike Haydon\",\"@id\":\"https:\/\/www.intelliwolf.com\/#\/schema\/person\/7209e3ff14822e4d70d5f194a310f343\"},\"headline\":\"How To Schedule Follow Up Emails In WordPress\",\"datePublished\":\"2018-11-21T02:32:13+00:00\",\"dateModified\":\"2021-09-15T00:16:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.intelliwolf.com\/schedule-follow-up-emails-wordpress\/\"},\"wordCount\":1715,\"commentCount\":3,\"publisher\":{\"@id\":\"https:\/\/www.intelliwolf.com\/#organization\"},\"articleSection\":[\"Email\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.intelliwolf.com\/schedule-follow-up-emails-wordpress\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.intelliwolf.com\/schedule-follow-up-emails-wordpress\/\",\"url\":\"https:\/\/www.intelliwolf.com\/schedule-follow-up-emails-wordpress\/\",\"name\":\"How To Schedule Follow Up Emails In WordPress\",\"isPartOf\":{\"@id\":\"https:\/\/www.intelliwolf.com\/#website\"},\"datePublished\":\"2018-11-21T02:32:13+00:00\",\"dateModified\":\"2021-09-15T00:16:18+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.intelliwolf.com\/schedule-follow-up-emails-wordpress\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.intelliwolf.com\/schedule-follow-up-emails-wordpress\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.intelliwolf.com\/schedule-follow-up-emails-wordpress\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.intelliwolf.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Email\",\"item\":\"https:\/\/www.intelliwolf.com\/category\/email\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How To Schedule Follow Up Emails In WordPress\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.intelliwolf.com\/#website\",\"url\":\"https:\/\/www.intelliwolf.com\/\",\"name\":\"Intelliwolf\",\"description\":\"WordPress, Web Design and Coding Tutorials\",\"publisher\":{\"@id\":\"https:\/\/www.intelliwolf.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.intelliwolf.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.intelliwolf.com\/#organization\",\"name\":\"Intelliwolf\",\"url\":\"https:\/\/www.intelliwolf.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.intelliwolf.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/wordpress-757293-2559390.cloudwaysapps.com\/wp-content\/uploads\/intelliwolf-logo-300t.png\",\"contentUrl\":\"https:\/\/wordpress-757293-2559390.cloudwaysapps.com\/wp-content\/uploads\/intelliwolf-logo-300t.png\",\"width\":300,\"height\":100,\"caption\":\"Intelliwolf\"},\"image\":{\"@id\":\"https:\/\/www.intelliwolf.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.intelliwolf.com\/#\/schema\/person\/7209e3ff14822e4d70d5f194a310f343\",\"name\":\"Mike Haydon\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.intelliwolf.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d5f4754fae310a04dede91d15e57c8a0?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d5f4754fae310a04dede91d15e57c8a0?s=96&d=mm&r=g\",\"caption\":\"Mike Haydon\"},\"sameAs\":[\"https:\/\/intelliwolf.com\/about-mike-haydon\/\"]}]}<\/script>\n","yoast_head_json":{"title":"How To Schedule Follow Up Emails In WordPress","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.intelliwolf.com\/schedule-follow-up-emails-wordpress\/","og_locale":"en_US","og_type":"article","og_title":"How To Schedule Follow Up Emails In WordPress","og_description":"On a recent project, I needed to have a series of emails following up new users, prompting them to setup their profile. I couldn't use Aweber, like I normally would, because the follow up emails had to stop when they completed their profile. That could happen at any time So how did I schedule follow","og_url":"https:\/\/www.intelliwolf.com\/schedule-follow-up-emails-wordpress\/","og_site_name":"Intelliwolf","article_published_time":"2018-11-21T02:32:13+00:00","article_modified_time":"2021-09-15T00:16:18+00:00","author":"Mike Haydon","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Mike Haydon","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.intelliwolf.com\/schedule-follow-up-emails-wordpress\/#article","isPartOf":{"@id":"https:\/\/www.intelliwolf.com\/schedule-follow-up-emails-wordpress\/"},"author":{"name":"Mike Haydon","@id":"https:\/\/www.intelliwolf.com\/#\/schema\/person\/7209e3ff14822e4d70d5f194a310f343"},"headline":"How To Schedule Follow Up Emails In WordPress","datePublished":"2018-11-21T02:32:13+00:00","dateModified":"2021-09-15T00:16:18+00:00","mainEntityOfPage":{"@id":"https:\/\/www.intelliwolf.com\/schedule-follow-up-emails-wordpress\/"},"wordCount":1715,"commentCount":3,"publisher":{"@id":"https:\/\/www.intelliwolf.com\/#organization"},"articleSection":["Email"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.intelliwolf.com\/schedule-follow-up-emails-wordpress\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.intelliwolf.com\/schedule-follow-up-emails-wordpress\/","url":"https:\/\/www.intelliwolf.com\/schedule-follow-up-emails-wordpress\/","name":"How To Schedule Follow Up Emails In WordPress","isPartOf":{"@id":"https:\/\/www.intelliwolf.com\/#website"},"datePublished":"2018-11-21T02:32:13+00:00","dateModified":"2021-09-15T00:16:18+00:00","breadcrumb":{"@id":"https:\/\/www.intelliwolf.com\/schedule-follow-up-emails-wordpress\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.intelliwolf.com\/schedule-follow-up-emails-wordpress\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.intelliwolf.com\/schedule-follow-up-emails-wordpress\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.intelliwolf.com\/"},{"@type":"ListItem","position":2,"name":"Email","item":"https:\/\/www.intelliwolf.com\/category\/email\/"},{"@type":"ListItem","position":3,"name":"How To Schedule Follow Up Emails In WordPress"}]},{"@type":"WebSite","@id":"https:\/\/www.intelliwolf.com\/#website","url":"https:\/\/www.intelliwolf.com\/","name":"Intelliwolf","description":"WordPress, Web Design and Coding Tutorials","publisher":{"@id":"https:\/\/www.intelliwolf.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.intelliwolf.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.intelliwolf.com\/#organization","name":"Intelliwolf","url":"https:\/\/www.intelliwolf.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.intelliwolf.com\/#\/schema\/logo\/image\/","url":"https:\/\/wordpress-757293-2559390.cloudwaysapps.com\/wp-content\/uploads\/intelliwolf-logo-300t.png","contentUrl":"https:\/\/wordpress-757293-2559390.cloudwaysapps.com\/wp-content\/uploads\/intelliwolf-logo-300t.png","width":300,"height":100,"caption":"Intelliwolf"},"image":{"@id":"https:\/\/www.intelliwolf.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.intelliwolf.com\/#\/schema\/person\/7209e3ff14822e4d70d5f194a310f343","name":"Mike Haydon","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.intelliwolf.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d5f4754fae310a04dede91d15e57c8a0?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d5f4754fae310a04dede91d15e57c8a0?s=96&d=mm&r=g","caption":"Mike Haydon"},"sameAs":["https:\/\/intelliwolf.com\/about-mike-haydon\/"]}]}},"_links":{"self":[{"href":"https:\/\/wordpress-757293-2559390.cloudwaysapps.com\/wp-json\/wp\/v2\/posts\/50"}],"collection":[{"href":"https:\/\/wordpress-757293-2559390.cloudwaysapps.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress-757293-2559390.cloudwaysapps.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress-757293-2559390.cloudwaysapps.com\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress-757293-2559390.cloudwaysapps.com\/wp-json\/wp\/v2\/comments?post=50"}],"version-history":[{"count":3,"href":"https:\/\/wordpress-757293-2559390.cloudwaysapps.com\/wp-json\/wp\/v2\/posts\/50\/revisions"}],"predecessor-version":[{"id":2367,"href":"https:\/\/wordpress-757293-2559390.cloudwaysapps.com\/wp-json\/wp\/v2\/posts\/50\/revisions\/2367"}],"wp:attachment":[{"href":"https:\/\/wordpress-757293-2559390.cloudwaysapps.com\/wp-json\/wp\/v2\/media?parent=50"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress-757293-2559390.cloudwaysapps.com\/wp-json\/wp\/v2\/categories?post=50"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress-757293-2559390.cloudwaysapps.com\/wp-json\/wp\/v2\/tags?post=50"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}